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: 17% } 47 .th_description { width: 20% } 48 .th_range { width: 8% } 49 .th_hal_version { width: 5% } 50 td { font-size: 0.9em; } 51 52 /* hide the first thead, we need it there only to enforce column sizes */ 53 .thead_dummy { visibility: hidden; } 54 55 /* Entry flair */ 56 .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; } 57 .entry_name_deprecated { text-decoration:line-through; } 58 59 /* Entry type flair */ 60 .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;} 61 .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" } 62 .entry_type_visibility { font-weight: bolder; padding-left:1em} 63 .entry_type_synthetic { font-weight: bolder; color: #996600; } 64 .entry_type_hwlevel { font-weight: bolder; color: #000066; } 65 .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; } 66 .entry_type_enum_name { font-family: monospace; font-weight: bolder; } 67 .entry_type_enum_notes:before { content:" - " } 68 .entry_type_enum_notes>p:first-child { display:inline; } 69 .entry_type_enum_value:before { content:" = " } 70 .entry_type_enum_value { font-family: monospace; } 71 .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; } 72 .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;} 73 .entry_range_deprecated { font-weight: bolder; } 74 75 /* Entry tags flair */ 76 .entry_tags ul { list-style-type: none; } 77 78 /* Entry details (full docs) flair */ 79 .entry_details_header { font-weight: bold; background-color: #dddddd; 80 text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; } 81 82 /* Entry spacer flair */ 83 .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; } 84 85 /* TODO: generate abbr element for each tag link? */ 86 /* TODO for each x.y.z try to link it to the entry */ 87 88 </style> 89 90 <style> 91 92 { 93 /* broken... 94 supposedly there is a bug in chrome that it lays out tables before 95 it knows its being printed, so the page-break-* styles are ignored 96 */ 97 tr { page-break-after: always; page-break-inside: avoid; } 98 } 99 100 </style> 101</head> 102 103 104 105<body> 106 <h1>Android Camera HAL3.2 Properties</h1> 107 108 109 <h2>Table of Contents</h2> 110 <ul class="toc"> 111 <li><a href="#tag_index" class="toc_section_header">Tags</a></li> 112 <li> 113 <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span> 114 <ul class="toc_section"> 115 <li> 116 <span class="toc_kind_header">controls</span> 117 <ul class="toc_section"> 118 <li 119 ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 120 <li 121 ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 122 <li 123 ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 124 <li 125 ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li> 126 </ul> 127 </li> 128 <li> 129 <span class="toc_kind_header">dynamic</span> 130 <ul class="toc_section"> 131 <li 132 ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 133 <li 134 ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 135 <li 136 ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 137 <li 138 ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li> 139 </ul> 140 </li> 141 <li> 142 <span class="toc_kind_header">static</span> 143 <ul class="toc_section"> 144 <li 145 ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li> 146 </ul> 147 </li> 148 </ul> <!-- toc_section --> 149 </li> 150 <li> 151 <span class="toc_section_header"><a href="#section_control">control</a></span> 152 <ul class="toc_section"> 153 <li> 154 <span class="toc_kind_header">controls</span> 155 <ul class="toc_section"> 156 <li 157 ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 158 <li 159 ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 160 <li 161 ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li> 162 <li 163 ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li> 164 <li 165 ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li> 166 <li 167 ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 168 <li 169 ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 170 <li 171 ><a href="#controls_android.control.afMode">android.control.afMode</a></li> 172 <li 173 ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li> 174 <li 175 ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li> 176 <li 177 ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li> 178 <li 179 ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li> 180 <li 181 ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li> 182 <li 183 ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li> 184 <li 185 ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li> 186 <li 187 ><a href="#controls_android.control.mode">android.control.mode</a></li> 188 <li 189 ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li> 190 <li 191 ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 192 <li 193 ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li> 194 <li 195 ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li> 196 </ul> 197 </li> 198 <li> 199 <span class="toc_kind_header">static</span> 200 <ul class="toc_section"> 201 <li 202 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li> 203 <li 204 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li> 205 <li 206 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li> 207 <li 208 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li> 209 <li 210 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li> 211 <li 212 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li> 213 <li 214 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li> 215 <li 216 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li> 217 <li 218 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li> 219 <li 220 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li> 221 <li 222 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li> 223 <li 224 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li> 225 <li 226 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li> 227 <li 228 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li> 229 <li 230 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li> 231 <li 232 ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li> 233 <li 234 ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li> 235 <li 236 ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li> 237 <li 238 ><a href="#static_android.control.availableModes">android.control.availableModes</a></li> 239 <li 240 ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li> 241 </ul> 242 </li> 243 <li> 244 <span class="toc_kind_header">dynamic</span> 245 <ul class="toc_section"> 246 <li 247 class="toc_deprecated" 248 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li> 249 <li 250 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 251 <li 252 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 253 <li 254 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li> 255 <li 256 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li> 257 <li 258 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li> 259 <li 260 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 261 <li 262 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 263 <li 264 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li> 265 <li 266 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li> 267 <li 268 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li> 269 <li 270 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li> 271 <li 272 ><a href="#dynamic_android.control.afState">android.control.afState</a></li> 273 <li 274 class="toc_deprecated" 275 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li> 276 <li 277 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li> 278 <li 279 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li> 280 <li 281 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li> 282 <li 283 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li> 284 <li 285 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li> 286 <li 287 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li> 288 <li 289 ><a href="#dynamic_android.control.mode">android.control.mode</a></li> 290 <li 291 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li> 292 <li 293 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 294 <li 295 ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li> 296 <li 297 ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li> 298 <li 299 ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li> 300 </ul> 301 </li> 302 </ul> <!-- toc_section --> 303 </li> 304 <li> 305 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span> 306 <ul class="toc_section"> 307 <li> 308 <span class="toc_kind_header">controls</span> 309 <ul class="toc_section"> 310 <li 311 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li> 312 </ul> 313 </li> 314 </ul> <!-- toc_section --> 315 </li> 316 <li> 317 <span class="toc_section_header"><a href="#section_edge">edge</a></span> 318 <ul class="toc_section"> 319 <li> 320 <span class="toc_kind_header">controls</span> 321 <ul class="toc_section"> 322 <li 323 ><a href="#controls_android.edge.mode">android.edge.mode</a></li> 324 <li 325 ><a href="#controls_android.edge.strength">android.edge.strength</a></li> 326 </ul> 327 </li> 328 <li> 329 <span class="toc_kind_header">static</span> 330 <ul class="toc_section"> 331 <li 332 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li> 333 </ul> 334 </li> 335 <li> 336 <span class="toc_kind_header">dynamic</span> 337 <ul class="toc_section"> 338 <li 339 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> 340 </ul> 341 </li> 342 </ul> <!-- toc_section --> 343 </li> 344 <li> 345 <span class="toc_section_header"><a href="#section_flash">flash</a></span> 346 <ul class="toc_section"> 347 <li> 348 <span class="toc_kind_header">controls</span> 349 <ul class="toc_section"> 350 <li 351 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> 352 <li 353 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> 354 <li 355 ><a href="#controls_android.flash.mode">android.flash.mode</a></li> 356 </ul> 357 </li> 358 <li> 359 <span class="toc_kind_header">static</span> 360 <ul class="toc_section"> 361 362 <li 363 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li> 364 <li 365 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> 366 367 <li 368 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> 369 <li 370 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> 371 </ul> 372 </li> 373 <li> 374 <span class="toc_kind_header">dynamic</span> 375 <ul class="toc_section"> 376 <li 377 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> 378 <li 379 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> 380 <li 381 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> 382 <li 383 ><a href="#dynamic_android.flash.state">android.flash.state</a></li> 384 </ul> 385 </li> 386 </ul> <!-- toc_section --> 387 </li> 388 <li> 389 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span> 390 <ul class="toc_section"> 391 <li> 392 <span class="toc_kind_header">controls</span> 393 <ul class="toc_section"> 394 <li 395 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li> 396 </ul> 397 </li> 398 <li> 399 <span class="toc_kind_header">static</span> 400 <ul class="toc_section"> 401 <li 402 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li> 403 </ul> 404 </li> 405 <li> 406 <span class="toc_kind_header">dynamic</span> 407 <ul class="toc_section"> 408 <li 409 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li> 410 </ul> 411 </li> 412 </ul> <!-- toc_section --> 413 </li> 414 <li> 415 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span> 416 <ul class="toc_section"> 417 <li> 418 <span class="toc_kind_header">controls</span> 419 <ul class="toc_section"> 420 <li 421 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 422 <li 423 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 424 <li 425 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 426 <li 427 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 428 <li 429 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li> 430 <li 431 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li> 432 <li 433 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 434 <li 435 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 436 </ul> 437 </li> 438 <li> 439 <span class="toc_kind_header">static</span> 440 <ul class="toc_section"> 441 <li 442 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li> 443 <li 444 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li> 445 </ul> 446 </li> 447 <li> 448 <span class="toc_kind_header">dynamic</span> 449 <ul class="toc_section"> 450 <li 451 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 452 <li 453 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 454 <li 455 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 456 <li 457 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 458 <li 459 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li> 460 <li 461 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li> 462 <li 463 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li> 464 <li 465 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 466 <li 467 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 468 </ul> 469 </li> 470 </ul> <!-- toc_section --> 471 </li> 472 <li> 473 <span class="toc_section_header"><a href="#section_lens">lens</a></span> 474 <ul class="toc_section"> 475 <li> 476 <span class="toc_kind_header">controls</span> 477 <ul class="toc_section"> 478 <li 479 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li> 480 <li 481 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li> 482 <li 483 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li> 484 <li 485 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li> 486 <li 487 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 488 </ul> 489 </li> 490 <li> 491 <span class="toc_kind_header">static</span> 492 <ul class="toc_section"> 493 494 <li 495 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li> 496 <li 497 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li> 498 <li 499 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li> 500 <li 501 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li> 502 <li 503 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li> 504 <li 505 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li> 506 <li 507 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li> 508 <li 509 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li> 510 511 <li 512 ><a href="#static_android.lens.facing">android.lens.facing</a></li> 513 <li 514 ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li> 515 <li 516 ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 517 <li 518 ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 519 <li 520 class="toc_deprecated" 521 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 522 <li 523 ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li> 524 <li 525 ><a href="#static_android.lens.distortion">android.lens.distortion</a></li> 526 </ul> 527 </li> 528 <li> 529 <span class="toc_kind_header">dynamic</span> 530 <ul class="toc_section"> 531 <li 532 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li> 533 <li 534 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li> 535 <li 536 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li> 537 <li 538 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li> 539 <li 540 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li> 541 <li 542 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 543 <li 544 ><a href="#dynamic_android.lens.state">android.lens.state</a></li> 545 <li 546 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li> 547 <li 548 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 549 <li 550 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 551 <li 552 class="toc_deprecated" 553 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 554 <li 555 ><a href="#dynamic_android.lens.distortion">android.lens.distortion</a></li> 556 </ul> 557 </li> 558 </ul> <!-- toc_section --> 559 </li> 560 <li> 561 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span> 562 <ul class="toc_section"> 563 <li> 564 <span class="toc_kind_header">controls</span> 565 <ul class="toc_section"> 566 <li 567 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 568 <li 569 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li> 570 </ul> 571 </li> 572 <li> 573 <span class="toc_kind_header">static</span> 574 <ul class="toc_section"> 575 <li 576 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li> 577 </ul> 578 </li> 579 <li> 580 <span class="toc_kind_header">dynamic</span> 581 <ul class="toc_section"> 582 <li 583 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 584 </ul> 585 </li> 586 </ul> <!-- toc_section --> 587 </li> 588 <li> 589 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span> 590 <ul class="toc_section"> 591 <li> 592 <span class="toc_kind_header">static</span> 593 <ul class="toc_section"> 594 <li 595 class="toc_deprecated" 596 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> 597 <li 598 class="toc_deprecated" 599 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> 600 <li 601 class="toc_deprecated" 602 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> 603 <li 604 class="toc_deprecated" 605 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li> 606 </ul> 607 </li> 608 <li> 609 <span class="toc_kind_header">dynamic</span> 610 <ul class="toc_section"> 611 <li 612 class="toc_deprecated" 613 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li> 614 </ul> 615 </li> 616 </ul> <!-- toc_section --> 617 </li> 618 <li> 619 <span class="toc_section_header"><a href="#section_request">request</a></span> 620 <ul class="toc_section"> 621 <li> 622 <span class="toc_kind_header">controls</span> 623 <ul class="toc_section"> 624 <li 625 class="toc_deprecated" 626 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> 627 <li 628 ><a href="#controls_android.request.id">android.request.id</a></li> 629 <li 630 class="toc_deprecated" 631 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> 632 <li 633 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> 634 <li 635 class="toc_deprecated" 636 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> 637 <li 638 class="toc_deprecated" 639 ><a href="#controls_android.request.type">android.request.type</a></li> 640 </ul> 641 </li> 642 <li> 643 <span class="toc_kind_header">static</span> 644 <ul class="toc_section"> 645 <li 646 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li> 647 <li 648 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li> 649 <li 650 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li> 651 <li 652 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li> 653 <li 654 class="toc_deprecated" 655 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li> 656 <li 657 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li> 658 <li 659 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li> 660 <li 661 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li> 662 <li 663 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li> 664 <li 665 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li> 666 <li 667 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li> 668 <li 669 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li> 670 <li 671 ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li> 672 <li 673 ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li> 674 <li 675 ><a href="#static_android.request.characteristicKeysNeedingPermission">android.request.characteristicKeysNeedingPermission</a></li> 676 </ul> 677 </li> 678 <li> 679 <span class="toc_kind_header">dynamic</span> 680 <ul class="toc_section"> 681 <li 682 class="toc_deprecated" 683 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li> 684 <li 685 ><a href="#dynamic_android.request.id">android.request.id</a></li> 686 <li 687 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li> 688 <li 689 class="toc_deprecated" 690 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li> 691 <li 692 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li> 693 </ul> 694 </li> 695 </ul> <!-- toc_section --> 696 </li> 697 <li> 698 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span> 699 <ul class="toc_section"> 700 <li> 701 <span class="toc_kind_header">controls</span> 702 <ul class="toc_section"> 703 <li 704 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 705 </ul> 706 </li> 707 <li> 708 <span class="toc_kind_header">static</span> 709 <ul class="toc_section"> 710 <li 711 class="toc_deprecated" 712 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li> 713 <li 714 class="toc_deprecated" 715 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li> 716 <li 717 class="toc_deprecated" 718 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li> 719 <li 720 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li> 721 <li 722 class="toc_deprecated" 723 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li> 724 <li 725 class="toc_deprecated" 726 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li> 727 <li 728 class="toc_deprecated" 729 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li> 730 <li 731 class="toc_deprecated" 732 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li> 733 <li 734 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li> 735 <li 736 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li> 737 <li 738 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li> 739 <li 740 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li> 741 <li 742 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li> 743 <li 744 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li> 745 <li 746 ><a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.scaler.availableRecommendedStreamConfigurations</a></li> 747 <li 748 ><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a></li> 749 <li 750 ><a href="#static_android.scaler.mandatoryStreamCombinations">android.scaler.mandatoryStreamCombinations</a></li> 751 </ul> 752 </li> 753 <li> 754 <span class="toc_kind_header">dynamic</span> 755 <ul class="toc_section"> 756 <li 757 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 758 </ul> 759 </li> 760 </ul> <!-- toc_section --> 761 </li> 762 <li> 763 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> 764 <ul class="toc_section"> 765 <li> 766 <span class="toc_kind_header">controls</span> 767 <ul class="toc_section"> 768 <li 769 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 770 <li 771 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 772 <li 773 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 774 <li 775 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 776 <li 777 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 778 </ul> 779 </li> 780 <li> 781 <span class="toc_kind_header">static</span> 782 <ul class="toc_section"> 783 784 <li 785 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> 786 <li 787 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> 788 <li 789 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> 790 <li 791 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> 792 <li 793 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> 794 <li 795 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> 796 <li 797 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> 798 <li 799 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> 800 <li 801 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li> 802 <li 803 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li> 804 <li 805 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li> 806 807 <li 808 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li> 809 <li 810 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li> 811 <li 812 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li> 813 <li 814 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li> 815 <li 816 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li> 817 <li 818 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li> 819 <li 820 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li> 821 <li 822 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li> 823 <li 824 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> 825 <li 826 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> 827 <li 828 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> 829 <li 830 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> 831 <li 832 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li> 833 <li 834 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> 835 <li 836 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li> 837 <li 838 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li> 839 </ul> 840 </li> 841 <li> 842 <span class="toc_kind_header">dynamic</span> 843 <ul class="toc_section"> 844 <li 845 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 846 <li 847 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 848 <li 849 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 850 <li 851 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 852 <li 853 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 854 <li 855 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> 856 <li 857 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li> 858 <li 859 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> 860 <li 861 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> 862 <li 863 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> 864 <li 865 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 866 <li 867 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 868 <li 869 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li> 870 <li 871 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li> 872 <li 873 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li> 874 </ul> 875 </li> 876 </ul> <!-- toc_section --> 877 </li> 878 <li> 879 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 880 <ul class="toc_section"> 881 <li> 882 <span class="toc_kind_header">controls</span> 883 <ul class="toc_section"> 884 <li 885 ><a href="#controls_android.shading.mode">android.shading.mode</a></li> 886 <li 887 ><a href="#controls_android.shading.strength">android.shading.strength</a></li> 888 </ul> 889 </li> 890 <li> 891 <span class="toc_kind_header">dynamic</span> 892 <ul class="toc_section"> 893 <li 894 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 895 </ul> 896 </li> 897 <li> 898 <span class="toc_kind_header">static</span> 899 <ul class="toc_section"> 900 <li 901 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li> 902 </ul> 903 </li> 904 </ul> <!-- toc_section --> 905 </li> 906 <li> 907 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> 908 <ul class="toc_section"> 909 <li> 910 <span class="toc_kind_header">controls</span> 911 <ul class="toc_section"> 912 <li 913 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 914 <li 915 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 916 <li 917 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 918 <li 919 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 920 <li 921 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 922 <li 923 ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li> 924 </ul> 925 </li> 926 <li> 927 <span class="toc_kind_header">static</span> 928 <ul class="toc_section"> 929 930 <li 931 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 932 <li 933 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 934 <li 935 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 936 <li 937 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 938 <li 939 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 940 <li 941 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 942 <li 943 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> 944 <li 945 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li> 946 <li 947 ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li> 948 949 </ul> 950 </li> 951 <li> 952 <span class="toc_kind_header">dynamic</span> 953 <ul class="toc_section"> 954 <li 955 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 956 <li 957 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 958 <li 959 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 960 <li 961 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 962 <li 963 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 964 <li 965 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li> 966 <li 967 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 968 <li 969 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 970 <li 971 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 972 <li 973 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 974 <li 975 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li> 976 <li 977 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 978 <li 979 class="toc_deprecated" 980 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 981 <li 982 class="toc_deprecated" 983 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 984 <li 985 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 986 <li 987 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 988 <li 989 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> 990 <li 991 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 992 <li 993 ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li> 994 <li 995 ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li> 996 <li 997 ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li> 998 <li 999 ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li> 1000 <li 1001 ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li> 1002 </ul> 1003 </li> 1004 </ul> <!-- toc_section --> 1005 </li> 1006 <li> 1007 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 1008 <ul class="toc_section"> 1009 <li> 1010 <span class="toc_kind_header">controls</span> 1011 <ul class="toc_section"> 1012 <li 1013 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 1014 <li 1015 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 1016 <li 1017 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 1018 <li 1019 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li> 1020 <li 1021 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 1022 <li 1023 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li> 1024 <li 1025 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 1026 </ul> 1027 </li> 1028 <li> 1029 <span class="toc_kind_header">static</span> 1030 <ul class="toc_section"> 1031 <li 1032 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 1033 <li 1034 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> 1035 </ul> 1036 </li> 1037 <li> 1038 <span class="toc_kind_header">dynamic</span> 1039 <ul class="toc_section"> 1040 <li 1041 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 1042 <li 1043 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 1044 <li 1045 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 1046 <li 1047 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li> 1048 <li 1049 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 1050 <li 1051 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li> 1052 <li 1053 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 1054 </ul> 1055 </li> 1056 </ul> <!-- toc_section --> 1057 </li> 1058 <li> 1059 <span class="toc_section_header"><a href="#section_led">led</a></span> 1060 <ul class="toc_section"> 1061 <li> 1062 <span class="toc_kind_header">controls</span> 1063 <ul class="toc_section"> 1064 <li 1065 ><a href="#controls_android.led.transmit">android.led.transmit</a></li> 1066 </ul> 1067 </li> 1068 <li> 1069 <span class="toc_kind_header">dynamic</span> 1070 <ul class="toc_section"> 1071 <li 1072 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 1073 </ul> 1074 </li> 1075 <li> 1076 <span class="toc_kind_header">static</span> 1077 <ul class="toc_section"> 1078 <li 1079 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 1080 </ul> 1081 </li> 1082 </ul> <!-- toc_section --> 1083 </li> 1084 <li> 1085 <span class="toc_section_header"><a href="#section_info">info</a></span> 1086 <ul class="toc_section"> 1087 <li> 1088 <span class="toc_kind_header">static</span> 1089 <ul class="toc_section"> 1090 <li 1091 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 1092 <li 1093 ><a href="#static_android.info.version">android.info.version</a></li> 1094 <li 1095 ><a href="#static_android.info.supportedBufferManagementVersion">android.info.supportedBufferManagementVersion</a></li> 1096 </ul> 1097 </li> 1098 </ul> <!-- toc_section --> 1099 </li> 1100 <li> 1101 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 1102 <ul class="toc_section"> 1103 <li> 1104 <span class="toc_kind_header">controls</span> 1105 <ul class="toc_section"> 1106 <li 1107 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 1108 </ul> 1109 </li> 1110 <li> 1111 <span class="toc_kind_header">dynamic</span> 1112 <ul class="toc_section"> 1113 <li 1114 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 1115 </ul> 1116 </li> 1117 </ul> <!-- toc_section --> 1118 </li> 1119 <li> 1120 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 1121 <ul class="toc_section"> 1122 <li> 1123 <span class="toc_kind_header">dynamic</span> 1124 <ul class="toc_section"> 1125 <li 1126 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 1127 </ul> 1128 </li> 1129 <li> 1130 <span class="toc_kind_header">static</span> 1131 <ul class="toc_section"> 1132 <li 1133 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 1134 </ul> 1135 </li> 1136 </ul> <!-- toc_section --> 1137 </li> 1138 <li> 1139 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span> 1140 <ul class="toc_section"> 1141 <li> 1142 <span class="toc_kind_header">controls</span> 1143 <ul class="toc_section"> 1144 <li 1145 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1146 </ul> 1147 </li> 1148 <li> 1149 <span class="toc_kind_header">dynamic</span> 1150 <ul class="toc_section"> 1151 <li 1152 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1153 </ul> 1154 </li> 1155 <li> 1156 <span class="toc_kind_header">static</span> 1157 <ul class="toc_section"> 1158 <li 1159 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li> 1160 </ul> 1161 </li> 1162 </ul> <!-- toc_section --> 1163 </li> 1164 <li> 1165 <span class="toc_section_header"><a href="#section_depth">depth</a></span> 1166 <ul class="toc_section"> 1167 <li> 1168 <span class="toc_kind_header">static</span> 1169 <ul class="toc_section"> 1170 <li 1171 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li> 1172 <li 1173 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li> 1174 <li 1175 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li> 1176 <li 1177 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li> 1178 <li 1179 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li> 1180 <li 1181 ><a href="#static_android.depth.availableRecommendedDepthStreamConfigurations">android.depth.availableRecommendedDepthStreamConfigurations</a></li> 1182 <li 1183 ><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a></li> 1184 <li 1185 ><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a></li> 1186 <li 1187 ><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a></li> 1188 </ul> 1189 </li> 1190 </ul> <!-- toc_section --> 1191 </li> 1192 <li> 1193 <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span> 1194 <ul class="toc_section"> 1195 <li> 1196 <span class="toc_kind_header">static</span> 1197 <ul class="toc_section"> 1198 <li 1199 ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li> 1200 <li 1201 ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li> 1202 </ul> 1203 </li> 1204 <li> 1205 <span class="toc_kind_header">dynamic</span> 1206 <ul class="toc_section"> 1207 <li 1208 ><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a></li> 1209 </ul> 1210 </li> 1211 </ul> <!-- toc_section --> 1212 </li> 1213 <li> 1214 <span class="toc_section_header"><a href="#section_distortionCorrection">distortionCorrection</a></span> 1215 <ul class="toc_section"> 1216 <li> 1217 <span class="toc_kind_header">controls</span> 1218 <ul class="toc_section"> 1219 <li 1220 ><a href="#controls_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li> 1221 </ul> 1222 </li> 1223 <li> 1224 <span class="toc_kind_header">static</span> 1225 <ul class="toc_section"> 1226 <li 1227 ><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a></li> 1228 </ul> 1229 </li> 1230 <li> 1231 <span class="toc_kind_header">dynamic</span> 1232 <ul class="toc_section"> 1233 <li 1234 ><a href="#dynamic_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li> 1235 </ul> 1236 </li> 1237 </ul> <!-- toc_section --> 1238 </li> 1239 <li> 1240 <span class="toc_section_header"><a href="#section_heic">heic</a></span> 1241 <ul class="toc_section"> 1242 <li> 1243 <span class="toc_kind_header">static</span> 1244 <ul class="toc_section"> 1245 1246 <li 1247 ><a href="#static_android.heic.info.supported">android.heic.info.supported</a></li> 1248 <li 1249 ><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a></li> 1250 1251 <li 1252 ><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a></li> 1253 <li 1254 ><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a></li> 1255 <li 1256 ><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a></li> 1257 </ul> 1258 </li> 1259 </ul> <!-- toc_section --> 1260 </li> 1261 </ul> 1262 1263 1264 <h1>Properties</h1> 1265 <table class="properties"> 1266 1267 <thead class="thead_dummy"> 1268 <tr> 1269 <th class="th_name">Property Name</th> 1270 <th class="th_type">Type</th> 1271 <th class="th_description">Description</th> 1272 <th class="th_units">Units</th> 1273 <th class="th_range">Range</th> 1274 <th class="th_hal_version">HIDL HAL version</th> 1275 <th class="th_tags">Tags</th> 1276 </tr> 1277 </thead> <!-- so that the first occurrence of thead is not 1278 above the first occurrence of tr --> 1279<!-- <namespace name="android"> --> 1280 <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr> 1281 1282 1283 <tr><td colspan="7" class="kind">controls</td></tr> 1284 1285 <thead class="entries_header"> 1286 <tr> 1287 <th class="th_name">Property Name</th> 1288 <th class="th_type">Type</th> 1289 <th class="th_description">Description</th> 1290 <th class="th_units">Units</th> 1291 <th class="th_range">Range</th> 1292 <th class="th_hal_version">Initial HIDL HAL version</th> 1293 <th class="th_tags">Tags</th> 1294 </tr> 1295 </thead> 1296 1297 <tbody> 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 <tr class="entry" id="controls_android.colorCorrection.mode"> 1309 <td class="entry_name 1310 " rowspan="5"> 1311 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1312 </td> 1313 <td class="entry_type"> 1314 <span class="entry_type_name entry_type_name_enum">byte</span> 1315 1316 <span class="entry_type_visibility"> [public]</span> 1317 1318 1319 <span class="entry_type_hwlevel">[full] </span> 1320 1321 1322 1323 <ul class="entry_type_enum"> 1324 <li> 1325 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span> 1326 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1327and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1328<p>All advanced white balance adjustments (not specified 1329by our white balance pipeline) must be disabled.<wbr/></p> 1330<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 1331TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1332this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1333 </li> 1334 <li> 1335 <span class="entry_type_enum_name">FAST (v3.2)</span> 1336 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1337capture rate relative to sensor raw output.<wbr/></p> 1338<p>Advanced white balance adjustments above and beyond 1339the specified white balance pipeline may be applied.<wbr/></p> 1340<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 1341the camera device uses the last frame's AWB values 1342(or defaults if AWB has never been run).<wbr/></p></span> 1343 </li> 1344 <li> 1345 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 1346 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1347quality but the capture rate might be reduced (relative to sensor 1348raw output rate)</p> 1349<p>Advanced white balance adjustments above and beyond 1350the specified white balance pipeline may be applied.<wbr/></p> 1351<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 1352the camera device uses the last frame's AWB values 1353(or defaults if AWB has never been run).<wbr/></p></span> 1354 </li> 1355 </ul> 1356 1357 </td> <!-- entry_type --> 1358 1359 <td class="entry_description"> 1360 <p>The mode control selects how the image data is converted from the 1361sensor's native color into linear sRGB color.<wbr/></p> 1362 </td> 1363 1364 <td class="entry_units"> 1365 </td> 1366 1367 <td class="entry_range"> 1368 </td> 1369 1370 <td class="entry_hal_version"> 1371 <p>3.<wbr/>2</p> 1372 </td> 1373 1374 <td class="entry_tags"> 1375 </td> 1376 1377 </tr> 1378 <tr class="entries_header"> 1379 <th class="th_details" colspan="6">Details</th> 1380 </tr> 1381 <tr class="entry_cont"> 1382 <td class="entry_details" colspan="6"> 1383 <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 1384control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1385application controls how the color mapping is performed.<wbr/></p> 1386<p>We define the expected processing pipeline below.<wbr/> For consistency 1387across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1388<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1389do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1390<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1391camera device (in the results) and be roughly correct.<wbr/></p> 1392<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1393FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1394as what was produced by the camera device in the earlier frame.<wbr/></p> 1395<p>The expected processing pipeline is as follows:</p> 1396<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1397<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1398gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1399matrix (applied after demosaic).<wbr/></p> 1400<p>The 4-channel white-balance gains are defined as:</p> 1401<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1402</code></pre> 1403<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1404output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1405These may be identical for a given camera device implementation; if 1406the camera device does not support a separate gain for even/<wbr/>odd green 1407channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1408<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1409<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1410<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 ] 1411</code></pre> 1412<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1413to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1414<p>with colors as follows:</p> 1415<pre><code>r' = I0r + I1g + I2b 1416g' = I3r + I4g + I5b 1417b' = I6r + I7g + I8b 1418</code></pre> 1419<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1420values are clipped to fit within the range.<wbr/></p> 1421 </td> 1422 </tr> 1423 1424 <tr class="entries_header"> 1425 <th class="th_details" colspan="6">HAL Implementation Details</th> 1426 </tr> 1427 <tr class="entry_cont"> 1428 <td class="entry_details" colspan="6"> 1429 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1430on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1431That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1432capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1433 </td> 1434 </tr> 1435 1436 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1437 <!-- end of entry --> 1438 1439 1440 <tr class="entry" id="controls_android.colorCorrection.transform"> 1441 <td class="entry_name 1442 " rowspan="3"> 1443 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1444 </td> 1445 <td class="entry_type"> 1446 <span class="entry_type_name">rational</span> 1447 <span class="entry_type_container">x</span> 1448 1449 <span class="entry_type_array"> 1450 3 x 3 1451 </span> 1452 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1453 1454 1455 <span class="entry_type_hwlevel">[full] </span> 1456 1457 1458 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1459 1460 1461 </td> <!-- entry_type --> 1462 1463 <td class="entry_description"> 1464 <p>A color transform matrix to use to transform 1465from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1466 </td> 1467 1468 <td class="entry_units"> 1469 Unitless scale factors 1470 </td> 1471 1472 <td class="entry_range"> 1473 </td> 1474 1475 <td class="entry_hal_version"> 1476 <p>3.<wbr/>2</p> 1477 </td> 1478 1479 <td class="entry_tags"> 1480 </td> 1481 1482 </tr> 1483 <tr class="entries_header"> 1484 <th class="th_details" colspan="6">Details</th> 1485 </tr> 1486 <tr class="entry_cont"> 1487 <td class="entry_details" colspan="6"> 1488 <p>This matrix is either set by the camera device when the request 1489<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1490directly by the application in the request when the 1491<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1492<p>In the latter case,<wbr/> the camera device may round the matrix to account 1493for precision issues; the final rounded matrix should be reported back 1494in this matrix result metadata.<wbr/> The transform should keep the magnitude 1495of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1496values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1497<p>The valid range of each matrix element varies on different devices,<wbr/> but 1498values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1499 </td> 1500 </tr> 1501 1502 1503 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1504 <!-- end of entry --> 1505 1506 1507 <tr class="entry" id="controls_android.colorCorrection.gains"> 1508 <td class="entry_name 1509 " rowspan="5"> 1510 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1511 </td> 1512 <td class="entry_type"> 1513 <span class="entry_type_name">float</span> 1514 <span class="entry_type_container">x</span> 1515 1516 <span class="entry_type_array"> 1517 4 1518 </span> 1519 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1520 1521 1522 <span class="entry_type_hwlevel">[full] </span> 1523 1524 1525 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1526 1527 1528 </td> <!-- entry_type --> 1529 1530 <td class="entry_description"> 1531 <p>Gains applying to Bayer raw color channels for 1532white-balance.<wbr/></p> 1533 </td> 1534 1535 <td class="entry_units"> 1536 Unitless gain factors 1537 </td> 1538 1539 <td class="entry_range"> 1540 </td> 1541 1542 <td class="entry_hal_version"> 1543 <p>3.<wbr/>2</p> 1544 </td> 1545 1546 <td class="entry_tags"> 1547 </td> 1548 1549 </tr> 1550 <tr class="entries_header"> 1551 <th class="th_details" colspan="6">Details</th> 1552 </tr> 1553 <tr class="entry_cont"> 1554 <td class="entry_details" colspan="6"> 1555 <p>These per-channel gains are either set by the camera device 1556when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1557TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1558request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1559TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1560<p>The gains in the result metadata are the gains actually 1561applied by the camera device to the current frame.<wbr/></p> 1562<p>The valid range of gains varies on different devices,<wbr/> but gains 1563between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1564device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1565this can create color artifacts.<wbr/></p> 1566 </td> 1567 </tr> 1568 1569 <tr class="entries_header"> 1570 <th class="th_details" colspan="6">HAL Implementation Details</th> 1571 </tr> 1572 <tr class="entry_cont"> 1573 <td class="entry_details" colspan="6"> 1574 <p>The 4-channel white-balance gains are defined in 1575the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1576for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1577is the gain for green pixels on the odd rows.<wbr/></p> 1578<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1579channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1580<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1581 </td> 1582 </tr> 1583 1584 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1585 <!-- end of entry --> 1586 1587 1588 <tr class="entry" id="controls_android.colorCorrection.aberrationMode"> 1589 <td class="entry_name 1590 " rowspan="3"> 1591 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1592 </td> 1593 <td class="entry_type"> 1594 <span class="entry_type_name entry_type_name_enum">byte</span> 1595 1596 <span class="entry_type_visibility"> [public]</span> 1597 1598 1599 <span class="entry_type_hwlevel">[legacy] </span> 1600 1601 1602 1603 <ul class="entry_type_enum"> 1604 <li> 1605 <span class="entry_type_enum_name">OFF (v3.2)</span> 1606 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1607 </li> 1608 <li> 1609 <span class="entry_type_enum_name">FAST (v3.2)</span> 1610 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1611relative to sensor raw output.<wbr/></p></span> 1612 </li> 1613 <li> 1614 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 1615 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1616reduced (relative to sensor raw output rate)</p></span> 1617 </li> 1618 </ul> 1619 1620 </td> <!-- entry_type --> 1621 1622 <td class="entry_description"> 1623 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1624 </td> 1625 1626 <td class="entry_units"> 1627 </td> 1628 1629 <td class="entry_range"> 1630 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1631 </td> 1632 1633 <td class="entry_hal_version"> 1634 <p>3.<wbr/>2</p> 1635 </td> 1636 1637 <td class="entry_tags"> 1638 </td> 1639 1640 </tr> 1641 <tr class="entries_header"> 1642 <th class="th_details" colspan="6">Details</th> 1643 </tr> 1644 <tr class="entry_cont"> 1645 <td class="entry_details" colspan="6"> 1646 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1647can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1648the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1649minimize the chromatic artifacts that may occur along the object boundaries in an 1650image.<wbr/></p> 1651<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1652correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1653use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1654capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1655applying aberration correction.<wbr/></p> 1656<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1657 </td> 1658 </tr> 1659 1660 1661 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1662 <!-- end of entry --> 1663 1664 1665 1666 <!-- end of kind --> 1667 </tbody> 1668 <tr><td colspan="7" class="kind">dynamic</td></tr> 1669 1670 <thead class="entries_header"> 1671 <tr> 1672 <th class="th_name">Property Name</th> 1673 <th class="th_type">Type</th> 1674 <th class="th_description">Description</th> 1675 <th class="th_units">Units</th> 1676 <th class="th_range">Range</th> 1677 <th class="th_hal_version">Initial HIDL HAL version</th> 1678 <th class="th_tags">Tags</th> 1679 </tr> 1680 </thead> 1681 1682 <tbody> 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 <tr class="entry" id="dynamic_android.colorCorrection.mode"> 1694 <td class="entry_name 1695 " rowspan="5"> 1696 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1697 </td> 1698 <td class="entry_type"> 1699 <span class="entry_type_name entry_type_name_enum">byte</span> 1700 1701 <span class="entry_type_visibility"> [public]</span> 1702 1703 1704 <span class="entry_type_hwlevel">[full] </span> 1705 1706 1707 1708 <ul class="entry_type_enum"> 1709 <li> 1710 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span> 1711 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1712and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1713<p>All advanced white balance adjustments (not specified 1714by our white balance pipeline) must be disabled.<wbr/></p> 1715<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 1716TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1717this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1718 </li> 1719 <li> 1720 <span class="entry_type_enum_name">FAST (v3.2)</span> 1721 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1722capture rate relative to sensor raw output.<wbr/></p> 1723<p>Advanced white balance adjustments above and beyond 1724the specified white balance pipeline may be applied.<wbr/></p> 1725<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 1726the camera device uses the last frame's AWB values 1727(or defaults if AWB has never been run).<wbr/></p></span> 1728 </li> 1729 <li> 1730 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 1731 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1732quality but the capture rate might be reduced (relative to sensor 1733raw output rate)</p> 1734<p>Advanced white balance adjustments above and beyond 1735the specified white balance pipeline may be applied.<wbr/></p> 1736<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 1737the camera device uses the last frame's AWB values 1738(or defaults if AWB has never been run).<wbr/></p></span> 1739 </li> 1740 </ul> 1741 1742 </td> <!-- entry_type --> 1743 1744 <td class="entry_description"> 1745 <p>The mode control selects how the image data is converted from the 1746sensor's native color into linear sRGB color.<wbr/></p> 1747 </td> 1748 1749 <td class="entry_units"> 1750 </td> 1751 1752 <td class="entry_range"> 1753 </td> 1754 1755 <td class="entry_hal_version"> 1756 <p>3.<wbr/>2</p> 1757 </td> 1758 1759 <td class="entry_tags"> 1760 </td> 1761 1762 </tr> 1763 <tr class="entries_header"> 1764 <th class="th_details" colspan="6">Details</th> 1765 </tr> 1766 <tr class="entry_cont"> 1767 <td class="entry_details" colspan="6"> 1768 <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 1769control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1770application controls how the color mapping is performed.<wbr/></p> 1771<p>We define the expected processing pipeline below.<wbr/> For consistency 1772across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1773<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1774do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1775<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1776camera device (in the results) and be roughly correct.<wbr/></p> 1777<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1778FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1779as what was produced by the camera device in the earlier frame.<wbr/></p> 1780<p>The expected processing pipeline is as follows:</p> 1781<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1782<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1783gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1784matrix (applied after demosaic).<wbr/></p> 1785<p>The 4-channel white-balance gains are defined as:</p> 1786<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1787</code></pre> 1788<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1789output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1790These may be identical for a given camera device implementation; if 1791the camera device does not support a separate gain for even/<wbr/>odd green 1792channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1793<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1794<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1795<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 ] 1796</code></pre> 1797<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1798to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1799<p>with colors as follows:</p> 1800<pre><code>r' = I0r + I1g + I2b 1801g' = I3r + I4g + I5b 1802b' = I6r + I7g + I8b 1803</code></pre> 1804<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1805values are clipped to fit within the range.<wbr/></p> 1806 </td> 1807 </tr> 1808 1809 <tr class="entries_header"> 1810 <th class="th_details" colspan="6">HAL Implementation Details</th> 1811 </tr> 1812 <tr class="entry_cont"> 1813 <td class="entry_details" colspan="6"> 1814 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1815on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1816That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1817capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1818 </td> 1819 </tr> 1820 1821 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1822 <!-- end of entry --> 1823 1824 1825 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 1826 <td class="entry_name 1827 " rowspan="3"> 1828 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1829 </td> 1830 <td class="entry_type"> 1831 <span class="entry_type_name">rational</span> 1832 <span class="entry_type_container">x</span> 1833 1834 <span class="entry_type_array"> 1835 3 x 3 1836 </span> 1837 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1838 1839 1840 <span class="entry_type_hwlevel">[full] </span> 1841 1842 1843 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1844 1845 1846 </td> <!-- entry_type --> 1847 1848 <td class="entry_description"> 1849 <p>A color transform matrix to use to transform 1850from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1851 </td> 1852 1853 <td class="entry_units"> 1854 Unitless scale factors 1855 </td> 1856 1857 <td class="entry_range"> 1858 </td> 1859 1860 <td class="entry_hal_version"> 1861 <p>3.<wbr/>2</p> 1862 </td> 1863 1864 <td class="entry_tags"> 1865 </td> 1866 1867 </tr> 1868 <tr class="entries_header"> 1869 <th class="th_details" colspan="6">Details</th> 1870 </tr> 1871 <tr class="entry_cont"> 1872 <td class="entry_details" colspan="6"> 1873 <p>This matrix is either set by the camera device when the request 1874<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1875directly by the application in the request when the 1876<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1877<p>In the latter case,<wbr/> the camera device may round the matrix to account 1878for precision issues; the final rounded matrix should be reported back 1879in this matrix result metadata.<wbr/> The transform should keep the magnitude 1880of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1881values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1882<p>The valid range of each matrix element varies on different devices,<wbr/> but 1883values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1884 </td> 1885 </tr> 1886 1887 1888 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1889 <!-- end of entry --> 1890 1891 1892 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 1893 <td class="entry_name 1894 " rowspan="5"> 1895 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1896 </td> 1897 <td class="entry_type"> 1898 <span class="entry_type_name">float</span> 1899 <span class="entry_type_container">x</span> 1900 1901 <span class="entry_type_array"> 1902 4 1903 </span> 1904 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1905 1906 1907 <span class="entry_type_hwlevel">[full] </span> 1908 1909 1910 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1911 1912 1913 </td> <!-- entry_type --> 1914 1915 <td class="entry_description"> 1916 <p>Gains applying to Bayer raw color channels for 1917white-balance.<wbr/></p> 1918 </td> 1919 1920 <td class="entry_units"> 1921 Unitless gain factors 1922 </td> 1923 1924 <td class="entry_range"> 1925 </td> 1926 1927 <td class="entry_hal_version"> 1928 <p>3.<wbr/>2</p> 1929 </td> 1930 1931 <td class="entry_tags"> 1932 </td> 1933 1934 </tr> 1935 <tr class="entries_header"> 1936 <th class="th_details" colspan="6">Details</th> 1937 </tr> 1938 <tr class="entry_cont"> 1939 <td class="entry_details" colspan="6"> 1940 <p>These per-channel gains are either set by the camera device 1941when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1942TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1943request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1944TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1945<p>The gains in the result metadata are the gains actually 1946applied by the camera device to the current frame.<wbr/></p> 1947<p>The valid range of gains varies on different devices,<wbr/> but gains 1948between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1949device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1950this can create color artifacts.<wbr/></p> 1951 </td> 1952 </tr> 1953 1954 <tr class="entries_header"> 1955 <th class="th_details" colspan="6">HAL Implementation Details</th> 1956 </tr> 1957 <tr class="entry_cont"> 1958 <td class="entry_details" colspan="6"> 1959 <p>The 4-channel white-balance gains are defined in 1960the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1961for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1962is the gain for green pixels on the odd rows.<wbr/></p> 1963<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1964channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1965<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1966 </td> 1967 </tr> 1968 1969 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1970 <!-- end of entry --> 1971 1972 1973 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode"> 1974 <td class="entry_name 1975 " rowspan="3"> 1976 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1977 </td> 1978 <td class="entry_type"> 1979 <span class="entry_type_name entry_type_name_enum">byte</span> 1980 1981 <span class="entry_type_visibility"> [public]</span> 1982 1983 1984 <span class="entry_type_hwlevel">[legacy] </span> 1985 1986 1987 1988 <ul class="entry_type_enum"> 1989 <li> 1990 <span class="entry_type_enum_name">OFF (v3.2)</span> 1991 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1992 </li> 1993 <li> 1994 <span class="entry_type_enum_name">FAST (v3.2)</span> 1995 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1996relative to sensor raw output.<wbr/></p></span> 1997 </li> 1998 <li> 1999 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 2000 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 2001reduced (relative to sensor raw output rate)</p></span> 2002 </li> 2003 </ul> 2004 2005 </td> <!-- entry_type --> 2006 2007 <td class="entry_description"> 2008 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 2009 </td> 2010 2011 <td class="entry_units"> 2012 </td> 2013 2014 <td class="entry_range"> 2015 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 2016 </td> 2017 2018 <td class="entry_hal_version"> 2019 <p>3.<wbr/>2</p> 2020 </td> 2021 2022 <td class="entry_tags"> 2023 </td> 2024 2025 </tr> 2026 <tr class="entries_header"> 2027 <th class="th_details" colspan="6">Details</th> 2028 </tr> 2029 <tr class="entry_cont"> 2030 <td class="entry_details" colspan="6"> 2031 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 2032can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 2033the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 2034minimize the chromatic artifacts that may occur along the object boundaries in an 2035image.<wbr/></p> 2036<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 2037correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 2038use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 2039capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 2040applying aberration correction.<wbr/></p> 2041<p>LEGACY devices will always be in FAST mode.<wbr/></p> 2042 </td> 2043 </tr> 2044 2045 2046 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2047 <!-- end of entry --> 2048 2049 2050 2051 <!-- end of kind --> 2052 </tbody> 2053 <tr><td colspan="7" class="kind">static</td></tr> 2054 2055 <thead class="entries_header"> 2056 <tr> 2057 <th class="th_name">Property Name</th> 2058 <th class="th_type">Type</th> 2059 <th class="th_description">Description</th> 2060 <th class="th_units">Units</th> 2061 <th class="th_range">Range</th> 2062 <th class="th_hal_version">Initial HIDL HAL version</th> 2063 <th class="th_tags">Tags</th> 2064 </tr> 2065 </thead> 2066 2067 <tbody> 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes"> 2079 <td class="entry_name 2080 " rowspan="5"> 2081 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes 2082 </td> 2083 <td class="entry_type"> 2084 <span class="entry_type_name">byte</span> 2085 <span class="entry_type_container">x</span> 2086 2087 <span class="entry_type_array"> 2088 n 2089 </span> 2090 <span class="entry_type_visibility"> [public as enumList]</span> 2091 2092 2093 <span class="entry_type_hwlevel">[legacy] </span> 2094 2095 2096 <div class="entry_type_notes">list of enums</div> 2097 2098 2099 </td> <!-- entry_type --> 2100 2101 <td class="entry_description"> 2102 <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 2103supported by this camera device.<wbr/></p> 2104 </td> 2105 2106 <td class="entry_units"> 2107 </td> 2108 2109 <td class="entry_range"> 2110 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p> 2111 </td> 2112 2113 <td class="entry_hal_version"> 2114 <p>3.<wbr/>2</p> 2115 </td> 2116 2117 <td class="entry_tags"> 2118 <ul class="entry_tags"> 2119 <li><a href="#tag_V1">V1</a></li> 2120 </ul> 2121 </td> 2122 2123 </tr> 2124 <tr class="entries_header"> 2125 <th class="th_details" colspan="6">Details</th> 2126 </tr> 2127 <tr class="entry_cont"> 2128 <td class="entry_details" colspan="6"> 2129 <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 2130aberration correction modes are available for a device,<wbr/> this list will solely include 2131OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p> 2132<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list 2133OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p> 2134<p>LEGACY devices will always only support FAST mode.<wbr/></p> 2135 </td> 2136 </tr> 2137 2138 <tr class="entries_header"> 2139 <th class="th_details" colspan="6">HAL Implementation Details</th> 2140 </tr> 2141 <tr class="entry_cont"> 2142 <td class="entry_details" colspan="6"> 2143 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available 2144on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 2145That is,<wbr/> if the highest quality implementation on the camera device does not slow down 2146capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 2147 </td> 2148 </tr> 2149 2150 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2151 <!-- end of entry --> 2152 2153 2154 2155 <!-- end of kind --> 2156 </tbody> 2157 2158 <!-- end of section --> 2159 <tr><td colspan="7" id="section_control" class="section">control</td></tr> 2160 2161 2162 <tr><td colspan="7" class="kind">controls</td></tr> 2163 2164 <thead class="entries_header"> 2165 <tr> 2166 <th class="th_name">Property Name</th> 2167 <th class="th_type">Type</th> 2168 <th class="th_description">Description</th> 2169 <th class="th_units">Units</th> 2170 <th class="th_range">Range</th> 2171 <th class="th_hal_version">Initial HIDL HAL version</th> 2172 <th class="th_tags">Tags</th> 2173 </tr> 2174 </thead> 2175 2176 <tbody> 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 2188 <td class="entry_name 2189 " rowspan="5"> 2190 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 2191 </td> 2192 <td class="entry_type"> 2193 <span class="entry_type_name entry_type_name_enum">byte</span> 2194 2195 <span class="entry_type_visibility"> [public]</span> 2196 2197 2198 <span class="entry_type_hwlevel">[legacy] </span> 2199 2200 2201 2202 <ul class="entry_type_enum"> 2203 <li> 2204 <span class="entry_type_enum_name">OFF (v3.2)</span> 2205 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 2206avoid banding problems.<wbr/></p></span> 2207 </li> 2208 <li> 2209 <span class="entry_type_enum_name">50HZ (v3.2)</span> 2210 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2211avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 2212 </li> 2213 <li> 2214 <span class="entry_type_enum_name">60HZ (v3.2)</span> 2215 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2216avoid banding problems with 60Hz illumination 2217sources.<wbr/></p></span> 2218 </li> 2219 <li> 2220 <span class="entry_type_enum_name">AUTO (v3.2)</span> 2221 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 2222antibanding routine to the current illumination 2223condition.<wbr/> This is the default mode if AUTO is 2224available on given camera device.<wbr/></p></span> 2225 </li> 2226 </ul> 2227 2228 </td> <!-- entry_type --> 2229 2230 <td class="entry_description"> 2231 <p>The desired setting for the camera device's auto-exposure 2232algorithm's antibanding compensation.<wbr/></p> 2233 </td> 2234 2235 <td class="entry_units"> 2236 </td> 2237 2238 <td class="entry_range"> 2239 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 2240 </td> 2241 2242 <td class="entry_hal_version"> 2243 <p>3.<wbr/>2</p> 2244 </td> 2245 2246 <td class="entry_tags"> 2247 <ul class="entry_tags"> 2248 <li><a href="#tag_BC">BC</a></li> 2249 </ul> 2250 </td> 2251 2252 </tr> 2253 <tr class="entries_header"> 2254 <th class="th_details" colspan="6">Details</th> 2255 </tr> 2256 <tr class="entry_cont"> 2257 <td class="entry_details" colspan="6"> 2258 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 2259lights,<wbr/> flicker at the rate of the power supply frequency 2260(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 2261typically not noticeable to a person,<wbr/> it can be visible to 2262a camera device.<wbr/> If a camera sets its exposure time to the 2263wrong value,<wbr/> the flicker may become visible in the 2264viewfinder as flicker or in a final captured image,<wbr/> as a 2265set of variable-brightness bands across the image.<wbr/></p> 2266<p>Therefore,<wbr/> the auto-exposure routines of camera devices 2267include antibanding routines that ensure that the chosen 2268exposure value will not cause such banding.<wbr/> The choice of 2269exposure time depends on the rate of flicker,<wbr/> which the 2270camera device can detect automatically,<wbr/> or the expected 2271rate can be selected by the application using this 2272control.<wbr/></p> 2273<p>A given camera device may not support all of the possible 2274options for the antibanding mode.<wbr/> The 2275<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 2276the available modes for a given camera device.<wbr/></p> 2277<p>AUTO mode is the default if it is available on given 2278camera device.<wbr/> When AUTO mode is not available,<wbr/> the 2279default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 2280and 60HZ will be available.<wbr/></p> 2281<p>If manual exposure control is enabled (by setting 2282<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/> 2283then this setting has no effect,<wbr/> and the application must 2284ensure it selects exposure times that do not cause banding 2285issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 2286the application in this.<wbr/></p> 2287 </td> 2288 </tr> 2289 2290 <tr class="entries_header"> 2291 <th class="th_details" colspan="6">HAL Implementation Details</th> 2292 </tr> 2293 <tr class="entry_cont"> 2294 <td class="entry_details" colspan="6"> 2295 <p>For all capture request templates,<wbr/> this field must be set 2296to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 2297the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 229860HZ must be available.<wbr/></p> 2299<p>If manual exposure control is enabled (by setting 2300<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/> 2301then the exposure values provided by the application must not be 2302adjusted for antibanding.<wbr/></p> 2303 </td> 2304 </tr> 2305 2306 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2307 <!-- end of entry --> 2308 2309 2310 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 2311 <td class="entry_name 2312 " rowspan="3"> 2313 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 2314 </td> 2315 <td class="entry_type"> 2316 <span class="entry_type_name">int32</span> 2317 2318 <span class="entry_type_visibility"> [public]</span> 2319 2320 2321 <span class="entry_type_hwlevel">[legacy] </span> 2322 2323 2324 2325 2326 </td> <!-- entry_type --> 2327 2328 <td class="entry_description"> 2329 <p>Adjustment to auto-exposure (AE) target image 2330brightness.<wbr/></p> 2331 </td> 2332 2333 <td class="entry_units"> 2334 Compensation steps 2335 </td> 2336 2337 <td class="entry_range"> 2338 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 2339 </td> 2340 2341 <td class="entry_hal_version"> 2342 <p>3.<wbr/>2</p> 2343 </td> 2344 2345 <td class="entry_tags"> 2346 <ul class="entry_tags"> 2347 <li><a href="#tag_BC">BC</a></li> 2348 </ul> 2349 </td> 2350 2351 </tr> 2352 <tr class="entries_header"> 2353 <th class="th_details" colspan="6">Details</th> 2354 </tr> 2355 <tr class="entry_cont"> 2356 <td class="entry_details" colspan="6"> 2357 <p>The adjustment is measured as a count of steps,<wbr/> with the 2358step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 2359allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 2360<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 2361will mean an exposure compensation of +2 EV; -3 will mean an 2362exposure compensation of -1 EV.<wbr/> One EV represents a doubling 2363of image brightness.<wbr/> Note that this control will only be 2364effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 2365will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 2366<p>In the event of exposure compensation value being changed,<wbr/> camera device 2367may take several frames to reach the newly requested exposure target.<wbr/> 2368During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 2369state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 2370change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 2371FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 2372 </td> 2373 </tr> 2374 2375 2376 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2377 <!-- end of entry --> 2378 2379 2380 <tr class="entry" id="controls_android.control.aeLock"> 2381 <td class="entry_name 2382 " rowspan="3"> 2383 android.<wbr/>control.<wbr/>ae<wbr/>Lock 2384 </td> 2385 <td class="entry_type"> 2386 <span class="entry_type_name entry_type_name_enum">byte</span> 2387 2388 <span class="entry_type_visibility"> [public as boolean]</span> 2389 2390 2391 <span class="entry_type_hwlevel">[legacy] </span> 2392 2393 2394 2395 <ul class="entry_type_enum"> 2396 <li> 2397 <span class="entry_type_enum_name">OFF (v3.2)</span> 2398 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 2399is free to update its parameters.<wbr/></p></span> 2400 </li> 2401 <li> 2402 <span class="entry_type_enum_name">ON (v3.2)</span> 2403 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 2404must not update the exposure and sensitivity parameters 2405while the lock is active.<wbr/></p> 2406<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 2407will still take effect while auto-exposure is locked.<wbr/></p> 2408<p>Some rare LEGACY devices may not support 2409this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 2410 </li> 2411 </ul> 2412 2413 </td> <!-- entry_type --> 2414 2415 <td class="entry_description"> 2416 <p>Whether auto-exposure (AE) is currently locked to its latest 2417calculated values.<wbr/></p> 2418 </td> 2419 2420 <td class="entry_units"> 2421 </td> 2422 2423 <td class="entry_range"> 2424 </td> 2425 2426 <td class="entry_hal_version"> 2427 <p>3.<wbr/>2</p> 2428 </td> 2429 2430 <td class="entry_tags"> 2431 <ul class="entry_tags"> 2432 <li><a href="#tag_BC">BC</a></li> 2433 </ul> 2434 </td> 2435 2436 </tr> 2437 <tr class="entries_header"> 2438 <th class="th_details" colspan="6">Details</th> 2439 </tr> 2440 <tr class="entry_cont"> 2441 <td class="entry_details" colspan="6"> 2442 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 2443and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 2444<p>Note that even when AE is locked,<wbr/> the flash may be fired if 2445the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 2446ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 2447<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 2448is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 2449<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 2450when AE is already locked,<wbr/> the camera device will not change the exposure time 2451(<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>) 2452parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 2453is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 2454<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/> 2455Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 2456<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 2457the AE if AE is locked by the camera device internally during precapture metering 2458sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 2459ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 2460will never succeed in a sequence of preview requests where AE lock is always set 2461to <code>false</code>.<wbr/></p> 2462<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 2463get locked do not necessarily correspond to the settings that were present in the 2464latest capture result received from the camera device,<wbr/> since additional captures 2465and AE updates may have occurred even before the result was sent out.<wbr/> If an 2466application is switching between automatic and manual control and wishes to eliminate 2467any flicker during the switch,<wbr/> the following procedure is recommended:</p> 2468<ol> 2469<li>Starting in auto-AE mode:</li> 2470<li>Lock AE</li> 2471<li>Wait for the first result to be output that has the AE locked</li> 2472<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 2473<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 2474</ol> 2475<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> 2476 </td> 2477 </tr> 2478 2479 2480 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2481 <!-- end of entry --> 2482 2483 2484 <tr class="entry" id="controls_android.control.aeMode"> 2485 <td class="entry_name 2486 " rowspan="3"> 2487 android.<wbr/>control.<wbr/>ae<wbr/>Mode 2488 </td> 2489 <td class="entry_type"> 2490 <span class="entry_type_name entry_type_name_enum">byte</span> 2491 2492 <span class="entry_type_visibility"> [public]</span> 2493 2494 2495 <span class="entry_type_hwlevel">[legacy] </span> 2496 2497 2498 2499 <ul class="entry_type_enum"> 2500 <li> 2501 <span class="entry_type_enum_name">OFF (v3.2)</span> 2502 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 2503<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2504<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 2505<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 2506device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 2507a flash unit for this camera device.<wbr/></p> 2508<p>Note that auto-white balance (AWB) and auto-focus (AF) 2509behavior is device dependent when AE is in OFF mode.<wbr/> 2510To have consistent behavior across different devices,<wbr/> 2511it is recommended to either set AWB and AF to OFF mode 2512or lock AWB and AF before setting AE to OFF.<wbr/> 2513See <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/> 2514<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> 2515for more details.<wbr/></p> 2516<p>LEGACY devices do not support the OFF mode and will 2517override attempts to use this value to ON.<wbr/></p></span> 2518 </li> 2519 <li> 2520 <span class="entry_type_enum_name">ON (v3.2)</span> 2521 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 2522with no flash control.<wbr/></p> 2523<p>The application's values for 2524<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2525<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2526<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 2527application has control over the various 2528android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 2529 </li> 2530 <li> 2531 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span> 2532 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2533the camera's flash unit,<wbr/> firing it in low-light 2534conditions.<wbr/></p> 2535<p>The flash may be fired during a precapture sequence 2536(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2537may be fired for captures for which the 2538<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2539STILL_<wbr/>CAPTURE</p></span> 2540 </li> 2541 <li> 2542 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span> 2543 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2544the camera's flash unit,<wbr/> always firing it for still 2545captures.<wbr/></p> 2546<p>The flash may be fired during a precapture sequence 2547(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2548will always be fired for captures for which the 2549<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2550STILL_<wbr/>CAPTURE</p></span> 2551 </li> 2552 <li> 2553 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span> 2554 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 2555reduction.<wbr/></p> 2556<p>If deemed necessary by the camera device,<wbr/> a red eye 2557reduction flash will fire during the precapture 2558sequence.<wbr/></p></span> 2559 </li> 2560 <li> 2561 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span> 2562 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p> 2563<p>It informs the camera device that an external flash has been turned on,<wbr/> and that 2564metering (and continuous focus if active) should be quickly recaculated to account 2565for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p> 2566<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the 2567other available AE modes.<wbr/></p> 2568<p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must 2569be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without 2570flash.<wbr/></p></span> 2571 </li> 2572 </ul> 2573 2574 </td> <!-- entry_type --> 2575 2576 <td class="entry_description"> 2577 <p>The desired mode for the camera device's 2578auto-exposure routine.<wbr/></p> 2579 </td> 2580 2581 <td class="entry_units"> 2582 </td> 2583 2584 <td class="entry_range"> 2585 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 2586 </td> 2587 2588 <td class="entry_hal_version"> 2589 <p>3.<wbr/>2</p> 2590 </td> 2591 2592 <td class="entry_tags"> 2593 <ul class="entry_tags"> 2594 <li><a href="#tag_BC">BC</a></li> 2595 </ul> 2596 </td> 2597 2598 </tr> 2599 <tr class="entries_header"> 2600 <th class="th_details" colspan="6">Details</th> 2601 </tr> 2602 <tr class="entry_cont"> 2603 <td class="entry_details" colspan="6"> 2604 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 2605AUTO.<wbr/></p> 2606<p>When set to any of the ON modes,<wbr/> the camera device's 2607auto-exposure routine is enabled,<wbr/> overriding the 2608application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 2609and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2610<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2611<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 2612is selected,<wbr/> the camera device's flash unit controls are 2613also overridden.<wbr/></p> 2614<p>The FLASH modes are only available if the camera device 2615has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 2616<p>If flash TORCH mode is desired,<wbr/> this field must be set to 2617ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 2618<p>When set to any of the ON modes,<wbr/> the values chosen by the 2619camera device auto-exposure routine for the overridden 2620fields for a given capture will be available in its 2621CaptureResult.<wbr/></p> 2622 </td> 2623 </tr> 2624 2625 2626 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2627 <!-- end of entry --> 2628 2629 2630 <tr class="entry" id="controls_android.control.aeRegions"> 2631 <td class="entry_name 2632 " rowspan="5"> 2633 android.<wbr/>control.<wbr/>ae<wbr/>Regions 2634 </td> 2635 <td class="entry_type"> 2636 <span class="entry_type_name">int32</span> 2637 <span class="entry_type_container">x</span> 2638 2639 <span class="entry_type_array"> 2640 5 x area_count 2641 </span> 2642 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2643 2644 2645 2646 2647 2648 2649 </td> <!-- entry_type --> 2650 2651 <td class="entry_description"> 2652 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 2653 </td> 2654 2655 <td class="entry_units"> 2656 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 2657 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 2658 distortion correction capability and mode 2659 </td> 2660 2661 <td class="entry_range"> 2662 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2663<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> 2664depending on distortion correction capability and mode</p> 2665 </td> 2666 2667 <td class="entry_hal_version"> 2668 <p>3.<wbr/>2</p> 2669 </td> 2670 2671 <td class="entry_tags"> 2672 <ul class="entry_tags"> 2673 <li><a href="#tag_BC">BC</a></li> 2674 </ul> 2675 </td> 2676 2677 </tr> 2678 <tr class="entries_header"> 2679 <th class="th_details" colspan="6">Details</th> 2680 </tr> 2681 <tr class="entry_cont"> 2682 <td class="entry_details" colspan="6"> 2683 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 2684Otherwise will always be present.<wbr/></p> 2685<p>The maximum number of regions supported by the device is determined by the value 2686of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 2687<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 2688system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being 2689the top-left pixel in the active pixel array,<wbr/> and 2690(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2691<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the 2692active pixel array.<wbr/></p> 2693<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 2694system depends on the mode being set.<wbr/> 2695When the distortion correction mode is OFF,<wbr/> the coordinate system follows 2696<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with 2697<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 2698(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2699<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right 2700pixel in the pre-correction active pixel array.<wbr/> 2701When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 2702<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 2703<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 2704(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2705<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the 2706active pixel array.<wbr/></p> 2707<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2708for every pixel in the area.<wbr/> This means that a large metering area 2709with the same weight as a smaller area will have more effect in 2710the metering result.<wbr/> Metering areas can partially overlap and the 2711camera device will add the weights in the overlap region.<wbr/></p> 2712<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 2713region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 2714weight is ignored.<wbr/></p> 2715<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2716camera device.<wbr/></p> 2717<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 2718capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2719region and output only the intersection rectangle as the metering region in the result 2720metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2721not reported in the result metadata.<wbr/></p> 2722 </td> 2723 </tr> 2724 2725 <tr class="entries_header"> 2726 <th class="th_details" colspan="6">HAL Implementation Details</th> 2727 </tr> 2728 <tr class="entry_cont"> 2729 <td class="entry_details" colspan="6"> 2730 <p>The HAL level representation of MeteringRectangle[] is a 2731int[5 * area_<wbr/>count].<wbr/> 2732Every five elements represent a metering region of 2733(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2734The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2735exclusive on xmax and ymax.<wbr/> 2736HAL must always report metering regions in the coordinate system of pre-correction 2737active array.<wbr/></p> 2738 </td> 2739 </tr> 2740 2741 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2742 <!-- end of entry --> 2743 2744 2745 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 2746 <td class="entry_name 2747 " rowspan="3"> 2748 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 2749 </td> 2750 <td class="entry_type"> 2751 <span class="entry_type_name">int32</span> 2752 <span class="entry_type_container">x</span> 2753 2754 <span class="entry_type_array"> 2755 2 2756 </span> 2757 <span class="entry_type_visibility"> [public as rangeInt]</span> 2758 2759 2760 <span class="entry_type_hwlevel">[legacy] </span> 2761 2762 2763 2764 2765 </td> <!-- entry_type --> 2766 2767 <td class="entry_description"> 2768 <p>Range over which the auto-exposure routine can 2769adjust the capture frame rate to maintain good 2770exposure.<wbr/></p> 2771 </td> 2772 2773 <td class="entry_units"> 2774 Frames per second (FPS) 2775 </td> 2776 2777 <td class="entry_range"> 2778 <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> 2779 </td> 2780 2781 <td class="entry_hal_version"> 2782 <p>3.<wbr/>2</p> 2783 </td> 2784 2785 <td class="entry_tags"> 2786 <ul class="entry_tags"> 2787 <li><a href="#tag_BC">BC</a></li> 2788 </ul> 2789 </td> 2790 2791 </tr> 2792 <tr class="entries_header"> 2793 <th class="th_details" colspan="6">Details</th> 2794 </tr> 2795 <tr class="entry_cont"> 2796 <td class="entry_details" colspan="6"> 2797 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 2798manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 2799<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 2800 </td> 2801 </tr> 2802 2803 2804 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2805 <!-- end of entry --> 2806 2807 2808 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 2809 <td class="entry_name 2810 " rowspan="5"> 2811 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 2812 </td> 2813 <td class="entry_type"> 2814 <span class="entry_type_name entry_type_name_enum">byte</span> 2815 2816 <span class="entry_type_visibility"> [public]</span> 2817 2818 2819 <span class="entry_type_hwlevel">[limited] </span> 2820 2821 2822 2823 <ul class="entry_type_enum"> 2824 <li> 2825 <span class="entry_type_enum_name">IDLE (v3.2)</span> 2826 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2827 </li> 2828 <li> 2829 <span class="entry_type_enum_name">START (v3.2)</span> 2830 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 2831by the camera device.<wbr/></p> 2832<p>The exact effect of the precapture trigger depends on 2833the current AE mode and state.<wbr/></p></span> 2834 </li> 2835 <li> 2836 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 2837 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 2838precapture metering sequence,<wbr/> the auto-exposure routine will return to its 2839initial state.<wbr/></p></span> 2840 </li> 2841 </ul> 2842 2843 </td> <!-- entry_type --> 2844 2845 <td class="entry_description"> 2846 <p>Whether the camera device will trigger a precapture 2847metering sequence when it processes this request.<wbr/></p> 2848 </td> 2849 2850 <td class="entry_units"> 2851 </td> 2852 2853 <td class="entry_range"> 2854 </td> 2855 2856 <td class="entry_hal_version"> 2857 <p>3.<wbr/>2</p> 2858 </td> 2859 2860 <td class="entry_tags"> 2861 <ul class="entry_tags"> 2862 <li><a href="#tag_BC">BC</a></li> 2863 </ul> 2864 </td> 2865 2866 </tr> 2867 <tr class="entries_header"> 2868 <th class="th_details" colspan="6">Details</th> 2869 </tr> 2870 <tr class="entry_cont"> 2871 <td class="entry_details" colspan="6"> 2872 <p>This entry is normally set to IDLE,<wbr/> or is not 2873included at all in the request settings.<wbr/> When included and 2874set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 2875precapture metering sequence.<wbr/></p> 2876<p>When set to CANCEL,<wbr/> the camera device will cancel any active 2877precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 2878If a precapture metering sequence is already completed,<wbr/> and the camera 2879device has implicitly locked the AE for subsequent still capture,<wbr/> the 2880CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 2881<p>The precapture sequence should be triggered before starting a 2882high-quality still capture for final metering decisions to 2883be made,<wbr/> and for firing pre-capture flash pulses to estimate 2884scene brightness and required final capture flash power,<wbr/> when 2885the flash is enabled.<wbr/></p> 2886<p>Normally,<wbr/> this entry should be set to START for only a 2887single request,<wbr/> and the application should wait until the 2888sequence completes before starting a new one.<wbr/></p> 2889<p>When a precapture metering sequence is finished,<wbr/> the camera device 2890may lock the auto-exposure routine internally to be able to accurately expose the 2891subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 2892For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 2893submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 2894submit 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 2895with <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 2896still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 2897API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 2898internally locked AE if the application doesn't submit a still capture request after 2899the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 2900be used in devices that have earlier API levels.<wbr/></p> 2901<p>The exact effect of auto-exposure (AE) precapture trigger 2902depends on the current AE mode and state; see 2903<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 2904details.<wbr/></p> 2905<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 2906capturing a high-resolution JPEG image will automatically trigger a 2907precapture sequence before the high-resolution capture,<wbr/> including 2908potentially firing a pre-capture flash.<wbr/></p> 2909<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 2910simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 2911the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 2912focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 2913trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 2914changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 2915example.<wbr/></p> 2916<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 2917the camera device will complete them in the optimal order for that device.<wbr/></p> 2918 </td> 2919 </tr> 2920 2921 <tr class="entries_header"> 2922 <th class="th_details" colspan="6">HAL Implementation Details</th> 2923 </tr> 2924 <tr class="entry_cont"> 2925 <td class="entry_details" colspan="6"> 2926 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 2927(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 2928treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 2929AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 2930to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 2931 </td> 2932 </tr> 2933 2934 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2935 <!-- end of entry --> 2936 2937 2938 <tr class="entry" id="controls_android.control.afMode"> 2939 <td class="entry_name 2940 " rowspan="5"> 2941 android.<wbr/>control.<wbr/>af<wbr/>Mode 2942 </td> 2943 <td class="entry_type"> 2944 <span class="entry_type_name entry_type_name_enum">byte</span> 2945 2946 <span class="entry_type_visibility"> [public]</span> 2947 2948 2949 <span class="entry_type_hwlevel">[legacy] </span> 2950 2951 2952 2953 <ul class="entry_type_enum"> 2954 <li> 2955 <span class="entry_type_enum_name">OFF (v3.2)</span> 2956 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 2957<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 2958application.<wbr/></p></span> 2959 </li> 2960 <li> 2961 <span class="entry_type_enum_name">AUTO (v3.2)</span> 2962 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 2963<p>In this mode,<wbr/> the lens does not move unless 2964the autofocus trigger action is called.<wbr/> When that trigger 2965is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2966the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 2967<p>Always supported if lens is not fixed focus.<wbr/></p> 2968<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 2969is fixed-focus.<wbr/></p> 2970<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 2971and sets the AF state to INACTIVE.<wbr/></p></span> 2972 </li> 2973 <li> 2974 <span class="entry_type_enum_name">MACRO (v3.2)</span> 2975 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 2976<p>In this mode,<wbr/> the lens does not move unless the 2977autofocus trigger action is called.<wbr/> When that trigger is 2978activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2979the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 2980mode is optimized for focusing on objects very close to 2981the camera.<wbr/></p> 2982<p>When that trigger is activated,<wbr/> AF will transition to 2983ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 2984NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 2985position to default,<wbr/> and sets the AF state to 2986INACTIVE.<wbr/></p></span> 2987 </li> 2988 <li> 2989 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span> 2990 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2991position continually to attempt to provide a 2992constantly-in-focus image stream.<wbr/></p> 2993<p>The focusing behavior should be suitable for good quality 2994video recording; typically this means slower focus 2995movement and no overshoots.<wbr/> When the AF trigger is not 2996involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 2997and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 2998states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 2999the algorithm should immediately transition into 3000AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 3001lens position until a cancel AF trigger is received.<wbr/></p> 3002<p>Once cancel is received,<wbr/> the algorithm should transition 3003back to INACTIVE and resume passive scan.<wbr/> Note that this 3004behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 3005ongoing PASSIVE_<wbr/>SCAN must immediately be 3006canceled.<wbr/></p></span> 3007 </li> 3008 <li> 3009 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span> 3010 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 3011position continually to attempt to provide a 3012constantly-in-focus image stream.<wbr/></p> 3013<p>The focusing behavior should be suitable for still image 3014capture; typically this means focusing as fast as 3015possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 3016algorithm should start in INACTIVE state,<wbr/> and then 3017transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 3018appropriate as it attempts to maintain focus.<wbr/> When the AF 3019trigger is activated,<wbr/> the algorithm should finish its 3020PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 3021AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 3022lens position until a cancel AF trigger is received.<wbr/></p> 3023<p>When the AF cancel trigger is activated,<wbr/> the algorithm 3024should transition back to INACTIVE and then act as if it 3025has just been started.<wbr/></p></span> 3026 </li> 3027 <li> 3028 <span class="entry_type_enum_name">EDOF (v3.2)</span> 3029 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 3030<p>The camera device will produce images with an extended 3031depth of field automatically; no special focusing 3032operations need to be done before taking a picture.<wbr/></p> 3033<p>AF triggers are ignored,<wbr/> and the AF state will always be 3034INACTIVE.<wbr/></p></span> 3035 </li> 3036 </ul> 3037 3038 </td> <!-- entry_type --> 3039 3040 <td class="entry_description"> 3041 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 3042mode it is set to.<wbr/></p> 3043 </td> 3044 3045 <td class="entry_units"> 3046 </td> 3047 3048 <td class="entry_range"> 3049 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 3050 </td> 3051 3052 <td class="entry_hal_version"> 3053 <p>3.<wbr/>2</p> 3054 </td> 3055 3056 <td class="entry_tags"> 3057 <ul class="entry_tags"> 3058 <li><a href="#tag_BC">BC</a></li> 3059 </ul> 3060 </td> 3061 3062 </tr> 3063 <tr class="entries_header"> 3064 <th class="th_details" colspan="6">Details</th> 3065 </tr> 3066 <tr class="entry_cont"> 3067 <td class="entry_details" colspan="6"> 3068 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 3069(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 3070when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 3071dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 3072setting <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> 3073<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 3074the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 3075in result metadata.<wbr/></p> 3076 </td> 3077 </tr> 3078 3079 <tr class="entries_header"> 3080 <th class="th_details" colspan="6">HAL Implementation Details</th> 3081 </tr> 3082 <tr class="entry_cont"> 3083 <td class="entry_details" colspan="6"> 3084 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 3085request (<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 3086up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 3087<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 3088locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 3089after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 3090the same focal plane remains in focus.<wbr/></p> 3091<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 3092scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 3093(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 3094same lock behavior as above.<wbr/></p> 3095<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 3096focus 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/> 3097However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 3098manual control.<wbr/></p> 3099<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 3100camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 3101remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 3102by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 3103that will arise on camera modules with open-loop VCMs.<wbr/></p> 3104 </td> 3105 </tr> 3106 3107 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3108 <!-- end of entry --> 3109 3110 3111 <tr class="entry" id="controls_android.control.afRegions"> 3112 <td class="entry_name 3113 " rowspan="5"> 3114 android.<wbr/>control.<wbr/>af<wbr/>Regions 3115 </td> 3116 <td class="entry_type"> 3117 <span class="entry_type_name">int32</span> 3118 <span class="entry_type_container">x</span> 3119 3120 <span class="entry_type_array"> 3121 5 x area_count 3122 </span> 3123 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3124 3125 3126 3127 3128 3129 3130 </td> <!-- entry_type --> 3131 3132 <td class="entry_description"> 3133 <p>List of metering areas to use for auto-focus.<wbr/></p> 3134 </td> 3135 3136 <td class="entry_units"> 3137 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 3138 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 3139 distortion correction capability and mode 3140 </td> 3141 3142 <td class="entry_range"> 3143 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3144<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> 3145depending on distortion correction capability and mode</p> 3146 </td> 3147 3148 <td class="entry_hal_version"> 3149 <p>3.<wbr/>2</p> 3150 </td> 3151 3152 <td class="entry_tags"> 3153 <ul class="entry_tags"> 3154 <li><a href="#tag_BC">BC</a></li> 3155 </ul> 3156 </td> 3157 3158 </tr> 3159 <tr class="entries_header"> 3160 <th class="th_details" colspan="6">Details</th> 3161 </tr> 3162 <tr class="entry_cont"> 3163 <td class="entry_details" colspan="6"> 3164 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 3165Otherwise will always be present.<wbr/></p> 3166<p>The maximum number of focus areas supported by the device is determined by the value 3167of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 3168<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 3169system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being 3170the top-left pixel in the active pixel array,<wbr/> and 3171(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3172<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the 3173active pixel array.<wbr/></p> 3174<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 3175system depends on the mode being set.<wbr/> 3176When the distortion correction mode is OFF,<wbr/> the coordinate system follows 3177<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with 3178<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 3179(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3180<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right 3181pixel in the pre-correction active pixel array.<wbr/> 3182When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 3183<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 3184<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 3185(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3186<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the 3187active pixel array.<wbr/></p> 3188<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 3189for every pixel in the area.<wbr/> This means that a large metering area 3190with the same weight as a smaller area will have more effect in 3191the metering result.<wbr/> Metering areas can partially overlap and the 3192camera device will add the weights in the overlap region.<wbr/></p> 3193<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 3194is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 3195ignored.<wbr/></p> 3196<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3197camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or 3198the region selected by the camera device as the focus area of interest.<wbr/></p> 3199<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 3200capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3201region and output only the intersection rectangle as the metering region in the result 3202metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3203not reported in the result metadata.<wbr/></p> 3204 </td> 3205 </tr> 3206 3207 <tr class="entries_header"> 3208 <th class="th_details" colspan="6">HAL Implementation Details</th> 3209 </tr> 3210 <tr class="entry_cont"> 3211 <td class="entry_details" colspan="6"> 3212 <p>The HAL level representation of MeteringRectangle[] is a 3213int[5 * area_<wbr/>count].<wbr/> 3214Every five elements represent a metering region of 3215(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3216The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3217exclusive on xmax and ymax.<wbr/> 3218HAL must always report metering regions in the coordinate system of pre-correction 3219active array.<wbr/></p> 3220 </td> 3221 </tr> 3222 3223 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3224 <!-- end of entry --> 3225 3226 3227 <tr class="entry" id="controls_android.control.afTrigger"> 3228 <td class="entry_name 3229 " rowspan="5"> 3230 android.<wbr/>control.<wbr/>af<wbr/>Trigger 3231 </td> 3232 <td class="entry_type"> 3233 <span class="entry_type_name entry_type_name_enum">byte</span> 3234 3235 <span class="entry_type_visibility"> [public]</span> 3236 3237 3238 <span class="entry_type_hwlevel">[legacy] </span> 3239 3240 3241 3242 <ul class="entry_type_enum"> 3243 <li> 3244 <span class="entry_type_enum_name">IDLE (v3.2)</span> 3245 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 3246 </li> 3247 <li> 3248 <span class="entry_type_enum_name">START (v3.2)</span> 3249 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 3250 </li> 3251 <li> 3252 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 3253 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 3254state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 3255 </li> 3256 </ul> 3257 3258 </td> <!-- entry_type --> 3259 3260 <td class="entry_description"> 3261 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 3262 </td> 3263 3264 <td class="entry_units"> 3265 </td> 3266 3267 <td class="entry_range"> 3268 </td> 3269 3270 <td class="entry_hal_version"> 3271 <p>3.<wbr/>2</p> 3272 </td> 3273 3274 <td class="entry_tags"> 3275 <ul class="entry_tags"> 3276 <li><a href="#tag_BC">BC</a></li> 3277 </ul> 3278 </td> 3279 3280 </tr> 3281 <tr class="entries_header"> 3282 <th class="th_details" colspan="6">Details</th> 3283 </tr> 3284 <tr class="entry_cont"> 3285 <td class="entry_details" colspan="6"> 3286 <p>This entry is normally set to IDLE,<wbr/> or is not 3287included at all in the request settings.<wbr/></p> 3288<p>When included and set to START,<wbr/> the camera device will trigger the 3289autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 3290<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 3291and return to its initial AF state.<wbr/></p> 3292<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 3293single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 3294START for multiple captures in a row means restarting the AF operation over 3295and over again.<wbr/></p> 3296<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> 3297<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> 3298simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 3299the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 3300focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 3301trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 3302changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 3303 </td> 3304 </tr> 3305 3306 <tr class="entries_header"> 3307 <th class="th_details" colspan="6">HAL Implementation Details</th> 3308 </tr> 3309 <tr class="entry_cont"> 3310 <td class="entry_details" colspan="6"> 3311 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 3312(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 3313treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 3314AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 3315to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 3316 </td> 3317 </tr> 3318 3319 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3320 <!-- end of entry --> 3321 3322 3323 <tr class="entry" id="controls_android.control.awbLock"> 3324 <td class="entry_name 3325 " rowspan="3"> 3326 android.<wbr/>control.<wbr/>awb<wbr/>Lock 3327 </td> 3328 <td class="entry_type"> 3329 <span class="entry_type_name entry_type_name_enum">byte</span> 3330 3331 <span class="entry_type_visibility"> [public as boolean]</span> 3332 3333 3334 <span class="entry_type_hwlevel">[legacy] </span> 3335 3336 3337 3338 <ul class="entry_type_enum"> 3339 <li> 3340 <span class="entry_type_enum_name">OFF (v3.2)</span> 3341 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 3342algorithm is free to update its parameters if in AUTO 3343mode.<wbr/></p></span> 3344 </li> 3345 <li> 3346 <span class="entry_type_enum_name">ON (v3.2)</span> 3347 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 3348algorithm will not update its parameters while the lock 3349is active.<wbr/></p></span> 3350 </li> 3351 </ul> 3352 3353 </td> <!-- entry_type --> 3354 3355 <td class="entry_description"> 3356 <p>Whether auto-white balance (AWB) is currently locked to its 3357latest calculated values.<wbr/></p> 3358 </td> 3359 3360 <td class="entry_units"> 3361 </td> 3362 3363 <td class="entry_range"> 3364 </td> 3365 3366 <td class="entry_hal_version"> 3367 <p>3.<wbr/>2</p> 3368 </td> 3369 3370 <td class="entry_tags"> 3371 <ul class="entry_tags"> 3372 <li><a href="#tag_BC">BC</a></li> 3373 </ul> 3374 </td> 3375 3376 </tr> 3377 <tr class="entries_header"> 3378 <th class="th_details" colspan="6">Details</th> 3379 </tr> 3380 <tr class="entry_cont"> 3381 <td class="entry_details" colspan="6"> 3382 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 3383and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 3384<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 3385get locked do not necessarily correspond to the settings that were present in the 3386latest capture result received from the camera device,<wbr/> since additional captures 3387and AWB updates may have occurred even before the result was sent out.<wbr/> If an 3388application is switching between automatic and manual control and wishes to eliminate 3389any flicker during the switch,<wbr/> the following procedure is recommended:</p> 3390<ol> 3391<li>Starting in auto-AWB mode:</li> 3392<li>Lock AWB</li> 3393<li>Wait for the first result to be output that has the AWB locked</li> 3394<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 3395<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 3396</ol> 3397<p>Note that AWB lock is only meaningful when 3398<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 3399AWB is already fixed to a specific setting.<wbr/></p> 3400<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 3401 </td> 3402 </tr> 3403 3404 3405 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3406 <!-- end of entry --> 3407 3408 3409 <tr class="entry" id="controls_android.control.awbMode"> 3410 <td class="entry_name 3411 " rowspan="3"> 3412 android.<wbr/>control.<wbr/>awb<wbr/>Mode 3413 </td> 3414 <td class="entry_type"> 3415 <span class="entry_type_name entry_type_name_enum">byte</span> 3416 3417 <span class="entry_type_visibility"> [public]</span> 3418 3419 3420 <span class="entry_type_hwlevel">[legacy] </span> 3421 3422 3423 3424 <ul class="entry_type_enum"> 3425 <li> 3426 <span class="entry_type_enum_name">OFF (v3.2)</span> 3427 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 3428<p>The application-selected color transform matrix 3429(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 3430(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 3431device for manual white balance control.<wbr/></p></span> 3432 </li> 3433 <li> 3434 <span class="entry_type_enum_name">AUTO (v3.2)</span> 3435 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 3436<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3437and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3438For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3439values used by the camera device for the transform and gains 3440will be available in the capture result for this request.<wbr/></p></span> 3441 </li> 3442 <li> 3443 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span> 3444 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3445the camera device uses incandescent light as the assumed scene 3446illumination for white balance.<wbr/></p> 3447<p>While the exact white balance transforms are up to the 3448camera device,<wbr/> they will approximately match the CIE 3449standard illuminant A.<wbr/></p> 3450<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3451and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3452For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3453values used by the camera device for the transform and gains 3454will be available in the capture result for this request.<wbr/></p></span> 3455 </li> 3456 <li> 3457 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> 3458 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3459the camera device uses fluorescent light as the assumed scene 3460illumination for white balance.<wbr/></p> 3461<p>While the exact white balance transforms are up to the 3462camera device,<wbr/> they will approximately match the CIE 3463standard illuminant F2.<wbr/></p> 3464<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3465and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3466For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3467values used by the camera device for the transform and gains 3468will be available in the capture result for this request.<wbr/></p></span> 3469 </li> 3470 <li> 3471 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span> 3472 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3473the camera device uses warm fluorescent light as the assumed scene 3474illumination for white balance.<wbr/></p> 3475<p>While the exact white balance transforms are up to the 3476camera device,<wbr/> they will approximately match the CIE 3477standard illuminant F4.<wbr/></p> 3478<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3479and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3480For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3481values used by the camera device for the transform and gains 3482will be available in the capture result for this request.<wbr/></p></span> 3483 </li> 3484 <li> 3485 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> 3486 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3487the camera device uses daylight light as the assumed scene 3488illumination for white balance.<wbr/></p> 3489<p>While the exact white balance transforms are up to the 3490camera device,<wbr/> they will approximately match the CIE 3491standard illuminant D65.<wbr/></p> 3492<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3493and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3494For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3495values used by the camera device for the transform and gains 3496will be available in the capture result for this request.<wbr/></p></span> 3497 </li> 3498 <li> 3499 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span> 3500 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3501the camera device uses cloudy daylight light as the assumed scene 3502illumination for white balance.<wbr/></p> 3503<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3504and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3505For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3506values used by the camera device for the transform and gains 3507will be available in the capture result for this request.<wbr/></p></span> 3508 </li> 3509 <li> 3510 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span> 3511 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3512the camera device uses twilight light as the assumed scene 3513illumination for white balance.<wbr/></p> 3514<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3515and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3516For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3517values used by the camera device for the transform and gains 3518will be available in the capture result for this request.<wbr/></p></span> 3519 </li> 3520 <li> 3521 <span class="entry_type_enum_name">SHADE (v3.2)</span> 3522 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3523the camera device uses shade light as the assumed scene 3524illumination for white balance.<wbr/></p> 3525<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3526and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3527For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3528values used by the camera device for the transform and gains 3529will be available in the capture result for this request.<wbr/></p></span> 3530 </li> 3531 </ul> 3532 3533 </td> <!-- entry_type --> 3534 3535 <td class="entry_description"> 3536 <p>Whether auto-white balance (AWB) is currently setting the color 3537transform fields,<wbr/> and what its illumination target 3538is.<wbr/></p> 3539 </td> 3540 3541 <td class="entry_units"> 3542 </td> 3543 3544 <td class="entry_range"> 3545 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 3546 </td> 3547 3548 <td class="entry_hal_version"> 3549 <p>3.<wbr/>2</p> 3550 </td> 3551 3552 <td class="entry_tags"> 3553 <ul class="entry_tags"> 3554 <li><a href="#tag_BC">BC</a></li> 3555 </ul> 3556 </td> 3557 3558 </tr> 3559 <tr class="entries_header"> 3560 <th class="th_details" colspan="6">Details</th> 3561 </tr> 3562 <tr class="entry_cont"> 3563 <td class="entry_details" colspan="6"> 3564 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 3565<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 3566routine is enabled,<wbr/> overriding the application's selected 3567<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 3568<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> 3569is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 3570also 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 3571setting AE mode to OFF.<wbr/></p> 3572<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 3573routine is disabled.<wbr/> The application manually controls the white 3574balance 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> 3575and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 3576<p>When set to any other modes,<wbr/> the camera device's auto-white 3577balance routine is disabled.<wbr/> The camera device uses each 3578particular illumination target for white balance 3579adjustment.<wbr/> The application's values for 3580<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 3581<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 3582<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 3583 </td> 3584 </tr> 3585 3586 3587 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3588 <!-- end of entry --> 3589 3590 3591 <tr class="entry" id="controls_android.control.awbRegions"> 3592 <td class="entry_name 3593 " rowspan="5"> 3594 android.<wbr/>control.<wbr/>awb<wbr/>Regions 3595 </td> 3596 <td class="entry_type"> 3597 <span class="entry_type_name">int32</span> 3598 <span class="entry_type_container">x</span> 3599 3600 <span class="entry_type_array"> 3601 5 x area_count 3602 </span> 3603 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3604 3605 3606 3607 3608 3609 3610 </td> <!-- entry_type --> 3611 3612 <td class="entry_description"> 3613 <p>List of metering areas to use for auto-white-balance illuminant 3614estimation.<wbr/></p> 3615 </td> 3616 3617 <td class="entry_units"> 3618 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 3619 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 3620 distortion correction capability and mode 3621 </td> 3622 3623 <td class="entry_range"> 3624 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3625<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> 3626depending on distortion correction capability and mode</p> 3627 </td> 3628 3629 <td class="entry_hal_version"> 3630 <p>3.<wbr/>2</p> 3631 </td> 3632 3633 <td class="entry_tags"> 3634 <ul class="entry_tags"> 3635 <li><a href="#tag_BC">BC</a></li> 3636 </ul> 3637 </td> 3638 3639 </tr> 3640 <tr class="entries_header"> 3641 <th class="th_details" colspan="6">Details</th> 3642 </tr> 3643 <tr class="entry_cont"> 3644 <td class="entry_details" colspan="6"> 3645 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 3646Otherwise will always be present.<wbr/></p> 3647<p>The maximum number of regions supported by the device is determined by the value 3648of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 3649<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 3650system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being 3651the top-left pixel in the active pixel array,<wbr/> and 3652(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3653<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the 3654active pixel array.<wbr/></p> 3655<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 3656system depends on the mode being set.<wbr/> 3657When the distortion correction mode is OFF,<wbr/> the coordinate system follows 3658<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with 3659<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 3660(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3661<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right 3662pixel in the pre-correction active pixel array.<wbr/> 3663When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 3664<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 3665<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 3666(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3667<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the 3668active pixel array.<wbr/></p> 3669<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 3670for every pixel in the area.<wbr/> This means that a large metering area 3671with the same weight as a smaller area will have more effect in 3672the metering result.<wbr/> Metering areas can partially overlap and the 3673camera device will add the weights in the overlap region.<wbr/></p> 3674<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 3675only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 36760 weight is ignored.<wbr/></p> 3677<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3678camera device.<wbr/></p> 3679<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 3680capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3681region and output only the intersection rectangle as the metering region in the result 3682metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3683not reported in the result metadata.<wbr/></p> 3684 </td> 3685 </tr> 3686 3687 <tr class="entries_header"> 3688 <th class="th_details" colspan="6">HAL Implementation Details</th> 3689 </tr> 3690 <tr class="entry_cont"> 3691 <td class="entry_details" colspan="6"> 3692 <p>The HAL level representation of MeteringRectangle[] is a 3693int[5 * area_<wbr/>count].<wbr/> 3694Every five elements represent a metering region of 3695(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3696The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3697exclusive on xmax and ymax.<wbr/> 3698HAL must always report metering regions in the coordinate system of pre-correction 3699active array.<wbr/></p> 3700 </td> 3701 </tr> 3702 3703 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3704 <!-- end of entry --> 3705 3706 3707 <tr class="entry" id="controls_android.control.captureIntent"> 3708 <td class="entry_name 3709 " rowspan="3"> 3710 android.<wbr/>control.<wbr/>capture<wbr/>Intent 3711 </td> 3712 <td class="entry_type"> 3713 <span class="entry_type_name entry_type_name_enum">byte</span> 3714 3715 <span class="entry_type_visibility"> [public]</span> 3716 3717 3718 <span class="entry_type_hwlevel">[legacy] </span> 3719 3720 3721 3722 <ul class="entry_type_enum"> 3723 <li> 3724 <span class="entry_type_enum_name">CUSTOM (v3.2)</span> 3725 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 3726categories.<wbr/> The camera device will default to preview-like 3727behavior.<wbr/></p></span> 3728 </li> 3729 <li> 3730 <span class="entry_type_enum_name">PREVIEW (v3.2)</span> 3731 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 3732<p>The precapture trigger may be used to start off a metering 3733w/<wbr/>flash sequence.<wbr/></p></span> 3734 </li> 3735 <li> 3736 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span> 3737 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 3738use case.<wbr/></p> 3739<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 3740 </li> 3741 <li> 3742 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span> 3743 <span class="entry_type_enum_notes"><p>This request is for a video recording 3744use case.<wbr/></p></span> 3745 </li> 3746 <li> 3747 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span> 3748 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 3749image while recording video) use case.<wbr/></p> 3750<p>The camera device should take the highest-quality image 3751possible (given the other settings) without disrupting the 3752frame rate of video recording.<wbr/> </p></span> 3753 </li> 3754 <li> 3755 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 3756 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 3757application will stream full-resolution images and 3758reprocess one or several later for a final 3759capture.<wbr/></p></span> 3760 </li> 3761 <li> 3762 <span class="entry_type_enum_name">MANUAL (v3.2)</span> 3763 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 3764the applications want to directly control the capture parameters.<wbr/></p> 3765<p>For example,<wbr/> the application may wish to manually control 3766<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> 3767 </li> 3768 <li> 3769 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> 3770 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where 3771the application will use camera and inertial sensor data to 3772locate and track objects in the world.<wbr/></p> 3773<p>The camera device auto-exposure routine will limit the exposure time 3774of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span> 3775 </li> 3776 </ul> 3777 3778 </td> <!-- entry_type --> 3779 3780 <td class="entry_description"> 3781 <p>Information to the camera device 3A (auto-exposure,<wbr/> 3782auto-focus,<wbr/> auto-white balance) routines about the purpose 3783of this capture,<wbr/> to help the camera device to decide optimal 3A 3784strategy.<wbr/></p> 3785 </td> 3786 3787 <td class="entry_units"> 3788 </td> 3789 3790 <td class="entry_range"> 3791 </td> 3792 3793 <td class="entry_hal_version"> 3794 <p>3.<wbr/>2</p> 3795 </td> 3796 3797 <td class="entry_tags"> 3798 <ul class="entry_tags"> 3799 <li><a href="#tag_BC">BC</a></li> 3800 </ul> 3801 </td> 3802 3803 </tr> 3804 <tr class="entries_header"> 3805 <th class="th_details" colspan="6">Details</th> 3806 </tr> 3807 <tr class="entry_cont"> 3808 <td class="entry_details" colspan="6"> 3809 <p>This control (except for MANUAL) is only effective if 3810<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 3811<p>All intents are supported by all devices,<wbr/> except that: 3812 * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 3813PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> 3814 * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 3815MANUAL_<wbr/>SENSOR.<wbr/> 3816 * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 3817MOTION_<wbr/>TRACKING.<wbr/></p> 3818 </td> 3819 </tr> 3820 3821 3822 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3823 <!-- end of entry --> 3824 3825 3826 <tr class="entry" id="controls_android.control.effectMode"> 3827 <td class="entry_name 3828 " rowspan="3"> 3829 android.<wbr/>control.<wbr/>effect<wbr/>Mode 3830 </td> 3831 <td class="entry_type"> 3832 <span class="entry_type_name entry_type_name_enum">byte</span> 3833 3834 <span class="entry_type_visibility"> [public]</span> 3835 3836 3837 <span class="entry_type_hwlevel">[legacy] </span> 3838 3839 3840 3841 <ul class="entry_type_enum"> 3842 <li> 3843 <span class="entry_type_enum_name">OFF (v3.2)</span> 3844 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 3845 </li> 3846 <li> 3847 <span class="entry_type_enum_name">MONO (v3.2)</span> 3848 <span class="entry_type_enum_optional">[optional]</span> 3849 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 3850a single color.<wbr/></p> 3851<p>This will typically be grayscale.<wbr/></p></span> 3852 </li> 3853 <li> 3854 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span> 3855 <span class="entry_type_enum_optional">[optional]</span> 3856 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 3857are inverted.<wbr/></p></span> 3858 </li> 3859 <li> 3860 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span> 3861 <span class="entry_type_enum_optional">[optional]</span> 3862 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 3863image is wholly or partially reversed in 3864tone.<wbr/></p></span> 3865 </li> 3866 <li> 3867 <span class="entry_type_enum_name">SEPIA (v3.2)</span> 3868 <span class="entry_type_enum_optional">[optional]</span> 3869 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 3870gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 3871 </li> 3872 <li> 3873 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span> 3874 <span class="entry_type_enum_optional">[optional]</span> 3875 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 3876discrete regions of tone rather than a continuous 3877gradient of tones.<wbr/></p></span> 3878 </li> 3879 <li> 3880 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span> 3881 <span class="entry_type_enum_optional">[optional]</span> 3882 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 3883as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 3884 </li> 3885 <li> 3886 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span> 3887 <span class="entry_type_enum_optional">[optional]</span> 3888 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 3889as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 3890 </li> 3891 <li> 3892 <span class="entry_type_enum_name">AQUA (v3.2)</span> 3893 <span class="entry_type_enum_optional">[optional]</span> 3894 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 3895 </li> 3896 </ul> 3897 3898 </td> <!-- entry_type --> 3899 3900 <td class="entry_description"> 3901 <p>A special color effect to apply.<wbr/></p> 3902 </td> 3903 3904 <td class="entry_units"> 3905 </td> 3906 3907 <td class="entry_range"> 3908 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 3909 </td> 3910 3911 <td class="entry_hal_version"> 3912 <p>3.<wbr/>2</p> 3913 </td> 3914 3915 <td class="entry_tags"> 3916 <ul class="entry_tags"> 3917 <li><a href="#tag_BC">BC</a></li> 3918 </ul> 3919 </td> 3920 3921 </tr> 3922 <tr class="entries_header"> 3923 <th class="th_details" colspan="6">Details</th> 3924 </tr> 3925 <tr class="entry_cont"> 3926 <td class="entry_details" colspan="6"> 3927 <p>When this mode is set,<wbr/> a color effect will be applied 3928to images produced by the camera device.<wbr/> The interpretation 3929and implementation of these color effects is left to the 3930implementor of the camera device,<wbr/> and should not be 3931depended on to be consistent (or present) across all 3932devices.<wbr/></p> 3933 </td> 3934 </tr> 3935 3936 3937 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3938 <!-- end of entry --> 3939 3940 3941 <tr class="entry" id="controls_android.control.mode"> 3942 <td class="entry_name 3943 " rowspan="3"> 3944 android.<wbr/>control.<wbr/>mode 3945 </td> 3946 <td class="entry_type"> 3947 <span class="entry_type_name entry_type_name_enum">byte</span> 3948 3949 <span class="entry_type_visibility"> [public]</span> 3950 3951 3952 <span class="entry_type_hwlevel">[legacy] </span> 3953 3954 3955 3956 <ul class="entry_type_enum"> 3957 <li> 3958 <span class="entry_type_enum_name">OFF (v3.2)</span> 3959 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 3960<p>All control by the device's metering and focusing (3A) 3961routines is disabled,<wbr/> and no other settings in 3962android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 3963<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 3964device to select post-processing values for processing 3965blocks that do not allow for manual control,<wbr/> or are not 3966exposed by the camera API.<wbr/></p> 3967<p>However,<wbr/> the camera device's 3A routines may continue to 3968collect statistics and update their internal state so that 3969when control is switched to AUTO mode,<wbr/> good control values 3970can be immediately applied.<wbr/></p></span> 3971 </li> 3972 <li> 3973 <span class="entry_type_enum_name">AUTO (v3.2)</span> 3974 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 3975<p>Manual control of capture parameters is disabled.<wbr/> All 3976controls in android.<wbr/>control.<wbr/>* besides sceneMode take 3977effect.<wbr/></p></span> 3978 </li> 3979 <li> 3980 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span> 3981 <span class="entry_type_enum_optional">[optional]</span> 3982 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 3983<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 3984control.<wbr/>afMode controls; the camera device will ignore 3985those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 3986FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 3987This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 3988<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 3989contain some modes other than DISABLED).<wbr/></p></span> 3990 </li> 3991 <li> 3992 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span> 3993 <span class="entry_type_enum_optional">[optional]</span> 3994 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 3995used by camera device background auto-exposure,<wbr/> auto-white balance and 3996auto-focus algorithms (3A) to update their statistics.<wbr/></p> 3997<p>Specifically,<wbr/> the 3A routines are locked to the last 3998values set from a request with AUTO,<wbr/> OFF,<wbr/> or 3999USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 4000collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 4001discarded by the camera device.<wbr/></p></span> 4002 </li> 4003 </ul> 4004 4005 </td> <!-- entry_type --> 4006 4007 <td class="entry_description"> 4008 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 4009routines.<wbr/></p> 4010 </td> 4011 4012 <td class="entry_units"> 4013 </td> 4014 4015 <td class="entry_range"> 4016 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 4017 </td> 4018 4019 <td class="entry_hal_version"> 4020 <p>3.<wbr/>2</p> 4021 </td> 4022 4023 <td class="entry_tags"> 4024 <ul class="entry_tags"> 4025 <li><a href="#tag_BC">BC</a></li> 4026 </ul> 4027 </td> 4028 4029 </tr> 4030 <tr class="entries_header"> 4031 <th class="th_details" colspan="6">Details</th> 4032 </tr> 4033 <tr class="entry_cont"> 4034 <td class="entry_details" colspan="6"> 4035 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 4036by the camera device is disabled.<wbr/> The application must set the fields for 4037capture parameters itself.<wbr/></p> 4038<p>When set to AUTO,<wbr/> the individual algorithm controls in 4039android.<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> 4040<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 4041android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device 4042implements one of the scene mode settings (such as ACTION,<wbr/> 4043SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode 40443A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 4045<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 4046is that this frame will not be used by camera device background 3A statistics 4047update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 4048where the application doesn't want a 3A manual control capture to affect 4049the subsequent auto 3A capture results.<wbr/></p> 4050 </td> 4051 </tr> 4052 4053 4054 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4055 <!-- end of entry --> 4056 4057 4058 <tr class="entry" id="controls_android.control.sceneMode"> 4059 <td class="entry_name 4060 " rowspan="5"> 4061 android.<wbr/>control.<wbr/>scene<wbr/>Mode 4062 </td> 4063 <td class="entry_type"> 4064 <span class="entry_type_name entry_type_name_enum">byte</span> 4065 4066 <span class="entry_type_visibility"> [public]</span> 4067 4068 4069 <span class="entry_type_hwlevel">[legacy] </span> 4070 4071 4072 4073 <ul class="entry_type_enum"> 4074 <li> 4075 <span class="entry_type_enum_name">DISABLED (v3.2)</span> 4076 <span class="entry_type_enum_value">0</span> 4077 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 4078 </li> 4079 <li> 4080 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span> 4081 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 4082detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 4083auto-exposure routines.<wbr/></p> 4084<p>If face detection statistics are disabled 4085(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/> 4086this should still operate correctly (but will not return 4087face detection statistics to the framework).<wbr/></p> 4088<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4089<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> 4090remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 4091 </li> 4092 <li> 4093 <span class="entry_type_enum_name">ACTION (v3.2)</span> 4094 <span class="entry_type_enum_optional">[optional]</span> 4095 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 4096<p>Similar to SPORTS.<wbr/></p></span> 4097 </li> 4098 <li> 4099 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span> 4100 <span class="entry_type_enum_optional">[optional]</span> 4101 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 4102 </li> 4103 <li> 4104 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span> 4105 <span class="entry_type_enum_optional">[optional]</span> 4106 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 4107 </li> 4108 <li> 4109 <span class="entry_type_enum_name">NIGHT (v3.2)</span> 4110 <span class="entry_type_enum_optional">[optional]</span> 4111 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 4112 </li> 4113 <li> 4114 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span> 4115 <span class="entry_type_enum_optional">[optional]</span> 4116 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 4117settings.<wbr/></p></span> 4118 </li> 4119 <li> 4120 <span class="entry_type_enum_name">THEATRE (v3.2)</span> 4121 <span class="entry_type_enum_optional">[optional]</span> 4122 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 4123remain off.<wbr/></p></span> 4124 </li> 4125 <li> 4126 <span class="entry_type_enum_name">BEACH (v3.2)</span> 4127 <span class="entry_type_enum_optional">[optional]</span> 4128 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 4129 </li> 4130 <li> 4131 <span class="entry_type_enum_name">SNOW (v3.2)</span> 4132 <span class="entry_type_enum_optional">[optional]</span> 4133 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 4134 </li> 4135 <li> 4136 <span class="entry_type_enum_name">SUNSET (v3.2)</span> 4137 <span class="entry_type_enum_optional">[optional]</span> 4138 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 4139 </li> 4140 <li> 4141 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span> 4142 <span class="entry_type_enum_optional">[optional]</span> 4143 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 4144device motion (for example: due to hand shake).<wbr/></p></span> 4145 </li> 4146 <li> 4147 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span> 4148 <span class="entry_type_enum_optional">[optional]</span> 4149 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 4150 </li> 4151 <li> 4152 <span class="entry_type_enum_name">SPORTS (v3.2)</span> 4153 <span class="entry_type_enum_optional">[optional]</span> 4154 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 4155<p>Similar to ACTION.<wbr/></p></span> 4156 </li> 4157 <li> 4158 <span class="entry_type_enum_name">PARTY (v3.2)</span> 4159 <span class="entry_type_enum_optional">[optional]</span> 4160 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 4161people.<wbr/></p></span> 4162 </li> 4163 <li> 4164 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span> 4165 <span class="entry_type_enum_optional">[optional]</span> 4166 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 4167is a candle.<wbr/></p></span> 4168 </li> 4169 <li> 4170 <span class="entry_type_enum_name">BARCODE (v3.2)</span> 4171 <span class="entry_type_enum_optional">[optional]</span> 4172 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 4173for use by camera applications that wish to read the 4174barcode value.<wbr/></p></span> 4175 </li> 4176 <li> 4177 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span> 4178 <span class="entry_type_enum_deprecated">[deprecated]</span> 4179 <span class="entry_type_enum_optional">[optional]</span> 4180 <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> 4181and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 4182for high speed video recording.<wbr/></p> 4183<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 4184<p>The supported high speed video sizes and fps ranges are specified in 4185<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 4186output frame rates,<wbr/> the application is only allowed to select video size 4187and fps range combinations listed in this static metadata.<wbr/> The fps range 4188can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 4189<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 4190ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 4191controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 4192and post-processing parameters is possible.<wbr/> All other controls operate the 4193same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 4194android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 4195<ul> 4196<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 4197<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 4198<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 4199<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 4200<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 4201<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 4202<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 4203<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 4204<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 4205<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 4206</ul> 4207<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 4208<ul> 4209<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> 4210<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 4211<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 4212<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 4213</ul> 4214<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 4215be lower than what camera can output,<wbr/> depending on the destination Surfaces for 4216the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 4217the application need check if the video encoder is capable of supporting the 4218high frame rate for a given video size,<wbr/> or it will end up with lower recording 4219frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 4220rate will be bounded by the screen refresh rate.<wbr/></p> 4221<p>The camera device will only support up to 2 output high speed streams 4222(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 4223in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 4224<ul> 4225<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 4226format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 4227min(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> 4228<li>The stream sizes are selected from the sizes reported by 4229<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 4230<li>No processed non-stalling or raw streams are configured.<wbr/></li> 4231</ul> 4232<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 4233<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/> 4234the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 4235and the returned capture result metadata will give the fps range choosen 4236by the camera device.<wbr/></p> 4237<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 4238reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 4239the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 4240 </li> 4241 <li> 4242 <span class="entry_type_enum_name">HDR (v3.2)</span> 4243 <span class="entry_type_enum_optional">[optional]</span> 4244 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 4245<p>In this scene mode,<wbr/> the camera device captures images 4246that keep a larger range of scene illumination levels 4247visible in the final image.<wbr/> For example,<wbr/> when taking a 4248picture of a object in front of a bright window,<wbr/> both 4249the object and the scene through the window may be 4250visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 4251one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 4252HDR mode generally takes much longer to capture a single 4253image,<wbr/> has no user control,<wbr/> and may have other artifacts 4254depending on the HDR method used.<wbr/></p> 4255<p>Therefore,<wbr/> HDR captures operate at a much slower rate 4256than regular captures.<wbr/></p> 4257<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 4258is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 4259STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 4260using a high dynamic range capture technique.<wbr/> On LEGACY 4261devices,<wbr/> captures that target a JPEG-format output will 4262be captured with HDR,<wbr/> and the capture intent is not 4263relevant.<wbr/></p> 4264<p>The HDR capture may involve the device capturing a burst 4265of images internally and combining them into one,<wbr/> or it 4266may involve the device using specialized high dynamic 4267range capture hardware.<wbr/> In all cases,<wbr/> a single image is 4268produced in response to a capture request submitted 4269while in HDR mode.<wbr/></p> 4270<p>Since substantial post-processing is generally needed to 4271produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG 4272outputs are supported for LIMITED/<wbr/>FULL device HDR 4273captures,<wbr/> and only JPEG outputs are supported for LEGACY 4274HDR captures.<wbr/> Using a RAW output for HDR capture is not 4275supported.<wbr/></p> 4276<p>Some devices may also support always-on HDR,<wbr/> which 4277applies HDR processing at full frame rate.<wbr/> For these 4278devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also 4279produce an HDR output with no frame rate impact compared 4280to normal operation,<wbr/> though the quality may be lower 4281than for STILL_<wbr/>CAPTURE intents.<wbr/></p> 4282<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types 4283or capture intents,<wbr/> the images captured will be as if 4284the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> 4285 </li> 4286 <li> 4287 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span> 4288 <span class="entry_type_enum_optional">[optional]</span> 4289 <span class="entry_type_enum_hidden">[hidden]</span> 4290 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 4291device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 4292under low light conditions.<wbr/></p> 4293<p>The camera device may be tuned to expose the images in a reduced 4294sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 4295if 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/> 4296the camera device auto-exposure routine tuning process may limit the actual 4297exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 4298exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 4299low light may be under-exposed when the sensor max exposure time (bounded by the 4300<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 4301ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 4302camera device auto-exposure routine to increase the sensitivity up to the max 4303sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 4304dark and the max exposure time is reached.<wbr/> The captured images may be noisier 4305compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 4306recommended that the application only use this scene mode when it is capable of 4307reducing the noise level of the captured images.<wbr/></p> 4308<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4309<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> 4310remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 4311 </li> 4312 <li> 4313 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span> 4314 <span class="entry_type_enum_optional">[optional]</span> 4315 <span class="entry_type_enum_hidden">[hidden]</span> 4316 <span class="entry_type_enum_value">100</span> 4317 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 4318<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 4319customized scene modes.<wbr/></p></span> 4320 </li> 4321 <li> 4322 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span> 4323 <span class="entry_type_enum_optional">[optional]</span> 4324 <span class="entry_type_enum_hidden">[hidden]</span> 4325 <span class="entry_type_enum_value">127</span> 4326 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 4327<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 4328customized scene modes.<wbr/></p></span> 4329 </li> 4330 </ul> 4331 4332 </td> <!-- entry_type --> 4333 4334 <td class="entry_description"> 4335 <p>Control for which scene mode is currently active.<wbr/></p> 4336 </td> 4337 4338 <td class="entry_units"> 4339 </td> 4340 4341 <td class="entry_range"> 4342 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 4343 </td> 4344 4345 <td class="entry_hal_version"> 4346 <p>3.<wbr/>2</p> 4347 </td> 4348 4349 <td class="entry_tags"> 4350 <ul class="entry_tags"> 4351 <li><a href="#tag_BC">BC</a></li> 4352 </ul> 4353 </td> 4354 4355 </tr> 4356 <tr class="entries_header"> 4357 <th class="th_details" colspan="6">Details</th> 4358 </tr> 4359 <tr class="entry_cont"> 4360 <td class="entry_details" colspan="6"> 4361 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 4362capture settings.<wbr/></p> 4363<p>This is the mode that that is active when 4364<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 4365disable <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> 4366while in use.<wbr/></p> 4367<p>The interpretation and implementation of these scene modes is left 4368to the implementor of the camera device.<wbr/> Their behavior will not be 4369consistent across all devices,<wbr/> and any given device may only implement 4370a subset of these modes.<wbr/></p> 4371 </td> 4372 </tr> 4373 4374 <tr class="entries_header"> 4375 <th class="th_details" colspan="6">HAL Implementation Details</th> 4376 </tr> 4377 <tr class="entry_cont"> 4378 <td class="entry_details" colspan="6"> 4379 <p>HAL implementations that include scene modes are expected to provide 4380the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4381<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 4382<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 4383<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/> the 4384HAL must list supported video size and fps range in 4385<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/> 1280x720,<wbr/> 4386if the HAL has two different sensor configurations for normal streaming mode and high 4387speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the 4388HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy 4389HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 4390<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 4391capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 4392 </td> 4393 </tr> 4394 4395 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4396 <!-- end of entry --> 4397 4398 4399 <tr class="entry" id="controls_android.control.videoStabilizationMode"> 4400 <td class="entry_name 4401 " rowspan="3"> 4402 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 4403 </td> 4404 <td class="entry_type"> 4405 <span class="entry_type_name entry_type_name_enum">byte</span> 4406 4407 <span class="entry_type_visibility"> [public]</span> 4408 4409 4410 <span class="entry_type_hwlevel">[legacy] </span> 4411 4412 4413 4414 <ul class="entry_type_enum"> 4415 <li> 4416 <span class="entry_type_enum_name">OFF (v3.2)</span> 4417 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 4418 </li> 4419 <li> 4420 <span class="entry_type_enum_name">ON (v3.2)</span> 4421 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 4422 </li> 4423 </ul> 4424 4425 </td> <!-- entry_type --> 4426 4427 <td class="entry_description"> 4428 <p>Whether video stabilization is 4429active.<wbr/></p> 4430 </td> 4431 4432 <td class="entry_units"> 4433 </td> 4434 4435 <td class="entry_range"> 4436 </td> 4437 4438 <td class="entry_hal_version"> 4439 <p>3.<wbr/>2</p> 4440 </td> 4441 4442 <td class="entry_tags"> 4443 <ul class="entry_tags"> 4444 <li><a href="#tag_BC">BC</a></li> 4445 </ul> 4446 </td> 4447 4448 </tr> 4449 <tr class="entries_header"> 4450 <th class="th_details" colspan="6">Details</th> 4451 </tr> 4452 <tr class="entry_cont"> 4453 <td class="entry_details" colspan="6"> 4454 <p>Video stabilization automatically warps images from 4455the camera in order to stabilize motion between consecutive frames.<wbr/></p> 4456<p>If enabled,<wbr/> video stabilization can modify the 4457<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 4458<p>Switching between different video stabilization modes may take several 4459frames to initialize,<wbr/> the camera device will report the current mode 4460in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 4461the video stabilization modes in the first several capture results may 4462still be "OFF",<wbr/> and it will become "ON" when the initialization is 4463done.<wbr/></p> 4464<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 4465stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 4466that an output targeting a MediaRecorder or MediaCodec will be stabilized if 4467the recording resolution is less than or equal to 1920 x 1080 (width less than 4468or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 4469frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 4470<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 4471OFF if the recording output is not stabilized,<wbr/> or if there are no output 4472Surface types that can be stabilized.<wbr/></p> 4473<p>If a camera device supports both this mode and OIS 4474(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 4475produce undesirable interaction,<wbr/> so it is recommended not to enable 4476both at the same time.<wbr/></p> 4477 </td> 4478 </tr> 4479 4480 4481 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4482 <!-- end of entry --> 4483 4484 4485 <tr class="entry" id="controls_android.control.postRawSensitivityBoost"> 4486 <td class="entry_name 4487 " rowspan="3"> 4488 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost 4489 </td> 4490 <td class="entry_type"> 4491 <span class="entry_type_name">int32</span> 4492 4493 <span class="entry_type_visibility"> [public]</span> 4494 4495 4496 4497 4498 4499 4500 </td> <!-- entry_type --> 4501 4502 <td class="entry_description"> 4503 <p>The amount of additional sensitivity boost applied to output images 4504after RAW sensor data is captured.<wbr/></p> 4505 </td> 4506 4507 <td class="entry_units"> 4508 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 4509 </td> 4510 4511 <td class="entry_range"> 4512 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p> 4513 </td> 4514 4515 <td class="entry_hal_version"> 4516 <p>3.<wbr/>2</p> 4517 </td> 4518 4519 <td class="entry_tags"> 4520 </td> 4521 4522 </tr> 4523 <tr class="entries_header"> 4524 <th class="th_details" colspan="6">Details</th> 4525 </tr> 4526 <tr class="entry_cont"> 4527 <td class="entry_details" colspan="6"> 4528 <p>Some camera devices support additional digital sensitivity boosting in the 4529camera processing pipeline after sensor RAW image is captured.<wbr/> 4530Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not 4531have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> 4532<p>This key will be <code>null</code> for devices that do not support any RAW format 4533outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 4534present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 4535list <code>100</code> in this key.<wbr/></p> 4536<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the 4537boost to the nearest supported value.<wbr/> 4538The final boost value used will be available in the output capture result.<wbr/></p> 4539<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images 4540of such device will have the total sensitivity of 4541<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> 4542The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> 4543<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 4544OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 4545 </td> 4546 </tr> 4547 4548 4549 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4550 <!-- end of entry --> 4551 4552 4553 <tr class="entry" id="controls_android.control.enableZsl"> 4554 <td class="entry_name 4555 " rowspan="5"> 4556 android.<wbr/>control.<wbr/>enable<wbr/>Zsl 4557 </td> 4558 <td class="entry_type"> 4559 <span class="entry_type_name entry_type_name_enum">byte</span> 4560 4561 <span class="entry_type_visibility"> [public as boolean]</span> 4562 4563 4564 4565 4566 4567 <ul class="entry_type_enum"> 4568 <li> 4569 <span class="entry_type_enum_name">FALSE (v3.2)</span> 4570 <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 4571after previous requests.<wbr/></p></span> 4572 </li> 4573 <li> 4574 <span class="entry_type_enum_name">TRUE (v3.2)</span> 4575 <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 4576captured before previous requests.<wbr/></p></span> 4577 </li> 4578 </ul> 4579 4580 </td> <!-- entry_type --> 4581 4582 <td class="entry_description"> 4583 <p>Allow camera device to enable zero-shutter-lag mode for requests with 4584<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p> 4585 </td> 4586 4587 <td class="entry_units"> 4588 </td> 4589 4590 <td class="entry_range"> 4591 </td> 4592 4593 <td class="entry_hal_version"> 4594 <p>3.<wbr/>2</p> 4595 </td> 4596 4597 <td class="entry_tags"> 4598 </td> 4599 4600 </tr> 4601 <tr class="entries_header"> 4602 <th class="th_details" colspan="6">Details</th> 4603 </tr> 4604 <tr class="entry_cont"> 4605 <td class="entry_details" colspan="6"> 4606 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with 4607STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to 4608produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the 4609<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/> 4610Therefore,<wbr/> the contents of the output images and the result metadata may be out of order 4611compared to previous regular requests.<wbr/> enableZsl does not affect requests with other 4612capture intents.<wbr/></p> 4613<p>For example,<wbr/> when requests are submitted in the following order: 4614 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW 4615 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> 4616<p>The output images for request B may have contents captured before the output images for 4617request A,<wbr/> and the result metadata for request B may be older than the result metadata for 4618request A.<wbr/></p> 4619<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in 4620the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p> 4621<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in 4622TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always 4623<code>false</code> if present.<wbr/></p> 4624<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all 4625capture templates is always <code>false</code> if present.<wbr/></p> 4626<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p> 4627 </td> 4628 </tr> 4629 4630 <tr class="entries_header"> 4631 <th class="th_details" colspan="6">HAL Implementation Details</th> 4632 </tr> 4633 <tr class="entry_cont"> 4634 <td class="entry_details" colspan="6"> 4635 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE 4636capture intent.<wbr/></p> 4637 </td> 4638 </tr> 4639 4640 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4641 <!-- end of entry --> 4642 4643 4644 4645 <!-- end of kind --> 4646 </tbody> 4647 <tr><td colspan="7" class="kind">static</td></tr> 4648 4649 <thead class="entries_header"> 4650 <tr> 4651 <th class="th_name">Property Name</th> 4652 <th class="th_type">Type</th> 4653 <th class="th_description">Description</th> 4654 <th class="th_units">Units</th> 4655 <th class="th_range">Range</th> 4656 <th class="th_hal_version">Initial HIDL HAL version</th> 4657 <th class="th_tags">Tags</th> 4658 </tr> 4659 </thead> 4660 4661 <tbody> 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 4673 <td class="entry_name 4674 " rowspan="3"> 4675 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 4676 </td> 4677 <td class="entry_type"> 4678 <span class="entry_type_name">byte</span> 4679 <span class="entry_type_container">x</span> 4680 4681 <span class="entry_type_array"> 4682 n 4683 </span> 4684 <span class="entry_type_visibility"> [public as enumList]</span> 4685 4686 4687 <span class="entry_type_hwlevel">[legacy] </span> 4688 4689 4690 <div class="entry_type_notes">list of enums</div> 4691 4692 4693 </td> <!-- entry_type --> 4694 4695 <td class="entry_description"> 4696 <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 4697supported by this camera device.<wbr/></p> 4698 </td> 4699 4700 <td class="entry_units"> 4701 </td> 4702 4703 <td class="entry_range"> 4704 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p> 4705 </td> 4706 4707 <td class="entry_hal_version"> 4708 <p>3.<wbr/>2</p> 4709 </td> 4710 4711 <td class="entry_tags"> 4712 <ul class="entry_tags"> 4713 <li><a href="#tag_BC">BC</a></li> 4714 </ul> 4715 </td> 4716 4717 </tr> 4718 <tr class="entries_header"> 4719 <th class="th_details" colspan="6">Details</th> 4720 </tr> 4721 <tr class="entry_cont"> 4722 <td class="entry_details" colspan="6"> 4723 <p>Not all of the auto-exposure anti-banding modes may be 4724supported by a given camera device.<wbr/> This field lists the 4725valid anti-banding modes that the application may request 4726for this camera device with the 4727<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p> 4728 </td> 4729 </tr> 4730 4731 4732 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4733 <!-- end of entry --> 4734 4735 4736 <tr class="entry" id="static_android.control.aeAvailableModes"> 4737 <td class="entry_name 4738 " rowspan="3"> 4739 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 4740 </td> 4741 <td class="entry_type"> 4742 <span class="entry_type_name">byte</span> 4743 <span class="entry_type_container">x</span> 4744 4745 <span class="entry_type_array"> 4746 n 4747 </span> 4748 <span class="entry_type_visibility"> [public as enumList]</span> 4749 4750 4751 <span class="entry_type_hwlevel">[legacy] </span> 4752 4753 4754 <div class="entry_type_notes">list of enums</div> 4755 4756 4757 </td> <!-- entry_type --> 4758 4759 <td class="entry_description"> 4760 <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 4761device.<wbr/></p> 4762 </td> 4763 4764 <td class="entry_units"> 4765 </td> 4766 4767 <td class="entry_range"> 4768 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p> 4769 </td> 4770 4771 <td class="entry_hal_version"> 4772 <p>3.<wbr/>2</p> 4773 </td> 4774 4775 <td class="entry_tags"> 4776 <ul class="entry_tags"> 4777 <li><a href="#tag_BC">BC</a></li> 4778 </ul> 4779 </td> 4780 4781 </tr> 4782 <tr class="entries_header"> 4783 <th class="th_details" colspan="6">Details</th> 4784 </tr> 4785 <tr class="entry_cont"> 4786 <td class="entry_details" colspan="6"> 4787 <p>Not all the auto-exposure modes may be supported by a 4788given camera device,<wbr/> especially if no flash unit is 4789available.<wbr/> This entry lists the valid modes for 4790<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 4791<p>All camera devices support ON,<wbr/> and all camera devices with flash 4792units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 4793<p>FULL mode camera devices always support OFF mode,<wbr/> 4794which enables application control of camera exposure time,<wbr/> 4795sensitivity,<wbr/> and frame duration.<wbr/></p> 4796<p>LEGACY mode camera devices never support OFF mode.<wbr/> 4797LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR 4798capability.<wbr/></p> 4799 </td> 4800 </tr> 4801 4802 4803 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4804 <!-- end of entry --> 4805 4806 4807 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 4808 <td class="entry_name 4809 " rowspan="3"> 4810 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 4811 </td> 4812 <td class="entry_type"> 4813 <span class="entry_type_name">int32</span> 4814 <span class="entry_type_container">x</span> 4815 4816 <span class="entry_type_array"> 4817 2 x n 4818 </span> 4819 <span class="entry_type_visibility"> [public as rangeInt]</span> 4820 4821 4822 <span class="entry_type_hwlevel">[legacy] </span> 4823 4824 4825 <div class="entry_type_notes">list of pairs of frame rates</div> 4826 4827 4828 </td> <!-- entry_type --> 4829 4830 <td class="entry_description"> 4831 <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 4832this camera device.<wbr/></p> 4833 </td> 4834 4835 <td class="entry_units"> 4836 Frames per second (FPS) 4837 </td> 4838 4839 <td class="entry_range"> 4840 </td> 4841 4842 <td class="entry_hal_version"> 4843 <p>3.<wbr/>2</p> 4844 </td> 4845 4846 <td class="entry_tags"> 4847 <ul class="entry_tags"> 4848 <li><a href="#tag_BC">BC</a></li> 4849 </ul> 4850 </td> 4851 4852 </tr> 4853 <tr class="entries_header"> 4854 <th class="th_details" colspan="6">Details</th> 4855 </tr> 4856 <tr class="entry_cont"> 4857 <td class="entry_details" colspan="6"> 4858 <p>For devices at the LEGACY level or above:</p> 4859<ul> 4860<li> 4861<p>For constant-framerate recording,<wbr/> for each normal 4862<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a 4863<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 4864<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in 4865the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/> 4866<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is 4867supported by the device and has 4868<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will 4869always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p> 4870</li> 4871<li> 4872<p>Also,<wbr/> a camera device must either not support any 4873<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> 4874or support at least one 4875normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 4876<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p> 4877</li> 4878</ul> 4879<p>For devices at the LIMITED level or above:</p> 4880<ul> 4881<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) 4882and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the 4883maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li> 4884</ul> 4885 </td> 4886 </tr> 4887 4888 4889 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4890 <!-- end of entry --> 4891 4892 4893 <tr class="entry" id="static_android.control.aeCompensationRange"> 4894 <td class="entry_name 4895 " rowspan="1"> 4896 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 4897 </td> 4898 <td class="entry_type"> 4899 <span class="entry_type_name">int32</span> 4900 <span class="entry_type_container">x</span> 4901 4902 <span class="entry_type_array"> 4903 2 4904 </span> 4905 <span class="entry_type_visibility"> [public as rangeInt]</span> 4906 4907 4908 <span class="entry_type_hwlevel">[legacy] </span> 4909 4910 4911 4912 4913 </td> <!-- entry_type --> 4914 4915 <td class="entry_description"> 4916 <p>Maximum and minimum exposure compensation values for 4917<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/> 4918that are supported by this camera device.<wbr/></p> 4919 </td> 4920 4921 <td class="entry_units"> 4922 </td> 4923 4924 <td class="entry_range"> 4925 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> 4926<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure 4927compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> 4928<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> 4929<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> 4930<p>LEGACY devices may support a smaller range than this.<wbr/></p> 4931 </td> 4932 4933 <td class="entry_hal_version"> 4934 <p>3.<wbr/>2</p> 4935 </td> 4936 4937 <td class="entry_tags"> 4938 <ul class="entry_tags"> 4939 <li><a href="#tag_BC">BC</a></li> 4940 </ul> 4941 </td> 4942 4943 </tr> 4944 4945 4946 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4947 <!-- end of entry --> 4948 4949 4950 <tr class="entry" id="static_android.control.aeCompensationStep"> 4951 <td class="entry_name 4952 " rowspan="5"> 4953 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 4954 </td> 4955 <td class="entry_type"> 4956 <span class="entry_type_name">rational</span> 4957 4958 <span class="entry_type_visibility"> [public]</span> 4959 4960 4961 <span class="entry_type_hwlevel">[legacy] </span> 4962 4963 4964 4965 4966 </td> <!-- entry_type --> 4967 4968 <td class="entry_description"> 4969 <p>Smallest step by which the exposure compensation 4970can be changed.<wbr/></p> 4971 </td> 4972 4973 <td class="entry_units"> 4974 Exposure Value (EV) 4975 </td> 4976 4977 <td class="entry_range"> 4978 </td> 4979 4980 <td class="entry_hal_version"> 4981 <p>3.<wbr/>2</p> 4982 </td> 4983 4984 <td class="entry_tags"> 4985 <ul class="entry_tags"> 4986 <li><a href="#tag_BC">BC</a></li> 4987 </ul> 4988 </td> 4989 4990 </tr> 4991 <tr class="entries_header"> 4992 <th class="th_details" colspan="6">Details</th> 4993 </tr> 4994 <tr class="entry_cont"> 4995 <td class="entry_details" colspan="6"> 4996 <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 4997a 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 4998that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> 4999<p>One unit of EV compensation changes the brightness of the captured image by a factor 5000of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p> 5001 </td> 5002 </tr> 5003 5004 <tr class="entries_header"> 5005 <th class="th_details" colspan="6">HAL Implementation Details</th> 5006 </tr> 5007 <tr class="entry_cont"> 5008 <td class="entry_details" colspan="6"> 5009 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p> 5010 </td> 5011 </tr> 5012 5013 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5014 <!-- end of entry --> 5015 5016 5017 <tr class="entry" id="static_android.control.afAvailableModes"> 5018 <td class="entry_name 5019 " rowspan="3"> 5020 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 5021 </td> 5022 <td class="entry_type"> 5023 <span class="entry_type_name">byte</span> 5024 <span class="entry_type_container">x</span> 5025 5026 <span class="entry_type_array"> 5027 n 5028 </span> 5029 <span class="entry_type_visibility"> [public as enumList]</span> 5030 5031 5032 <span class="entry_type_hwlevel">[legacy] </span> 5033 5034 5035 <div class="entry_type_notes">List of enums</div> 5036 5037 5038 </td> <!-- entry_type --> 5039 5040 <td class="entry_description"> 5041 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are 5042supported by this camera device.<wbr/></p> 5043 </td> 5044 5045 <td class="entry_units"> 5046 </td> 5047 5048 <td class="entry_range"> 5049 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p> 5050 </td> 5051 5052 <td class="entry_hal_version"> 5053 <p>3.<wbr/>2</p> 5054 </td> 5055 5056 <td class="entry_tags"> 5057 <ul class="entry_tags"> 5058 <li><a href="#tag_BC">BC</a></li> 5059 </ul> 5060 </td> 5061 5062 </tr> 5063 <tr class="entries_header"> 5064 <th class="th_details" colspan="6">Details</th> 5065 </tr> 5066 <tr class="entry_cont"> 5067 <td class="entry_details" colspan="6"> 5068 <p>Not all the auto-focus modes may be supported by a 5069given camera device.<wbr/> This entry lists the valid modes for 5070<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 5071<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all 5072camera devices with adjustable focuser units 5073(<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> 5074<p>LEGACY devices will support OFF mode only if they support 5075focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to 5076<code>0.<wbr/>0f</code>).<wbr/></p> 5077 </td> 5078 </tr> 5079 5080 5081 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5082 <!-- end of entry --> 5083 5084 5085 <tr class="entry" id="static_android.control.availableEffects"> 5086 <td class="entry_name 5087 " rowspan="3"> 5088 android.<wbr/>control.<wbr/>available<wbr/>Effects 5089 </td> 5090 <td class="entry_type"> 5091 <span class="entry_type_name">byte</span> 5092 <span class="entry_type_container">x</span> 5093 5094 <span class="entry_type_array"> 5095 n 5096 </span> 5097 <span class="entry_type_visibility"> [public as enumList]</span> 5098 5099 5100 <span class="entry_type_hwlevel">[legacy] </span> 5101 5102 5103 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 5104 5105 5106 </td> <!-- entry_type --> 5107 5108 <td class="entry_description"> 5109 <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 5110device.<wbr/></p> 5111 </td> 5112 5113 <td class="entry_units"> 5114 </td> 5115 5116 <td class="entry_range"> 5117 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p> 5118 </td> 5119 5120 <td class="entry_hal_version"> 5121 <p>3.<wbr/>2</p> 5122 </td> 5123 5124 <td class="entry_tags"> 5125 <ul class="entry_tags"> 5126 <li><a href="#tag_BC">BC</a></li> 5127 </ul> 5128 </td> 5129 5130 </tr> 5131 <tr class="entries_header"> 5132 <th class="th_details" colspan="6">Details</th> 5133 </tr> 5134 <tr class="entry_cont"> 5135 <td class="entry_details" colspan="6"> 5136 <p>This list contains the color effect modes that can be applied to 5137images produced by the camera device.<wbr/> 5138Implementations are not expected to be consistent across all devices.<wbr/> 5139If no color effect modes are available for a device,<wbr/> this will only list 5140OFF.<wbr/></p> 5141<p>A color effect will only be applied if 5142<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> 5143<p>This control has no effect on the operation of other control routines such 5144as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> 5145 </td> 5146 </tr> 5147 5148 5149 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5150 <!-- end of entry --> 5151 5152 5153 <tr class="entry" id="static_android.control.availableSceneModes"> 5154 <td class="entry_name 5155 " rowspan="3"> 5156 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 5157 </td> 5158 <td class="entry_type"> 5159 <span class="entry_type_name">byte</span> 5160 <span class="entry_type_container">x</span> 5161 5162 <span class="entry_type_array"> 5163 n 5164 </span> 5165 <span class="entry_type_visibility"> [public as enumList]</span> 5166 5167 5168 <span class="entry_type_hwlevel">[legacy] </span> 5169 5170 5171 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 5172 5173 5174 </td> <!-- entry_type --> 5175 5176 <td class="entry_description"> 5177 <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 5178device.<wbr/></p> 5179 </td> 5180 5181 <td class="entry_units"> 5182 </td> 5183 5184 <td class="entry_range"> 5185 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p> 5186 </td> 5187 5188 <td class="entry_hal_version"> 5189 <p>3.<wbr/>2</p> 5190 </td> 5191 5192 <td class="entry_tags"> 5193 <ul class="entry_tags"> 5194 <li><a href="#tag_BC">BC</a></li> 5195 </ul> 5196 </td> 5197 5198 </tr> 5199 <tr class="entries_header"> 5200 <th class="th_details" colspan="6">Details</th> 5201 </tr> 5202 <tr class="entry_cont"> 5203 <td class="entry_details" colspan="6"> 5204 <p>This list contains scene modes that can be set for the camera device.<wbr/> 5205Only scene modes that have been fully implemented for the 5206camera device may be included here.<wbr/> Implementations are not expected 5207to be consistent across all devices.<wbr/></p> 5208<p>If no scene modes are supported by the camera device,<wbr/> this 5209will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> 5210<p>FACE_<wbr/>PRIORITY is always listed if face detection is 5211supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> > 52120</code>).<wbr/></p> 5213 </td> 5214 </tr> 5215 5216 5217 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5218 <!-- end of entry --> 5219 5220 5221 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 5222 <td class="entry_name 5223 " rowspan="3"> 5224 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 5225 </td> 5226 <td class="entry_type"> 5227 <span class="entry_type_name">byte</span> 5228 <span class="entry_type_container">x</span> 5229 5230 <span class="entry_type_array"> 5231 n 5232 </span> 5233 <span class="entry_type_visibility"> [public as enumList]</span> 5234 5235 5236 <span class="entry_type_hwlevel">[legacy] </span> 5237 5238 5239 <div class="entry_type_notes">List of enums.<wbr/></div> 5240 5241 5242 </td> <!-- entry_type --> 5243 5244 <td class="entry_description"> 5245 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> 5246that are supported by this camera device.<wbr/></p> 5247 </td> 5248 5249 <td class="entry_units"> 5250 </td> 5251 5252 <td class="entry_range"> 5253 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p> 5254 </td> 5255 5256 <td class="entry_hal_version"> 5257 <p>3.<wbr/>2</p> 5258 </td> 5259 5260 <td class="entry_tags"> 5261 <ul class="entry_tags"> 5262 <li><a href="#tag_BC">BC</a></li> 5263 </ul> 5264 </td> 5265 5266 </tr> 5267 <tr class="entries_header"> 5268 <th class="th_details" colspan="6">Details</th> 5269 </tr> 5270 <tr class="entry_cont"> 5271 <td class="entry_details" colspan="6"> 5272 <p>OFF will always be listed.<wbr/></p> 5273 </td> 5274 </tr> 5275 5276 5277 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5278 <!-- end of entry --> 5279 5280 5281 <tr class="entry" id="static_android.control.awbAvailableModes"> 5282 <td class="entry_name 5283 " rowspan="3"> 5284 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 5285 </td> 5286 <td class="entry_type"> 5287 <span class="entry_type_name">byte</span> 5288 <span class="entry_type_container">x</span> 5289 5290 <span class="entry_type_array"> 5291 n 5292 </span> 5293 <span class="entry_type_visibility"> [public as enumList]</span> 5294 5295 5296 <span class="entry_type_hwlevel">[legacy] </span> 5297 5298 5299 <div class="entry_type_notes">List of enums</div> 5300 5301 5302 </td> <!-- entry_type --> 5303 5304 <td class="entry_description"> 5305 <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 5306camera device.<wbr/></p> 5307 </td> 5308 5309 <td class="entry_units"> 5310 </td> 5311 5312 <td class="entry_range"> 5313 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p> 5314 </td> 5315 5316 <td class="entry_hal_version"> 5317 <p>3.<wbr/>2</p> 5318 </td> 5319 5320 <td class="entry_tags"> 5321 <ul class="entry_tags"> 5322 <li><a href="#tag_BC">BC</a></li> 5323 </ul> 5324 </td> 5325 5326 </tr> 5327 <tr class="entries_header"> 5328 <th class="th_details" colspan="6">Details</th> 5329 </tr> 5330 <tr class="entry_cont"> 5331 <td class="entry_details" colspan="6"> 5332 <p>Not all the auto-white-balance modes may be supported by a 5333given camera device.<wbr/> This entry lists the valid modes for 5334<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 5335<p>All camera devices will support ON mode.<wbr/></p> 5336<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF 5337mode,<wbr/> which enables application control of white balance,<wbr/> by using 5338<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 5339mode camera devices.<wbr/></p> 5340 </td> 5341 </tr> 5342 5343 5344 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5345 <!-- end of entry --> 5346 5347 5348 <tr class="entry" id="static_android.control.maxRegions"> 5349 <td class="entry_name 5350 " rowspan="1"> 5351 android.<wbr/>control.<wbr/>max<wbr/>Regions 5352 </td> 5353 <td class="entry_type"> 5354 <span class="entry_type_name">int32</span> 5355 <span class="entry_type_container">x</span> 5356 5357 <span class="entry_type_array"> 5358 3 5359 </span> 5360 <span class="entry_type_visibility"> [ndk_public]</span> 5361 5362 5363 <span class="entry_type_hwlevel">[legacy] </span> 5364 5365 5366 5367 5368 </td> <!-- entry_type --> 5369 5370 <td class="entry_description"> 5371 <p>List of the maximum number of regions that can be used for metering in 5372auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 5373this corresponds to the the maximum number of elements in 5374<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/> 5375and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 5376 </td> 5377 5378 <td class="entry_units"> 5379 </td> 5380 5381 <td class="entry_range"> 5382 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 5383this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 5384<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 5385 </td> 5386 5387 <td class="entry_hal_version"> 5388 <p>3.<wbr/>2</p> 5389 </td> 5390 5391 <td class="entry_tags"> 5392 <ul class="entry_tags"> 5393 <li><a href="#tag_BC">BC</a></li> 5394 </ul> 5395 </td> 5396 5397 </tr> 5398 5399 5400 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5401 <!-- end of entry --> 5402 5403 5404 <tr class="entry" id="static_android.control.maxRegionsAe"> 5405 <td class="entry_name 5406 " rowspan="5"> 5407 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae 5408 </td> 5409 <td class="entry_type"> 5410 <span class="entry_type_name">int32</span> 5411 5412 <span class="entry_type_visibility"> [java_public]</span> 5413 5414 <span class="entry_type_synthetic">[synthetic] </span> 5415 5416 <span class="entry_type_hwlevel">[legacy] </span> 5417 5418 5419 5420 5421 </td> <!-- entry_type --> 5422 5423 <td class="entry_description"> 5424 <p>The maximum number of metering regions that can be used by the auto-exposure (AE) 5425routine.<wbr/></p> 5426 </td> 5427 5428 <td class="entry_units"> 5429 </td> 5430 5431 <td class="entry_range"> 5432 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 5433value will be >= 1.<wbr/></p> 5434 </td> 5435 5436 <td class="entry_hal_version"> 5437 <p>3.<wbr/>2</p> 5438 </td> 5439 5440 <td class="entry_tags"> 5441 </td> 5442 5443 </tr> 5444 <tr class="entries_header"> 5445 <th class="th_details" colspan="6">Details</th> 5446 </tr> 5447 <tr class="entry_cont"> 5448 <td class="entry_details" colspan="6"> 5449 <p>This corresponds to the the maximum allowed number of elements in 5450<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 5451 </td> 5452 </tr> 5453 5454 <tr class="entries_header"> 5455 <th class="th_details" colspan="6">HAL Implementation Details</th> 5456 </tr> 5457 <tr class="entry_cont"> 5458 <td class="entry_details" colspan="6"> 5459 <p>This entry is private to the framework.<wbr/> Fill in 5460maxRegions to have this entry be automatically populated.<wbr/></p> 5461 </td> 5462 </tr> 5463 5464 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5465 <!-- end of entry --> 5466 5467 5468 <tr class="entry" id="static_android.control.maxRegionsAwb"> 5469 <td class="entry_name 5470 " rowspan="5"> 5471 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb 5472 </td> 5473 <td class="entry_type"> 5474 <span class="entry_type_name">int32</span> 5475 5476 <span class="entry_type_visibility"> [java_public]</span> 5477 5478 <span class="entry_type_synthetic">[synthetic] </span> 5479 5480 <span class="entry_type_hwlevel">[legacy] </span> 5481 5482 5483 5484 5485 </td> <!-- entry_type --> 5486 5487 <td class="entry_description"> 5488 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) 5489routine.<wbr/></p> 5490 </td> 5491 5492 <td class="entry_units"> 5493 </td> 5494 5495 <td class="entry_range"> 5496 <p>Value will be >= 0.<wbr/></p> 5497 </td> 5498 5499 <td class="entry_hal_version"> 5500 <p>3.<wbr/>2</p> 5501 </td> 5502 5503 <td class="entry_tags"> 5504 </td> 5505 5506 </tr> 5507 <tr class="entries_header"> 5508 <th class="th_details" colspan="6">Details</th> 5509 </tr> 5510 <tr class="entry_cont"> 5511 <td class="entry_details" colspan="6"> 5512 <p>This corresponds to the the maximum allowed number of elements in 5513<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 5514 </td> 5515 </tr> 5516 5517 <tr class="entries_header"> 5518 <th class="th_details" colspan="6">HAL Implementation Details</th> 5519 </tr> 5520 <tr class="entry_cont"> 5521 <td class="entry_details" colspan="6"> 5522 <p>This entry is private to the framework.<wbr/> Fill in 5523maxRegions to have this entry be automatically populated.<wbr/></p> 5524 </td> 5525 </tr> 5526 5527 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5528 <!-- end of entry --> 5529 5530 5531 <tr class="entry" id="static_android.control.maxRegionsAf"> 5532 <td class="entry_name 5533 " rowspan="5"> 5534 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af 5535 </td> 5536 <td class="entry_type"> 5537 <span class="entry_type_name">int32</span> 5538 5539 <span class="entry_type_visibility"> [java_public]</span> 5540 5541 <span class="entry_type_synthetic">[synthetic] </span> 5542 5543 <span class="entry_type_hwlevel">[legacy] </span> 5544 5545 5546 5547 5548 </td> <!-- entry_type --> 5549 5550 <td class="entry_description"> 5551 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> 5552 </td> 5553 5554 <td class="entry_units"> 5555 </td> 5556 5557 <td class="entry_range"> 5558 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 5559value will be >= 1.<wbr/></p> 5560 </td> 5561 5562 <td class="entry_hal_version"> 5563 <p>3.<wbr/>2</p> 5564 </td> 5565 5566 <td class="entry_tags"> 5567 </td> 5568 5569 </tr> 5570 <tr class="entries_header"> 5571 <th class="th_details" colspan="6">Details</th> 5572 </tr> 5573 <tr class="entry_cont"> 5574 <td class="entry_details" colspan="6"> 5575 <p>This corresponds to the the maximum allowed number of elements in 5576<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 5577 </td> 5578 </tr> 5579 5580 <tr class="entries_header"> 5581 <th class="th_details" colspan="6">HAL Implementation Details</th> 5582 </tr> 5583 <tr class="entry_cont"> 5584 <td class="entry_details" colspan="6"> 5585 <p>This entry is private to the framework.<wbr/> Fill in 5586maxRegions to have this entry be automatically populated.<wbr/></p> 5587 </td> 5588 </tr> 5589 5590 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5591 <!-- end of entry --> 5592 5593 5594 <tr class="entry" id="static_android.control.sceneModeOverrides"> 5595 <td class="entry_name 5596 " rowspan="5"> 5597 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 5598 </td> 5599 <td class="entry_type"> 5600 <span class="entry_type_name">byte</span> 5601 <span class="entry_type_container">x</span> 5602 5603 <span class="entry_type_array"> 5604 3 x length(availableSceneModes) 5605 </span> 5606 <span class="entry_type_visibility"> [system]</span> 5607 5608 5609 <span class="entry_type_hwlevel">[limited] </span> 5610 5611 5612 5613 5614 </td> <!-- entry_type --> 5615 5616 <td class="entry_description"> 5617 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 5618settings to use with each available scene mode.<wbr/></p> 5619 </td> 5620 5621 <td class="entry_units"> 5622 </td> 5623 5624 <td class="entry_range"> 5625 <p>For each available scene mode,<wbr/> the list must contain three 5626entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5627<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 5628by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 5629where aeMode has the lowest index position.<wbr/></p> 5630 </td> 5631 5632 <td class="entry_hal_version"> 5633 <p>3.<wbr/>2</p> 5634 </td> 5635 5636 <td class="entry_tags"> 5637 <ul class="entry_tags"> 5638 <li><a href="#tag_BC">BC</a></li> 5639 </ul> 5640 </td> 5641 5642 </tr> 5643 <tr class="entries_header"> 5644 <th class="th_details" colspan="6">Details</th> 5645 </tr> 5646 <tr class="entry_cont"> 5647 <td class="entry_details" colspan="6"> 5648 <p>When a scene mode is enabled,<wbr/> the camera device is expected 5649to 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/> 5650and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 5651that scene mode.<wbr/></p> 5652<p>The order of this list matches that of availableSceneModes,<wbr/> 5653with 3 entries for each mode.<wbr/> The overrides listed 5654for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/> 5655since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5656<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 5657used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 5658is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and 5659FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p> 5660<p>For example,<wbr/> if availableSceneModes contains 5661<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 5662expects sceneModeOverrides to have 9 entries formatted like: 5663<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 5664ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 5665 </td> 5666 </tr> 5667 5668 <tr class="entries_header"> 5669 <th class="th_details" colspan="6">HAL Implementation Details</th> 5670 </tr> 5671 <tr class="entry_cont"> 5672 <td class="entry_details" colspan="6"> 5673 <p>To maintain backward compatibility,<wbr/> this list will be made available 5674in the static metadata of the camera service.<wbr/> The camera service will 5675use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5676<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 5677mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p> 5678 </td> 5679 </tr> 5680 5681 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5682 <!-- end of entry --> 5683 5684 5685 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> 5686 <td class="entry_name 5687 " rowspan="5"> 5688 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations 5689 </td> 5690 <td class="entry_type"> 5691 <span class="entry_type_name">int32</span> 5692 <span class="entry_type_container">x</span> 5693 5694 <span class="entry_type_array"> 5695 5 x n 5696 </span> 5697 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 5698 5699 5700 <span class="entry_type_hwlevel">[limited] </span> 5701 5702 5703 5704 5705 </td> <!-- entry_type --> 5706 5707 <td class="entry_description"> 5708 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations 5709supported 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> 5710 </td> 5711 5712 <td class="entry_units"> 5713 </td> 5714 5715 <td class="entry_range"> 5716 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> 5717 </td> 5718 5719 <td class="entry_hal_version"> 5720 <p>3.<wbr/>2</p> 5721 </td> 5722 5723 <td class="entry_tags"> 5724 <ul class="entry_tags"> 5725 <li><a href="#tag_V1">V1</a></li> 5726 </ul> 5727 </td> 5728 5729 </tr> 5730 <tr class="entries_header"> 5731 <th class="th_details" colspan="6">Details</th> 5732 </tr> 5733 <tr class="entry_cont"> 5734 <td class="entry_details" colspan="6"> 5735 <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/> 5736this metadata will list the supported high speed video size,<wbr/> fps range and max batch size 5737configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes 5738reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> 5739for processed non-stalling formats.<wbr/></p> 5740<p>For the high speed video use case,<wbr/> the application must 5741select the video size and fps range from this metadata to configure the recording and 5742preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends 5743to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to 5744configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata 5745by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the 5746recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application 5747must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams 5748must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p> 5749<p>The min and max fps will be multiple times of 30fps.<wbr/></p> 5750<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/> 5751to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate 5752multiple frames together and send to camera device for processing where the request 5753controls are same for all the frames in this batch.<wbr/> Max batch size indicates 5754the max possible number of frames the camera device will group together for this high 5755speed stream configuration.<wbr/> This max batch size will be used to generate a high speed 5756recording request list by 5757<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/> 5758The max batch size for each configuration will satisfy below conditions:</p> 5759<ul> 5760<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/> 5761if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li> 5762<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but 5763the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch 5764size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li> 5765<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li> 5766</ul> 5767<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/> 5768in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p> 5769<p>This fps ranges in this configuration list can only be used to create requests 5770that are submitted to a high speed camera capture session created by 5771<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 5772The fps ranges reported in this metadata must not be used to setup capture requests for 5773normal capture session,<wbr/> or it will cause request error.<wbr/></p> 5774 </td> 5775 </tr> 5776 5777 <tr class="entries_header"> 5778 <th class="th_details" colspan="6">HAL Implementation Details</th> 5779 </tr> 5780 <tr class="entry_cont"> 5781 <td class="entry_details" colspan="6"> 5782 <p>All the sizes listed in this configuration will be a subset of the sizes reported by 5783<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> 5784Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum 5785of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> 5786<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps 5787sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application 5788usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused 5789stutter when starting recording as much as possible,<wbr/> the application may want to ensure 5790the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise 5791the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/> 5792For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise 5793[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to 5794do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start 5795recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps 5796values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps 5797values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must 5798switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p> 5799 </td> 5800 </tr> 5801 5802 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5803 <!-- end of entry --> 5804 5805 5806 <tr class="entry" id="static_android.control.aeLockAvailable"> 5807 <td class="entry_name 5808 " rowspan="3"> 5809 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available 5810 </td> 5811 <td class="entry_type"> 5812 <span class="entry_type_name entry_type_name_enum">byte</span> 5813 5814 <span class="entry_type_visibility"> [public as boolean]</span> 5815 5816 5817 <span class="entry_type_hwlevel">[legacy] </span> 5818 5819 5820 5821 <ul class="entry_type_enum"> 5822 <li> 5823 <span class="entry_type_enum_name">FALSE (v3.2)</span> 5824 </li> 5825 <li> 5826 <span class="entry_type_enum_name">TRUE (v3.2)</span> 5827 </li> 5828 </ul> 5829 5830 </td> <!-- entry_type --> 5831 5832 <td class="entry_description"> 5833 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p> 5834 </td> 5835 5836 <td class="entry_units"> 5837 </td> 5838 5839 <td class="entry_range"> 5840 </td> 5841 5842 <td class="entry_hal_version"> 5843 <p>3.<wbr/>2</p> 5844 </td> 5845 5846 <td class="entry_tags"> 5847 <ul class="entry_tags"> 5848 <li><a href="#tag_BC">BC</a></li> 5849 </ul> 5850 </td> 5851 5852 </tr> 5853 <tr class="entries_header"> 5854 <th class="th_details" colspan="6">Details</th> 5855 </tr> 5856 <tr class="entry_cont"> 5857 <td class="entry_details" colspan="6"> 5858 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always 5859list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5860 </td> 5861 </tr> 5862 5863 5864 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5865 <!-- end of entry --> 5866 5867 5868 <tr class="entry" id="static_android.control.awbLockAvailable"> 5869 <td class="entry_name 5870 " rowspan="3"> 5871 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available 5872 </td> 5873 <td class="entry_type"> 5874 <span class="entry_type_name entry_type_name_enum">byte</span> 5875 5876 <span class="entry_type_visibility"> [public as boolean]</span> 5877 5878 5879 <span class="entry_type_hwlevel">[legacy] </span> 5880 5881 5882 5883 <ul class="entry_type_enum"> 5884 <li> 5885 <span class="entry_type_enum_name">FALSE (v3.2)</span> 5886 </li> 5887 <li> 5888 <span class="entry_type_enum_name">TRUE (v3.2)</span> 5889 </li> 5890 </ul> 5891 5892 </td> <!-- entry_type --> 5893 5894 <td class="entry_description"> 5895 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p> 5896 </td> 5897 5898 <td class="entry_units"> 5899 </td> 5900 5901 <td class="entry_range"> 5902 </td> 5903 5904 <td class="entry_hal_version"> 5905 <p>3.<wbr/>2</p> 5906 </td> 5907 5908 <td class="entry_tags"> 5909 <ul class="entry_tags"> 5910 <li><a href="#tag_BC">BC</a></li> 5911 </ul> 5912 </td> 5913 5914 </tr> 5915 <tr class="entries_header"> 5916 <th class="th_details" colspan="6">Details</th> 5917 </tr> 5918 <tr class="entry_cont"> 5919 <td class="entry_details" colspan="6"> 5920 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will 5921always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5922 </td> 5923 </tr> 5924 5925 5926 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5927 <!-- end of entry --> 5928 5929 5930 <tr class="entry" id="static_android.control.availableModes"> 5931 <td class="entry_name 5932 " rowspan="3"> 5933 android.<wbr/>control.<wbr/>available<wbr/>Modes 5934 </td> 5935 <td class="entry_type"> 5936 <span class="entry_type_name">byte</span> 5937 <span class="entry_type_container">x</span> 5938 5939 <span class="entry_type_array"> 5940 n 5941 </span> 5942 <span class="entry_type_visibility"> [public as enumList]</span> 5943 5944 5945 <span class="entry_type_hwlevel">[legacy] </span> 5946 5947 5948 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div> 5949 5950 5951 </td> <!-- entry_type --> 5952 5953 <td class="entry_description"> 5954 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera 5955device.<wbr/></p> 5956 </td> 5957 5958 <td class="entry_units"> 5959 </td> 5960 5961 <td class="entry_range"> 5962 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p> 5963 </td> 5964 5965 <td class="entry_hal_version"> 5966 <p>3.<wbr/>2</p> 5967 </td> 5968 5969 <td class="entry_tags"> 5970 </td> 5971 5972 </tr> 5973 <tr class="entries_header"> 5974 <th class="th_details" colspan="6">Details</th> 5975 </tr> 5976 <tr class="entry_cont"> 5977 <td class="entry_details" colspan="6"> 5978 <p>This list contains control modes that can be set for the camera device.<wbr/> 5979LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL 5980devices will always support OFF,<wbr/> AUTO modes.<wbr/></p> 5981 </td> 5982 </tr> 5983 5984 5985 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5986 <!-- end of entry --> 5987 5988 5989 <tr class="entry" id="static_android.control.postRawSensitivityBoostRange"> 5990 <td class="entry_name 5991 " rowspan="5"> 5992 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range 5993 </td> 5994 <td class="entry_type"> 5995 <span class="entry_type_name">int32</span> 5996 <span class="entry_type_container">x</span> 5997 5998 <span class="entry_type_array"> 5999 2 6000 </span> 6001 <span class="entry_type_visibility"> [public as rangeInt]</span> 6002 6003 6004 6005 6006 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div> 6007 6008 6009 </td> <!-- entry_type --> 6010 6011 <td class="entry_description"> 6012 <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported 6013by this camera device.<wbr/></p> 6014 </td> 6015 6016 <td class="entry_units"> 6017 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 6018 </td> 6019 6020 <td class="entry_range"> 6021 </td> 6022 6023 <td class="entry_hal_version"> 6024 <p>3.<wbr/>2</p> 6025 </td> 6026 6027 <td class="entry_tags"> 6028 </td> 6029 6030 </tr> 6031 <tr class="entries_header"> 6032 <th class="th_details" colspan="6">Details</th> 6033 </tr> 6034 <tr class="entry_cont"> 6035 <td class="entry_details" colspan="6"> 6036 <p>Devices support post RAW sensitivity boost will advertise 6037<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling 6038post RAW sensitivity boost.<wbr/></p> 6039<p>This key will be <code>null</code> for devices that do not support any RAW format 6040outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 6041present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 6042list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p> 6043 </td> 6044 </tr> 6045 6046 <tr class="entries_header"> 6047 <th class="th_details" colspan="6">HAL Implementation Details</th> 6048 </tr> 6049 <tr class="entry_cont"> 6050 <td class="entry_details" colspan="6"> 6051 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera 6052framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output 6053formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports 6054any of RAW output formats.<wbr/></p> 6055 </td> 6056 </tr> 6057 6058 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6059 <!-- end of entry --> 6060 6061 6062 6063 <!-- end of kind --> 6064 </tbody> 6065 <tr><td colspan="7" class="kind">dynamic</td></tr> 6066 6067 <thead class="entries_header"> 6068 <tr> 6069 <th class="th_name">Property Name</th> 6070 <th class="th_type">Type</th> 6071 <th class="th_description">Description</th> 6072 <th class="th_units">Units</th> 6073 <th class="th_range">Range</th> 6074 <th class="th_hal_version">Initial HIDL HAL version</th> 6075 <th class="th_tags">Tags</th> 6076 </tr> 6077 </thead> 6078 6079 <tbody> 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 6091 <td class="entry_name 6092 entry_name_deprecated 6093 " rowspan="3"> 6094 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 6095 </td> 6096 <td class="entry_type"> 6097 <span class="entry_type_name">int32</span> 6098 6099 <span class="entry_type_visibility"> [system]</span> 6100 6101 6102 6103 <span class="entry_type_deprecated">[deprecated] </span> 6104 6105 6106 6107 </td> <!-- entry_type --> 6108 6109 <td class="entry_description"> 6110 <p>The ID sent with the latest 6111CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 6112 </td> 6113 6114 <td class="entry_units"> 6115 </td> 6116 6117 <td class="entry_range"> 6118 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 6119 </td> 6120 6121 <td class="entry_hal_version"> 6122 <p>3.<wbr/>2</p> 6123 </td> 6124 6125 <td class="entry_tags"> 6126 </td> 6127 6128 </tr> 6129 <tr class="entries_header"> 6130 <th class="th_details" colspan="6">Details</th> 6131 </tr> 6132 <tr class="entry_cont"> 6133 <td class="entry_details" colspan="6"> 6134 <p>Must be 0 if no 6135CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 6136by HAL.<wbr/> Always updated even if AE algorithm ignores the 6137trigger</p> 6138 </td> 6139 </tr> 6140 6141 6142 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6143 <!-- end of entry --> 6144 6145 6146 <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> 6147 <td class="entry_name 6148 " rowspan="5"> 6149 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 6150 </td> 6151 <td class="entry_type"> 6152 <span class="entry_type_name entry_type_name_enum">byte</span> 6153 6154 <span class="entry_type_visibility"> [public]</span> 6155 6156 6157 <span class="entry_type_hwlevel">[legacy] </span> 6158 6159 6160 6161 <ul class="entry_type_enum"> 6162 <li> 6163 <span class="entry_type_enum_name">OFF (v3.2)</span> 6164 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 6165avoid banding problems.<wbr/></p></span> 6166 </li> 6167 <li> 6168 <span class="entry_type_enum_name">50HZ (v3.2)</span> 6169 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 6170avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 6171 </li> 6172 <li> 6173 <span class="entry_type_enum_name">60HZ (v3.2)</span> 6174 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 6175avoid banding problems with 60Hz illumination 6176sources.<wbr/></p></span> 6177 </li> 6178 <li> 6179 <span class="entry_type_enum_name">AUTO (v3.2)</span> 6180 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 6181antibanding routine to the current illumination 6182condition.<wbr/> This is the default mode if AUTO is 6183available on given camera device.<wbr/></p></span> 6184 </li> 6185 </ul> 6186 6187 </td> <!-- entry_type --> 6188 6189 <td class="entry_description"> 6190 <p>The desired setting for the camera device's auto-exposure 6191algorithm's antibanding compensation.<wbr/></p> 6192 </td> 6193 6194 <td class="entry_units"> 6195 </td> 6196 6197 <td class="entry_range"> 6198 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 6199 </td> 6200 6201 <td class="entry_hal_version"> 6202 <p>3.<wbr/>2</p> 6203 </td> 6204 6205 <td class="entry_tags"> 6206 <ul class="entry_tags"> 6207 <li><a href="#tag_BC">BC</a></li> 6208 </ul> 6209 </td> 6210 6211 </tr> 6212 <tr class="entries_header"> 6213 <th class="th_details" colspan="6">Details</th> 6214 </tr> 6215 <tr class="entry_cont"> 6216 <td class="entry_details" colspan="6"> 6217 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 6218lights,<wbr/> flicker at the rate of the power supply frequency 6219(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 6220typically not noticeable to a person,<wbr/> it can be visible to 6221a camera device.<wbr/> If a camera sets its exposure time to the 6222wrong value,<wbr/> the flicker may become visible in the 6223viewfinder as flicker or in a final captured image,<wbr/> as a 6224set of variable-brightness bands across the image.<wbr/></p> 6225<p>Therefore,<wbr/> the auto-exposure routines of camera devices 6226include antibanding routines that ensure that the chosen 6227exposure value will not cause such banding.<wbr/> The choice of 6228exposure time depends on the rate of flicker,<wbr/> which the 6229camera device can detect automatically,<wbr/> or the expected 6230rate can be selected by the application using this 6231control.<wbr/></p> 6232<p>A given camera device may not support all of the possible 6233options for the antibanding mode.<wbr/> The 6234<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 6235the available modes for a given camera device.<wbr/></p> 6236<p>AUTO mode is the default if it is available on given 6237camera device.<wbr/> When AUTO mode is not available,<wbr/> the 6238default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 6239and 60HZ will be available.<wbr/></p> 6240<p>If manual exposure control is enabled (by setting 6241<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/> 6242then this setting has no effect,<wbr/> and the application must 6243ensure it selects exposure times that do not cause banding 6244issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 6245the application in this.<wbr/></p> 6246 </td> 6247 </tr> 6248 6249 <tr class="entries_header"> 6250 <th class="th_details" colspan="6">HAL Implementation Details</th> 6251 </tr> 6252 <tr class="entry_cont"> 6253 <td class="entry_details" colspan="6"> 6254 <p>For all capture request templates,<wbr/> this field must be set 6255to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 6256the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 625760HZ must be available.<wbr/></p> 6258<p>If manual exposure control is enabled (by setting 6259<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/> 6260then the exposure values provided by the application must not be 6261adjusted for antibanding.<wbr/></p> 6262 </td> 6263 </tr> 6264 6265 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6266 <!-- end of entry --> 6267 6268 6269 <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> 6270 <td class="entry_name 6271 " rowspan="3"> 6272 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 6273 </td> 6274 <td class="entry_type"> 6275 <span class="entry_type_name">int32</span> 6276 6277 <span class="entry_type_visibility"> [public]</span> 6278 6279 6280 <span class="entry_type_hwlevel">[legacy] </span> 6281 6282 6283 6284 6285 </td> <!-- entry_type --> 6286 6287 <td class="entry_description"> 6288 <p>Adjustment to auto-exposure (AE) target image 6289brightness.<wbr/></p> 6290 </td> 6291 6292 <td class="entry_units"> 6293 Compensation steps 6294 </td> 6295 6296 <td class="entry_range"> 6297 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 6298 </td> 6299 6300 <td class="entry_hal_version"> 6301 <p>3.<wbr/>2</p> 6302 </td> 6303 6304 <td class="entry_tags"> 6305 <ul class="entry_tags"> 6306 <li><a href="#tag_BC">BC</a></li> 6307 </ul> 6308 </td> 6309 6310 </tr> 6311 <tr class="entries_header"> 6312 <th class="th_details" colspan="6">Details</th> 6313 </tr> 6314 <tr class="entry_cont"> 6315 <td class="entry_details" colspan="6"> 6316 <p>The adjustment is measured as a count of steps,<wbr/> with the 6317step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 6318allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 6319<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 6320will mean an exposure compensation of +2 EV; -3 will mean an 6321exposure compensation of -1 EV.<wbr/> One EV represents a doubling 6322of image brightness.<wbr/> Note that this control will only be 6323effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 6324will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 6325<p>In the event of exposure compensation value being changed,<wbr/> camera device 6326may take several frames to reach the newly requested exposure target.<wbr/> 6327During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 6328state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 6329change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 6330FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 6331 </td> 6332 </tr> 6333 6334 6335 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6336 <!-- end of entry --> 6337 6338 6339 <tr class="entry" id="dynamic_android.control.aeLock"> 6340 <td class="entry_name 6341 " rowspan="3"> 6342 android.<wbr/>control.<wbr/>ae<wbr/>Lock 6343 </td> 6344 <td class="entry_type"> 6345 <span class="entry_type_name entry_type_name_enum">byte</span> 6346 6347 <span class="entry_type_visibility"> [public as boolean]</span> 6348 6349 6350 <span class="entry_type_hwlevel">[legacy] </span> 6351 6352 6353 6354 <ul class="entry_type_enum"> 6355 <li> 6356 <span class="entry_type_enum_name">OFF (v3.2)</span> 6357 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 6358is free to update its parameters.<wbr/></p></span> 6359 </li> 6360 <li> 6361 <span class="entry_type_enum_name">ON (v3.2)</span> 6362 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 6363must not update the exposure and sensitivity parameters 6364while the lock is active.<wbr/></p> 6365<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 6366will still take effect while auto-exposure is locked.<wbr/></p> 6367<p>Some rare LEGACY devices may not support 6368this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 6369 </li> 6370 </ul> 6371 6372 </td> <!-- entry_type --> 6373 6374 <td class="entry_description"> 6375 <p>Whether auto-exposure (AE) is currently locked to its latest 6376calculated values.<wbr/></p> 6377 </td> 6378 6379 <td class="entry_units"> 6380 </td> 6381 6382 <td class="entry_range"> 6383 </td> 6384 6385 <td class="entry_hal_version"> 6386 <p>3.<wbr/>2</p> 6387 </td> 6388 6389 <td class="entry_tags"> 6390 <ul class="entry_tags"> 6391 <li><a href="#tag_BC">BC</a></li> 6392 </ul> 6393 </td> 6394 6395 </tr> 6396 <tr class="entries_header"> 6397 <th class="th_details" colspan="6">Details</th> 6398 </tr> 6399 <tr class="entry_cont"> 6400 <td class="entry_details" colspan="6"> 6401 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 6402and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 6403<p>Note that even when AE is locked,<wbr/> the flash may be fired if 6404the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 6405ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 6406<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 6407is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 6408<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 6409when AE is already locked,<wbr/> the camera device will not change the exposure time 6410(<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>) 6411parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 6412is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 6413<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/> 6414Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 6415<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 6416the AE if AE is locked by the camera device internally during precapture metering 6417sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 6418ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 6419will never succeed in a sequence of preview requests where AE lock is always set 6420to <code>false</code>.<wbr/></p> 6421<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 6422get locked do not necessarily correspond to the settings that were present in the 6423latest capture result received from the camera device,<wbr/> since additional captures 6424and AE updates may have occurred even before the result was sent out.<wbr/> If an 6425application is switching between automatic and manual control and wishes to eliminate 6426any flicker during the switch,<wbr/> the following procedure is recommended:</p> 6427<ol> 6428<li>Starting in auto-AE mode:</li> 6429<li>Lock AE</li> 6430<li>Wait for the first result to be output that has the AE locked</li> 6431<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 6432<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 6433</ol> 6434<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> 6435 </td> 6436 </tr> 6437 6438 6439 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6440 <!-- end of entry --> 6441 6442 6443 <tr class="entry" id="dynamic_android.control.aeMode"> 6444 <td class="entry_name 6445 " rowspan="3"> 6446 android.<wbr/>control.<wbr/>ae<wbr/>Mode 6447 </td> 6448 <td class="entry_type"> 6449 <span class="entry_type_name entry_type_name_enum">byte</span> 6450 6451 <span class="entry_type_visibility"> [public]</span> 6452 6453 6454 <span class="entry_type_hwlevel">[legacy] </span> 6455 6456 6457 6458 <ul class="entry_type_enum"> 6459 <li> 6460 <span class="entry_type_enum_name">OFF (v3.2)</span> 6461 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 6462<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 6463<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 6464<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 6465device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 6466a flash unit for this camera device.<wbr/></p> 6467<p>Note that auto-white balance (AWB) and auto-focus (AF) 6468behavior is device dependent when AE is in OFF mode.<wbr/> 6469To have consistent behavior across different devices,<wbr/> 6470it is recommended to either set AWB and AF to OFF mode 6471or lock AWB and AF before setting AE to OFF.<wbr/> 6472See <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/> 6473<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> 6474for more details.<wbr/></p> 6475<p>LEGACY devices do not support the OFF mode and will 6476override attempts to use this value to ON.<wbr/></p></span> 6477 </li> 6478 <li> 6479 <span class="entry_type_enum_name">ON (v3.2)</span> 6480 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 6481with no flash control.<wbr/></p> 6482<p>The application's values for 6483<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 6484<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 6485<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 6486application has control over the various 6487android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 6488 </li> 6489 <li> 6490 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span> 6491 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 6492the camera's flash unit,<wbr/> firing it in low-light 6493conditions.<wbr/></p> 6494<p>The flash may be fired during a precapture sequence 6495(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 6496may be fired for captures for which the 6497<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 6498STILL_<wbr/>CAPTURE</p></span> 6499 </li> 6500 <li> 6501 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span> 6502 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 6503the camera's flash unit,<wbr/> always firing it for still 6504captures.<wbr/></p> 6505<p>The flash may be fired during a precapture sequence 6506(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 6507will always be fired for captures for which the 6508<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 6509STILL_<wbr/>CAPTURE</p></span> 6510 </li> 6511 <li> 6512 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span> 6513 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 6514reduction.<wbr/></p> 6515<p>If deemed necessary by the camera device,<wbr/> a red eye 6516reduction flash will fire during the precapture 6517sequence.<wbr/></p></span> 6518 </li> 6519 <li> 6520 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span> 6521 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p> 6522<p>It informs the camera device that an external flash has been turned on,<wbr/> and that 6523metering (and continuous focus if active) should be quickly recaculated to account 6524for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p> 6525<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the 6526other available AE modes.<wbr/></p> 6527<p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must 6528be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without 6529flash.<wbr/></p></span> 6530 </li> 6531 </ul> 6532 6533 </td> <!-- entry_type --> 6534 6535 <td class="entry_description"> 6536 <p>The desired mode for the camera device's 6537auto-exposure routine.<wbr/></p> 6538 </td> 6539 6540 <td class="entry_units"> 6541 </td> 6542 6543 <td class="entry_range"> 6544 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 6545 </td> 6546 6547 <td class="entry_hal_version"> 6548 <p>3.<wbr/>2</p> 6549 </td> 6550 6551 <td class="entry_tags"> 6552 <ul class="entry_tags"> 6553 <li><a href="#tag_BC">BC</a></li> 6554 </ul> 6555 </td> 6556 6557 </tr> 6558 <tr class="entries_header"> 6559 <th class="th_details" colspan="6">Details</th> 6560 </tr> 6561 <tr class="entry_cont"> 6562 <td class="entry_details" colspan="6"> 6563 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 6564AUTO.<wbr/></p> 6565<p>When set to any of the ON modes,<wbr/> the camera device's 6566auto-exposure routine is enabled,<wbr/> overriding the 6567application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 6568and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 6569<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 6570<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 6571is selected,<wbr/> the camera device's flash unit controls are 6572also overridden.<wbr/></p> 6573<p>The FLASH modes are only available if the camera device 6574has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 6575<p>If flash TORCH mode is desired,<wbr/> this field must be set to 6576ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 6577<p>When set to any of the ON modes,<wbr/> the values chosen by the 6578camera device auto-exposure routine for the overridden 6579fields for a given capture will be available in its 6580CaptureResult.<wbr/></p> 6581 </td> 6582 </tr> 6583 6584 6585 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6586 <!-- end of entry --> 6587 6588 6589 <tr class="entry" id="dynamic_android.control.aeRegions"> 6590 <td class="entry_name 6591 " rowspan="5"> 6592 android.<wbr/>control.<wbr/>ae<wbr/>Regions 6593 </td> 6594 <td class="entry_type"> 6595 <span class="entry_type_name">int32</span> 6596 <span class="entry_type_container">x</span> 6597 6598 <span class="entry_type_array"> 6599 5 x area_count 6600 </span> 6601 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 6602 6603 6604 6605 6606 6607 6608 </td> <!-- entry_type --> 6609 6610 <td class="entry_description"> 6611 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 6612 </td> 6613 6614 <td class="entry_units"> 6615 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 6616 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 6617 distortion correction capability and mode 6618 </td> 6619 6620 <td class="entry_range"> 6621 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 6622<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> 6623depending on distortion correction capability and mode</p> 6624 </td> 6625 6626 <td class="entry_hal_version"> 6627 <p>3.<wbr/>2</p> 6628 </td> 6629 6630 <td class="entry_tags"> 6631 <ul class="entry_tags"> 6632 <li><a href="#tag_BC">BC</a></li> 6633 </ul> 6634 </td> 6635 6636 </tr> 6637 <tr class="entries_header"> 6638 <th class="th_details" colspan="6">Details</th> 6639 </tr> 6640 <tr class="entry_cont"> 6641 <td class="entry_details" colspan="6"> 6642 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 6643Otherwise will always be present.<wbr/></p> 6644<p>The maximum number of regions supported by the device is determined by the value 6645of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 6646<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 6647system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being 6648the top-left pixel in the active pixel array,<wbr/> and 6649(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6650<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the 6651active pixel array.<wbr/></p> 6652<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 6653system depends on the mode being set.<wbr/> 6654When the distortion correction mode is OFF,<wbr/> the coordinate system follows 6655<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with 6656<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 6657(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6658<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right 6659pixel in the pre-correction active pixel array.<wbr/> 6660When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 6661<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 6662<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 6663(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6664<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the 6665active pixel array.<wbr/></p> 6666<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 6667for every pixel in the area.<wbr/> This means that a large metering area 6668with the same weight as a smaller area will have more effect in 6669the metering result.<wbr/> Metering areas can partially overlap and the 6670camera device will add the weights in the overlap region.<wbr/></p> 6671<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 6672region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 6673weight is ignored.<wbr/></p> 6674<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 6675camera device.<wbr/></p> 6676<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 6677capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 6678region and output only the intersection rectangle as the metering region in the result 6679metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 6680not reported in the result metadata.<wbr/></p> 6681 </td> 6682 </tr> 6683 6684 <tr class="entries_header"> 6685 <th class="th_details" colspan="6">HAL Implementation Details</th> 6686 </tr> 6687 <tr class="entry_cont"> 6688 <td class="entry_details" colspan="6"> 6689 <p>The HAL level representation of MeteringRectangle[] is a 6690int[5 * area_<wbr/>count].<wbr/> 6691Every five elements represent a metering region of 6692(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 6693The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 6694exclusive on xmax and ymax.<wbr/> 6695HAL must always report metering regions in the coordinate system of pre-correction 6696active array.<wbr/></p> 6697 </td> 6698 </tr> 6699 6700 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6701 <!-- end of entry --> 6702 6703 6704 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> 6705 <td class="entry_name 6706 " rowspan="3"> 6707 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 6708 </td> 6709 <td class="entry_type"> 6710 <span class="entry_type_name">int32</span> 6711 <span class="entry_type_container">x</span> 6712 6713 <span class="entry_type_array"> 6714 2 6715 </span> 6716 <span class="entry_type_visibility"> [public as rangeInt]</span> 6717 6718 6719 <span class="entry_type_hwlevel">[legacy] </span> 6720 6721 6722 6723 6724 </td> <!-- entry_type --> 6725 6726 <td class="entry_description"> 6727 <p>Range over which the auto-exposure routine can 6728adjust the capture frame rate to maintain good 6729exposure.<wbr/></p> 6730 </td> 6731 6732 <td class="entry_units"> 6733 Frames per second (FPS) 6734 </td> 6735 6736 <td class="entry_range"> 6737 <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> 6738 </td> 6739 6740 <td class="entry_hal_version"> 6741 <p>3.<wbr/>2</p> 6742 </td> 6743 6744 <td class="entry_tags"> 6745 <ul class="entry_tags"> 6746 <li><a href="#tag_BC">BC</a></li> 6747 </ul> 6748 </td> 6749 6750 </tr> 6751 <tr class="entries_header"> 6752 <th class="th_details" colspan="6">Details</th> 6753 </tr> 6754 <tr class="entry_cont"> 6755 <td class="entry_details" colspan="6"> 6756 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 6757manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 6758<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 6759 </td> 6760 </tr> 6761 6762 6763 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6764 <!-- end of entry --> 6765 6766 6767 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> 6768 <td class="entry_name 6769 " rowspan="5"> 6770 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 6771 </td> 6772 <td class="entry_type"> 6773 <span class="entry_type_name entry_type_name_enum">byte</span> 6774 6775 <span class="entry_type_visibility"> [public]</span> 6776 6777 6778 <span class="entry_type_hwlevel">[limited] </span> 6779 6780 6781 6782 <ul class="entry_type_enum"> 6783 <li> 6784 <span class="entry_type_enum_name">IDLE (v3.2)</span> 6785 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6786 </li> 6787 <li> 6788 <span class="entry_type_enum_name">START (v3.2)</span> 6789 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 6790by the camera device.<wbr/></p> 6791<p>The exact effect of the precapture trigger depends on 6792the current AE mode and state.<wbr/></p></span> 6793 </li> 6794 <li> 6795 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 6796 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 6797precapture metering sequence,<wbr/> the auto-exposure routine will return to its 6798initial state.<wbr/></p></span> 6799 </li> 6800 </ul> 6801 6802 </td> <!-- entry_type --> 6803 6804 <td class="entry_description"> 6805 <p>Whether the camera device will trigger a precapture 6806metering sequence when it processes this request.<wbr/></p> 6807 </td> 6808 6809 <td class="entry_units"> 6810 </td> 6811 6812 <td class="entry_range"> 6813 </td> 6814 6815 <td class="entry_hal_version"> 6816 <p>3.<wbr/>2</p> 6817 </td> 6818 6819 <td class="entry_tags"> 6820 <ul class="entry_tags"> 6821 <li><a href="#tag_BC">BC</a></li> 6822 </ul> 6823 </td> 6824 6825 </tr> 6826 <tr class="entries_header"> 6827 <th class="th_details" colspan="6">Details</th> 6828 </tr> 6829 <tr class="entry_cont"> 6830 <td class="entry_details" colspan="6"> 6831 <p>This entry is normally set to IDLE,<wbr/> or is not 6832included at all in the request settings.<wbr/> When included and 6833set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 6834precapture metering sequence.<wbr/></p> 6835<p>When set to CANCEL,<wbr/> the camera device will cancel any active 6836precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 6837If a precapture metering sequence is already completed,<wbr/> and the camera 6838device has implicitly locked the AE for subsequent still capture,<wbr/> the 6839CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 6840<p>The precapture sequence should be triggered before starting a 6841high-quality still capture for final metering decisions to 6842be made,<wbr/> and for firing pre-capture flash pulses to estimate 6843scene brightness and required final capture flash power,<wbr/> when 6844the flash is enabled.<wbr/></p> 6845<p>Normally,<wbr/> this entry should be set to START for only a 6846single request,<wbr/> and the application should wait until the 6847sequence completes before starting a new one.<wbr/></p> 6848<p>When a precapture metering sequence is finished,<wbr/> the camera device 6849may lock the auto-exposure routine internally to be able to accurately expose the 6850subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 6851For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 6852submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 6853submit 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 6854with <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 6855still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 6856API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 6857internally locked AE if the application doesn't submit a still capture request after 6858the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 6859be used in devices that have earlier API levels.<wbr/></p> 6860<p>The exact effect of auto-exposure (AE) precapture trigger 6861depends on the current AE mode and state; see 6862<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 6863details.<wbr/></p> 6864<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 6865capturing a high-resolution JPEG image will automatically trigger a 6866precapture sequence before the high-resolution capture,<wbr/> including 6867potentially firing a pre-capture flash.<wbr/></p> 6868<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 6869simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 6870the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 6871focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 6872trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 6873changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 6874example.<wbr/></p> 6875<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 6876the camera device will complete them in the optimal order for that device.<wbr/></p> 6877 </td> 6878 </tr> 6879 6880 <tr class="entries_header"> 6881 <th class="th_details" colspan="6">HAL Implementation Details</th> 6882 </tr> 6883 <tr class="entry_cont"> 6884 <td class="entry_details" colspan="6"> 6885 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 6886(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 6887treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 6888AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 6889to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 6890 </td> 6891 </tr> 6892 6893 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6894 <!-- end of entry --> 6895 6896 6897 <tr class="entry" id="dynamic_android.control.aeState"> 6898 <td class="entry_name 6899 " rowspan="3"> 6900 android.<wbr/>control.<wbr/>ae<wbr/>State 6901 </td> 6902 <td class="entry_type"> 6903 <span class="entry_type_name entry_type_name_enum">byte</span> 6904 6905 <span class="entry_type_visibility"> [public]</span> 6906 6907 6908 <span class="entry_type_hwlevel">[limited] </span> 6909 6910 6911 6912 <ul class="entry_type_enum"> 6913 <li> 6914 <span class="entry_type_enum_name">INACTIVE (v3.2)</span> 6915 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> 6916<p>When a camera device is opened,<wbr/> it starts in 6917this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 6918this state in capture result.<wbr/></p></span> 6919 </li> 6920 <li> 6921 <span class="entry_type_enum_name">SEARCHING (v3.2)</span> 6922 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 6923for the current scene.<wbr/></p> 6924<p>This is a transient state,<wbr/> the camera device may skip 6925reporting this state in capture result.<wbr/></p></span> 6926 </li> 6927 <li> 6928 <span class="entry_type_enum_name">CONVERGED (v3.2)</span> 6929 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 6930current scene.<wbr/></p></span> 6931 </li> 6932 <li> 6933 <span class="entry_type_enum_name">LOCKED (v3.2)</span> 6934 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 6935 </li> 6936 <li> 6937 <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span> 6938 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 6939needs to be fired for good quality still 6940capture.<wbr/></p></span> 6941 </li> 6942 <li> 6943 <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span> 6944 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 6945and is currently executing it.<wbr/></p> 6946<p>Precapture can be triggered through setting 6947<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently 6948active and completed (if it causes camera device internal AE lock) precapture 6949metering sequence can be canceled through setting 6950<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p> 6951<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED 6952or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient 6953state,<wbr/> the camera device may skip reporting this state in 6954capture result.<wbr/></p></span> 6955 </li> 6956 </ul> 6957 6958 </td> <!-- entry_type --> 6959 6960 <td class="entry_description"> 6961 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p> 6962 </td> 6963 6964 <td class="entry_units"> 6965 </td> 6966 6967 <td class="entry_range"> 6968 </td> 6969 6970 <td class="entry_hal_version"> 6971 <p>3.<wbr/>2</p> 6972 </td> 6973 6974 <td class="entry_tags"> 6975 </td> 6976 6977 </tr> 6978 <tr class="entries_header"> 6979 <th class="th_details" colspan="6">Details</th> 6980 </tr> 6981 <tr class="entry_cont"> 6982 <td class="entry_details" colspan="6"> 6983 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 6984resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6985or <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 6986the algorithm states to INACTIVE.<wbr/></p> 6987<p>The camera device can do several state transitions between two results,<wbr/> if it is 6988allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6989seen in a result.<wbr/></p> 6990<p>The state in the result is the state for this image (in sync with this image): if 6991AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 6992be good to use.<wbr/></p> 6993<p>Below are state transition tables for different AE modes.<wbr/></p> 6994<table> 6995<thead> 6996<tr> 6997<th align="center">State</th> 6998<th align="center">Transition Cause</th> 6999<th align="center">New State</th> 7000<th align="center">Notes</th> 7001</tr> 7002</thead> 7003<tbody> 7004<tr> 7005<td align="center">INACTIVE</td> 7006<td align="center"></td> 7007<td align="center">INACTIVE</td> 7008<td align="center">Camera device auto exposure algorithm is disabled</td> 7009</tr> 7010</tbody> 7011</table> 7012<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p> 7013<table> 7014<thead> 7015<tr> 7016<th align="center">State</th> 7017<th align="center">Transition Cause</th> 7018<th align="center">New State</th> 7019<th align="center">Notes</th> 7020</tr> 7021</thead> 7022<tbody> 7023<tr> 7024<td align="center">INACTIVE</td> 7025<td align="center">Camera device initiates AE scan</td> 7026<td align="center">SEARCHING</td> 7027<td align="center">Values changing</td> 7028</tr> 7029<tr> 7030<td align="center">INACTIVE</td> 7031<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 7032<td align="center">LOCKED</td> 7033<td align="center">Values locked</td> 7034</tr> 7035<tr> 7036<td align="center">SEARCHING</td> 7037<td align="center">Camera device finishes AE scan</td> 7038<td align="center">CONVERGED</td> 7039<td align="center">Good values,<wbr/> not changing</td> 7040</tr> 7041<tr> 7042<td align="center">SEARCHING</td> 7043<td align="center">Camera device finishes AE scan</td> 7044<td align="center">FLASH_<wbr/>REQUIRED</td> 7045<td align="center">Converged but too dark w/<wbr/>o flash</td> 7046</tr> 7047<tr> 7048<td align="center">SEARCHING</td> 7049<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 7050<td align="center">LOCKED</td> 7051<td align="center">Values locked</td> 7052</tr> 7053<tr> 7054<td align="center">CONVERGED</td> 7055<td align="center">Camera device initiates AE scan</td> 7056<td align="center">SEARCHING</td> 7057<td align="center">Values changing</td> 7058</tr> 7059<tr> 7060<td align="center">CONVERGED</td> 7061<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 7062<td align="center">LOCKED</td> 7063<td align="center">Values locked</td> 7064</tr> 7065<tr> 7066<td align="center">FLASH_<wbr/>REQUIRED</td> 7067<td align="center">Camera device initiates AE scan</td> 7068<td align="center">SEARCHING</td> 7069<td align="center">Values changing</td> 7070</tr> 7071<tr> 7072<td align="center">FLASH_<wbr/>REQUIRED</td> 7073<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 7074<td align="center">LOCKED</td> 7075<td align="center">Values locked</td> 7076</tr> 7077<tr> 7078<td align="center">LOCKED</td> 7079<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 7080<td align="center">SEARCHING</td> 7081<td align="center">Values not good after unlock</td> 7082</tr> 7083<tr> 7084<td align="center">LOCKED</td> 7085<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 7086<td align="center">CONVERGED</td> 7087<td align="center">Values good after unlock</td> 7088</tr> 7089<tr> 7090<td align="center">LOCKED</td> 7091<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 7092<td align="center">FLASH_<wbr/>REQUIRED</td> 7093<td align="center">Exposure good,<wbr/> but too dark</td> 7094</tr> 7095<tr> 7096<td align="center">PRECAPTURE</td> 7097<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 7098<td align="center">CONVERGED</td> 7099<td align="center">Ready for high-quality capture</td> 7100</tr> 7101<tr> 7102<td align="center">PRECAPTURE</td> 7103<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 7104<td align="center">LOCKED</td> 7105<td align="center">Ready for high-quality capture</td> 7106</tr> 7107<tr> 7108<td align="center">LOCKED</td> 7109<td align="center">aeLock is ON and aePrecaptureTrigger is START</td> 7110<td align="center">LOCKED</td> 7111<td align="center">Precapture trigger is ignored when AE is already locked</td> 7112</tr> 7113<tr> 7114<td align="center">LOCKED</td> 7115<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td> 7116<td align="center">LOCKED</td> 7117<td align="center">Precapture trigger is ignored when AE is already locked</td> 7118</tr> 7119<tr> 7120<td align="center">Any state (excluding LOCKED)</td> 7121<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 7122<td align="center">PRECAPTURE</td> 7123<td align="center">Start AE precapture metering sequence</td> 7124</tr> 7125<tr> 7126<td align="center">Any state (excluding LOCKED)</td> 7127<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td> 7128<td align="center">INACTIVE</td> 7129<td align="center">Currently active precapture metering sequence is canceled</td> 7130</tr> 7131</tbody> 7132</table> 7133<p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in 7134<a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a>),<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must be FLASH_<wbr/>REQUIRED after 7135the camera device finishes AE scan and it's too dark without flash.<wbr/></p> 7136<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7137without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7138can be skipped in that manner is called a transient state.<wbr/></p> 7139<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions 7140listed in above table,<wbr/> it is also legal for the camera device to skip one or more 7141transient states between two results.<wbr/> See below table for examples:</p> 7142<table> 7143<thead> 7144<tr> 7145<th align="center">State</th> 7146<th align="center">Transition Cause</th> 7147<th align="center">New State</th> 7148<th align="center">Notes</th> 7149</tr> 7150</thead> 7151<tbody> 7152<tr> 7153<td align="center">INACTIVE</td> 7154<td align="center">Camera device finished AE scan</td> 7155<td align="center">CONVERGED</td> 7156<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 7157</tr> 7158<tr> 7159<td align="center">Any state (excluding LOCKED)</td> 7160<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> 7161<td align="center">FLASH_<wbr/>REQUIRED</td> 7162<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> 7163</tr> 7164<tr> 7165<td align="center">Any state (excluding LOCKED)</td> 7166<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> 7167<td align="center">CONVERGED</td> 7168<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 7169</tr> 7170<tr> 7171<td align="center">Any state (excluding LOCKED)</td> 7172<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 7173<td align="center">FLASH_<wbr/>REQUIRED</td> 7174<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> 7175</tr> 7176<tr> 7177<td align="center">Any state (excluding LOCKED)</td> 7178<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 7179<td align="center">CONVERGED</td> 7180<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> 7181</tr> 7182<tr> 7183<td align="center">CONVERGED</td> 7184<td align="center">Camera device finished AE scan</td> 7185<td align="center">FLASH_<wbr/>REQUIRED</td> 7186<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> 7187</tr> 7188<tr> 7189<td align="center">FLASH_<wbr/>REQUIRED</td> 7190<td align="center">Camera device finished AE scan</td> 7191<td align="center">CONVERGED</td> 7192<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 7193</tr> 7194</tbody> 7195</table> 7196 </td> 7197 </tr> 7198 7199 7200 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7201 <!-- end of entry --> 7202 7203 7204 <tr class="entry" id="dynamic_android.control.afMode"> 7205 <td class="entry_name 7206 " rowspan="5"> 7207 android.<wbr/>control.<wbr/>af<wbr/>Mode 7208 </td> 7209 <td class="entry_type"> 7210 <span class="entry_type_name entry_type_name_enum">byte</span> 7211 7212 <span class="entry_type_visibility"> [public]</span> 7213 7214 7215 <span class="entry_type_hwlevel">[legacy] </span> 7216 7217 7218 7219 <ul class="entry_type_enum"> 7220 <li> 7221 <span class="entry_type_enum_name">OFF (v3.2)</span> 7222 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 7223<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 7224application.<wbr/></p></span> 7225 </li> 7226 <li> 7227 <span class="entry_type_enum_name">AUTO (v3.2)</span> 7228 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 7229<p>In this mode,<wbr/> the lens does not move unless 7230the autofocus trigger action is called.<wbr/> When that trigger 7231is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 7232the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 7233<p>Always supported if lens is not fixed focus.<wbr/></p> 7234<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 7235is fixed-focus.<wbr/></p> 7236<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 7237and sets the AF state to INACTIVE.<wbr/></p></span> 7238 </li> 7239 <li> 7240 <span class="entry_type_enum_name">MACRO (v3.2)</span> 7241 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 7242<p>In this mode,<wbr/> the lens does not move unless the 7243autofocus trigger action is called.<wbr/> When that trigger is 7244activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 7245the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 7246mode is optimized for focusing on objects very close to 7247the camera.<wbr/></p> 7248<p>When that trigger is activated,<wbr/> AF will transition to 7249ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 7250NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 7251position to default,<wbr/> and sets the AF state to 7252INACTIVE.<wbr/></p></span> 7253 </li> 7254 <li> 7255 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span> 7256 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 7257position continually to attempt to provide a 7258constantly-in-focus image stream.<wbr/></p> 7259<p>The focusing behavior should be suitable for good quality 7260video recording; typically this means slower focus 7261movement and no overshoots.<wbr/> When the AF trigger is not 7262involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 7263and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 7264states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 7265the algorithm should immediately transition into 7266AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 7267lens position until a cancel AF trigger is received.<wbr/></p> 7268<p>Once cancel is received,<wbr/> the algorithm should transition 7269back to INACTIVE and resume passive scan.<wbr/> Note that this 7270behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 7271ongoing PASSIVE_<wbr/>SCAN must immediately be 7272canceled.<wbr/></p></span> 7273 </li> 7274 <li> 7275 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span> 7276 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 7277position continually to attempt to provide a 7278constantly-in-focus image stream.<wbr/></p> 7279<p>The focusing behavior should be suitable for still image 7280capture; typically this means focusing as fast as 7281possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 7282algorithm should start in INACTIVE state,<wbr/> and then 7283transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 7284appropriate as it attempts to maintain focus.<wbr/> When the AF 7285trigger is activated,<wbr/> the algorithm should finish its 7286PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 7287AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 7288lens position until a cancel AF trigger is received.<wbr/></p> 7289<p>When the AF cancel trigger is activated,<wbr/> the algorithm 7290should transition back to INACTIVE and then act as if it 7291has just been started.<wbr/></p></span> 7292 </li> 7293 <li> 7294 <span class="entry_type_enum_name">EDOF (v3.2)</span> 7295 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 7296<p>The camera device will produce images with an extended 7297depth of field automatically; no special focusing 7298operations need to be done before taking a picture.<wbr/></p> 7299<p>AF triggers are ignored,<wbr/> and the AF state will always be 7300INACTIVE.<wbr/></p></span> 7301 </li> 7302 </ul> 7303 7304 </td> <!-- entry_type --> 7305 7306 <td class="entry_description"> 7307 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 7308mode it is set to.<wbr/></p> 7309 </td> 7310 7311 <td class="entry_units"> 7312 </td> 7313 7314 <td class="entry_range"> 7315 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 7316 </td> 7317 7318 <td class="entry_hal_version"> 7319 <p>3.<wbr/>2</p> 7320 </td> 7321 7322 <td class="entry_tags"> 7323 <ul class="entry_tags"> 7324 <li><a href="#tag_BC">BC</a></li> 7325 </ul> 7326 </td> 7327 7328 </tr> 7329 <tr class="entries_header"> 7330 <th class="th_details" colspan="6">Details</th> 7331 </tr> 7332 <tr class="entry_cont"> 7333 <td class="entry_details" colspan="6"> 7334 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 7335(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 7336when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 7337dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 7338setting <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> 7339<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 7340the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 7341in result metadata.<wbr/></p> 7342 </td> 7343 </tr> 7344 7345 <tr class="entries_header"> 7346 <th class="th_details" colspan="6">HAL Implementation Details</th> 7347 </tr> 7348 <tr class="entry_cont"> 7349 <td class="entry_details" colspan="6"> 7350 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 7351request (<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 7352up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 7353<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 7354locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 7355after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 7356the same focal plane remains in focus.<wbr/></p> 7357<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 7358scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 7359(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 7360same lock behavior as above.<wbr/></p> 7361<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 7362focus 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/> 7363However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 7364manual control.<wbr/></p> 7365<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 7366camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 7367remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 7368by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 7369that will arise on camera modules with open-loop VCMs.<wbr/></p> 7370 </td> 7371 </tr> 7372 7373 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7374 <!-- end of entry --> 7375 7376 7377 <tr class="entry" id="dynamic_android.control.afRegions"> 7378 <td class="entry_name 7379 " rowspan="5"> 7380 android.<wbr/>control.<wbr/>af<wbr/>Regions 7381 </td> 7382 <td class="entry_type"> 7383 <span class="entry_type_name">int32</span> 7384 <span class="entry_type_container">x</span> 7385 7386 <span class="entry_type_array"> 7387 5 x area_count 7388 </span> 7389 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 7390 7391 7392 7393 7394 7395 7396 </td> <!-- entry_type --> 7397 7398 <td class="entry_description"> 7399 <p>List of metering areas to use for auto-focus.<wbr/></p> 7400 </td> 7401 7402 <td class="entry_units"> 7403 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 7404 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 7405 distortion correction capability and mode 7406 </td> 7407 7408 <td class="entry_range"> 7409 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 7410<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> 7411depending on distortion correction capability and mode</p> 7412 </td> 7413 7414 <td class="entry_hal_version"> 7415 <p>3.<wbr/>2</p> 7416 </td> 7417 7418 <td class="entry_tags"> 7419 <ul class="entry_tags"> 7420 <li><a href="#tag_BC">BC</a></li> 7421 </ul> 7422 </td> 7423 7424 </tr> 7425 <tr class="entries_header"> 7426 <th class="th_details" colspan="6">Details</th> 7427 </tr> 7428 <tr class="entry_cont"> 7429 <td class="entry_details" colspan="6"> 7430 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 7431Otherwise will always be present.<wbr/></p> 7432<p>The maximum number of focus areas supported by the device is determined by the value 7433of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 7434<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 7435system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being 7436the top-left pixel in the active pixel array,<wbr/> and 7437(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7438<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the 7439active pixel array.<wbr/></p> 7440<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 7441system depends on the mode being set.<wbr/> 7442When the distortion correction mode is OFF,<wbr/> the coordinate system follows 7443<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with 7444<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 7445(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7446<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right 7447pixel in the pre-correction active pixel array.<wbr/> 7448When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 7449<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 7450<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 7451(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7452<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the 7453active pixel array.<wbr/></p> 7454<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 7455for every pixel in the area.<wbr/> This means that a large metering area 7456with the same weight as a smaller area will have more effect in 7457the metering result.<wbr/> Metering areas can partially overlap and the 7458camera device will add the weights in the overlap region.<wbr/></p> 7459<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 7460is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 7461ignored.<wbr/></p> 7462<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 7463camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or 7464the region selected by the camera device as the focus area of interest.<wbr/></p> 7465<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 7466capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 7467region and output only the intersection rectangle as the metering region in the result 7468metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 7469not reported in the result metadata.<wbr/></p> 7470 </td> 7471 </tr> 7472 7473 <tr class="entries_header"> 7474 <th class="th_details" colspan="6">HAL Implementation Details</th> 7475 </tr> 7476 <tr class="entry_cont"> 7477 <td class="entry_details" colspan="6"> 7478 <p>The HAL level representation of MeteringRectangle[] is a 7479int[5 * area_<wbr/>count].<wbr/> 7480Every five elements represent a metering region of 7481(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 7482The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 7483exclusive on xmax and ymax.<wbr/> 7484HAL must always report metering regions in the coordinate system of pre-correction 7485active array.<wbr/></p> 7486 </td> 7487 </tr> 7488 7489 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7490 <!-- end of entry --> 7491 7492 7493 <tr class="entry" id="dynamic_android.control.afTrigger"> 7494 <td class="entry_name 7495 " rowspan="5"> 7496 android.<wbr/>control.<wbr/>af<wbr/>Trigger 7497 </td> 7498 <td class="entry_type"> 7499 <span class="entry_type_name entry_type_name_enum">byte</span> 7500 7501 <span class="entry_type_visibility"> [public]</span> 7502 7503 7504 <span class="entry_type_hwlevel">[legacy] </span> 7505 7506 7507 7508 <ul class="entry_type_enum"> 7509 <li> 7510 <span class="entry_type_enum_name">IDLE (v3.2)</span> 7511 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 7512 </li> 7513 <li> 7514 <span class="entry_type_enum_name">START (v3.2)</span> 7515 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 7516 </li> 7517 <li> 7518 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 7519 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 7520state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 7521 </li> 7522 </ul> 7523 7524 </td> <!-- entry_type --> 7525 7526 <td class="entry_description"> 7527 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 7528 </td> 7529 7530 <td class="entry_units"> 7531 </td> 7532 7533 <td class="entry_range"> 7534 </td> 7535 7536 <td class="entry_hal_version"> 7537 <p>3.<wbr/>2</p> 7538 </td> 7539 7540 <td class="entry_tags"> 7541 <ul class="entry_tags"> 7542 <li><a href="#tag_BC">BC</a></li> 7543 </ul> 7544 </td> 7545 7546 </tr> 7547 <tr class="entries_header"> 7548 <th class="th_details" colspan="6">Details</th> 7549 </tr> 7550 <tr class="entry_cont"> 7551 <td class="entry_details" colspan="6"> 7552 <p>This entry is normally set to IDLE,<wbr/> or is not 7553included at all in the request settings.<wbr/></p> 7554<p>When included and set to START,<wbr/> the camera device will trigger the 7555autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 7556<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 7557and return to its initial AF state.<wbr/></p> 7558<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 7559single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 7560START for multiple captures in a row means restarting the AF operation over 7561and over again.<wbr/></p> 7562<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> 7563<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> 7564simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 7565the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 7566focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 7567trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 7568changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 7569 </td> 7570 </tr> 7571 7572 <tr class="entries_header"> 7573 <th class="th_details" colspan="6">HAL Implementation Details</th> 7574 </tr> 7575 <tr class="entry_cont"> 7576 <td class="entry_details" colspan="6"> 7577 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 7578(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 7579treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 7580AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 7581to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 7582 </td> 7583 </tr> 7584 7585 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7586 <!-- end of entry --> 7587 7588 7589 <tr class="entry" id="dynamic_android.control.afState"> 7590 <td class="entry_name 7591 " rowspan="3"> 7592 android.<wbr/>control.<wbr/>af<wbr/>State 7593 </td> 7594 <td class="entry_type"> 7595 <span class="entry_type_name entry_type_name_enum">byte</span> 7596 7597 <span class="entry_type_visibility"> [public]</span> 7598 7599 7600 <span class="entry_type_hwlevel">[legacy] </span> 7601 7602 7603 7604 <ul class="entry_type_enum"> 7605 <li> 7606 <span class="entry_type_enum_name">INACTIVE (v3.2)</span> 7607 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked 7608to scan.<wbr/></p> 7609<p>When a camera device is opened,<wbr/> it starts in this 7610state.<wbr/> This is a transient state,<wbr/> the camera device may 7611skip reporting this state in capture 7612result.<wbr/></p></span> 7613 </li> 7614 <li> 7615 <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span> 7616 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the 7617camera device in a continuous autofocus mode.<wbr/></p> 7618<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 7619state,<wbr/> the camera device may skip reporting this state in 7620capture result.<wbr/></p></span> 7621 </li> 7622 <li> 7623 <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span> 7624 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may 7625restart scanning at any time.<wbr/></p> 7626<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 7627state,<wbr/> the camera device may skip reporting this state in 7628capture result.<wbr/></p></span> 7629 </li> 7630 <li> 7631 <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span> 7632 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was 7633triggered by AF trigger.<wbr/></p> 7634<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient 7635state,<wbr/> the camera device may skip reporting this state in 7636capture result.<wbr/></p></span> 7637 </li> 7638 <li> 7639 <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span> 7640 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked 7641focus.<wbr/></p> 7642<p>This state is reached only after an explicit START AF trigger has been 7643sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> 7644<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 7645a 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> 7646 </li> 7647 <li> 7648 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span> 7649 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked 7650focus.<wbr/></p> 7651<p>This state is reached only after an explicit START AF trigger has been 7652sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> 7653<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 7654a 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> 7655 </li> 7656 <li> 7657 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span> 7658 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> 7659and may restart scanning at any time.<wbr/></p> 7660<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera 7661device may skip reporting this state in capture result.<wbr/></p> 7662<p>LEGACY camera devices do not support this state.<wbr/> When a passive 7663scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> 7664 </li> 7665 </ul> 7666 7667 </td> <!-- entry_type --> 7668 7669 <td class="entry_description"> 7670 <p>Current state of auto-focus (AF) algorithm.<wbr/></p> 7671 </td> 7672 7673 <td class="entry_units"> 7674 </td> 7675 7676 <td class="entry_range"> 7677 </td> 7678 7679 <td class="entry_hal_version"> 7680 <p>3.<wbr/>2</p> 7681 </td> 7682 7683 <td class="entry_tags"> 7684 </td> 7685 7686 </tr> 7687 <tr class="entries_header"> 7688 <th class="th_details" colspan="6">Details</th> 7689 </tr> 7690 <tr class="entry_cont"> 7691 <td class="entry_details" colspan="6"> 7692 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 7693resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 7694or <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 7695the algorithm states to INACTIVE.<wbr/></p> 7696<p>The camera device can do several state transitions between two results,<wbr/> if it is 7697allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 7698seen in a result.<wbr/></p> 7699<p>The state in the result is the state for this image (in sync with this image): if 7700AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 7701be sharp.<wbr/></p> 7702<p>Below are state transition tables for different AF modes.<wbr/></p> 7703<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> 7704<table> 7705<thead> 7706<tr> 7707<th align="center">State</th> 7708<th align="center">Transition Cause</th> 7709<th align="center">New State</th> 7710<th align="center">Notes</th> 7711</tr> 7712</thead> 7713<tbody> 7714<tr> 7715<td align="center">INACTIVE</td> 7716<td align="center"></td> 7717<td align="center">INACTIVE</td> 7718<td align="center">Never changes</td> 7719</tr> 7720</tbody> 7721</table> 7722<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> 7723<table> 7724<thead> 7725<tr> 7726<th align="center">State</th> 7727<th align="center">Transition Cause</th> 7728<th align="center">New State</th> 7729<th align="center">Notes</th> 7730</tr> 7731</thead> 7732<tbody> 7733<tr> 7734<td align="center">INACTIVE</td> 7735<td align="center">AF_<wbr/>TRIGGER</td> 7736<td align="center">ACTIVE_<wbr/>SCAN</td> 7737<td align="center">Start AF sweep,<wbr/> Lens now moving</td> 7738</tr> 7739<tr> 7740<td align="center">ACTIVE_<wbr/>SCAN</td> 7741<td align="center">AF sweep done</td> 7742<td align="center">FOCUSED_<wbr/>LOCKED</td> 7743<td align="center">Focused,<wbr/> Lens now locked</td> 7744</tr> 7745<tr> 7746<td align="center">ACTIVE_<wbr/>SCAN</td> 7747<td align="center">AF sweep done</td> 7748<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7749<td align="center">Not focused,<wbr/> Lens now locked</td> 7750</tr> 7751<tr> 7752<td align="center">ACTIVE_<wbr/>SCAN</td> 7753<td align="center">AF_<wbr/>CANCEL</td> 7754<td align="center">INACTIVE</td> 7755<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 7756</tr> 7757<tr> 7758<td align="center">FOCUSED_<wbr/>LOCKED</td> 7759<td align="center">AF_<wbr/>CANCEL</td> 7760<td align="center">INACTIVE</td> 7761<td align="center">Cancel/<wbr/>reset AF</td> 7762</tr> 7763<tr> 7764<td align="center">FOCUSED_<wbr/>LOCKED</td> 7765<td align="center">AF_<wbr/>TRIGGER</td> 7766<td align="center">ACTIVE_<wbr/>SCAN</td> 7767<td align="center">Start new sweep,<wbr/> Lens now moving</td> 7768</tr> 7769<tr> 7770<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7771<td align="center">AF_<wbr/>CANCEL</td> 7772<td align="center">INACTIVE</td> 7773<td align="center">Cancel/<wbr/>reset AF</td> 7774</tr> 7775<tr> 7776<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7777<td align="center">AF_<wbr/>TRIGGER</td> 7778<td align="center">ACTIVE_<wbr/>SCAN</td> 7779<td align="center">Start new sweep,<wbr/> Lens now moving</td> 7780</tr> 7781<tr> 7782<td align="center">Any state</td> 7783<td align="center">Mode change</td> 7784<td align="center">INACTIVE</td> 7785<td align="center"></td> 7786</tr> 7787</tbody> 7788</table> 7789<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7790without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7791can be skipped in that manner is called a transient state.<wbr/></p> 7792<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 7793state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 7794one or more transient states between two results.<wbr/> See below table for examples:</p> 7795<table> 7796<thead> 7797<tr> 7798<th align="center">State</th> 7799<th align="center">Transition Cause</th> 7800<th align="center">New State</th> 7801<th align="center">Notes</th> 7802</tr> 7803</thead> 7804<tbody> 7805<tr> 7806<td align="center">INACTIVE</td> 7807<td align="center">AF_<wbr/>TRIGGER</td> 7808<td align="center">FOCUSED_<wbr/>LOCKED</td> 7809<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7810</tr> 7811<tr> 7812<td align="center">INACTIVE</td> 7813<td align="center">AF_<wbr/>TRIGGER</td> 7814<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7815<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 7816</tr> 7817<tr> 7818<td align="center">FOCUSED_<wbr/>LOCKED</td> 7819<td align="center">AF_<wbr/>TRIGGER</td> 7820<td align="center">FOCUSED_<wbr/>LOCKED</td> 7821<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7822</tr> 7823<tr> 7824<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7825<td align="center">AF_<wbr/>TRIGGER</td> 7826<td align="center">FOCUSED_<wbr/>LOCKED</td> 7827<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 7828</tr> 7829</tbody> 7830</table> 7831<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> 7832<table> 7833<thead> 7834<tr> 7835<th align="center">State</th> 7836<th align="center">Transition Cause</th> 7837<th align="center">New State</th> 7838<th align="center">Notes</th> 7839</tr> 7840</thead> 7841<tbody> 7842<tr> 7843<td align="center">INACTIVE</td> 7844<td align="center">Camera device initiates new scan</td> 7845<td align="center">PASSIVE_<wbr/>SCAN</td> 7846<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7847</tr> 7848<tr> 7849<td align="center">INACTIVE</td> 7850<td align="center">AF_<wbr/>TRIGGER</td> 7851<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7852<td align="center">AF state query,<wbr/> Lens now locked</td> 7853</tr> 7854<tr> 7855<td align="center">PASSIVE_<wbr/>SCAN</td> 7856<td align="center">Camera device completes current scan</td> 7857<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7858<td align="center">End AF scan,<wbr/> Lens now locked</td> 7859</tr> 7860<tr> 7861<td align="center">PASSIVE_<wbr/>SCAN</td> 7862<td align="center">Camera device fails current scan</td> 7863<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7864<td align="center">End AF scan,<wbr/> Lens now locked</td> 7865</tr> 7866<tr> 7867<td align="center">PASSIVE_<wbr/>SCAN</td> 7868<td align="center">AF_<wbr/>TRIGGER</td> 7869<td align="center">FOCUSED_<wbr/>LOCKED</td> 7870<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> 7871</tr> 7872<tr> 7873<td align="center">PASSIVE_<wbr/>SCAN</td> 7874<td align="center">AF_<wbr/>TRIGGER</td> 7875<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7876<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> 7877</tr> 7878<tr> 7879<td align="center">PASSIVE_<wbr/>SCAN</td> 7880<td align="center">AF_<wbr/>CANCEL</td> 7881<td align="center">INACTIVE</td> 7882<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7883</tr> 7884<tr> 7885<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7886<td align="center">Camera device initiates new scan</td> 7887<td align="center">PASSIVE_<wbr/>SCAN</td> 7888<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7889</tr> 7890<tr> 7891<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7892<td align="center">Camera device initiates new scan</td> 7893<td align="center">PASSIVE_<wbr/>SCAN</td> 7894<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7895</tr> 7896<tr> 7897<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7898<td align="center">AF_<wbr/>TRIGGER</td> 7899<td align="center">FOCUSED_<wbr/>LOCKED</td> 7900<td align="center">Immediate transition,<wbr/> lens now locked</td> 7901</tr> 7902<tr> 7903<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7904<td align="center">AF_<wbr/>TRIGGER</td> 7905<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7906<td align="center">Immediate transition,<wbr/> lens now locked</td> 7907</tr> 7908<tr> 7909<td align="center">FOCUSED_<wbr/>LOCKED</td> 7910<td align="center">AF_<wbr/>TRIGGER</td> 7911<td align="center">FOCUSED_<wbr/>LOCKED</td> 7912<td align="center">No effect</td> 7913</tr> 7914<tr> 7915<td align="center">FOCUSED_<wbr/>LOCKED</td> 7916<td align="center">AF_<wbr/>CANCEL</td> 7917<td align="center">INACTIVE</td> 7918<td align="center">Restart AF scan</td> 7919</tr> 7920<tr> 7921<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7922<td align="center">AF_<wbr/>TRIGGER</td> 7923<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7924<td align="center">No effect</td> 7925</tr> 7926<tr> 7927<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7928<td align="center">AF_<wbr/>CANCEL</td> 7929<td align="center">INACTIVE</td> 7930<td align="center">Restart AF scan</td> 7931</tr> 7932</tbody> 7933</table> 7934<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> 7935<table> 7936<thead> 7937<tr> 7938<th align="center">State</th> 7939<th align="center">Transition Cause</th> 7940<th align="center">New State</th> 7941<th align="center">Notes</th> 7942</tr> 7943</thead> 7944<tbody> 7945<tr> 7946<td align="center">INACTIVE</td> 7947<td align="center">Camera device initiates new scan</td> 7948<td align="center">PASSIVE_<wbr/>SCAN</td> 7949<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7950</tr> 7951<tr> 7952<td align="center">INACTIVE</td> 7953<td align="center">AF_<wbr/>TRIGGER</td> 7954<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7955<td align="center">AF state query,<wbr/> Lens now locked</td> 7956</tr> 7957<tr> 7958<td align="center">PASSIVE_<wbr/>SCAN</td> 7959<td align="center">Camera device completes current scan</td> 7960<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7961<td align="center">End AF scan,<wbr/> Lens now locked</td> 7962</tr> 7963<tr> 7964<td align="center">PASSIVE_<wbr/>SCAN</td> 7965<td align="center">Camera device fails current scan</td> 7966<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7967<td align="center">End AF scan,<wbr/> Lens now locked</td> 7968</tr> 7969<tr> 7970<td align="center">PASSIVE_<wbr/>SCAN</td> 7971<td align="center">AF_<wbr/>TRIGGER</td> 7972<td align="center">FOCUSED_<wbr/>LOCKED</td> 7973<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td> 7974</tr> 7975<tr> 7976<td align="center">PASSIVE_<wbr/>SCAN</td> 7977<td align="center">AF_<wbr/>TRIGGER</td> 7978<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7979<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> 7980</tr> 7981<tr> 7982<td align="center">PASSIVE_<wbr/>SCAN</td> 7983<td align="center">AF_<wbr/>CANCEL</td> 7984<td align="center">INACTIVE</td> 7985<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7986</tr> 7987<tr> 7988<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7989<td align="center">Camera device initiates new scan</td> 7990<td align="center">PASSIVE_<wbr/>SCAN</td> 7991<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7992</tr> 7993<tr> 7994<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7995<td align="center">Camera device initiates new scan</td> 7996<td align="center">PASSIVE_<wbr/>SCAN</td> 7997<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7998</tr> 7999<tr> 8000<td align="center">PASSIVE_<wbr/>FOCUSED</td> 8001<td align="center">AF_<wbr/>TRIGGER</td> 8002<td align="center">FOCUSED_<wbr/>LOCKED</td> 8003<td align="center">Immediate trans.<wbr/> Lens now locked</td> 8004</tr> 8005<tr> 8006<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 8007<td align="center">AF_<wbr/>TRIGGER</td> 8008<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8009<td align="center">Immediate trans.<wbr/> Lens now locked</td> 8010</tr> 8011<tr> 8012<td align="center">FOCUSED_<wbr/>LOCKED</td> 8013<td align="center">AF_<wbr/>TRIGGER</td> 8014<td align="center">FOCUSED_<wbr/>LOCKED</td> 8015<td align="center">No effect</td> 8016</tr> 8017<tr> 8018<td align="center">FOCUSED_<wbr/>LOCKED</td> 8019<td align="center">AF_<wbr/>CANCEL</td> 8020<td align="center">INACTIVE</td> 8021<td align="center">Restart AF scan</td> 8022</tr> 8023<tr> 8024<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8025<td align="center">AF_<wbr/>TRIGGER</td> 8026<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8027<td align="center">No effect</td> 8028</tr> 8029<tr> 8030<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8031<td align="center">AF_<wbr/>CANCEL</td> 8032<td align="center">INACTIVE</td> 8033<td align="center">Restart AF scan</td> 8034</tr> 8035</tbody> 8036</table> 8037<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 8038(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 8039camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 8040will be evaluated in the context of the new mode in the request.<wbr/> 8041See below table for examples:</p> 8042<table> 8043<thead> 8044<tr> 8045<th align="center">State</th> 8046<th align="center">Transition Cause</th> 8047<th align="center">New State</th> 8048<th align="center">Notes</th> 8049</tr> 8050</thead> 8051<tbody> 8052<tr> 8053<td align="center">any state</td> 8054<td align="center">CAF-->AUTO mode switch</td> 8055<td align="center">INACTIVE</td> 8056<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 8057</tr> 8058<tr> 8059<td align="center">any state</td> 8060<td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 8061<td align="center">trigger-reachable states from INACTIVE</td> 8062<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 8063</tr> 8064<tr> 8065<td align="center">any state</td> 8066<td align="center">AUTO-->CAF mode switch</td> 8067<td align="center">passively reachable states from INACTIVE</td> 8068<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 8069</tr> 8070</tbody> 8071</table> 8072 </td> 8073 </tr> 8074 8075 8076 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8077 <!-- end of entry --> 8078 8079 8080 <tr class="entry" id="dynamic_android.control.afTriggerId"> 8081 <td class="entry_name 8082 entry_name_deprecated 8083 " rowspan="3"> 8084 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 8085 </td> 8086 <td class="entry_type"> 8087 <span class="entry_type_name">int32</span> 8088 8089 <span class="entry_type_visibility"> [system]</span> 8090 8091 8092 8093 <span class="entry_type_deprecated">[deprecated] </span> 8094 8095 8096 8097 </td> <!-- entry_type --> 8098 8099 <td class="entry_description"> 8100 <p>The ID sent with the latest 8101CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 8102 </td> 8103 8104 <td class="entry_units"> 8105 </td> 8106 8107 <td class="entry_range"> 8108 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 8109 </td> 8110 8111 <td class="entry_hal_version"> 8112 <p>3.<wbr/>2</p> 8113 </td> 8114 8115 <td class="entry_tags"> 8116 </td> 8117 8118 </tr> 8119 <tr class="entries_header"> 8120 <th class="th_details" colspan="6">Details</th> 8121 </tr> 8122 <tr class="entry_cont"> 8123 <td class="entry_details" colspan="6"> 8124 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 8125received yet by HAL.<wbr/> Always updated even if AF algorithm 8126ignores the trigger</p> 8127 </td> 8128 </tr> 8129 8130 8131 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8132 <!-- end of entry --> 8133 8134 8135 <tr class="entry" id="dynamic_android.control.awbLock"> 8136 <td class="entry_name 8137 " rowspan="3"> 8138 android.<wbr/>control.<wbr/>awb<wbr/>Lock 8139 </td> 8140 <td class="entry_type"> 8141 <span class="entry_type_name entry_type_name_enum">byte</span> 8142 8143 <span class="entry_type_visibility"> [public as boolean]</span> 8144 8145 8146 <span class="entry_type_hwlevel">[legacy] </span> 8147 8148 8149 8150 <ul class="entry_type_enum"> 8151 <li> 8152 <span class="entry_type_enum_name">OFF (v3.2)</span> 8153 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 8154algorithm is free to update its parameters if in AUTO 8155mode.<wbr/></p></span> 8156 </li> 8157 <li> 8158 <span class="entry_type_enum_name">ON (v3.2)</span> 8159 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 8160algorithm will not update its parameters while the lock 8161is active.<wbr/></p></span> 8162 </li> 8163 </ul> 8164 8165 </td> <!-- entry_type --> 8166 8167 <td class="entry_description"> 8168 <p>Whether auto-white balance (AWB) is currently locked to its 8169latest calculated values.<wbr/></p> 8170 </td> 8171 8172 <td class="entry_units"> 8173 </td> 8174 8175 <td class="entry_range"> 8176 </td> 8177 8178 <td class="entry_hal_version"> 8179 <p>3.<wbr/>2</p> 8180 </td> 8181 8182 <td class="entry_tags"> 8183 <ul class="entry_tags"> 8184 <li><a href="#tag_BC">BC</a></li> 8185 </ul> 8186 </td> 8187 8188 </tr> 8189 <tr class="entries_header"> 8190 <th class="th_details" colspan="6">Details</th> 8191 </tr> 8192 <tr class="entry_cont"> 8193 <td class="entry_details" colspan="6"> 8194 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 8195and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 8196<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 8197get locked do not necessarily correspond to the settings that were present in the 8198latest capture result received from the camera device,<wbr/> since additional captures 8199and AWB updates may have occurred even before the result was sent out.<wbr/> If an 8200application is switching between automatic and manual control and wishes to eliminate 8201any flicker during the switch,<wbr/> the following procedure is recommended:</p> 8202<ol> 8203<li>Starting in auto-AWB mode:</li> 8204<li>Lock AWB</li> 8205<li>Wait for the first result to be output that has the AWB locked</li> 8206<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 8207<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 8208</ol> 8209<p>Note that AWB lock is only meaningful when 8210<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 8211AWB is already fixed to a specific setting.<wbr/></p> 8212<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 8213 </td> 8214 </tr> 8215 8216 8217 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8218 <!-- end of entry --> 8219 8220 8221 <tr class="entry" id="dynamic_android.control.awbMode"> 8222 <td class="entry_name 8223 " rowspan="3"> 8224 android.<wbr/>control.<wbr/>awb<wbr/>Mode 8225 </td> 8226 <td class="entry_type"> 8227 <span class="entry_type_name entry_type_name_enum">byte</span> 8228 8229 <span class="entry_type_visibility"> [public]</span> 8230 8231 8232 <span class="entry_type_hwlevel">[legacy] </span> 8233 8234 8235 8236 <ul class="entry_type_enum"> 8237 <li> 8238 <span class="entry_type_enum_name">OFF (v3.2)</span> 8239 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 8240<p>The application-selected color transform matrix 8241(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 8242(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 8243device for manual white balance control.<wbr/></p></span> 8244 </li> 8245 <li> 8246 <span class="entry_type_enum_name">AUTO (v3.2)</span> 8247 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 8248<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8249and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8250For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8251values used by the camera device for the transform and gains 8252will be available in the capture result for this request.<wbr/></p></span> 8253 </li> 8254 <li> 8255 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span> 8256 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8257the camera device uses incandescent light as the assumed scene 8258illumination for white balance.<wbr/></p> 8259<p>While the exact white balance transforms are up to the 8260camera device,<wbr/> they will approximately match the CIE 8261standard illuminant A.<wbr/></p> 8262<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8263and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8264For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8265values used by the camera device for the transform and gains 8266will be available in the capture result for this request.<wbr/></p></span> 8267 </li> 8268 <li> 8269 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> 8270 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8271the camera device uses fluorescent light as the assumed scene 8272illumination for white balance.<wbr/></p> 8273<p>While the exact white balance transforms are up to the 8274camera device,<wbr/> they will approximately match the CIE 8275standard illuminant F2.<wbr/></p> 8276<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8277and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8278For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8279values used by the camera device for the transform and gains 8280will be available in the capture result for this request.<wbr/></p></span> 8281 </li> 8282 <li> 8283 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span> 8284 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8285the camera device uses warm fluorescent light as the assumed scene 8286illumination for white balance.<wbr/></p> 8287<p>While the exact white balance transforms are up to the 8288camera device,<wbr/> they will approximately match the CIE 8289standard illuminant F4.<wbr/></p> 8290<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8291and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8292For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8293values used by the camera device for the transform and gains 8294will be available in the capture result for this request.<wbr/></p></span> 8295 </li> 8296 <li> 8297 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> 8298 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8299the camera device uses daylight light as the assumed scene 8300illumination for white balance.<wbr/></p> 8301<p>While the exact white balance transforms are up to the 8302camera device,<wbr/> they will approximately match the CIE 8303standard illuminant D65.<wbr/></p> 8304<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8305and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8306For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8307values used by the camera device for the transform and gains 8308will be available in the capture result for this request.<wbr/></p></span> 8309 </li> 8310 <li> 8311 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span> 8312 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8313the camera device uses cloudy daylight light as the assumed scene 8314illumination for white balance.<wbr/></p> 8315<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8316and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8317For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8318values used by the camera device for the transform and gains 8319will be available in the capture result for this request.<wbr/></p></span> 8320 </li> 8321 <li> 8322 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span> 8323 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8324the camera device uses twilight light as the assumed scene 8325illumination for white balance.<wbr/></p> 8326<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8327and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8328For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8329values used by the camera device for the transform and gains 8330will be available in the capture result for this request.<wbr/></p></span> 8331 </li> 8332 <li> 8333 <span class="entry_type_enum_name">SHADE (v3.2)</span> 8334 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8335the camera device uses shade light as the assumed scene 8336illumination for white balance.<wbr/></p> 8337<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8338and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8339For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8340values used by the camera device for the transform and gains 8341will be available in the capture result for this request.<wbr/></p></span> 8342 </li> 8343 </ul> 8344 8345 </td> <!-- entry_type --> 8346 8347 <td class="entry_description"> 8348 <p>Whether auto-white balance (AWB) is currently setting the color 8349transform fields,<wbr/> and what its illumination target 8350is.<wbr/></p> 8351 </td> 8352 8353 <td class="entry_units"> 8354 </td> 8355 8356 <td class="entry_range"> 8357 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 8358 </td> 8359 8360 <td class="entry_hal_version"> 8361 <p>3.<wbr/>2</p> 8362 </td> 8363 8364 <td class="entry_tags"> 8365 <ul class="entry_tags"> 8366 <li><a href="#tag_BC">BC</a></li> 8367 </ul> 8368 </td> 8369 8370 </tr> 8371 <tr class="entries_header"> 8372 <th class="th_details" colspan="6">Details</th> 8373 </tr> 8374 <tr class="entry_cont"> 8375 <td class="entry_details" colspan="6"> 8376 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 8377<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 8378routine is enabled,<wbr/> overriding the application's selected 8379<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 8380<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> 8381is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 8382also 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 8383setting AE mode to OFF.<wbr/></p> 8384<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 8385routine is disabled.<wbr/> The application manually controls the white 8386balance 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> 8387and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 8388<p>When set to any other modes,<wbr/> the camera device's auto-white 8389balance routine is disabled.<wbr/> The camera device uses each 8390particular illumination target for white balance 8391adjustment.<wbr/> The application's values for 8392<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 8393<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 8394<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 8395 </td> 8396 </tr> 8397 8398 8399 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8400 <!-- end of entry --> 8401 8402 8403 <tr class="entry" id="dynamic_android.control.awbRegions"> 8404 <td class="entry_name 8405 " rowspan="5"> 8406 android.<wbr/>control.<wbr/>awb<wbr/>Regions 8407 </td> 8408 <td class="entry_type"> 8409 <span class="entry_type_name">int32</span> 8410 <span class="entry_type_container">x</span> 8411 8412 <span class="entry_type_array"> 8413 5 x area_count 8414 </span> 8415 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 8416 8417 8418 8419 8420 8421 8422 </td> <!-- entry_type --> 8423 8424 <td class="entry_description"> 8425 <p>List of metering areas to use for auto-white-balance illuminant 8426estimation.<wbr/></p> 8427 </td> 8428 8429 <td class="entry_units"> 8430 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 8431 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 8432 distortion correction capability and mode 8433 </td> 8434 8435 <td class="entry_range"> 8436 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 8437<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> 8438depending on distortion correction capability and mode</p> 8439 </td> 8440 8441 <td class="entry_hal_version"> 8442 <p>3.<wbr/>2</p> 8443 </td> 8444 8445 <td class="entry_tags"> 8446 <ul class="entry_tags"> 8447 <li><a href="#tag_BC">BC</a></li> 8448 </ul> 8449 </td> 8450 8451 </tr> 8452 <tr class="entries_header"> 8453 <th class="th_details" colspan="6">Details</th> 8454 </tr> 8455 <tr class="entry_cont"> 8456 <td class="entry_details" colspan="6"> 8457 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 8458Otherwise will always be present.<wbr/></p> 8459<p>The maximum number of regions supported by the device is determined by the value 8460of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 8461<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 8462system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being 8463the top-left pixel in the active pixel array,<wbr/> and 8464(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 8465<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the 8466active pixel array.<wbr/></p> 8467<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 8468system depends on the mode being set.<wbr/> 8469When the distortion correction mode is OFF,<wbr/> the coordinate system follows 8470<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with 8471<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 8472(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 8473<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right 8474pixel in the pre-correction active pixel array.<wbr/> 8475When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 8476<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 8477<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 8478(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 8479<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the 8480active pixel array.<wbr/></p> 8481<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 8482for every pixel in the area.<wbr/> This means that a large metering area 8483with the same weight as a smaller area will have more effect in 8484the metering result.<wbr/> Metering areas can partially overlap and the 8485camera device will add the weights in the overlap region.<wbr/></p> 8486<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 8487only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 84880 weight is ignored.<wbr/></p> 8489<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 8490camera device.<wbr/></p> 8491<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 8492capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 8493region and output only the intersection rectangle as the metering region in the result 8494metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 8495not reported in the result metadata.<wbr/></p> 8496 </td> 8497 </tr> 8498 8499 <tr class="entries_header"> 8500 <th class="th_details" colspan="6">HAL Implementation Details</th> 8501 </tr> 8502 <tr class="entry_cont"> 8503 <td class="entry_details" colspan="6"> 8504 <p>The HAL level representation of MeteringRectangle[] is a 8505int[5 * area_<wbr/>count].<wbr/> 8506Every five elements represent a metering region of 8507(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 8508The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 8509exclusive on xmax and ymax.<wbr/> 8510HAL must always report metering regions in the coordinate system of pre-correction 8511active array.<wbr/></p> 8512 </td> 8513 </tr> 8514 8515 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8516 <!-- end of entry --> 8517 8518 8519 <tr class="entry" id="dynamic_android.control.captureIntent"> 8520 <td class="entry_name 8521 " rowspan="3"> 8522 android.<wbr/>control.<wbr/>capture<wbr/>Intent 8523 </td> 8524 <td class="entry_type"> 8525 <span class="entry_type_name entry_type_name_enum">byte</span> 8526 8527 <span class="entry_type_visibility"> [public]</span> 8528 8529 8530 <span class="entry_type_hwlevel">[legacy] </span> 8531 8532 8533 8534 <ul class="entry_type_enum"> 8535 <li> 8536 <span class="entry_type_enum_name">CUSTOM (v3.2)</span> 8537 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 8538categories.<wbr/> The camera device will default to preview-like 8539behavior.<wbr/></p></span> 8540 </li> 8541 <li> 8542 <span class="entry_type_enum_name">PREVIEW (v3.2)</span> 8543 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 8544<p>The precapture trigger may be used to start off a metering 8545w/<wbr/>flash sequence.<wbr/></p></span> 8546 </li> 8547 <li> 8548 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span> 8549 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 8550use case.<wbr/></p> 8551<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 8552 </li> 8553 <li> 8554 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span> 8555 <span class="entry_type_enum_notes"><p>This request is for a video recording 8556use case.<wbr/></p></span> 8557 </li> 8558 <li> 8559 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span> 8560 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 8561image while recording video) use case.<wbr/></p> 8562<p>The camera device should take the highest-quality image 8563possible (given the other settings) without disrupting the 8564frame rate of video recording.<wbr/> </p></span> 8565 </li> 8566 <li> 8567 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 8568 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 8569application will stream full-resolution images and 8570reprocess one or several later for a final 8571capture.<wbr/></p></span> 8572 </li> 8573 <li> 8574 <span class="entry_type_enum_name">MANUAL (v3.2)</span> 8575 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 8576the applications want to directly control the capture parameters.<wbr/></p> 8577<p>For example,<wbr/> the application may wish to manually control 8578<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> 8579 </li> 8580 <li> 8581 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> 8582 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where 8583the application will use camera and inertial sensor data to 8584locate and track objects in the world.<wbr/></p> 8585<p>The camera device auto-exposure routine will limit the exposure time 8586of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span> 8587 </li> 8588 </ul> 8589 8590 </td> <!-- entry_type --> 8591 8592 <td class="entry_description"> 8593 <p>Information to the camera device 3A (auto-exposure,<wbr/> 8594auto-focus,<wbr/> auto-white balance) routines about the purpose 8595of this capture,<wbr/> to help the camera device to decide optimal 3A 8596strategy.<wbr/></p> 8597 </td> 8598 8599 <td class="entry_units"> 8600 </td> 8601 8602 <td class="entry_range"> 8603 </td> 8604 8605 <td class="entry_hal_version"> 8606 <p>3.<wbr/>2</p> 8607 </td> 8608 8609 <td class="entry_tags"> 8610 <ul class="entry_tags"> 8611 <li><a href="#tag_BC">BC</a></li> 8612 </ul> 8613 </td> 8614 8615 </tr> 8616 <tr class="entries_header"> 8617 <th class="th_details" colspan="6">Details</th> 8618 </tr> 8619 <tr class="entry_cont"> 8620 <td class="entry_details" colspan="6"> 8621 <p>This control (except for MANUAL) is only effective if 8622<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 8623<p>All intents are supported by all devices,<wbr/> except that: 8624 * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 8625PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> 8626 * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 8627MANUAL_<wbr/>SENSOR.<wbr/> 8628 * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 8629MOTION_<wbr/>TRACKING.<wbr/></p> 8630 </td> 8631 </tr> 8632 8633 8634 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8635 <!-- end of entry --> 8636 8637 8638 <tr class="entry" id="dynamic_android.control.awbState"> 8639 <td class="entry_name 8640 " rowspan="3"> 8641 android.<wbr/>control.<wbr/>awb<wbr/>State 8642 </td> 8643 <td class="entry_type"> 8644 <span class="entry_type_name entry_type_name_enum">byte</span> 8645 8646 <span class="entry_type_visibility"> [public]</span> 8647 8648 8649 <span class="entry_type_hwlevel">[limited] </span> 8650 8651 8652 8653 <ul class="entry_type_enum"> 8654 <li> 8655 <span class="entry_type_enum_name">INACTIVE (v3.2)</span> 8656 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> 8657<p>When a camera device is opened,<wbr/> it starts in this 8658state.<wbr/> This is a transient state,<wbr/> the camera device may 8659skip reporting this state in capture 8660result.<wbr/></p></span> 8661 </li> 8662 <li> 8663 <span class="entry_type_enum_name">SEARCHING (v3.2)</span> 8664 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 8665values for the current scene.<wbr/></p> 8666<p>This is a transient state,<wbr/> the camera device 8667may skip reporting this state in capture result.<wbr/></p></span> 8668 </li> 8669 <li> 8670 <span class="entry_type_enum_name">CONVERGED (v3.2)</span> 8671 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 8672current scene.<wbr/></p></span> 8673 </li> 8674 <li> 8675 <span class="entry_type_enum_name">LOCKED (v3.2)</span> 8676 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 8677 </li> 8678 </ul> 8679 8680 </td> <!-- entry_type --> 8681 8682 <td class="entry_description"> 8683 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p> 8684 </td> 8685 8686 <td class="entry_units"> 8687 </td> 8688 8689 <td class="entry_range"> 8690 </td> 8691 8692 <td class="entry_hal_version"> 8693 <p>3.<wbr/>2</p> 8694 </td> 8695 8696 <td class="entry_tags"> 8697 </td> 8698 8699 </tr> 8700 <tr class="entries_header"> 8701 <th class="th_details" colspan="6">Details</th> 8702 </tr> 8703 <tr class="entry_cont"> 8704 <td class="entry_details" colspan="6"> 8705 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 8706resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 8707or <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 8708the algorithm states to INACTIVE.<wbr/></p> 8709<p>The camera device can do several state transitions between two results,<wbr/> if it is 8710allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 8711a result.<wbr/></p> 8712<p>The state in the result is the state for this image (in sync with this image): if 8713AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 8714be good to use.<wbr/></p> 8715<p>Below are state transition tables for different AWB modes.<wbr/></p> 8716<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 8717<table> 8718<thead> 8719<tr> 8720<th align="center">State</th> 8721<th align="center">Transition Cause</th> 8722<th align="center">New State</th> 8723<th align="center">Notes</th> 8724</tr> 8725</thead> 8726<tbody> 8727<tr> 8728<td align="center">INACTIVE</td> 8729<td align="center"></td> 8730<td align="center">INACTIVE</td> 8731<td align="center">Camera device auto white balance algorithm is disabled</td> 8732</tr> 8733</tbody> 8734</table> 8735<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 8736<table> 8737<thead> 8738<tr> 8739<th align="center">State</th> 8740<th align="center">Transition Cause</th> 8741<th align="center">New State</th> 8742<th align="center">Notes</th> 8743</tr> 8744</thead> 8745<tbody> 8746<tr> 8747<td align="center">INACTIVE</td> 8748<td align="center">Camera device initiates AWB scan</td> 8749<td align="center">SEARCHING</td> 8750<td align="center">Values changing</td> 8751</tr> 8752<tr> 8753<td align="center">INACTIVE</td> 8754<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 8755<td align="center">LOCKED</td> 8756<td align="center">Values locked</td> 8757</tr> 8758<tr> 8759<td align="center">SEARCHING</td> 8760<td align="center">Camera device finishes AWB scan</td> 8761<td align="center">CONVERGED</td> 8762<td align="center">Good values,<wbr/> not changing</td> 8763</tr> 8764<tr> 8765<td align="center">SEARCHING</td> 8766<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 8767<td align="center">LOCKED</td> 8768<td align="center">Values locked</td> 8769</tr> 8770<tr> 8771<td align="center">CONVERGED</td> 8772<td align="center">Camera device initiates AWB scan</td> 8773<td align="center">SEARCHING</td> 8774<td align="center">Values changing</td> 8775</tr> 8776<tr> 8777<td align="center">CONVERGED</td> 8778<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 8779<td align="center">LOCKED</td> 8780<td align="center">Values locked</td> 8781</tr> 8782<tr> 8783<td align="center">LOCKED</td> 8784<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 8785<td align="center">SEARCHING</td> 8786<td align="center">Values not good after unlock</td> 8787</tr> 8788</tbody> 8789</table> 8790<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 8791without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 8792can be skipped in that manner is called a transient state.<wbr/></p> 8793<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 8794listed in above table,<wbr/> it is also legal for the camera device to skip one or more 8795transient states between two results.<wbr/> See below table for examples:</p> 8796<table> 8797<thead> 8798<tr> 8799<th align="center">State</th> 8800<th align="center">Transition Cause</th> 8801<th align="center">New State</th> 8802<th align="center">Notes</th> 8803</tr> 8804</thead> 8805<tbody> 8806<tr> 8807<td align="center">INACTIVE</td> 8808<td align="center">Camera device finished AWB scan</td> 8809<td align="center">CONVERGED</td> 8810<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 8811</tr> 8812<tr> 8813<td align="center">LOCKED</td> 8814<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 8815<td align="center">CONVERGED</td> 8816<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 8817</tr> 8818</tbody> 8819</table> 8820 </td> 8821 </tr> 8822 8823 8824 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8825 <!-- end of entry --> 8826 8827 8828 <tr class="entry" id="dynamic_android.control.effectMode"> 8829 <td class="entry_name 8830 " rowspan="3"> 8831 android.<wbr/>control.<wbr/>effect<wbr/>Mode 8832 </td> 8833 <td class="entry_type"> 8834 <span class="entry_type_name entry_type_name_enum">byte</span> 8835 8836 <span class="entry_type_visibility"> [public]</span> 8837 8838 8839 <span class="entry_type_hwlevel">[legacy] </span> 8840 8841 8842 8843 <ul class="entry_type_enum"> 8844 <li> 8845 <span class="entry_type_enum_name">OFF (v3.2)</span> 8846 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 8847 </li> 8848 <li> 8849 <span class="entry_type_enum_name">MONO (v3.2)</span> 8850 <span class="entry_type_enum_optional">[optional]</span> 8851 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 8852a single color.<wbr/></p> 8853<p>This will typically be grayscale.<wbr/></p></span> 8854 </li> 8855 <li> 8856 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span> 8857 <span class="entry_type_enum_optional">[optional]</span> 8858 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 8859are inverted.<wbr/></p></span> 8860 </li> 8861 <li> 8862 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span> 8863 <span class="entry_type_enum_optional">[optional]</span> 8864 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 8865image is wholly or partially reversed in 8866tone.<wbr/></p></span> 8867 </li> 8868 <li> 8869 <span class="entry_type_enum_name">SEPIA (v3.2)</span> 8870 <span class="entry_type_enum_optional">[optional]</span> 8871 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 8872gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 8873 </li> 8874 <li> 8875 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span> 8876 <span class="entry_type_enum_optional">[optional]</span> 8877 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 8878discrete regions of tone rather than a continuous 8879gradient of tones.<wbr/></p></span> 8880 </li> 8881 <li> 8882 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span> 8883 <span class="entry_type_enum_optional">[optional]</span> 8884 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 8885as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 8886 </li> 8887 <li> 8888 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span> 8889 <span class="entry_type_enum_optional">[optional]</span> 8890 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 8891as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 8892 </li> 8893 <li> 8894 <span class="entry_type_enum_name">AQUA (v3.2)</span> 8895 <span class="entry_type_enum_optional">[optional]</span> 8896 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 8897 </li> 8898 </ul> 8899 8900 </td> <!-- entry_type --> 8901 8902 <td class="entry_description"> 8903 <p>A special color effect to apply.<wbr/></p> 8904 </td> 8905 8906 <td class="entry_units"> 8907 </td> 8908 8909 <td class="entry_range"> 8910 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 8911 </td> 8912 8913 <td class="entry_hal_version"> 8914 <p>3.<wbr/>2</p> 8915 </td> 8916 8917 <td class="entry_tags"> 8918 <ul class="entry_tags"> 8919 <li><a href="#tag_BC">BC</a></li> 8920 </ul> 8921 </td> 8922 8923 </tr> 8924 <tr class="entries_header"> 8925 <th class="th_details" colspan="6">Details</th> 8926 </tr> 8927 <tr class="entry_cont"> 8928 <td class="entry_details" colspan="6"> 8929 <p>When this mode is set,<wbr/> a color effect will be applied 8930to images produced by the camera device.<wbr/> The interpretation 8931and implementation of these color effects is left to the 8932implementor of the camera device,<wbr/> and should not be 8933depended on to be consistent (or present) across all 8934devices.<wbr/></p> 8935 </td> 8936 </tr> 8937 8938 8939 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8940 <!-- end of entry --> 8941 8942 8943 <tr class="entry" id="dynamic_android.control.mode"> 8944 <td class="entry_name 8945 " rowspan="3"> 8946 android.<wbr/>control.<wbr/>mode 8947 </td> 8948 <td class="entry_type"> 8949 <span class="entry_type_name entry_type_name_enum">byte</span> 8950 8951 <span class="entry_type_visibility"> [public]</span> 8952 8953 8954 <span class="entry_type_hwlevel">[legacy] </span> 8955 8956 8957 8958 <ul class="entry_type_enum"> 8959 <li> 8960 <span class="entry_type_enum_name">OFF (v3.2)</span> 8961 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 8962<p>All control by the device's metering and focusing (3A) 8963routines is disabled,<wbr/> and no other settings in 8964android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 8965<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 8966device to select post-processing values for processing 8967blocks that do not allow for manual control,<wbr/> or are not 8968exposed by the camera API.<wbr/></p> 8969<p>However,<wbr/> the camera device's 3A routines may continue to 8970collect statistics and update their internal state so that 8971when control is switched to AUTO mode,<wbr/> good control values 8972can be immediately applied.<wbr/></p></span> 8973 </li> 8974 <li> 8975 <span class="entry_type_enum_name">AUTO (v3.2)</span> 8976 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 8977<p>Manual control of capture parameters is disabled.<wbr/> All 8978controls in android.<wbr/>control.<wbr/>* besides sceneMode take 8979effect.<wbr/></p></span> 8980 </li> 8981 <li> 8982 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span> 8983 <span class="entry_type_enum_optional">[optional]</span> 8984 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 8985<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 8986control.<wbr/>afMode controls; the camera device will ignore 8987those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 8988FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 8989This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 8990<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 8991contain some modes other than DISABLED).<wbr/></p></span> 8992 </li> 8993 <li> 8994 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span> 8995 <span class="entry_type_enum_optional">[optional]</span> 8996 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 8997used by camera device background auto-exposure,<wbr/> auto-white balance and 8998auto-focus algorithms (3A) to update their statistics.<wbr/></p> 8999<p>Specifically,<wbr/> the 3A routines are locked to the last 9000values set from a request with AUTO,<wbr/> OFF,<wbr/> or 9001USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 9002collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 9003discarded by the camera device.<wbr/></p></span> 9004 </li> 9005 </ul> 9006 9007 </td> <!-- entry_type --> 9008 9009 <td class="entry_description"> 9010 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 9011routines.<wbr/></p> 9012 </td> 9013 9014 <td class="entry_units"> 9015 </td> 9016 9017 <td class="entry_range"> 9018 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 9019 </td> 9020 9021 <td class="entry_hal_version"> 9022 <p>3.<wbr/>2</p> 9023 </td> 9024 9025 <td class="entry_tags"> 9026 <ul class="entry_tags"> 9027 <li><a href="#tag_BC">BC</a></li> 9028 </ul> 9029 </td> 9030 9031 </tr> 9032 <tr class="entries_header"> 9033 <th class="th_details" colspan="6">Details</th> 9034 </tr> 9035 <tr class="entry_cont"> 9036 <td class="entry_details" colspan="6"> 9037 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 9038by the camera device is disabled.<wbr/> The application must set the fields for 9039capture parameters itself.<wbr/></p> 9040<p>When set to AUTO,<wbr/> the individual algorithm controls in 9041android.<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> 9042<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 9043android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device 9044implements one of the scene mode settings (such as ACTION,<wbr/> 9045SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode 90463A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 9047<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 9048is that this frame will not be used by camera device background 3A statistics 9049update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 9050where the application doesn't want a 3A manual control capture to affect 9051the subsequent auto 3A capture results.<wbr/></p> 9052 </td> 9053 </tr> 9054 9055 9056 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9057 <!-- end of entry --> 9058 9059 9060 <tr class="entry" id="dynamic_android.control.sceneMode"> 9061 <td class="entry_name 9062 " rowspan="5"> 9063 android.<wbr/>control.<wbr/>scene<wbr/>Mode 9064 </td> 9065 <td class="entry_type"> 9066 <span class="entry_type_name entry_type_name_enum">byte</span> 9067 9068 <span class="entry_type_visibility"> [public]</span> 9069 9070 9071 <span class="entry_type_hwlevel">[legacy] </span> 9072 9073 9074 9075 <ul class="entry_type_enum"> 9076 <li> 9077 <span class="entry_type_enum_name">DISABLED (v3.2)</span> 9078 <span class="entry_type_enum_value">0</span> 9079 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 9080 </li> 9081 <li> 9082 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span> 9083 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 9084detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 9085auto-exposure routines.<wbr/></p> 9086<p>If face detection statistics are disabled 9087(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/> 9088this should still operate correctly (but will not return 9089face detection statistics to the framework).<wbr/></p> 9090<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 9091<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> 9092remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 9093 </li> 9094 <li> 9095 <span class="entry_type_enum_name">ACTION (v3.2)</span> 9096 <span class="entry_type_enum_optional">[optional]</span> 9097 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 9098<p>Similar to SPORTS.<wbr/></p></span> 9099 </li> 9100 <li> 9101 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span> 9102 <span class="entry_type_enum_optional">[optional]</span> 9103 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 9104 </li> 9105 <li> 9106 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span> 9107 <span class="entry_type_enum_optional">[optional]</span> 9108 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 9109 </li> 9110 <li> 9111 <span class="entry_type_enum_name">NIGHT (v3.2)</span> 9112 <span class="entry_type_enum_optional">[optional]</span> 9113 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 9114 </li> 9115 <li> 9116 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span> 9117 <span class="entry_type_enum_optional">[optional]</span> 9118 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 9119settings.<wbr/></p></span> 9120 </li> 9121 <li> 9122 <span class="entry_type_enum_name">THEATRE (v3.2)</span> 9123 <span class="entry_type_enum_optional">[optional]</span> 9124 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 9125remain off.<wbr/></p></span> 9126 </li> 9127 <li> 9128 <span class="entry_type_enum_name">BEACH (v3.2)</span> 9129 <span class="entry_type_enum_optional">[optional]</span> 9130 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 9131 </li> 9132 <li> 9133 <span class="entry_type_enum_name">SNOW (v3.2)</span> 9134 <span class="entry_type_enum_optional">[optional]</span> 9135 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 9136 </li> 9137 <li> 9138 <span class="entry_type_enum_name">SUNSET (v3.2)</span> 9139 <span class="entry_type_enum_optional">[optional]</span> 9140 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 9141 </li> 9142 <li> 9143 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span> 9144 <span class="entry_type_enum_optional">[optional]</span> 9145 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 9146device motion (for example: due to hand shake).<wbr/></p></span> 9147 </li> 9148 <li> 9149 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span> 9150 <span class="entry_type_enum_optional">[optional]</span> 9151 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 9152 </li> 9153 <li> 9154 <span class="entry_type_enum_name">SPORTS (v3.2)</span> 9155 <span class="entry_type_enum_optional">[optional]</span> 9156 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 9157<p>Similar to ACTION.<wbr/></p></span> 9158 </li> 9159 <li> 9160 <span class="entry_type_enum_name">PARTY (v3.2)</span> 9161 <span class="entry_type_enum_optional">[optional]</span> 9162 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 9163people.<wbr/></p></span> 9164 </li> 9165 <li> 9166 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span> 9167 <span class="entry_type_enum_optional">[optional]</span> 9168 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 9169is a candle.<wbr/></p></span> 9170 </li> 9171 <li> 9172 <span class="entry_type_enum_name">BARCODE (v3.2)</span> 9173 <span class="entry_type_enum_optional">[optional]</span> 9174 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 9175for use by camera applications that wish to read the 9176barcode value.<wbr/></p></span> 9177 </li> 9178 <li> 9179 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span> 9180 <span class="entry_type_enum_deprecated">[deprecated]</span> 9181 <span class="entry_type_enum_optional">[optional]</span> 9182 <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> 9183and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 9184for high speed video recording.<wbr/></p> 9185<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 9186<p>The supported high speed video sizes and fps ranges are specified in 9187<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 9188output frame rates,<wbr/> the application is only allowed to select video size 9189and fps range combinations listed in this static metadata.<wbr/> The fps range 9190can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 9191<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 9192ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 9193controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 9194and post-processing parameters is possible.<wbr/> All other controls operate the 9195same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 9196android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 9197<ul> 9198<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 9199<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 9200<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 9201<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 9202<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 9203<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 9204<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 9205<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 9206<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 9207<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 9208</ul> 9209<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 9210<ul> 9211<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> 9212<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 9213<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 9214<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 9215</ul> 9216<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 9217be lower than what camera can output,<wbr/> depending on the destination Surfaces for 9218the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 9219the application need check if the video encoder is capable of supporting the 9220high frame rate for a given video size,<wbr/> or it will end up with lower recording 9221frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 9222rate will be bounded by the screen refresh rate.<wbr/></p> 9223<p>The camera device will only support up to 2 output high speed streams 9224(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 9225in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 9226<ul> 9227<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 9228format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 9229min(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> 9230<li>The stream sizes are selected from the sizes reported by 9231<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 9232<li>No processed non-stalling or raw streams are configured.<wbr/></li> 9233</ul> 9234<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 9235<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/> 9236the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 9237and the returned capture result metadata will give the fps range choosen 9238by the camera device.<wbr/></p> 9239<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 9240reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 9241the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 9242 </li> 9243 <li> 9244 <span class="entry_type_enum_name">HDR (v3.2)</span> 9245 <span class="entry_type_enum_optional">[optional]</span> 9246 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 9247<p>In this scene mode,<wbr/> the camera device captures images 9248that keep a larger range of scene illumination levels 9249visible in the final image.<wbr/> For example,<wbr/> when taking a 9250picture of a object in front of a bright window,<wbr/> both 9251the object and the scene through the window may be 9252visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 9253one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 9254HDR mode generally takes much longer to capture a single 9255image,<wbr/> has no user control,<wbr/> and may have other artifacts 9256depending on the HDR method used.<wbr/></p> 9257<p>Therefore,<wbr/> HDR captures operate at a much slower rate 9258than regular captures.<wbr/></p> 9259<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 9260is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 9261STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 9262using a high dynamic range capture technique.<wbr/> On LEGACY 9263devices,<wbr/> captures that target a JPEG-format output will 9264be captured with HDR,<wbr/> and the capture intent is not 9265relevant.<wbr/></p> 9266<p>The HDR capture may involve the device capturing a burst 9267of images internally and combining them into one,<wbr/> or it 9268may involve the device using specialized high dynamic 9269range capture hardware.<wbr/> In all cases,<wbr/> a single image is 9270produced in response to a capture request submitted 9271while in HDR mode.<wbr/></p> 9272<p>Since substantial post-processing is generally needed to 9273produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG 9274outputs are supported for LIMITED/<wbr/>FULL device HDR 9275captures,<wbr/> and only JPEG outputs are supported for LEGACY 9276HDR captures.<wbr/> Using a RAW output for HDR capture is not 9277supported.<wbr/></p> 9278<p>Some devices may also support always-on HDR,<wbr/> which 9279applies HDR processing at full frame rate.<wbr/> For these 9280devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also 9281produce an HDR output with no frame rate impact compared 9282to normal operation,<wbr/> though the quality may be lower 9283than for STILL_<wbr/>CAPTURE intents.<wbr/></p> 9284<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types 9285or capture intents,<wbr/> the images captured will be as if 9286the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> 9287 </li> 9288 <li> 9289 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span> 9290 <span class="entry_type_enum_optional">[optional]</span> 9291 <span class="entry_type_enum_hidden">[hidden]</span> 9292 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 9293device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 9294under low light conditions.<wbr/></p> 9295<p>The camera device may be tuned to expose the images in a reduced 9296sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 9297if 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/> 9298the camera device auto-exposure routine tuning process may limit the actual 9299exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 9300exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 9301low light may be under-exposed when the sensor max exposure time (bounded by the 9302<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 9303ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 9304camera device auto-exposure routine to increase the sensitivity up to the max 9305sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 9306dark and the max exposure time is reached.<wbr/> The captured images may be noisier 9307compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 9308recommended that the application only use this scene mode when it is capable of 9309reducing the noise level of the captured images.<wbr/></p> 9310<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 9311<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> 9312remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 9313 </li> 9314 <li> 9315 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span> 9316 <span class="entry_type_enum_optional">[optional]</span> 9317 <span class="entry_type_enum_hidden">[hidden]</span> 9318 <span class="entry_type_enum_value">100</span> 9319 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 9320<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 9321customized scene modes.<wbr/></p></span> 9322 </li> 9323 <li> 9324 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span> 9325 <span class="entry_type_enum_optional">[optional]</span> 9326 <span class="entry_type_enum_hidden">[hidden]</span> 9327 <span class="entry_type_enum_value">127</span> 9328 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 9329<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 9330customized scene modes.<wbr/></p></span> 9331 </li> 9332 </ul> 9333 9334 </td> <!-- entry_type --> 9335 9336 <td class="entry_description"> 9337 <p>Control for which scene mode is currently active.<wbr/></p> 9338 </td> 9339 9340 <td class="entry_units"> 9341 </td> 9342 9343 <td class="entry_range"> 9344 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 9345 </td> 9346 9347 <td class="entry_hal_version"> 9348 <p>3.<wbr/>2</p> 9349 </td> 9350 9351 <td class="entry_tags"> 9352 <ul class="entry_tags"> 9353 <li><a href="#tag_BC">BC</a></li> 9354 </ul> 9355 </td> 9356 9357 </tr> 9358 <tr class="entries_header"> 9359 <th class="th_details" colspan="6">Details</th> 9360 </tr> 9361 <tr class="entry_cont"> 9362 <td class="entry_details" colspan="6"> 9363 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 9364capture settings.<wbr/></p> 9365<p>This is the mode that that is active when 9366<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 9367disable <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> 9368while in use.<wbr/></p> 9369<p>The interpretation and implementation of these scene modes is left 9370to the implementor of the camera device.<wbr/> Their behavior will not be 9371consistent across all devices,<wbr/> and any given device may only implement 9372a subset of these modes.<wbr/></p> 9373 </td> 9374 </tr> 9375 9376 <tr class="entries_header"> 9377 <th class="th_details" colspan="6">HAL Implementation Details</th> 9378 </tr> 9379 <tr class="entry_cont"> 9380 <td class="entry_details" colspan="6"> 9381 <p>HAL implementations that include scene modes are expected to provide 9382the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 9383<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 9384<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 9385<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/> the 9386HAL must list supported video size and fps range in 9387<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/> 1280x720,<wbr/> 9388if the HAL has two different sensor configurations for normal streaming mode and high 9389speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the 9390HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy 9391HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 9392<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 9393capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 9394 </td> 9395 </tr> 9396 9397 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9398 <!-- end of entry --> 9399 9400 9401 <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> 9402 <td class="entry_name 9403 " rowspan="3"> 9404 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 9405 </td> 9406 <td class="entry_type"> 9407 <span class="entry_type_name entry_type_name_enum">byte</span> 9408 9409 <span class="entry_type_visibility"> [public]</span> 9410 9411 9412 <span class="entry_type_hwlevel">[legacy] </span> 9413 9414 9415 9416 <ul class="entry_type_enum"> 9417 <li> 9418 <span class="entry_type_enum_name">OFF (v3.2)</span> 9419 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 9420 </li> 9421 <li> 9422 <span class="entry_type_enum_name">ON (v3.2)</span> 9423 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 9424 </li> 9425 </ul> 9426 9427 </td> <!-- entry_type --> 9428 9429 <td class="entry_description"> 9430 <p>Whether video stabilization is 9431active.<wbr/></p> 9432 </td> 9433 9434 <td class="entry_units"> 9435 </td> 9436 9437 <td class="entry_range"> 9438 </td> 9439 9440 <td class="entry_hal_version"> 9441 <p>3.<wbr/>2</p> 9442 </td> 9443 9444 <td class="entry_tags"> 9445 <ul class="entry_tags"> 9446 <li><a href="#tag_BC">BC</a></li> 9447 </ul> 9448 </td> 9449 9450 </tr> 9451 <tr class="entries_header"> 9452 <th class="th_details" colspan="6">Details</th> 9453 </tr> 9454 <tr class="entry_cont"> 9455 <td class="entry_details" colspan="6"> 9456 <p>Video stabilization automatically warps images from 9457the camera in order to stabilize motion between consecutive frames.<wbr/></p> 9458<p>If enabled,<wbr/> video stabilization can modify the 9459<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 9460<p>Switching between different video stabilization modes may take several 9461frames to initialize,<wbr/> the camera device will report the current mode 9462in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 9463the video stabilization modes in the first several capture results may 9464still be "OFF",<wbr/> and it will become "ON" when the initialization is 9465done.<wbr/></p> 9466<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 9467stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 9468that an output targeting a MediaRecorder or MediaCodec will be stabilized if 9469the recording resolution is less than or equal to 1920 x 1080 (width less than 9470or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 9471frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 9472<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 9473OFF if the recording output is not stabilized,<wbr/> or if there are no output 9474Surface types that can be stabilized.<wbr/></p> 9475<p>If a camera device supports both this mode and OIS 9476(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 9477produce undesirable interaction,<wbr/> so it is recommended not to enable 9478both at the same time.<wbr/></p> 9479 </td> 9480 </tr> 9481 9482 9483 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9484 <!-- end of entry --> 9485 9486 9487 <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost"> 9488 <td class="entry_name 9489 " rowspan="3"> 9490 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost 9491 </td> 9492 <td class="entry_type"> 9493 <span class="entry_type_name">int32</span> 9494 9495 <span class="entry_type_visibility"> [public]</span> 9496 9497 9498 9499 9500 9501 9502 </td> <!-- entry_type --> 9503 9504 <td class="entry_description"> 9505 <p>The amount of additional sensitivity boost applied to output images 9506after RAW sensor data is captured.<wbr/></p> 9507 </td> 9508 9509 <td class="entry_units"> 9510 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 9511 </td> 9512 9513 <td class="entry_range"> 9514 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p> 9515 </td> 9516 9517 <td class="entry_hal_version"> 9518 <p>3.<wbr/>2</p> 9519 </td> 9520 9521 <td class="entry_tags"> 9522 </td> 9523 9524 </tr> 9525 <tr class="entries_header"> 9526 <th class="th_details" colspan="6">Details</th> 9527 </tr> 9528 <tr class="entry_cont"> 9529 <td class="entry_details" colspan="6"> 9530 <p>Some camera devices support additional digital sensitivity boosting in the 9531camera processing pipeline after sensor RAW image is captured.<wbr/> 9532Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not 9533have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> 9534<p>This key will be <code>null</code> for devices that do not support any RAW format 9535outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 9536present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 9537list <code>100</code> in this key.<wbr/></p> 9538<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the 9539boost to the nearest supported value.<wbr/> 9540The final boost value used will be available in the output capture result.<wbr/></p> 9541<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images 9542of such device will have the total sensitivity of 9543<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> 9544The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> 9545<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 9546OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 9547 </td> 9548 </tr> 9549 9550 9551 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9552 <!-- end of entry --> 9553 9554 9555 <tr class="entry" id="dynamic_android.control.enableZsl"> 9556 <td class="entry_name 9557 " rowspan="5"> 9558 android.<wbr/>control.<wbr/>enable<wbr/>Zsl 9559 </td> 9560 <td class="entry_type"> 9561 <span class="entry_type_name entry_type_name_enum">byte</span> 9562 9563 <span class="entry_type_visibility"> [public as boolean]</span> 9564 9565 9566 9567 9568 9569 <ul class="entry_type_enum"> 9570 <li> 9571 <span class="entry_type_enum_name">FALSE (v3.2)</span> 9572 <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 9573after previous requests.<wbr/></p></span> 9574 </li> 9575 <li> 9576 <span class="entry_type_enum_name">TRUE (v3.2)</span> 9577 <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 9578captured before previous requests.<wbr/></p></span> 9579 </li> 9580 </ul> 9581 9582 </td> <!-- entry_type --> 9583 9584 <td class="entry_description"> 9585 <p>Allow camera device to enable zero-shutter-lag mode for requests with 9586<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p> 9587 </td> 9588 9589 <td class="entry_units"> 9590 </td> 9591 9592 <td class="entry_range"> 9593 </td> 9594 9595 <td class="entry_hal_version"> 9596 <p>3.<wbr/>2</p> 9597 </td> 9598 9599 <td class="entry_tags"> 9600 </td> 9601 9602 </tr> 9603 <tr class="entries_header"> 9604 <th class="th_details" colspan="6">Details</th> 9605 </tr> 9606 <tr class="entry_cont"> 9607 <td class="entry_details" colspan="6"> 9608 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with 9609STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to 9610produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the 9611<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/> 9612Therefore,<wbr/> the contents of the output images and the result metadata may be out of order 9613compared to previous regular requests.<wbr/> enableZsl does not affect requests with other 9614capture intents.<wbr/></p> 9615<p>For example,<wbr/> when requests are submitted in the following order: 9616 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW 9617 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> 9618<p>The output images for request B may have contents captured before the output images for 9619request A,<wbr/> and the result metadata for request B may be older than the result metadata for 9620request A.<wbr/></p> 9621<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in 9622the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p> 9623<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in 9624TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always 9625<code>false</code> if present.<wbr/></p> 9626<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all 9627capture templates is always <code>false</code> if present.<wbr/></p> 9628<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p> 9629 </td> 9630 </tr> 9631 9632 <tr class="entries_header"> 9633 <th class="th_details" colspan="6">HAL Implementation Details</th> 9634 </tr> 9635 <tr class="entry_cont"> 9636 <td class="entry_details" colspan="6"> 9637 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE 9638capture intent.<wbr/></p> 9639 </td> 9640 </tr> 9641 9642 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9643 <!-- end of entry --> 9644 9645 9646 <tr class="entry" id="dynamic_android.control.afSceneChange"> 9647 <td class="entry_name 9648 " rowspan="3"> 9649 android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change 9650 </td> 9651 <td class="entry_type"> 9652 <span class="entry_type_name entry_type_name_enum">byte</span> 9653 9654 <span class="entry_type_visibility"> [public]</span> 9655 9656 9657 9658 9659 9660 <ul class="entry_type_enum"> 9661 <li> 9662 <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span> 9663 <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span> 9664 </li> 9665 <li> 9666 <span class="entry_type_enum_name">DETECTED (v3.3)</span> 9667 <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span> 9668 </li> 9669 </ul> 9670 9671 </td> <!-- entry_type --> 9672 9673 <td class="entry_description"> 9674 <p>Whether a significant scene change is detected within the currently-set AF 9675region(s).<wbr/></p> 9676 </td> 9677 9678 <td class="entry_units"> 9679 </td> 9680 9681 <td class="entry_range"> 9682 </td> 9683 9684 <td class="entry_hal_version"> 9685 <p>3.<wbr/>3</p> 9686 </td> 9687 9688 <td class="entry_tags"> 9689 </td> 9690 9691 </tr> 9692 <tr class="entries_header"> 9693 <th class="th_details" colspan="6">Details</th> 9694 </tr> 9695 <tr class="entry_cont"> 9696 <td class="entry_details" colspan="6"> 9697 <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/> 9698such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a 9699significant illumination change,<wbr/> this value will be set to DETECTED for a single capture 9700result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar 9701to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p> 9702<p>This key will be available if the camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p> 9703 </td> 9704 </tr> 9705 9706 9707 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9708 <!-- end of entry --> 9709 9710 9711 9712 <!-- end of kind --> 9713 </tbody> 9714 9715 <!-- end of section --> 9716 <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr> 9717 9718 9719 <tr><td colspan="7" class="kind">controls</td></tr> 9720 9721 <thead class="entries_header"> 9722 <tr> 9723 <th class="th_name">Property Name</th> 9724 <th class="th_type">Type</th> 9725 <th class="th_description">Description</th> 9726 <th class="th_units">Units</th> 9727 <th class="th_range">Range</th> 9728 <th class="th_hal_version">Initial HIDL HAL version</th> 9729 <th class="th_tags">Tags</th> 9730 </tr> 9731 </thead> 9732 9733 <tbody> 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 <tr class="entry" id="controls_android.demosaic.mode"> 9745 <td class="entry_name 9746 " rowspan="1"> 9747 android.<wbr/>demosaic.<wbr/>mode 9748 </td> 9749 <td class="entry_type"> 9750 <span class="entry_type_name entry_type_name_enum">byte</span> 9751 9752 <span class="entry_type_visibility"> [system]</span> 9753 9754 9755 9756 9757 9758 <ul class="entry_type_enum"> 9759 <li> 9760 <span class="entry_type_enum_name">FAST (v3.2)</span> 9761 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 9762Bayer RAW output.<wbr/></p></span> 9763 </li> 9764 <li> 9765 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 9766 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down 9767relative to raw output.<wbr/></p></span> 9768 </li> 9769 </ul> 9770 9771 </td> <!-- entry_type --> 9772 9773 <td class="entry_description"> 9774 <p>Controls the quality of the demosaicing 9775processing.<wbr/></p> 9776 </td> 9777 9778 <td class="entry_units"> 9779 </td> 9780 9781 <td class="entry_range"> 9782 </td> 9783 9784 <td class="entry_hal_version"> 9785 <p>3.<wbr/>2</p> 9786 </td> 9787 9788 <td class="entry_tags"> 9789 <ul class="entry_tags"> 9790 <li><a href="#tag_FUTURE">FUTURE</a></li> 9791 </ul> 9792 </td> 9793 9794 </tr> 9795 9796 9797 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9798 <!-- end of entry --> 9799 9800 9801 9802 <!-- end of kind --> 9803 </tbody> 9804 9805 <!-- end of section --> 9806 <tr><td colspan="7" id="section_edge" class="section">edge</td></tr> 9807 9808 9809 <tr><td colspan="7" class="kind">controls</td></tr> 9810 9811 <thead class="entries_header"> 9812 <tr> 9813 <th class="th_name">Property Name</th> 9814 <th class="th_type">Type</th> 9815 <th class="th_description">Description</th> 9816 <th class="th_units">Units</th> 9817 <th class="th_range">Range</th> 9818 <th class="th_hal_version">Initial HIDL HAL version</th> 9819 <th class="th_tags">Tags</th> 9820 </tr> 9821 </thead> 9822 9823 <tbody> 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 <tr class="entry" id="controls_android.edge.mode"> 9835 <td class="entry_name 9836 " rowspan="5"> 9837 android.<wbr/>edge.<wbr/>mode 9838 </td> 9839 <td class="entry_type"> 9840 <span class="entry_type_name entry_type_name_enum">byte</span> 9841 9842 <span class="entry_type_visibility"> [public]</span> 9843 9844 9845 <span class="entry_type_hwlevel">[full] </span> 9846 9847 9848 9849 <ul class="entry_type_enum"> 9850 <li> 9851 <span class="entry_type_enum_name">OFF (v3.2)</span> 9852 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 9853 </li> 9854 <li> 9855 <span class="entry_type_enum_name">FAST (v3.2)</span> 9856 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 9857relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 9858slow down frame rate relative to sensor.<wbr/></p></span> 9859 </li> 9860 <li> 9861 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 9862 <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> 9863 </li> 9864 <li> 9865 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 9866 <span class="entry_type_enum_optional">[optional]</span> 9867 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different 9868levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording 9869resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) 9870or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge 9871enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned 9872so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST 9873(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 9874<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 9875with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 9876high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 9877produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 9878high-resolution buffers must not have edge enhancement applied to maximize efficiency of 9879preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 9880buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 9881reasonable preview quality.<wbr/></p> 9882<p>This mode is guaranteed to be supported by devices that support either the 9883YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 9884(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 9885be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 9886 </li> 9887 </ul> 9888 9889 </td> <!-- entry_type --> 9890 9891 <td class="entry_description"> 9892 <p>Operation mode for edge 9893enhancement.<wbr/></p> 9894 </td> 9895 9896 <td class="entry_units"> 9897 </td> 9898 9899 <td class="entry_range"> 9900 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 9901 </td> 9902 9903 <td class="entry_hal_version"> 9904 <p>3.<wbr/>2</p> 9905 </td> 9906 9907 <td class="entry_tags"> 9908 <ul class="entry_tags"> 9909 <li><a href="#tag_V1">V1</a></li> 9910 <li><a href="#tag_REPROC">REPROC</a></li> 9911 </ul> 9912 </td> 9913 9914 </tr> 9915 <tr class="entries_header"> 9916 <th class="th_details" colspan="6">Details</th> 9917 </tr> 9918 <tr class="entry_cont"> 9919 <td class="entry_details" colspan="6"> 9920 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 9921no enhancement will be applied by the camera device.<wbr/></p> 9922<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 9923will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 9924camera device will use the highest-quality enhancement algorithms,<wbr/> 9925even if it slows down capture rate.<wbr/> FAST means the camera device will 9926not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 9927edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 9928amount of enhancement applied.<wbr/></p> 9929<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 9930buffer of high-resolution images during preview and reprocess image(s) from that buffer 9931into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 9932edge enhancement to low-resolution streams (below maximum recording resolution) to 9933maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 9934since those will be reprocessed later if necessary.<wbr/></p> 9935<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 9936device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 9937The camera device may adjust its internal edge enhancement parameters for best 9938image 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> 9939 </td> 9940 </tr> 9941 9942 <tr class="entries_header"> 9943 <th class="th_details" colspan="6">HAL Implementation Details</th> 9944 </tr> 9945 <tr class="entry_cont"> 9946 <td class="entry_details" colspan="6"> 9947 <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 9948adjust the internal edge enhancement reduction parameters appropriately to get the best 9949quality images.<wbr/></p> 9950 </td> 9951 </tr> 9952 9953 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9954 <!-- end of entry --> 9955 9956 9957 <tr class="entry" id="controls_android.edge.strength"> 9958 <td class="entry_name 9959 " rowspan="1"> 9960 android.<wbr/>edge.<wbr/>strength 9961 </td> 9962 <td class="entry_type"> 9963 <span class="entry_type_name">byte</span> 9964 9965 <span class="entry_type_visibility"> [system]</span> 9966 9967 9968 9969 9970 9971 9972 </td> <!-- entry_type --> 9973 9974 <td class="entry_description"> 9975 <p>Control the amount of edge enhancement 9976applied to the images</p> 9977 </td> 9978 9979 <td class="entry_units"> 9980 1-10; 10 is maximum sharpening 9981 </td> 9982 9983 <td class="entry_range"> 9984 </td> 9985 9986 <td class="entry_hal_version"> 9987 <p>3.<wbr/>2</p> 9988 </td> 9989 9990 <td class="entry_tags"> 9991 <ul class="entry_tags"> 9992 <li><a href="#tag_FUTURE">FUTURE</a></li> 9993 </ul> 9994 </td> 9995 9996 </tr> 9997 9998 9999 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10000 <!-- end of entry --> 10001 10002 10003 10004 <!-- end of kind --> 10005 </tbody> 10006 <tr><td colspan="7" class="kind">static</td></tr> 10007 10008 <thead class="entries_header"> 10009 <tr> 10010 <th class="th_name">Property Name</th> 10011 <th class="th_type">Type</th> 10012 <th class="th_description">Description</th> 10013 <th class="th_units">Units</th> 10014 <th class="th_range">Range</th> 10015 <th class="th_hal_version">Initial HIDL HAL version</th> 10016 <th class="th_tags">Tags</th> 10017 </tr> 10018 </thead> 10019 10020 <tbody> 10021 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 <tr class="entry" id="static_android.edge.availableEdgeModes"> 10032 <td class="entry_name 10033 " rowspan="5"> 10034 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 10035 </td> 10036 <td class="entry_type"> 10037 <span class="entry_type_name">byte</span> 10038 <span class="entry_type_container">x</span> 10039 10040 <span class="entry_type_array"> 10041 n 10042 </span> 10043 <span class="entry_type_visibility"> [public as enumList]</span> 10044 10045 10046 <span class="entry_type_hwlevel">[full] </span> 10047 10048 10049 <div class="entry_type_notes">list of enums</div> 10050 10051 10052 </td> <!-- entry_type --> 10053 10054 <td class="entry_description"> 10055 <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 10056device.<wbr/></p> 10057 </td> 10058 10059 <td class="entry_units"> 10060 </td> 10061 10062 <td class="entry_range"> 10063 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p> 10064 </td> 10065 10066 <td class="entry_hal_version"> 10067 <p>3.<wbr/>2</p> 10068 </td> 10069 10070 <td class="entry_tags"> 10071 <ul class="entry_tags"> 10072 <li><a href="#tag_V1">V1</a></li> 10073 <li><a href="#tag_REPROC">REPROC</a></li> 10074 </ul> 10075 </td> 10076 10077 </tr> 10078 <tr class="entries_header"> 10079 <th class="th_details" colspan="6">Details</th> 10080 </tr> 10081 <tr class="entry_cont"> 10082 <td class="entry_details" colspan="6"> 10083 <p>Full-capability camera devices must always support OFF; camera devices that support 10084YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will 10085list FAST.<wbr/></p> 10086 </td> 10087 </tr> 10088 10089 <tr class="entries_header"> 10090 <th class="th_details" colspan="6">HAL Implementation Details</th> 10091 </tr> 10092 <tr class="entry_cont"> 10093 <td class="entry_details" colspan="6"> 10094 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available 10095on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 10096That is,<wbr/> if the highest quality implementation on the camera device does not slow down 10097capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 10098 </td> 10099 </tr> 10100 10101 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10102 <!-- end of entry --> 10103 10104 10105 10106 <!-- end of kind --> 10107 </tbody> 10108 <tr><td colspan="7" class="kind">dynamic</td></tr> 10109 10110 <thead class="entries_header"> 10111 <tr> 10112 <th class="th_name">Property Name</th> 10113 <th class="th_type">Type</th> 10114 <th class="th_description">Description</th> 10115 <th class="th_units">Units</th> 10116 <th class="th_range">Range</th> 10117 <th class="th_hal_version">Initial HIDL HAL version</th> 10118 <th class="th_tags">Tags</th> 10119 </tr> 10120 </thead> 10121 10122 <tbody> 10123 10124 10125 10126 10127 10128 10129 10130 10131 10132 10133 <tr class="entry" id="dynamic_android.edge.mode"> 10134 <td class="entry_name 10135 " rowspan="5"> 10136 android.<wbr/>edge.<wbr/>mode 10137 </td> 10138 <td class="entry_type"> 10139 <span class="entry_type_name entry_type_name_enum">byte</span> 10140 10141 <span class="entry_type_visibility"> [public]</span> 10142 10143 10144 <span class="entry_type_hwlevel">[full] </span> 10145 10146 10147 10148 <ul class="entry_type_enum"> 10149 <li> 10150 <span class="entry_type_enum_name">OFF (v3.2)</span> 10151 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 10152 </li> 10153 <li> 10154 <span class="entry_type_enum_name">FAST (v3.2)</span> 10155 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 10156relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 10157slow down frame rate relative to sensor.<wbr/></p></span> 10158 </li> 10159 <li> 10160 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 10161 <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> 10162 </li> 10163 <li> 10164 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 10165 <span class="entry_type_enum_optional">[optional]</span> 10166 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different 10167levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording 10168resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) 10169or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge 10170enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned 10171so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST 10172(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 10173<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 10174with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 10175high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 10176produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 10177high-resolution buffers must not have edge enhancement applied to maximize efficiency of 10178preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 10179buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 10180reasonable preview quality.<wbr/></p> 10181<p>This mode is guaranteed to be supported by devices that support either the 10182YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 10183(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 10184be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 10185 </li> 10186 </ul> 10187 10188 </td> <!-- entry_type --> 10189 10190 <td class="entry_description"> 10191 <p>Operation mode for edge 10192enhancement.<wbr/></p> 10193 </td> 10194 10195 <td class="entry_units"> 10196 </td> 10197 10198 <td class="entry_range"> 10199 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 10200 </td> 10201 10202 <td class="entry_hal_version"> 10203 <p>3.<wbr/>2</p> 10204 </td> 10205 10206 <td class="entry_tags"> 10207 <ul class="entry_tags"> 10208 <li><a href="#tag_V1">V1</a></li> 10209 <li><a href="#tag_REPROC">REPROC</a></li> 10210 </ul> 10211 </td> 10212 10213 </tr> 10214 <tr class="entries_header"> 10215 <th class="th_details" colspan="6">Details</th> 10216 </tr> 10217 <tr class="entry_cont"> 10218 <td class="entry_details" colspan="6"> 10219 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 10220no enhancement will be applied by the camera device.<wbr/></p> 10221<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 10222will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 10223camera device will use the highest-quality enhancement algorithms,<wbr/> 10224even if it slows down capture rate.<wbr/> FAST means the camera device will 10225not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 10226edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 10227amount of enhancement applied.<wbr/></p> 10228<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 10229buffer of high-resolution images during preview and reprocess image(s) from that buffer 10230into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 10231edge enhancement to low-resolution streams (below maximum recording resolution) to 10232maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 10233since those will be reprocessed later if necessary.<wbr/></p> 10234<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 10235device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 10236The camera device may adjust its internal edge enhancement parameters for best 10237image 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> 10238 </td> 10239 </tr> 10240 10241 <tr class="entries_header"> 10242 <th class="th_details" colspan="6">HAL Implementation Details</th> 10243 </tr> 10244 <tr class="entry_cont"> 10245 <td class="entry_details" colspan="6"> 10246 <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 10247adjust the internal edge enhancement reduction parameters appropriately to get the best 10248quality images.<wbr/></p> 10249 </td> 10250 </tr> 10251 10252 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10253 <!-- end of entry --> 10254 10255 10256 10257 <!-- end of kind --> 10258 </tbody> 10259 10260 <!-- end of section --> 10261 <tr><td colspan="7" id="section_flash" class="section">flash</td></tr> 10262 10263 10264 <tr><td colspan="7" class="kind">controls</td></tr> 10265 10266 <thead class="entries_header"> 10267 <tr> 10268 <th class="th_name">Property Name</th> 10269 <th class="th_type">Type</th> 10270 <th class="th_description">Description</th> 10271 <th class="th_units">Units</th> 10272 <th class="th_range">Range</th> 10273 <th class="th_hal_version">Initial HIDL HAL version</th> 10274 <th class="th_tags">Tags</th> 10275 </tr> 10276 </thead> 10277 10278 <tbody> 10279 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 <tr class="entry" id="controls_android.flash.firingPower"> 10290 <td class="entry_name 10291 " rowspan="3"> 10292 android.<wbr/>flash.<wbr/>firing<wbr/>Power 10293 </td> 10294 <td class="entry_type"> 10295 <span class="entry_type_name">byte</span> 10296 10297 <span class="entry_type_visibility"> [system]</span> 10298 10299 10300 10301 10302 10303 10304 </td> <!-- entry_type --> 10305 10306 <td class="entry_description"> 10307 <p>Power for flash firing/<wbr/>torch</p> 10308 </td> 10309 10310 <td class="entry_units"> 10311 10 is max power; 0 is no flash.<wbr/> Linear 10312 </td> 10313 10314 <td class="entry_range"> 10315 <p>0 - 10</p> 10316 </td> 10317 10318 <td class="entry_hal_version"> 10319 <p>3.<wbr/>2</p> 10320 </td> 10321 10322 <td class="entry_tags"> 10323 <ul class="entry_tags"> 10324 <li><a href="#tag_FUTURE">FUTURE</a></li> 10325 </ul> 10326 </td> 10327 10328 </tr> 10329 <tr class="entries_header"> 10330 <th class="th_details" colspan="6">Details</th> 10331 </tr> 10332 <tr class="entry_cont"> 10333 <td class="entry_details" colspan="6"> 10334 <p>Power for snapshot may use a different scale than 10335for torch mode.<wbr/> Only one entry for torch mode will be 10336used</p> 10337 </td> 10338 </tr> 10339 10340 10341 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10342 <!-- end of entry --> 10343 10344 10345 <tr class="entry" id="controls_android.flash.firingTime"> 10346 <td class="entry_name 10347 " rowspan="3"> 10348 android.<wbr/>flash.<wbr/>firing<wbr/>Time 10349 </td> 10350 <td class="entry_type"> 10351 <span class="entry_type_name">int64</span> 10352 10353 <span class="entry_type_visibility"> [system]</span> 10354 10355 10356 10357 10358 10359 10360 </td> <!-- entry_type --> 10361 10362 <td class="entry_description"> 10363 <p>Firing time of flash relative to start of 10364exposure</p> 10365 </td> 10366 10367 <td class="entry_units"> 10368 nanoseconds 10369 </td> 10370 10371 <td class="entry_range"> 10372 <p>0-(exposure time-flash duration)</p> 10373 </td> 10374 10375 <td class="entry_hal_version"> 10376 <p>3.<wbr/>2</p> 10377 </td> 10378 10379 <td class="entry_tags"> 10380 <ul class="entry_tags"> 10381 <li><a href="#tag_FUTURE">FUTURE</a></li> 10382 </ul> 10383 </td> 10384 10385 </tr> 10386 <tr class="entries_header"> 10387 <th class="th_details" colspan="6">Details</th> 10388 </tr> 10389 <tr class="entry_cont"> 10390 <td class="entry_details" colspan="6"> 10391 <p>Clamped to (0,<wbr/> exposure time - flash 10392duration).<wbr/></p> 10393 </td> 10394 </tr> 10395 10396 10397 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10398 <!-- end of entry --> 10399 10400 10401 <tr class="entry" id="controls_android.flash.mode"> 10402 <td class="entry_name 10403 " rowspan="3"> 10404 android.<wbr/>flash.<wbr/>mode 10405 </td> 10406 <td class="entry_type"> 10407 <span class="entry_type_name entry_type_name_enum">byte</span> 10408 10409 <span class="entry_type_visibility"> [public]</span> 10410 10411 10412 <span class="entry_type_hwlevel">[legacy] </span> 10413 10414 10415 10416 <ul class="entry_type_enum"> 10417 <li> 10418 <span class="entry_type_enum_name">OFF (v3.2)</span> 10419 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 10420 </li> 10421 <li> 10422 <span class="entry_type_enum_name">SINGLE (v3.2)</span> 10423 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 10424for this capture.<wbr/></p></span> 10425 </li> 10426 <li> 10427 <span class="entry_type_enum_name">TORCH (v3.2)</span> 10428 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 10429 </li> 10430 </ul> 10431 10432 </td> <!-- entry_type --> 10433 10434 <td class="entry_description"> 10435 <p>The desired mode for for the camera device's flash control.<wbr/></p> 10436 </td> 10437 10438 <td class="entry_units"> 10439 </td> 10440 10441 <td class="entry_range"> 10442 </td> 10443 10444 <td class="entry_hal_version"> 10445 <p>3.<wbr/>2</p> 10446 </td> 10447 10448 <td class="entry_tags"> 10449 <ul class="entry_tags"> 10450 <li><a href="#tag_BC">BC</a></li> 10451 </ul> 10452 </td> 10453 10454 </tr> 10455 <tr class="entries_header"> 10456 <th class="th_details" colspan="6">Details</th> 10457 </tr> 10458 <tr class="entry_cont"> 10459 <td class="entry_details" colspan="6"> 10460 <p>This control is only effective when flash unit is available 10461(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 10462<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/> 10463Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 10464ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 10465<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 10466<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 10467device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 10468control should be used along with auto-exposure (AE) precapture metering sequence 10469(<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> 10470<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 10471for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 10472<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> 10473 </td> 10474 </tr> 10475 10476 10477 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10478 <!-- end of entry --> 10479 10480 10481 10482 <!-- end of kind --> 10483 </tbody> 10484 <tr><td colspan="7" class="kind">static</td></tr> 10485 10486 <thead class="entries_header"> 10487 <tr> 10488 <th class="th_name">Property Name</th> 10489 <th class="th_type">Type</th> 10490 <th class="th_description">Description</th> 10491 <th class="th_units">Units</th> 10492 <th class="th_range">Range</th> 10493 <th class="th_hal_version">Initial HIDL HAL version</th> 10494 <th class="th_tags">Tags</th> 10495 </tr> 10496 </thead> 10497 10498 <tbody> 10499 10500 10501 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 <tr class="entry" id="static_android.flash.info.available"> 10512 <td class="entry_name 10513 " rowspan="3"> 10514 android.<wbr/>flash.<wbr/>info.<wbr/>available 10515 </td> 10516 <td class="entry_type"> 10517 <span class="entry_type_name entry_type_name_enum">byte</span> 10518 10519 <span class="entry_type_visibility"> [public as boolean]</span> 10520 10521 10522 <span class="entry_type_hwlevel">[legacy] </span> 10523 10524 10525 10526 <ul class="entry_type_enum"> 10527 <li> 10528 <span class="entry_type_enum_name">FALSE (v3.2)</span> 10529 </li> 10530 <li> 10531 <span class="entry_type_enum_name">TRUE (v3.2)</span> 10532 </li> 10533 </ul> 10534 10535 </td> <!-- entry_type --> 10536 10537 <td class="entry_description"> 10538 <p>Whether this camera device has a 10539flash unit.<wbr/></p> 10540 </td> 10541 10542 <td class="entry_units"> 10543 </td> 10544 10545 <td class="entry_range"> 10546 </td> 10547 10548 <td class="entry_hal_version"> 10549 <p>3.<wbr/>2</p> 10550 </td> 10551 10552 <td class="entry_tags"> 10553 <ul class="entry_tags"> 10554 <li><a href="#tag_BC">BC</a></li> 10555 </ul> 10556 </td> 10557 10558 </tr> 10559 <tr class="entries_header"> 10560 <th class="th_details" colspan="6">Details</th> 10561 </tr> 10562 <tr class="entry_cont"> 10563 <td class="entry_details" colspan="6"> 10564 <p>Will be <code>false</code> if no flash is available.<wbr/></p> 10565<p>If there is no flash unit,<wbr/> none of the flash controls do 10566anything.<wbr/></p> 10567 </td> 10568 </tr> 10569 10570 10571 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10572 <!-- end of entry --> 10573 10574 10575 <tr class="entry" id="static_android.flash.info.chargeDuration"> 10576 <td class="entry_name 10577 " rowspan="3"> 10578 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 10579 </td> 10580 <td class="entry_type"> 10581 <span class="entry_type_name">int64</span> 10582 10583 <span class="entry_type_visibility"> [system]</span> 10584 10585 10586 10587 10588 10589 10590 </td> <!-- entry_type --> 10591 10592 <td class="entry_description"> 10593 <p>Time taken before flash can fire 10594again</p> 10595 </td> 10596 10597 <td class="entry_units"> 10598 nanoseconds 10599 </td> 10600 10601 <td class="entry_range"> 10602 <p>0-1e9</p> 10603 </td> 10604 10605 <td class="entry_hal_version"> 10606 <p>3.<wbr/>2</p> 10607 </td> 10608 10609 <td class="entry_tags"> 10610 <ul class="entry_tags"> 10611 <li><a href="#tag_FUTURE">FUTURE</a></li> 10612 </ul> 10613 </td> 10614 10615 </tr> 10616 <tr class="entries_header"> 10617 <th class="th_details" colspan="6">Details</th> 10618 </tr> 10619 <tr class="entry_cont"> 10620 <td class="entry_details" colspan="6"> 10621 <p>1 second too long/<wbr/>too short for recharge? Should 10622this be power-dependent?</p> 10623 </td> 10624 </tr> 10625 10626 10627 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10628 <!-- end of entry --> 10629 10630 10631 10632 10633 10634 <tr class="entry" id="static_android.flash.colorTemperature"> 10635 <td class="entry_name 10636 " rowspan="1"> 10637 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 10638 </td> 10639 <td class="entry_type"> 10640 <span class="entry_type_name">byte</span> 10641 10642 <span class="entry_type_visibility"> [system]</span> 10643 10644 10645 10646 10647 10648 10649 </td> <!-- entry_type --> 10650 10651 <td class="entry_description"> 10652 <p>The x,<wbr/>y whitepoint of the 10653flash</p> 10654 </td> 10655 10656 <td class="entry_units"> 10657 pair of floats 10658 </td> 10659 10660 <td class="entry_range"> 10661 <p>0-1 for both</p> 10662 </td> 10663 10664 <td class="entry_hal_version"> 10665 <p>3.<wbr/>2</p> 10666 </td> 10667 10668 <td class="entry_tags"> 10669 <ul class="entry_tags"> 10670 <li><a href="#tag_FUTURE">FUTURE</a></li> 10671 </ul> 10672 </td> 10673 10674 </tr> 10675 10676 10677 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10678 <!-- end of entry --> 10679 10680 10681 <tr class="entry" id="static_android.flash.maxEnergy"> 10682 <td class="entry_name 10683 " rowspan="1"> 10684 android.<wbr/>flash.<wbr/>max<wbr/>Energy 10685 </td> 10686 <td class="entry_type"> 10687 <span class="entry_type_name">byte</span> 10688 10689 <span class="entry_type_visibility"> [system]</span> 10690 10691 10692 10693 10694 10695 10696 </td> <!-- entry_type --> 10697 10698 <td class="entry_description"> 10699 <p>Max energy output of the flash for a full 10700power single flash</p> 10701 </td> 10702 10703 <td class="entry_units"> 10704 lumen-seconds 10705 </td> 10706 10707 <td class="entry_range"> 10708 <p>>= 0</p> 10709 </td> 10710 10711 <td class="entry_hal_version"> 10712 <p>3.<wbr/>2</p> 10713 </td> 10714 10715 <td class="entry_tags"> 10716 <ul class="entry_tags"> 10717 <li><a href="#tag_FUTURE">FUTURE</a></li> 10718 </ul> 10719 </td> 10720 10721 </tr> 10722 10723 10724 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10725 <!-- end of entry --> 10726 10727 10728 10729 <!-- end of kind --> 10730 </tbody> 10731 <tr><td colspan="7" class="kind">dynamic</td></tr> 10732 10733 <thead class="entries_header"> 10734 <tr> 10735 <th class="th_name">Property Name</th> 10736 <th class="th_type">Type</th> 10737 <th class="th_description">Description</th> 10738 <th class="th_units">Units</th> 10739 <th class="th_range">Range</th> 10740 <th class="th_hal_version">Initial HIDL HAL version</th> 10741 <th class="th_tags">Tags</th> 10742 </tr> 10743 </thead> 10744 10745 <tbody> 10746 10747 10748 10749 10750 10751 10752 10753 10754 10755 10756 <tr class="entry" id="dynamic_android.flash.firingPower"> 10757 <td class="entry_name 10758 " rowspan="3"> 10759 android.<wbr/>flash.<wbr/>firing<wbr/>Power 10760 </td> 10761 <td class="entry_type"> 10762 <span class="entry_type_name">byte</span> 10763 10764 <span class="entry_type_visibility"> [system]</span> 10765 10766 10767 10768 10769 10770 10771 </td> <!-- entry_type --> 10772 10773 <td class="entry_description"> 10774 <p>Power for flash firing/<wbr/>torch</p> 10775 </td> 10776 10777 <td class="entry_units"> 10778 10 is max power; 0 is no flash.<wbr/> Linear 10779 </td> 10780 10781 <td class="entry_range"> 10782 <p>0 - 10</p> 10783 </td> 10784 10785 <td class="entry_hal_version"> 10786 <p>3.<wbr/>2</p> 10787 </td> 10788 10789 <td class="entry_tags"> 10790 <ul class="entry_tags"> 10791 <li><a href="#tag_FUTURE">FUTURE</a></li> 10792 </ul> 10793 </td> 10794 10795 </tr> 10796 <tr class="entries_header"> 10797 <th class="th_details" colspan="6">Details</th> 10798 </tr> 10799 <tr class="entry_cont"> 10800 <td class="entry_details" colspan="6"> 10801 <p>Power for snapshot may use a different scale than 10802for torch mode.<wbr/> Only one entry for torch mode will be 10803used</p> 10804 </td> 10805 </tr> 10806 10807 10808 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10809 <!-- end of entry --> 10810 10811 10812 <tr class="entry" id="dynamic_android.flash.firingTime"> 10813 <td class="entry_name 10814 " rowspan="3"> 10815 android.<wbr/>flash.<wbr/>firing<wbr/>Time 10816 </td> 10817 <td class="entry_type"> 10818 <span class="entry_type_name">int64</span> 10819 10820 <span class="entry_type_visibility"> [system]</span> 10821 10822 10823 10824 10825 10826 10827 </td> <!-- entry_type --> 10828 10829 <td class="entry_description"> 10830 <p>Firing time of flash relative to start of 10831exposure</p> 10832 </td> 10833 10834 <td class="entry_units"> 10835 nanoseconds 10836 </td> 10837 10838 <td class="entry_range"> 10839 <p>0-(exposure time-flash duration)</p> 10840 </td> 10841 10842 <td class="entry_hal_version"> 10843 <p>3.<wbr/>2</p> 10844 </td> 10845 10846 <td class="entry_tags"> 10847 <ul class="entry_tags"> 10848 <li><a href="#tag_FUTURE">FUTURE</a></li> 10849 </ul> 10850 </td> 10851 10852 </tr> 10853 <tr class="entries_header"> 10854 <th class="th_details" colspan="6">Details</th> 10855 </tr> 10856 <tr class="entry_cont"> 10857 <td class="entry_details" colspan="6"> 10858 <p>Clamped to (0,<wbr/> exposure time - flash 10859duration).<wbr/></p> 10860 </td> 10861 </tr> 10862 10863 10864 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10865 <!-- end of entry --> 10866 10867 10868 <tr class="entry" id="dynamic_android.flash.mode"> 10869 <td class="entry_name 10870 " rowspan="3"> 10871 android.<wbr/>flash.<wbr/>mode 10872 </td> 10873 <td class="entry_type"> 10874 <span class="entry_type_name entry_type_name_enum">byte</span> 10875 10876 <span class="entry_type_visibility"> [public]</span> 10877 10878 10879 <span class="entry_type_hwlevel">[legacy] </span> 10880 10881 10882 10883 <ul class="entry_type_enum"> 10884 <li> 10885 <span class="entry_type_enum_name">OFF (v3.2)</span> 10886 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 10887 </li> 10888 <li> 10889 <span class="entry_type_enum_name">SINGLE (v3.2)</span> 10890 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 10891for this capture.<wbr/></p></span> 10892 </li> 10893 <li> 10894 <span class="entry_type_enum_name">TORCH (v3.2)</span> 10895 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 10896 </li> 10897 </ul> 10898 10899 </td> <!-- entry_type --> 10900 10901 <td class="entry_description"> 10902 <p>The desired mode for for the camera device's flash control.<wbr/></p> 10903 </td> 10904 10905 <td class="entry_units"> 10906 </td> 10907 10908 <td class="entry_range"> 10909 </td> 10910 10911 <td class="entry_hal_version"> 10912 <p>3.<wbr/>2</p> 10913 </td> 10914 10915 <td class="entry_tags"> 10916 <ul class="entry_tags"> 10917 <li><a href="#tag_BC">BC</a></li> 10918 </ul> 10919 </td> 10920 10921 </tr> 10922 <tr class="entries_header"> 10923 <th class="th_details" colspan="6">Details</th> 10924 </tr> 10925 <tr class="entry_cont"> 10926 <td class="entry_details" colspan="6"> 10927 <p>This control is only effective when flash unit is available 10928(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 10929<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/> 10930Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 10931ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 10932<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 10933<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 10934device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 10935control should be used along with auto-exposure (AE) precapture metering sequence 10936(<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> 10937<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 10938for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 10939<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> 10940 </td> 10941 </tr> 10942 10943 10944 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10945 <!-- end of entry --> 10946 10947 10948 <tr class="entry" id="dynamic_android.flash.state"> 10949 <td class="entry_name 10950 " rowspan="3"> 10951 android.<wbr/>flash.<wbr/>state 10952 </td> 10953 <td class="entry_type"> 10954 <span class="entry_type_name entry_type_name_enum">byte</span> 10955 10956 <span class="entry_type_visibility"> [public]</span> 10957 10958 10959 <span class="entry_type_hwlevel">[limited] </span> 10960 10961 10962 10963 <ul class="entry_type_enum"> 10964 <li> 10965 <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span> 10966 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 10967 </li> 10968 <li> 10969 <span class="entry_type_enum_name">CHARGING (v3.2)</span> 10970 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 10971 </li> 10972 <li> 10973 <span class="entry_type_enum_name">READY (v3.2)</span> 10974 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 10975 </li> 10976 <li> 10977 <span class="entry_type_enum_name">FIRED (v3.2)</span> 10978 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 10979 </li> 10980 <li> 10981 <span class="entry_type_enum_name">PARTIAL (v3.2)</span> 10982 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p> 10983<p>This is usually due to the next or previous frame having 10984the flash fire,<wbr/> and the flash spilling into this capture 10985due to hardware limitations.<wbr/></p></span> 10986 </li> 10987 </ul> 10988 10989 </td> <!-- entry_type --> 10990 10991 <td class="entry_description"> 10992 <p>Current state of the flash 10993unit.<wbr/></p> 10994 </td> 10995 10996 <td class="entry_units"> 10997 </td> 10998 10999 <td class="entry_range"> 11000 </td> 11001 11002 <td class="entry_hal_version"> 11003 <p>3.<wbr/>2</p> 11004 </td> 11005 11006 <td class="entry_tags"> 11007 </td> 11008 11009 </tr> 11010 <tr class="entries_header"> 11011 <th class="th_details" colspan="6">Details</th> 11012 </tr> 11013 <tr class="entry_cont"> 11014 <td class="entry_details" colspan="6"> 11015 <p>When the camera device doesn't have flash unit 11016(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/> 11017Other states indicate the current flash status.<wbr/></p> 11018<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p> 11019<ul> 11020<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li> 11021<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH 11022 will always return FIRED.<wbr/></li> 11023<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH 11024 will always return FIRED.<wbr/></li> 11025</ul> 11026<p>In all other conditions the state will not be available on 11027LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p> 11028 </td> 11029 </tr> 11030 11031 11032 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11033 <!-- end of entry --> 11034 11035 11036 11037 <!-- end of kind --> 11038 </tbody> 11039 11040 <!-- end of section --> 11041 <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr> 11042 11043 11044 <tr><td colspan="7" class="kind">controls</td></tr> 11045 11046 <thead class="entries_header"> 11047 <tr> 11048 <th class="th_name">Property Name</th> 11049 <th class="th_type">Type</th> 11050 <th class="th_description">Description</th> 11051 <th class="th_units">Units</th> 11052 <th class="th_range">Range</th> 11053 <th class="th_hal_version">Initial HIDL HAL version</th> 11054 <th class="th_tags">Tags</th> 11055 </tr> 11056 </thead> 11057 11058 <tbody> 11059 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 <tr class="entry" id="controls_android.hotPixel.mode"> 11070 <td class="entry_name 11071 " rowspan="3"> 11072 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 11073 </td> 11074 <td class="entry_type"> 11075 <span class="entry_type_name entry_type_name_enum">byte</span> 11076 11077 <span class="entry_type_visibility"> [public]</span> 11078 11079 11080 11081 11082 11083 <ul class="entry_type_enum"> 11084 <li> 11085 <span class="entry_type_enum_name">OFF (v3.2)</span> 11086 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 11087<p>The frame rate must not be reduced relative to sensor raw output 11088for this option.<wbr/></p> 11089<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> 11090 </li> 11091 <li> 11092 <span class="entry_type_enum_name">FAST (v3.2)</span> 11093 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 11094rate relative to sensor raw output.<wbr/></p> 11095<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> 11096 </li> 11097 <li> 11098 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 11099 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 11100of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 11101<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> 11102 </li> 11103 </ul> 11104 11105 </td> <!-- entry_type --> 11106 11107 <td class="entry_description"> 11108 <p>Operational mode for hot pixel correction.<wbr/></p> 11109 </td> 11110 11111 <td class="entry_units"> 11112 </td> 11113 11114 <td class="entry_range"> 11115 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 11116 </td> 11117 11118 <td class="entry_hal_version"> 11119 <p>3.<wbr/>2</p> 11120 </td> 11121 11122 <td class="entry_tags"> 11123 <ul class="entry_tags"> 11124 <li><a href="#tag_V1">V1</a></li> 11125 <li><a href="#tag_RAW">RAW</a></li> 11126 </ul> 11127 </td> 11128 11129 </tr> 11130 <tr class="entries_header"> 11131 <th class="th_details" colspan="6">Details</th> 11132 </tr> 11133 <tr class="entry_cont"> 11134 <td class="entry_details" colspan="6"> 11135 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 11136that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 11137are stuck at an arbitrary value or are oversensitive).<wbr/></p> 11138 </td> 11139 </tr> 11140 11141 11142 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11143 <!-- end of entry --> 11144 11145 11146 11147 <!-- end of kind --> 11148 </tbody> 11149 <tr><td colspan="7" class="kind">static</td></tr> 11150 11151 <thead class="entries_header"> 11152 <tr> 11153 <th class="th_name">Property Name</th> 11154 <th class="th_type">Type</th> 11155 <th class="th_description">Description</th> 11156 <th class="th_units">Units</th> 11157 <th class="th_range">Range</th> 11158 <th class="th_hal_version">Initial HIDL HAL version</th> 11159 <th class="th_tags">Tags</th> 11160 </tr> 11161 </thead> 11162 11163 <tbody> 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11174 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 11175 <td class="entry_name 11176 " rowspan="5"> 11177 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 11178 </td> 11179 <td class="entry_type"> 11180 <span class="entry_type_name">byte</span> 11181 <span class="entry_type_container">x</span> 11182 11183 <span class="entry_type_array"> 11184 n 11185 </span> 11186 <span class="entry_type_visibility"> [public as enumList]</span> 11187 11188 11189 11190 11191 <div class="entry_type_notes">list of enums</div> 11192 11193 11194 </td> <!-- entry_type --> 11195 11196 <td class="entry_description"> 11197 <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 11198camera device.<wbr/></p> 11199 </td> 11200 11201 <td class="entry_units"> 11202 </td> 11203 11204 <td class="entry_range"> 11205 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p> 11206 </td> 11207 11208 <td class="entry_hal_version"> 11209 <p>3.<wbr/>2</p> 11210 </td> 11211 11212 <td class="entry_tags"> 11213 <ul class="entry_tags"> 11214 <li><a href="#tag_V1">V1</a></li> 11215 <li><a href="#tag_RAW">RAW</a></li> 11216 </ul> 11217 </td> 11218 11219 </tr> 11220 <tr class="entries_header"> 11221 <th class="th_details" colspan="6">Details</th> 11222 </tr> 11223 <tr class="entry_cont"> 11224 <td class="entry_details" colspan="6"> 11225 <p>FULL mode camera devices will always support FAST.<wbr/></p> 11226 </td> 11227 </tr> 11228 11229 <tr class="entries_header"> 11230 <th class="th_details" colspan="6">HAL Implementation Details</th> 11231 </tr> 11232 <tr class="entry_cont"> 11233 <td class="entry_details" colspan="6"> 11234 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 11235pixels than actual pixels on the camera sensor.<wbr/> 11236HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available 11237on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 11238That is,<wbr/> if the highest quality implementation on the camera device does not slow down 11239capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 11240 </td> 11241 </tr> 11242 11243 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11244 <!-- end of entry --> 11245 11246 11247 11248 <!-- end of kind --> 11249 </tbody> 11250 <tr><td colspan="7" class="kind">dynamic</td></tr> 11251 11252 <thead class="entries_header"> 11253 <tr> 11254 <th class="th_name">Property Name</th> 11255 <th class="th_type">Type</th> 11256 <th class="th_description">Description</th> 11257 <th class="th_units">Units</th> 11258 <th class="th_range">Range</th> 11259 <th class="th_hal_version">Initial HIDL HAL version</th> 11260 <th class="th_tags">Tags</th> 11261 </tr> 11262 </thead> 11263 11264 <tbody> 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 <tr class="entry" id="dynamic_android.hotPixel.mode"> 11276 <td class="entry_name 11277 " rowspan="3"> 11278 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 11279 </td> 11280 <td class="entry_type"> 11281 <span class="entry_type_name entry_type_name_enum">byte</span> 11282 11283 <span class="entry_type_visibility"> [public]</span> 11284 11285 11286 11287 11288 11289 <ul class="entry_type_enum"> 11290 <li> 11291 <span class="entry_type_enum_name">OFF (v3.2)</span> 11292 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 11293<p>The frame rate must not be reduced relative to sensor raw output 11294for this option.<wbr/></p> 11295<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> 11296 </li> 11297 <li> 11298 <span class="entry_type_enum_name">FAST (v3.2)</span> 11299 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 11300rate relative to sensor raw output.<wbr/></p> 11301<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> 11302 </li> 11303 <li> 11304 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 11305 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 11306of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 11307<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> 11308 </li> 11309 </ul> 11310 11311 </td> <!-- entry_type --> 11312 11313 <td class="entry_description"> 11314 <p>Operational mode for hot pixel correction.<wbr/></p> 11315 </td> 11316 11317 <td class="entry_units"> 11318 </td> 11319 11320 <td class="entry_range"> 11321 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 11322 </td> 11323 11324 <td class="entry_hal_version"> 11325 <p>3.<wbr/>2</p> 11326 </td> 11327 11328 <td class="entry_tags"> 11329 <ul class="entry_tags"> 11330 <li><a href="#tag_V1">V1</a></li> 11331 <li><a href="#tag_RAW">RAW</a></li> 11332 </ul> 11333 </td> 11334 11335 </tr> 11336 <tr class="entries_header"> 11337 <th class="th_details" colspan="6">Details</th> 11338 </tr> 11339 <tr class="entry_cont"> 11340 <td class="entry_details" colspan="6"> 11341 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 11342that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 11343are stuck at an arbitrary value or are oversensitive).<wbr/></p> 11344 </td> 11345 </tr> 11346 11347 11348 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11349 <!-- end of entry --> 11350 11351 11352 11353 <!-- end of kind --> 11354 </tbody> 11355 11356 <!-- end of section --> 11357 <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr> 11358 11359 11360 <tr><td colspan="7" class="kind">controls</td></tr> 11361 11362 <thead class="entries_header"> 11363 <tr> 11364 <th class="th_name">Property Name</th> 11365 <th class="th_type">Type</th> 11366 <th class="th_description">Description</th> 11367 <th class="th_units">Units</th> 11368 <th class="th_range">Range</th> 11369 <th class="th_hal_version">Initial HIDL HAL version</th> 11370 <th class="th_tags">Tags</th> 11371 </tr> 11372 </thead> 11373 11374 <tbody> 11375 11376 11377 11378 11379 11380 11381 11382 11383 11384 11385 <tr class="entry" id="controls_android.jpeg.gpsLocation"> 11386 <td class="entry_name 11387 " rowspan="3"> 11388 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 11389 </td> 11390 <td class="entry_type"> 11391 <span class="entry_type_name">byte</span> 11392 11393 <span class="entry_type_visibility"> [java_public as location]</span> 11394 11395 <span class="entry_type_synthetic">[synthetic] </span> 11396 11397 <span class="entry_type_hwlevel">[legacy] </span> 11398 11399 11400 11401 11402 </td> <!-- entry_type --> 11403 11404 <td class="entry_description"> 11405 <p>A location object to use when generating image GPS metadata.<wbr/></p> 11406 </td> 11407 11408 <td class="entry_units"> 11409 </td> 11410 11411 <td class="entry_range"> 11412 </td> 11413 11414 <td class="entry_hal_version"> 11415 <p>3.<wbr/>2</p> 11416 </td> 11417 11418 <td class="entry_tags"> 11419 </td> 11420 11421 </tr> 11422 <tr class="entries_header"> 11423 <th class="th_details" colspan="6">Details</th> 11424 </tr> 11425 <tr class="entry_cont"> 11426 <td class="entry_details" colspan="6"> 11427 <p>Setting a location object in a request will include the GPS coordinates of the location 11428into any JPEG images captured based on the request.<wbr/> These coordinates can then be 11429viewed by anyone who receives the JPEG image.<wbr/></p> 11430<p>This tag is also used for HEIC image capture.<wbr/></p> 11431 </td> 11432 </tr> 11433 11434 11435 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11436 <!-- end of entry --> 11437 11438 11439 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 11440 <td class="entry_name 11441 " rowspan="3"> 11442 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 11443 </td> 11444 <td class="entry_type"> 11445 <span class="entry_type_name">double</span> 11446 <span class="entry_type_container">x</span> 11447 11448 <span class="entry_type_array"> 11449 3 11450 </span> 11451 <span class="entry_type_visibility"> [ndk_public]</span> 11452 11453 11454 <span class="entry_type_hwlevel">[legacy] </span> 11455 11456 11457 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 11458 11459 11460 </td> <!-- entry_type --> 11461 11462 <td class="entry_description"> 11463 <p>GPS coordinates to include in output JPEG 11464EXIF.<wbr/></p> 11465 </td> 11466 11467 <td class="entry_units"> 11468 </td> 11469 11470 <td class="entry_range"> 11471 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 11472 </td> 11473 11474 <td class="entry_hal_version"> 11475 <p>3.<wbr/>2</p> 11476 </td> 11477 11478 <td class="entry_tags"> 11479 <ul class="entry_tags"> 11480 <li><a href="#tag_BC">BC</a></li> 11481 </ul> 11482 </td> 11483 11484 </tr> 11485 <tr class="entries_header"> 11486 <th class="th_details" colspan="6">Details</th> 11487 </tr> 11488 <tr class="entry_cont"> 11489 <td class="entry_details" colspan="6"> 11490 <p>This tag is also used for HEIC image capture.<wbr/></p> 11491 </td> 11492 </tr> 11493 11494 11495 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11496 <!-- end of entry --> 11497 11498 11499 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 11500 <td class="entry_name 11501 " rowspan="3"> 11502 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 11503 </td> 11504 <td class="entry_type"> 11505 <span class="entry_type_name">byte</span> 11506 11507 <span class="entry_type_visibility"> [ndk_public as string]</span> 11508 11509 11510 <span class="entry_type_hwlevel">[legacy] </span> 11511 11512 11513 11514 11515 </td> <!-- entry_type --> 11516 11517 <td class="entry_description"> 11518 <p>32 characters describing GPS algorithm to 11519include in EXIF.<wbr/></p> 11520 </td> 11521 11522 <td class="entry_units"> 11523 UTF-8 null-terminated string 11524 </td> 11525 11526 <td class="entry_range"> 11527 </td> 11528 11529 <td class="entry_hal_version"> 11530 <p>3.<wbr/>2</p> 11531 </td> 11532 11533 <td class="entry_tags"> 11534 <ul class="entry_tags"> 11535 <li><a href="#tag_BC">BC</a></li> 11536 </ul> 11537 </td> 11538 11539 </tr> 11540 <tr class="entries_header"> 11541 <th class="th_details" colspan="6">Details</th> 11542 </tr> 11543 <tr class="entry_cont"> 11544 <td class="entry_details" colspan="6"> 11545 <p>This tag is also used for HEIC image capture.<wbr/></p> 11546 </td> 11547 </tr> 11548 11549 11550 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11551 <!-- end of entry --> 11552 11553 11554 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 11555 <td class="entry_name 11556 " rowspan="3"> 11557 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 11558 </td> 11559 <td class="entry_type"> 11560 <span class="entry_type_name">int64</span> 11561 11562 <span class="entry_type_visibility"> [ndk_public]</span> 11563 11564 11565 <span class="entry_type_hwlevel">[legacy] </span> 11566 11567 11568 11569 11570 </td> <!-- entry_type --> 11571 11572 <td class="entry_description"> 11573 <p>Time GPS fix was made to include in 11574EXIF.<wbr/></p> 11575 </td> 11576 11577 <td class="entry_units"> 11578 UTC in seconds since January 1,<wbr/> 1970 11579 </td> 11580 11581 <td class="entry_range"> 11582 </td> 11583 11584 <td class="entry_hal_version"> 11585 <p>3.<wbr/>2</p> 11586 </td> 11587 11588 <td class="entry_tags"> 11589 <ul class="entry_tags"> 11590 <li><a href="#tag_BC">BC</a></li> 11591 </ul> 11592 </td> 11593 11594 </tr> 11595 <tr class="entries_header"> 11596 <th class="th_details" colspan="6">Details</th> 11597 </tr> 11598 <tr class="entry_cont"> 11599 <td class="entry_details" colspan="6"> 11600 <p>This tag is also used for HEIC image capture.<wbr/></p> 11601 </td> 11602 </tr> 11603 11604 11605 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11606 <!-- end of entry --> 11607 11608 11609 <tr class="entry" id="controls_android.jpeg.orientation"> 11610 <td class="entry_name 11611 " rowspan="3"> 11612 android.<wbr/>jpeg.<wbr/>orientation 11613 </td> 11614 <td class="entry_type"> 11615 <span class="entry_type_name">int32</span> 11616 11617 <span class="entry_type_visibility"> [public]</span> 11618 11619 11620 <span class="entry_type_hwlevel">[legacy] </span> 11621 11622 11623 11624 11625 </td> <!-- entry_type --> 11626 11627 <td class="entry_description"> 11628 <p>The orientation for a JPEG image.<wbr/></p> 11629 </td> 11630 11631 <td class="entry_units"> 11632 Degrees in multiples of 90 11633 </td> 11634 11635 <td class="entry_range"> 11636 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 11637 </td> 11638 11639 <td class="entry_hal_version"> 11640 <p>3.<wbr/>2</p> 11641 </td> 11642 11643 <td class="entry_tags"> 11644 <ul class="entry_tags"> 11645 <li><a href="#tag_BC">BC</a></li> 11646 </ul> 11647 </td> 11648 11649 </tr> 11650 <tr class="entries_header"> 11651 <th class="th_details" colspan="6">Details</th> 11652 </tr> 11653 <tr class="entry_cont"> 11654 <td class="entry_details" colspan="6"> 11655 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 11656to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 11657upright.<wbr/></p> 11658<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 11659rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 11660the thumbnail data will also be rotated.<wbr/></p> 11661<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 11662by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 11663<p>To translate from the device orientation given by the Android sensor APIs for camera 11664sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p> 11665<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 11666 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 11667 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 11668 11669 //<wbr/> Round device orientation to a multiple of 90 11670 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 11671 11672 //<wbr/> Reverse device orientation for front-facing cameras 11673 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 11674 if (facingFront) deviceOrientation = -deviceOrientation; 11675 11676 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 11677 //<wbr/> the image upright relative to the device orientation 11678 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 11679 11680 return jpegOrientation; 11681} 11682</code></pre> 11683<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will 11684also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p> 11685<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which 11686case the rotation is reflected by 11687<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by 11688rotating the image data itself.<wbr/></p> 11689 </td> 11690 </tr> 11691 11692 11693 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11694 <!-- end of entry --> 11695 11696 11697 <tr class="entry" id="controls_android.jpeg.quality"> 11698 <td class="entry_name 11699 " rowspan="3"> 11700 android.<wbr/>jpeg.<wbr/>quality 11701 </td> 11702 <td class="entry_type"> 11703 <span class="entry_type_name">byte</span> 11704 11705 <span class="entry_type_visibility"> [public]</span> 11706 11707 11708 <span class="entry_type_hwlevel">[legacy] </span> 11709 11710 11711 11712 11713 </td> <!-- entry_type --> 11714 11715 <td class="entry_description"> 11716 <p>Compression quality of the final JPEG 11717image.<wbr/></p> 11718 </td> 11719 11720 <td class="entry_units"> 11721 </td> 11722 11723 <td class="entry_range"> 11724 <p>1-100; larger is higher quality</p> 11725 </td> 11726 11727 <td class="entry_hal_version"> 11728 <p>3.<wbr/>2</p> 11729 </td> 11730 11731 <td class="entry_tags"> 11732 <ul class="entry_tags"> 11733 <li><a href="#tag_BC">BC</a></li> 11734 </ul> 11735 </td> 11736 11737 </tr> 11738 <tr class="entries_header"> 11739 <th class="th_details" colspan="6">Details</th> 11740 </tr> 11741 <tr class="entry_cont"> 11742 <td class="entry_details" colspan="6"> 11743 <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality 11744of the HEIC image capture.<wbr/></p> 11745 </td> 11746 </tr> 11747 11748 11749 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11750 <!-- end of entry --> 11751 11752 11753 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 11754 <td class="entry_name 11755 " rowspan="3"> 11756 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 11757 </td> 11758 <td class="entry_type"> 11759 <span class="entry_type_name">byte</span> 11760 11761 <span class="entry_type_visibility"> [public]</span> 11762 11763 11764 <span class="entry_type_hwlevel">[legacy] </span> 11765 11766 11767 11768 11769 </td> <!-- entry_type --> 11770 11771 <td class="entry_description"> 11772 <p>Compression quality of JPEG 11773thumbnail.<wbr/></p> 11774 </td> 11775 11776 <td class="entry_units"> 11777 </td> 11778 11779 <td class="entry_range"> 11780 <p>1-100; larger is higher quality</p> 11781 </td> 11782 11783 <td class="entry_hal_version"> 11784 <p>3.<wbr/>2</p> 11785 </td> 11786 11787 <td class="entry_tags"> 11788 <ul class="entry_tags"> 11789 <li><a href="#tag_BC">BC</a></li> 11790 </ul> 11791 </td> 11792 11793 </tr> 11794 <tr class="entries_header"> 11795 <th class="th_details" colspan="6">Details</th> 11796 </tr> 11797 <tr class="entry_cont"> 11798 <td class="entry_details" colspan="6"> 11799 <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p> 11800 </td> 11801 </tr> 11802 11803 11804 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11805 <!-- end of entry --> 11806 11807 11808 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 11809 <td class="entry_name 11810 " rowspan="5"> 11811 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 11812 </td> 11813 <td class="entry_type"> 11814 <span class="entry_type_name">int32</span> 11815 <span class="entry_type_container">x</span> 11816 11817 <span class="entry_type_array"> 11818 2 11819 </span> 11820 <span class="entry_type_visibility"> [public as size]</span> 11821 11822 11823 <span class="entry_type_hwlevel">[legacy] </span> 11824 11825 11826 11827 11828 </td> <!-- entry_type --> 11829 11830 <td class="entry_description"> 11831 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 11832 </td> 11833 11834 <td class="entry_units"> 11835 </td> 11836 11837 <td class="entry_range"> 11838 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 11839 </td> 11840 11841 <td class="entry_hal_version"> 11842 <p>3.<wbr/>2</p> 11843 </td> 11844 11845 <td class="entry_tags"> 11846 <ul class="entry_tags"> 11847 <li><a href="#tag_BC">BC</a></li> 11848 </ul> 11849 </td> 11850 11851 </tr> 11852 <tr class="entries_header"> 11853 <th class="th_details" colspan="6">Details</th> 11854 </tr> 11855 <tr class="entry_cont"> 11856 <td class="entry_details" colspan="6"> 11857 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 11858but the captured JPEG will still be a valid image.<wbr/></p> 11859<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 11860should have the same aspect ratio as the main JPEG output.<wbr/></p> 11861<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 11862ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 11863For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1186416:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 11865generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 11866Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 11867<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 11868the camera device will handle thumbnail rotation in one of the following ways:</p> 11869<ul> 11870<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 11871 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 11872<li>Rotate the jpeg and thumbnail image data and not set 11873 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 11874 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 11875 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 11876 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 11877 size.<wbr/></li> 11878</ul> 11879<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the 11880the thumbnail rotation is reflected by 11881<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by 11882rotating the thumbnail data itself.<wbr/></p> 11883 </td> 11884 </tr> 11885 11886 <tr class="entries_header"> 11887 <th class="th_details" colspan="6">HAL Implementation Details</th> 11888 </tr> 11889 <tr class="entry_cont"> 11890 <td class="entry_details" colspan="6"> 11891 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 11892The cropping must be done on the primary jpeg image rather than the sensor pre-correction 11893active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't 11894apply to the thumbnail image cropping.<wbr/></p> 11895 </td> 11896 </tr> 11897 11898 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11899 <!-- end of entry --> 11900 11901 11902 11903 <!-- end of kind --> 11904 </tbody> 11905 <tr><td colspan="7" class="kind">static</td></tr> 11906 11907 <thead class="entries_header"> 11908 <tr> 11909 <th class="th_name">Property Name</th> 11910 <th class="th_type">Type</th> 11911 <th class="th_description">Description</th> 11912 <th class="th_units">Units</th> 11913 <th class="th_range">Range</th> 11914 <th class="th_hal_version">Initial HIDL HAL version</th> 11915 <th class="th_tags">Tags</th> 11916 </tr> 11917 </thead> 11918 11919 <tbody> 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 11930 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 11931 <td class="entry_name 11932 " rowspan="3"> 11933 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 11934 </td> 11935 <td class="entry_type"> 11936 <span class="entry_type_name">int32</span> 11937 <span class="entry_type_container">x</span> 11938 11939 <span class="entry_type_array"> 11940 2 x n 11941 </span> 11942 <span class="entry_type_visibility"> [public as size]</span> 11943 11944 11945 <span class="entry_type_hwlevel">[legacy] </span> 11946 11947 11948 11949 11950 </td> <!-- entry_type --> 11951 11952 <td class="entry_description"> 11953 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this 11954camera device.<wbr/></p> 11955 </td> 11956 11957 <td class="entry_units"> 11958 </td> 11959 11960 <td class="entry_range"> 11961 </td> 11962 11963 <td class="entry_hal_version"> 11964 <p>3.<wbr/>2</p> 11965 </td> 11966 11967 <td class="entry_tags"> 11968 <ul class="entry_tags"> 11969 <li><a href="#tag_BC">BC</a></li> 11970 </ul> 11971 </td> 11972 11973 </tr> 11974 <tr class="entries_header"> 11975 <th class="th_details" colspan="6">Details</th> 11976 </tr> 11977 <tr class="entry_cont"> 11978 <td class="entry_details" colspan="6"> 11979 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no 11980thumbnail should be generated.<wbr/></p> 11981<p>Below condiditions will be satisfied for this size list:</p> 11982<ul> 11983<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 11984If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 11985<li>The aspect ratio of the largest thumbnail size will be same as the 11986aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 11987The largest size is defined as the size that has the largest pixel area 11988in a given size list.<wbr/></li> 11989<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 11990one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 11991and vice versa.<wbr/></li> 11992<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li> 11993</ul> 11994<p>This list is also used as supported thumbnail sizes for HEIC image format capture.<wbr/></p> 11995 </td> 11996 </tr> 11997 11998 11999 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12000 <!-- end of entry --> 12001 12002 12003 <tr class="entry" id="static_android.jpeg.maxSize"> 12004 <td class="entry_name 12005 " rowspan="3"> 12006 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 12007 </td> 12008 <td class="entry_type"> 12009 <span class="entry_type_name">int32</span> 12010 12011 <span class="entry_type_visibility"> [system]</span> 12012 12013 12014 12015 12016 12017 12018 </td> <!-- entry_type --> 12019 12020 <td class="entry_description"> 12021 <p>Maximum size in bytes for the compressed 12022JPEG buffer</p> 12023 </td> 12024 12025 <td class="entry_units"> 12026 </td> 12027 12028 <td class="entry_range"> 12029 <p>Must be large enough to fit any JPEG produced by 12030the camera</p> 12031 </td> 12032 12033 <td class="entry_hal_version"> 12034 <p>3.<wbr/>2</p> 12035 </td> 12036 12037 <td class="entry_tags"> 12038 </td> 12039 12040 </tr> 12041 <tr class="entries_header"> 12042 <th class="th_details" colspan="6">Details</th> 12043 </tr> 12044 <tr class="entry_cont"> 12045 <td class="entry_details" colspan="6"> 12046 <p>This is used for sizing the gralloc buffers for 12047JPEG</p> 12048 </td> 12049 </tr> 12050 12051 12052 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12053 <!-- end of entry --> 12054 12055 12056 12057 <!-- end of kind --> 12058 </tbody> 12059 <tr><td colspan="7" class="kind">dynamic</td></tr> 12060 12061 <thead class="entries_header"> 12062 <tr> 12063 <th class="th_name">Property Name</th> 12064 <th class="th_type">Type</th> 12065 <th class="th_description">Description</th> 12066 <th class="th_units">Units</th> 12067 <th class="th_range">Range</th> 12068 <th class="th_hal_version">Initial HIDL HAL version</th> 12069 <th class="th_tags">Tags</th> 12070 </tr> 12071 </thead> 12072 12073 <tbody> 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> 12085 <td class="entry_name 12086 " rowspan="3"> 12087 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 12088 </td> 12089 <td class="entry_type"> 12090 <span class="entry_type_name">byte</span> 12091 12092 <span class="entry_type_visibility"> [java_public as location]</span> 12093 12094 <span class="entry_type_synthetic">[synthetic] </span> 12095 12096 <span class="entry_type_hwlevel">[legacy] </span> 12097 12098 12099 12100 12101 </td> <!-- entry_type --> 12102 12103 <td class="entry_description"> 12104 <p>A location object to use when generating image GPS metadata.<wbr/></p> 12105 </td> 12106 12107 <td class="entry_units"> 12108 </td> 12109 12110 <td class="entry_range"> 12111 </td> 12112 12113 <td class="entry_hal_version"> 12114 <p>3.<wbr/>2</p> 12115 </td> 12116 12117 <td class="entry_tags"> 12118 </td> 12119 12120 </tr> 12121 <tr class="entries_header"> 12122 <th class="th_details" colspan="6">Details</th> 12123 </tr> 12124 <tr class="entry_cont"> 12125 <td class="entry_details" colspan="6"> 12126 <p>Setting a location object in a request will include the GPS coordinates of the location 12127into any JPEG images captured based on the request.<wbr/> These coordinates can then be 12128viewed by anyone who receives the JPEG image.<wbr/></p> 12129<p>This tag is also used for HEIC image capture.<wbr/></p> 12130 </td> 12131 </tr> 12132 12133 12134 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12135 <!-- end of entry --> 12136 12137 12138 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 12139 <td class="entry_name 12140 " rowspan="3"> 12141 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 12142 </td> 12143 <td class="entry_type"> 12144 <span class="entry_type_name">double</span> 12145 <span class="entry_type_container">x</span> 12146 12147 <span class="entry_type_array"> 12148 3 12149 </span> 12150 <span class="entry_type_visibility"> [ndk_public]</span> 12151 12152 12153 <span class="entry_type_hwlevel">[legacy] </span> 12154 12155 12156 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 12157 12158 12159 </td> <!-- entry_type --> 12160 12161 <td class="entry_description"> 12162 <p>GPS coordinates to include in output JPEG 12163EXIF.<wbr/></p> 12164 </td> 12165 12166 <td class="entry_units"> 12167 </td> 12168 12169 <td class="entry_range"> 12170 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 12171 </td> 12172 12173 <td class="entry_hal_version"> 12174 <p>3.<wbr/>2</p> 12175 </td> 12176 12177 <td class="entry_tags"> 12178 <ul class="entry_tags"> 12179 <li><a href="#tag_BC">BC</a></li> 12180 </ul> 12181 </td> 12182 12183 </tr> 12184 <tr class="entries_header"> 12185 <th class="th_details" colspan="6">Details</th> 12186 </tr> 12187 <tr class="entry_cont"> 12188 <td class="entry_details" colspan="6"> 12189 <p>This tag is also used for HEIC image capture.<wbr/></p> 12190 </td> 12191 </tr> 12192 12193 12194 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12195 <!-- end of entry --> 12196 12197 12198 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 12199 <td class="entry_name 12200 " rowspan="3"> 12201 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 12202 </td> 12203 <td class="entry_type"> 12204 <span class="entry_type_name">byte</span> 12205 12206 <span class="entry_type_visibility"> [ndk_public as string]</span> 12207 12208 12209 <span class="entry_type_hwlevel">[legacy] </span> 12210 12211 12212 12213 12214 </td> <!-- entry_type --> 12215 12216 <td class="entry_description"> 12217 <p>32 characters describing GPS algorithm to 12218include in EXIF.<wbr/></p> 12219 </td> 12220 12221 <td class="entry_units"> 12222 UTF-8 null-terminated string 12223 </td> 12224 12225 <td class="entry_range"> 12226 </td> 12227 12228 <td class="entry_hal_version"> 12229 <p>3.<wbr/>2</p> 12230 </td> 12231 12232 <td class="entry_tags"> 12233 <ul class="entry_tags"> 12234 <li><a href="#tag_BC">BC</a></li> 12235 </ul> 12236 </td> 12237 12238 </tr> 12239 <tr class="entries_header"> 12240 <th class="th_details" colspan="6">Details</th> 12241 </tr> 12242 <tr class="entry_cont"> 12243 <td class="entry_details" colspan="6"> 12244 <p>This tag is also used for HEIC image capture.<wbr/></p> 12245 </td> 12246 </tr> 12247 12248 12249 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12250 <!-- end of entry --> 12251 12252 12253 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 12254 <td class="entry_name 12255 " rowspan="3"> 12256 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 12257 </td> 12258 <td class="entry_type"> 12259 <span class="entry_type_name">int64</span> 12260 12261 <span class="entry_type_visibility"> [ndk_public]</span> 12262 12263 12264 <span class="entry_type_hwlevel">[legacy] </span> 12265 12266 12267 12268 12269 </td> <!-- entry_type --> 12270 12271 <td class="entry_description"> 12272 <p>Time GPS fix was made to include in 12273EXIF.<wbr/></p> 12274 </td> 12275 12276 <td class="entry_units"> 12277 UTC in seconds since January 1,<wbr/> 1970 12278 </td> 12279 12280 <td class="entry_range"> 12281 </td> 12282 12283 <td class="entry_hal_version"> 12284 <p>3.<wbr/>2</p> 12285 </td> 12286 12287 <td class="entry_tags"> 12288 <ul class="entry_tags"> 12289 <li><a href="#tag_BC">BC</a></li> 12290 </ul> 12291 </td> 12292 12293 </tr> 12294 <tr class="entries_header"> 12295 <th class="th_details" colspan="6">Details</th> 12296 </tr> 12297 <tr class="entry_cont"> 12298 <td class="entry_details" colspan="6"> 12299 <p>This tag is also used for HEIC image capture.<wbr/></p> 12300 </td> 12301 </tr> 12302 12303 12304 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12305 <!-- end of entry --> 12306 12307 12308 <tr class="entry" id="dynamic_android.jpeg.orientation"> 12309 <td class="entry_name 12310 " rowspan="3"> 12311 android.<wbr/>jpeg.<wbr/>orientation 12312 </td> 12313 <td class="entry_type"> 12314 <span class="entry_type_name">int32</span> 12315 12316 <span class="entry_type_visibility"> [public]</span> 12317 12318 12319 <span class="entry_type_hwlevel">[legacy] </span> 12320 12321 12322 12323 12324 </td> <!-- entry_type --> 12325 12326 <td class="entry_description"> 12327 <p>The orientation for a JPEG image.<wbr/></p> 12328 </td> 12329 12330 <td class="entry_units"> 12331 Degrees in multiples of 90 12332 </td> 12333 12334 <td class="entry_range"> 12335 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 12336 </td> 12337 12338 <td class="entry_hal_version"> 12339 <p>3.<wbr/>2</p> 12340 </td> 12341 12342 <td class="entry_tags"> 12343 <ul class="entry_tags"> 12344 <li><a href="#tag_BC">BC</a></li> 12345 </ul> 12346 </td> 12347 12348 </tr> 12349 <tr class="entries_header"> 12350 <th class="th_details" colspan="6">Details</th> 12351 </tr> 12352 <tr class="entry_cont"> 12353 <td class="entry_details" colspan="6"> 12354 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 12355to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 12356upright.<wbr/></p> 12357<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 12358rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 12359the thumbnail data will also be rotated.<wbr/></p> 12360<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 12361by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 12362<p>To translate from the device orientation given by the Android sensor APIs for camera 12363sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p> 12364<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 12365 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 12366 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 12367 12368 //<wbr/> Round device orientation to a multiple of 90 12369 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 12370 12371 //<wbr/> Reverse device orientation for front-facing cameras 12372 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 12373 if (facingFront) deviceOrientation = -deviceOrientation; 12374 12375 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 12376 //<wbr/> the image upright relative to the device orientation 12377 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 12378 12379 return jpegOrientation; 12380} 12381</code></pre> 12382<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will 12383also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p> 12384<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which 12385case the rotation is reflected by 12386<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by 12387rotating the image data itself.<wbr/></p> 12388 </td> 12389 </tr> 12390 12391 12392 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12393 <!-- end of entry --> 12394 12395 12396 <tr class="entry" id="dynamic_android.jpeg.quality"> 12397 <td class="entry_name 12398 " rowspan="3"> 12399 android.<wbr/>jpeg.<wbr/>quality 12400 </td> 12401 <td class="entry_type"> 12402 <span class="entry_type_name">byte</span> 12403 12404 <span class="entry_type_visibility"> [public]</span> 12405 12406 12407 <span class="entry_type_hwlevel">[legacy] </span> 12408 12409 12410 12411 12412 </td> <!-- entry_type --> 12413 12414 <td class="entry_description"> 12415 <p>Compression quality of the final JPEG 12416image.<wbr/></p> 12417 </td> 12418 12419 <td class="entry_units"> 12420 </td> 12421 12422 <td class="entry_range"> 12423 <p>1-100; larger is higher quality</p> 12424 </td> 12425 12426 <td class="entry_hal_version"> 12427 <p>3.<wbr/>2</p> 12428 </td> 12429 12430 <td class="entry_tags"> 12431 <ul class="entry_tags"> 12432 <li><a href="#tag_BC">BC</a></li> 12433 </ul> 12434 </td> 12435 12436 </tr> 12437 <tr class="entries_header"> 12438 <th class="th_details" colspan="6">Details</th> 12439 </tr> 12440 <tr class="entry_cont"> 12441 <td class="entry_details" colspan="6"> 12442 <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality 12443of the HEIC image capture.<wbr/></p> 12444 </td> 12445 </tr> 12446 12447 12448 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12449 <!-- end of entry --> 12450 12451 12452 <tr class="entry" id="dynamic_android.jpeg.size"> 12453 <td class="entry_name 12454 " rowspan="3"> 12455 android.<wbr/>jpeg.<wbr/>size 12456 </td> 12457 <td class="entry_type"> 12458 <span class="entry_type_name">int32</span> 12459 12460 <span class="entry_type_visibility"> [system]</span> 12461 12462 12463 12464 12465 12466 12467 </td> <!-- entry_type --> 12468 12469 <td class="entry_description"> 12470 <p>The size of the compressed JPEG image,<wbr/> in 12471bytes</p> 12472 </td> 12473 12474 <td class="entry_units"> 12475 </td> 12476 12477 <td class="entry_range"> 12478 <p>>= 0</p> 12479 </td> 12480 12481 <td class="entry_hal_version"> 12482 <p>3.<wbr/>2</p> 12483 </td> 12484 12485 <td class="entry_tags"> 12486 <ul class="entry_tags"> 12487 <li><a href="#tag_FUTURE">FUTURE</a></li> 12488 </ul> 12489 </td> 12490 12491 </tr> 12492 <tr class="entries_header"> 12493 <th class="th_details" colspan="6">Details</th> 12494 </tr> 12495 <tr class="entry_cont"> 12496 <td class="entry_details" colspan="6"> 12497 <p>If no JPEG output is produced for the request,<wbr/> 12498this must be 0.<wbr/></p> 12499<p>Otherwise,<wbr/> this describes the real size of the compressed 12500JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 12501if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 12502has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 12503the JPEG stream will be 1000000 bytes,<wbr/> of which the first 12504500000 make up the real data.<wbr/></p> 12505 </td> 12506 </tr> 12507 12508 12509 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12510 <!-- end of entry --> 12511 12512 12513 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 12514 <td class="entry_name 12515 " rowspan="3"> 12516 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 12517 </td> 12518 <td class="entry_type"> 12519 <span class="entry_type_name">byte</span> 12520 12521 <span class="entry_type_visibility"> [public]</span> 12522 12523 12524 <span class="entry_type_hwlevel">[legacy] </span> 12525 12526 12527 12528 12529 </td> <!-- entry_type --> 12530 12531 <td class="entry_description"> 12532 <p>Compression quality of JPEG 12533thumbnail.<wbr/></p> 12534 </td> 12535 12536 <td class="entry_units"> 12537 </td> 12538 12539 <td class="entry_range"> 12540 <p>1-100; larger is higher quality</p> 12541 </td> 12542 12543 <td class="entry_hal_version"> 12544 <p>3.<wbr/>2</p> 12545 </td> 12546 12547 <td class="entry_tags"> 12548 <ul class="entry_tags"> 12549 <li><a href="#tag_BC">BC</a></li> 12550 </ul> 12551 </td> 12552 12553 </tr> 12554 <tr class="entries_header"> 12555 <th class="th_details" colspan="6">Details</th> 12556 </tr> 12557 <tr class="entry_cont"> 12558 <td class="entry_details" colspan="6"> 12559 <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p> 12560 </td> 12561 </tr> 12562 12563 12564 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12565 <!-- end of entry --> 12566 12567 12568 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 12569 <td class="entry_name 12570 " rowspan="5"> 12571 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 12572 </td> 12573 <td class="entry_type"> 12574 <span class="entry_type_name">int32</span> 12575 <span class="entry_type_container">x</span> 12576 12577 <span class="entry_type_array"> 12578 2 12579 </span> 12580 <span class="entry_type_visibility"> [public as size]</span> 12581 12582 12583 <span class="entry_type_hwlevel">[legacy] </span> 12584 12585 12586 12587 12588 </td> <!-- entry_type --> 12589 12590 <td class="entry_description"> 12591 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 12592 </td> 12593 12594 <td class="entry_units"> 12595 </td> 12596 12597 <td class="entry_range"> 12598 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 12599 </td> 12600 12601 <td class="entry_hal_version"> 12602 <p>3.<wbr/>2</p> 12603 </td> 12604 12605 <td class="entry_tags"> 12606 <ul class="entry_tags"> 12607 <li><a href="#tag_BC">BC</a></li> 12608 </ul> 12609 </td> 12610 12611 </tr> 12612 <tr class="entries_header"> 12613 <th class="th_details" colspan="6">Details</th> 12614 </tr> 12615 <tr class="entry_cont"> 12616 <td class="entry_details" colspan="6"> 12617 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 12618but the captured JPEG will still be a valid image.<wbr/></p> 12619<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 12620should have the same aspect ratio as the main JPEG output.<wbr/></p> 12621<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 12622ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 12623For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1262416:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 12625generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 12626Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 12627<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 12628the camera device will handle thumbnail rotation in one of the following ways:</p> 12629<ul> 12630<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 12631 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 12632<li>Rotate the jpeg and thumbnail image data and not set 12633 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 12634 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 12635 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 12636 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 12637 size.<wbr/></li> 12638</ul> 12639<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the 12640the thumbnail rotation is reflected by 12641<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by 12642rotating the thumbnail data itself.<wbr/></p> 12643 </td> 12644 </tr> 12645 12646 <tr class="entries_header"> 12647 <th class="th_details" colspan="6">HAL Implementation Details</th> 12648 </tr> 12649 <tr class="entry_cont"> 12650 <td class="entry_details" colspan="6"> 12651 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 12652The cropping must be done on the primary jpeg image rather than the sensor pre-correction 12653active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't 12654apply to the thumbnail image cropping.<wbr/></p> 12655 </td> 12656 </tr> 12657 12658 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12659 <!-- end of entry --> 12660 12661 12662 12663 <!-- end of kind --> 12664 </tbody> 12665 12666 <!-- end of section --> 12667 <tr><td colspan="7" id="section_lens" class="section">lens</td></tr> 12668 12669 12670 <tr><td colspan="7" class="kind">controls</td></tr> 12671 12672 <thead class="entries_header"> 12673 <tr> 12674 <th class="th_name">Property Name</th> 12675 <th class="th_type">Type</th> 12676 <th class="th_description">Description</th> 12677 <th class="th_units">Units</th> 12678 <th class="th_range">Range</th> 12679 <th class="th_hal_version">Initial HIDL HAL version</th> 12680 <th class="th_tags">Tags</th> 12681 </tr> 12682 </thead> 12683 12684 <tbody> 12685 12686 12687 12688 12689 12690 12691 12692 12693 12694 12695 <tr class="entry" id="controls_android.lens.aperture"> 12696 <td class="entry_name 12697 " rowspan="3"> 12698 android.<wbr/>lens.<wbr/>aperture 12699 </td> 12700 <td class="entry_type"> 12701 <span class="entry_type_name">float</span> 12702 12703 <span class="entry_type_visibility"> [public]</span> 12704 12705 12706 <span class="entry_type_hwlevel">[full] </span> 12707 12708 12709 12710 12711 </td> <!-- entry_type --> 12712 12713 <td class="entry_description"> 12714 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 12715effective aperture diameter.<wbr/></p> 12716 </td> 12717 12718 <td class="entry_units"> 12719 The f-number (f/<wbr/>N) 12720 </td> 12721 12722 <td class="entry_range"> 12723 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 12724 </td> 12725 12726 <td class="entry_hal_version"> 12727 <p>3.<wbr/>2</p> 12728 </td> 12729 12730 <td class="entry_tags"> 12731 <ul class="entry_tags"> 12732 <li><a href="#tag_V1">V1</a></li> 12733 </ul> 12734 </td> 12735 12736 </tr> 12737 <tr class="entries_header"> 12738 <th class="th_details" colspan="6">Details</th> 12739 </tr> 12740 <tr class="entry_cont"> 12741 <td class="entry_details" colspan="6"> 12742 <p>Setting this value is only supported on the camera devices that have a variable 12743aperture lens.<wbr/></p> 12744<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 12745this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 12746<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> 12747to achieve manual exposure control.<wbr/></p> 12748<p>The requested aperture value may take several frames to reach the 12749requested value; the camera device will report the current (intermediate) 12750aperture size in capture result metadata while the aperture is changing.<wbr/> 12751While 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> 12752<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 12753the ON modes,<wbr/> this will be overridden by the camera device 12754auto-exposure algorithm,<wbr/> the overridden values are then provided 12755back to the user in the corresponding result.<wbr/></p> 12756 </td> 12757 </tr> 12758 12759 12760 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12761 <!-- end of entry --> 12762 12763 12764 <tr class="entry" id="controls_android.lens.filterDensity"> 12765 <td class="entry_name 12766 " rowspan="3"> 12767 android.<wbr/>lens.<wbr/>filter<wbr/>Density 12768 </td> 12769 <td class="entry_type"> 12770 <span class="entry_type_name">float</span> 12771 12772 <span class="entry_type_visibility"> [public]</span> 12773 12774 12775 <span class="entry_type_hwlevel">[full] </span> 12776 12777 12778 12779 12780 </td> <!-- entry_type --> 12781 12782 <td class="entry_description"> 12783 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 12784 </td> 12785 12786 <td class="entry_units"> 12787 Exposure Value (EV) 12788 </td> 12789 12790 <td class="entry_range"> 12791 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 12792 </td> 12793 12794 <td class="entry_hal_version"> 12795 <p>3.<wbr/>2</p> 12796 </td> 12797 12798 <td class="entry_tags"> 12799 <ul class="entry_tags"> 12800 <li><a href="#tag_V1">V1</a></li> 12801 </ul> 12802 </td> 12803 12804 </tr> 12805 <tr class="entries_header"> 12806 <th class="th_details" colspan="6">Details</th> 12807 </tr> 12808 <tr class="entry_cont"> 12809 <td class="entry_details" colspan="6"> 12810 <p>This control will not be supported on most camera devices.<wbr/></p> 12811<p>Lens filters are typically used to lower the amount of light the 12812sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 12813step is the standard logarithmic representation,<wbr/> which are 12814non-negative,<wbr/> and inversely proportional to the amount of light 12815hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 12816in no reduction of the incoming light,<wbr/> and setting this to 2 would 12817mean that the filter is set to reduce incoming light by two stops 12818(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 12819<p>It may take several frames before the lens filter density changes 12820to the requested value.<wbr/> While the filter density is still changing,<wbr/> 12821<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 12822 </td> 12823 </tr> 12824 12825 12826 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12827 <!-- end of entry --> 12828 12829 12830 <tr class="entry" id="controls_android.lens.focalLength"> 12831 <td class="entry_name 12832 " rowspan="5"> 12833 android.<wbr/>lens.<wbr/>focal<wbr/>Length 12834 </td> 12835 <td class="entry_type"> 12836 <span class="entry_type_name">float</span> 12837 12838 <span class="entry_type_visibility"> [public]</span> 12839 12840 12841 <span class="entry_type_hwlevel">[legacy] </span> 12842 12843 12844 12845 12846 </td> <!-- entry_type --> 12847 12848 <td class="entry_description"> 12849 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 12850 </td> 12851 12852 <td class="entry_units"> 12853 Millimeters 12854 </td> 12855 12856 <td class="entry_range"> 12857 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 12858 </td> 12859 12860 <td class="entry_hal_version"> 12861 <p>3.<wbr/>2</p> 12862 </td> 12863 12864 <td class="entry_tags"> 12865 <ul class="entry_tags"> 12866 <li><a href="#tag_V1">V1</a></li> 12867 </ul> 12868 </td> 12869 12870 </tr> 12871 <tr class="entries_header"> 12872 <th class="th_details" colspan="6">Details</th> 12873 </tr> 12874 <tr class="entry_cont"> 12875 <td class="entry_details" colspan="6"> 12876 <p>This setting controls the physical focal length of the camera 12877device's lens.<wbr/> Changing the focal length changes the field of 12878view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 12879<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 12880setting won't be applied instantaneously,<wbr/> and it may take several 12881frames before the lens can change to the requested focal length.<wbr/> 12882While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 12883be set to MOVING.<wbr/></p> 12884<p>Optical zoom will not be supported on most devices.<wbr/></p> 12885 </td> 12886 </tr> 12887 12888 <tr class="entries_header"> 12889 <th class="th_details" colspan="6">HAL Implementation Details</th> 12890 </tr> 12891 <tr class="entry_cont"> 12892 <td class="entry_details" colspan="6"> 12893 <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and 12894cropRegion change in the same request,<wbr/> the camera device must make sure that the new 12895focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there 12896is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied 12897immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device 12898will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p> 12899 </td> 12900 </tr> 12901 12902 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12903 <!-- end of entry --> 12904 12905 12906 <tr class="entry" id="controls_android.lens.focusDistance"> 12907 <td class="entry_name 12908 " rowspan="3"> 12909 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 12910 </td> 12911 <td class="entry_type"> 12912 <span class="entry_type_name">float</span> 12913 12914 <span class="entry_type_visibility"> [public]</span> 12915 12916 12917 <span class="entry_type_hwlevel">[full] </span> 12918 12919 12920 12921 12922 </td> <!-- entry_type --> 12923 12924 <td class="entry_description"> 12925 <p>Desired distance to plane of sharpest focus,<wbr/> 12926measured from frontmost surface of the lens.<wbr/></p> 12927 </td> 12928 12929 <td class="entry_units"> 12930 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 12931 </td> 12932 12933 <td class="entry_range"> 12934 <p>>= 0</p> 12935 </td> 12936 12937 <td class="entry_hal_version"> 12938 <p>3.<wbr/>2</p> 12939 </td> 12940 12941 <td class="entry_tags"> 12942 <ul class="entry_tags"> 12943 <li><a href="#tag_BC">BC</a></li> 12944 <li><a href="#tag_V1">V1</a></li> 12945 </ul> 12946 </td> 12947 12948 </tr> 12949 <tr class="entries_header"> 12950 <th class="th_details" colspan="6">Details</th> 12951 </tr> 12952 <tr class="entry_cont"> 12953 <td class="entry_details" colspan="6"> 12954 <p>This control can be used for setting manual focus,<wbr/> on devices that support 12955the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see 12956<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p> 12957<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to 12958<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> 12959<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 12960instantaneously,<wbr/> and it may take several frames before the lens 12961can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 12962<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 12963<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code> 12964for infinity focus.<wbr/></p> 12965 </td> 12966 </tr> 12967 12968 12969 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12970 <!-- end of entry --> 12971 12972 12973 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 12974 <td class="entry_name 12975 " rowspan="3"> 12976 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 12977 </td> 12978 <td class="entry_type"> 12979 <span class="entry_type_name entry_type_name_enum">byte</span> 12980 12981 <span class="entry_type_visibility"> [public]</span> 12982 12983 12984 <span class="entry_type_hwlevel">[limited] </span> 12985 12986 12987 12988 <ul class="entry_type_enum"> 12989 <li> 12990 <span class="entry_type_enum_name">OFF (v3.2)</span> 12991 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 12992 </li> 12993 <li> 12994 <span class="entry_type_enum_name">ON (v3.2)</span> 12995 <span class="entry_type_enum_optional">[optional]</span> 12996 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 12997 </li> 12998 </ul> 12999 13000 </td> <!-- entry_type --> 13001 13002 <td class="entry_description"> 13003 <p>Sets whether the camera device uses optical image stabilization (OIS) 13004when capturing images.<wbr/></p> 13005 </td> 13006 13007 <td class="entry_units"> 13008 </td> 13009 13010 <td class="entry_range"> 13011 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 13012 </td> 13013 13014 <td class="entry_hal_version"> 13015 <p>3.<wbr/>2</p> 13016 </td> 13017 13018 <td class="entry_tags"> 13019 <ul class="entry_tags"> 13020 <li><a href="#tag_V1">V1</a></li> 13021 </ul> 13022 </td> 13023 13024 </tr> 13025 <tr class="entries_header"> 13026 <th class="th_details" colspan="6">Details</th> 13027 </tr> 13028 <tr class="entry_cont"> 13029 <td class="entry_details" colspan="6"> 13030 <p>OIS is used to compensate for motion blur due to small 13031movements of the camera during capture.<wbr/> Unlike digital image 13032stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 13033makes use of mechanical elements to stabilize the camera 13034sensor,<wbr/> and thus allows for longer exposure times before 13035camera shake becomes apparent.<wbr/></p> 13036<p>Switching between different optical stabilization modes may take several 13037frames to initialize,<wbr/> the camera device will report the current mode in 13038capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 13039optical stabilization modes in the first several capture results may still 13040be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 13041<p>If a camera device supports both OIS and digital image stabilization 13042(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 13043interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 13044<p>Not all devices will support OIS; see 13045<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 13046available controls.<wbr/></p> 13047 </td> 13048 </tr> 13049 13050 13051 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13052 <!-- end of entry --> 13053 13054 13055 13056 <!-- end of kind --> 13057 </tbody> 13058 <tr><td colspan="7" class="kind">static</td></tr> 13059 13060 <thead class="entries_header"> 13061 <tr> 13062 <th class="th_name">Property Name</th> 13063 <th class="th_type">Type</th> 13064 <th class="th_description">Description</th> 13065 <th class="th_units">Units</th> 13066 <th class="th_range">Range</th> 13067 <th class="th_hal_version">Initial HIDL HAL version</th> 13068 <th class="th_tags">Tags</th> 13069 </tr> 13070 </thead> 13071 13072 <tbody> 13073 13074 13075 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 <tr class="entry" id="static_android.lens.info.availableApertures"> 13086 <td class="entry_name 13087 " rowspan="3"> 13088 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 13089 </td> 13090 <td class="entry_type"> 13091 <span class="entry_type_name">float</span> 13092 <span class="entry_type_container">x</span> 13093 13094 <span class="entry_type_array"> 13095 n 13096 </span> 13097 <span class="entry_type_visibility"> [public]</span> 13098 13099 13100 <span class="entry_type_hwlevel">[full] </span> 13101 13102 13103 13104 13105 </td> <!-- entry_type --> 13106 13107 <td class="entry_description"> 13108 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are 13109supported by this camera device.<wbr/></p> 13110 </td> 13111 13112 <td class="entry_units"> 13113 The aperture f-number 13114 </td> 13115 13116 <td class="entry_range"> 13117 </td> 13118 13119 <td class="entry_hal_version"> 13120 <p>3.<wbr/>2</p> 13121 </td> 13122 13123 <td class="entry_tags"> 13124 <ul class="entry_tags"> 13125 <li><a href="#tag_V1">V1</a></li> 13126 </ul> 13127 </td> 13128 13129 </tr> 13130 <tr class="entries_header"> 13131 <th class="th_details" colspan="6">Details</th> 13132 </tr> 13133 <tr class="entry_cont"> 13134 <td class="entry_details" colspan="6"> 13135 <p>If the camera device doesn't support a variable lens aperture,<wbr/> 13136this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p> 13137<p>If the camera device supports a variable aperture,<wbr/> the aperture values 13138in this list will be sorted in ascending order.<wbr/></p> 13139 </td> 13140 </tr> 13141 13142 13143 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13144 <!-- end of entry --> 13145 13146 13147 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 13148 <td class="entry_name 13149 " rowspan="3"> 13150 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 13151 </td> 13152 <td class="entry_type"> 13153 <span class="entry_type_name">float</span> 13154 <span class="entry_type_container">x</span> 13155 13156 <span class="entry_type_array"> 13157 n 13158 </span> 13159 <span class="entry_type_visibility"> [public]</span> 13160 13161 13162 <span class="entry_type_hwlevel">[full] </span> 13163 13164 13165 13166 13167 </td> <!-- entry_type --> 13168 13169 <td class="entry_description"> 13170 <p>List of neutral density filter values for 13171<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p> 13172 </td> 13173 13174 <td class="entry_units"> 13175 Exposure value (EV) 13176 </td> 13177 13178 <td class="entry_range"> 13179 <p>Values are >= 0</p> 13180 </td> 13181 13182 <td class="entry_hal_version"> 13183 <p>3.<wbr/>2</p> 13184 </td> 13185 13186 <td class="entry_tags"> 13187 <ul class="entry_tags"> 13188 <li><a href="#tag_V1">V1</a></li> 13189 </ul> 13190 </td> 13191 13192 </tr> 13193 <tr class="entries_header"> 13194 <th class="th_details" colspan="6">Details</th> 13195 </tr> 13196 <tr class="entry_cont"> 13197 <td class="entry_details" colspan="6"> 13198 <p>If a neutral density filter is not supported by this camera device,<wbr/> 13199this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every 13200filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p> 13201 </td> 13202 </tr> 13203 13204 13205 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13206 <!-- end of entry --> 13207 13208 13209 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 13210 <td class="entry_name 13211 " rowspan="3"> 13212 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 13213 </td> 13214 <td class="entry_type"> 13215 <span class="entry_type_name">float</span> 13216 <span class="entry_type_container">x</span> 13217 13218 <span class="entry_type_array"> 13219 n 13220 </span> 13221 <span class="entry_type_visibility"> [public]</span> 13222 13223 13224 <span class="entry_type_hwlevel">[legacy] </span> 13225 13226 13227 <div class="entry_type_notes">The list of available focal lengths</div> 13228 13229 13230 </td> <!-- entry_type --> 13231 13232 <td class="entry_description"> 13233 <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 13234device.<wbr/></p> 13235 </td> 13236 13237 <td class="entry_units"> 13238 Millimeters 13239 </td> 13240 13241 <td class="entry_range"> 13242 <p>Values are > 0</p> 13243 </td> 13244 13245 <td class="entry_hal_version"> 13246 <p>3.<wbr/>2</p> 13247 </td> 13248 13249 <td class="entry_tags"> 13250 <ul class="entry_tags"> 13251 <li><a href="#tag_BC">BC</a></li> 13252 <li><a href="#tag_V1">V1</a></li> 13253 </ul> 13254 </td> 13255 13256 </tr> 13257 <tr class="entries_header"> 13258 <th class="th_details" colspan="6">Details</th> 13259 </tr> 13260 <tr class="entry_cont"> 13261 <td class="entry_details" colspan="6"> 13262 <p>If optical zoom is not supported,<wbr/> this list will only contain 13263a single value corresponding to the fixed focal length of the 13264device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported 13265by the camera device,<wbr/> in ascending order.<wbr/></p> 13266 </td> 13267 </tr> 13268 13269 13270 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13271 <!-- end of entry --> 13272 13273 13274 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 13275 <td class="entry_name 13276 " rowspan="3"> 13277 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 13278 </td> 13279 <td class="entry_type"> 13280 <span class="entry_type_name">byte</span> 13281 <span class="entry_type_container">x</span> 13282 13283 <span class="entry_type_array"> 13284 n 13285 </span> 13286 <span class="entry_type_visibility"> [public as enumList]</span> 13287 13288 13289 <span class="entry_type_hwlevel">[limited] </span> 13290 13291 13292 <div class="entry_type_notes">list of enums</div> 13293 13294 13295 </td> <!-- entry_type --> 13296 13297 <td class="entry_description"> 13298 <p>List of optical image stabilization (OIS) modes for 13299<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> 13300 </td> 13301 13302 <td class="entry_units"> 13303 </td> 13304 13305 <td class="entry_range"> 13306 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p> 13307 </td> 13308 13309 <td class="entry_hal_version"> 13310 <p>3.<wbr/>2</p> 13311 </td> 13312 13313 <td class="entry_tags"> 13314 <ul class="entry_tags"> 13315 <li><a href="#tag_V1">V1</a></li> 13316 </ul> 13317 </td> 13318 13319 </tr> 13320 <tr class="entries_header"> 13321 <th class="th_details" colspan="6">Details</th> 13322 </tr> 13323 <tr class="entry_cont"> 13324 <td class="entry_details" colspan="6"> 13325 <p>If OIS is not supported by a given camera device,<wbr/> this list will 13326contain only OFF.<wbr/></p> 13327 </td> 13328 </tr> 13329 13330 13331 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13332 <!-- end of entry --> 13333 13334 13335 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 13336 <td class="entry_name 13337 " rowspan="3"> 13338 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 13339 </td> 13340 <td class="entry_type"> 13341 <span class="entry_type_name">float</span> 13342 13343 <span class="entry_type_visibility"> [public]</span> 13344 13345 13346 <span class="entry_type_hwlevel">[limited] </span> 13347 13348 13349 13350 13351 </td> <!-- entry_type --> 13352 13353 <td class="entry_description"> 13354 <p>Hyperfocal distance for this lens.<wbr/></p> 13355 </td> 13356 13357 <td class="entry_units"> 13358 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 13359 </td> 13360 13361 <td class="entry_range"> 13362 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is 13363within <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> 13364 </td> 13365 13366 <td class="entry_hal_version"> 13367 <p>3.<wbr/>2</p> 13368 </td> 13369 13370 <td class="entry_tags"> 13371 </td> 13372 13373 </tr> 13374 <tr class="entries_header"> 13375 <th class="th_details" colspan="6">Details</th> 13376 </tr> 13377 <tr class="entry_cont"> 13378 <td class="entry_details" colspan="6"> 13379 <p>If the lens is not fixed focus,<wbr/> the camera device will report this 13380field 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> 13381 </td> 13382 </tr> 13383 13384 13385 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13386 <!-- end of entry --> 13387 13388 13389 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 13390 <td class="entry_name 13391 " rowspan="5"> 13392 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 13393 </td> 13394 <td class="entry_type"> 13395 <span class="entry_type_name">float</span> 13396 13397 <span class="entry_type_visibility"> [public]</span> 13398 13399 13400 <span class="entry_type_hwlevel">[limited] </span> 13401 13402 13403 13404 13405 </td> <!-- entry_type --> 13406 13407 <td class="entry_description"> 13408 <p>Shortest distance from frontmost surface 13409of the lens that can be brought into sharp focus.<wbr/></p> 13410 </td> 13411 13412 <td class="entry_units"> 13413 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 13414 </td> 13415 13416 <td class="entry_range"> 13417 <p>>= 0</p> 13418 </td> 13419 13420 <td class="entry_hal_version"> 13421 <p>3.<wbr/>2</p> 13422 </td> 13423 13424 <td class="entry_tags"> 13425 <ul class="entry_tags"> 13426 <li><a href="#tag_V1">V1</a></li> 13427 </ul> 13428 </td> 13429 13430 </tr> 13431 <tr class="entries_header"> 13432 <th class="th_details" colspan="6">Details</th> 13433 </tr> 13434 <tr class="entry_cont"> 13435 <td class="entry_details" colspan="6"> 13436 <p>If the lens is fixed-focus,<wbr/> this will be 134370.<wbr/></p> 13438 </td> 13439 </tr> 13440 13441 <tr class="entries_header"> 13442 <th class="th_details" colspan="6">HAL Implementation Details</th> 13443 </tr> 13444 <tr class="entry_cont"> 13445 <td class="entry_details" colspan="6"> 13446 <p>Mandatory for FULL devices; LIMITED devices 13447must always set this value to 0 for fixed-focus; and may omit 13448the minimum focus distance otherwise.<wbr/></p> 13449<p>This field is also mandatory for all devices advertising 13450the MANUAL_<wbr/>SENSOR capability.<wbr/></p> 13451 </td> 13452 </tr> 13453 13454 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13455 <!-- end of entry --> 13456 13457 13458 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 13459 <td class="entry_name 13460 " rowspan="3"> 13461 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 13462 </td> 13463 <td class="entry_type"> 13464 <span class="entry_type_name">int32</span> 13465 <span class="entry_type_container">x</span> 13466 13467 <span class="entry_type_array"> 13468 2 13469 </span> 13470 <span class="entry_type_visibility"> [ndk_public as size]</span> 13471 13472 13473 <span class="entry_type_hwlevel">[full] </span> 13474 13475 13476 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 13477 13478 13479 </td> <!-- entry_type --> 13480 13481 <td class="entry_description"> 13482 <p>Dimensions of lens shading map.<wbr/></p> 13483 </td> 13484 13485 <td class="entry_units"> 13486 </td> 13487 13488 <td class="entry_range"> 13489 <p>Both values >= 1</p> 13490 </td> 13491 13492 <td class="entry_hal_version"> 13493 <p>3.<wbr/>2</p> 13494 </td> 13495 13496 <td class="entry_tags"> 13497 <ul class="entry_tags"> 13498 <li><a href="#tag_V1">V1</a></li> 13499 </ul> 13500 </td> 13501 13502 </tr> 13503 <tr class="entries_header"> 13504 <th class="th_details" colspan="6">Details</th> 13505 </tr> 13506 <tr class="entry_cont"> 13507 <td class="entry_details" colspan="6"> 13508 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 13509must be smaller than 64x64.<wbr/></p> 13510 </td> 13511 </tr> 13512 13513 13514 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13515 <!-- end of entry --> 13516 13517 13518 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 13519 <td class="entry_name 13520 " rowspan="5"> 13521 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 13522 </td> 13523 <td class="entry_type"> 13524 <span class="entry_type_name entry_type_name_enum">byte</span> 13525 13526 <span class="entry_type_visibility"> [public]</span> 13527 13528 13529 <span class="entry_type_hwlevel">[limited] </span> 13530 13531 13532 13533 <ul class="entry_type_enum"> 13534 <li> 13535 <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span> 13536 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 13537<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p> 13538<p>Setting the lens to the same focus distance on separate occasions may 13539result in a different real focus distance,<wbr/> depending on factors such 13540as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 13541and the device temperature.<wbr/> The focus distance value will still be 13542in 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 13543represents the farthest focus.<wbr/></p></span> 13544 </li> 13545 <li> 13546 <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span> 13547 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p> 13548<p>However,<wbr/> setting the lens to the same focus distance 13549on separate occasions may result in a different real 13550focus distance,<wbr/> depending on factors such as the 13551orientation of the device,<wbr/> the age of the focusing 13552mechanism,<wbr/> and the device temperature.<wbr/></p></span> 13553 </li> 13554 <li> 13555 <span class="entry_type_enum_name">CALIBRATED (v3.2)</span> 13556 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and 13557is calibrated.<wbr/></p> 13558<p>The lens mechanism is calibrated so that setting the 13559same focus distance is repeatable on multiple 13560occasions with good accuracy,<wbr/> and the focus distance 13561corresponds to the real physical distance to the plane 13562of best focus.<wbr/></p></span> 13563 </li> 13564 </ul> 13565 13566 </td> <!-- entry_type --> 13567 13568 <td class="entry_description"> 13569 <p>The lens focus distance calibration quality.<wbr/></p> 13570 </td> 13571 13572 <td class="entry_units"> 13573 </td> 13574 13575 <td class="entry_range"> 13576 </td> 13577 13578 <td class="entry_hal_version"> 13579 <p>3.<wbr/>2</p> 13580 </td> 13581 13582 <td class="entry_tags"> 13583 <ul class="entry_tags"> 13584 <li><a href="#tag_V1">V1</a></li> 13585 </ul> 13586 </td> 13587 13588 </tr> 13589 <tr class="entries_header"> 13590 <th class="th_details" colspan="6">Details</th> 13591 </tr> 13592 <tr class="entry_cont"> 13593 <td class="entry_details" colspan="6"> 13594 <p>The lens focus distance calibration quality determines the reliability of 13595focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 13596<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 13597<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 13598<p>APPROXIMATE and CALIBRATED devices report the focus metadata in 13599units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> 13600and increasing positive numbers represent focusing closer and closer 13601to the camera device.<wbr/> The focus distance control also uses diopters 13602on these devices.<wbr/></p> 13603<p>UNCALIBRATED devices do not use units that are directly comparable 13604to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest 13605focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the 13606nearest focus the device can achieve.<wbr/></p> 13607 </td> 13608 </tr> 13609 13610 <tr class="entries_header"> 13611 <th class="th_details" colspan="6">HAL Implementation Details</th> 13612 </tr> 13613 <tr class="entry_cont"> 13614 <td class="entry_details" colspan="6"> 13615 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity 13616focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) 13617and the lens focus distance is set to 0 diopters 13618(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity 13619and is stably focused at infinity even if the device tilts.<wbr/> It may take the 13620lens some time to move; during the move the lens state should be MOVING and 13621the output diopter value should be changing toward 0.<wbr/></p> 13622 </td> 13623 </tr> 13624 13625 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13626 <!-- end of entry --> 13627 13628 13629 13630 13631 13632 <tr class="entry" id="static_android.lens.facing"> 13633 <td class="entry_name 13634 " rowspan="1"> 13635 android.<wbr/>lens.<wbr/>facing 13636 </td> 13637 <td class="entry_type"> 13638 <span class="entry_type_name entry_type_name_enum">byte</span> 13639 13640 <span class="entry_type_visibility"> [public]</span> 13641 13642 13643 <span class="entry_type_hwlevel">[legacy] </span> 13644 13645 13646 13647 <ul class="entry_type_enum"> 13648 <li> 13649 <span class="entry_type_enum_name">FRONT (v3.2)</span> 13650 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span> 13651 </li> 13652 <li> 13653 <span class="entry_type_enum_name">BACK (v3.2)</span> 13654 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span> 13655 </li> 13656 <li> 13657 <span class="entry_type_enum_name">EXTERNAL (v3.2)</span> 13658 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the 13659device's screen.<wbr/></p></span> 13660 </li> 13661 </ul> 13662 13663 </td> <!-- entry_type --> 13664 13665 <td class="entry_description"> 13666 <p>Direction the camera faces relative to 13667device screen.<wbr/></p> 13668 </td> 13669 13670 <td class="entry_units"> 13671 </td> 13672 13673 <td class="entry_range"> 13674 </td> 13675 13676 <td class="entry_hal_version"> 13677 <p>3.<wbr/>2</p> 13678 </td> 13679 13680 <td class="entry_tags"> 13681 </td> 13682 13683 </tr> 13684 13685 13686 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13687 <!-- end of entry --> 13688 13689 13690 <tr class="entry" id="static_android.lens.poseRotation"> 13691 <td class="entry_name 13692 " rowspan="3"> 13693 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 13694 </td> 13695 <td class="entry_type"> 13696 <span class="entry_type_name">float</span> 13697 <span class="entry_type_container">x</span> 13698 13699 <span class="entry_type_array"> 13700 4 13701 </span> 13702 <span class="entry_type_visibility"> [public]</span> 13703 13704 13705 13706 13707 13708 13709 </td> <!-- entry_type --> 13710 13711 <td class="entry_description"> 13712 <p>The orientation of the camera relative to the sensor 13713coordinate system.<wbr/></p> 13714 </td> 13715 13716 <td class="entry_units"> 13717 13718 Quaternion coefficients 13719 13720 </td> 13721 13722 <td class="entry_range"> 13723 </td> 13724 13725 <td class="entry_hal_version"> 13726 <p>3.<wbr/>2</p> 13727 </td> 13728 13729 <td class="entry_tags"> 13730 <ul class="entry_tags"> 13731 <li><a href="#tag_DEPTH">DEPTH</a></li> 13732 </ul> 13733 </td> 13734 13735 </tr> 13736 <tr class="entries_header"> 13737 <th class="th_details" colspan="6">Details</th> 13738 </tr> 13739 <tr class="entry_cont"> 13740 <td class="entry_details" colspan="6"> 13741 <p>The four coefficients that describe the quaternion 13742rotation from the Android sensor coordinate system to a 13743camera-aligned coordinate system where the X-axis is 13744aligned with the long side of the image sensor,<wbr/> the Y-axis 13745is aligned with the short side of the image sensor,<wbr/> and 13746the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 13747<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 13748to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 13749amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 13750<pre><code> theta = 2 * acos(w) 13751a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 13752a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 13753a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 13754</code></pre> 13755<p>To create a 3x3 rotation matrix that applies the rotation 13756defined by this quaternion,<wbr/> the following matrix can be 13757used:</p> 13758<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 13759 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 13760 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 13761</code></pre> 13762<p>This matrix can then be used to apply the rotation to a 13763 column vector point with</p> 13764<p><code>p' = Rp</code></p> 13765<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 13766 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 13767 </td> 13768 </tr> 13769 13770 13771 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13772 <!-- end of entry --> 13773 13774 13775 <tr class="entry" id="static_android.lens.poseTranslation"> 13776 <td class="entry_name 13777 " rowspan="3"> 13778 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 13779 </td> 13780 <td class="entry_type"> 13781 <span class="entry_type_name">float</span> 13782 <span class="entry_type_container">x</span> 13783 13784 <span class="entry_type_array"> 13785 3 13786 </span> 13787 <span class="entry_type_visibility"> [public]</span> 13788 13789 13790 13791 13792 13793 13794 </td> <!-- entry_type --> 13795 13796 <td class="entry_description"> 13797 <p>Position of the camera optical center.<wbr/></p> 13798 </td> 13799 13800 <td class="entry_units"> 13801 Meters 13802 </td> 13803 13804 <td class="entry_range"> 13805 </td> 13806 13807 <td class="entry_hal_version"> 13808 <p>3.<wbr/>2</p> 13809 </td> 13810 13811 <td class="entry_tags"> 13812 <ul class="entry_tags"> 13813 <li><a href="#tag_DEPTH">DEPTH</a></li> 13814 </ul> 13815 </td> 13816 13817 </tr> 13818 <tr class="entries_header"> 13819 <th class="th_details" colspan="6">Details</th> 13820 </tr> 13821 <tr class="entry_cont"> 13822 <td class="entry_details" colspan="6"> 13823 <p>The position of the camera device's lens optical center,<wbr/> 13824as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p> 13825<p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position 13826is relative to the optical center of the largest camera device facing in the same 13827direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor 13828coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor 13829coordinate system,<wbr/> but not the origin.<wbr/></p> 13830<p>If this device is the largest or only camera device with a given facing,<wbr/> then this 13831position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm 13832from the main sensor along the +X axis (to the right from the user's perspective) will 13833report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/> Note that this means that,<wbr/> for many computer vision 13834applications,<wbr/> the position needs to be negated to convert it to a translation from the 13835camera to the origin.<wbr/></p> 13836<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first 13837the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source 13838camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the 13839<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera 13840relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination 13841camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination 13842camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel 13843coordinates.<wbr/></p> 13844<p>To compare this against a real image from the destination camera,<wbr/> the destination camera 13845image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p> 13846<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to 13847the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as 13848with PRIMARY_<wbr/>CAMERA.<wbr/></p> 13849 </td> 13850 </tr> 13851 13852 13853 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13854 <!-- end of entry --> 13855 13856 13857 <tr class="entry" id="static_android.lens.intrinsicCalibration"> 13858 <td class="entry_name 13859 " rowspan="3"> 13860 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 13861 </td> 13862 <td class="entry_type"> 13863 <span class="entry_type_name">float</span> 13864 <span class="entry_type_container">x</span> 13865 13866 <span class="entry_type_array"> 13867 5 13868 </span> 13869 <span class="entry_type_visibility"> [public]</span> 13870 13871 13872 13873 13874 13875 13876 </td> <!-- entry_type --> 13877 13878 <td class="entry_description"> 13879 <p>The parameters for this camera device's intrinsic 13880calibration.<wbr/></p> 13881 </td> 13882 13883 <td class="entry_units"> 13884 13885 Pixels in the 13886 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 13887 coordinate system.<wbr/> 13888 13889 </td> 13890 13891 <td class="entry_range"> 13892 </td> 13893 13894 <td class="entry_hal_version"> 13895 <p>3.<wbr/>2</p> 13896 </td> 13897 13898 <td class="entry_tags"> 13899 <ul class="entry_tags"> 13900 <li><a href="#tag_DEPTH">DEPTH</a></li> 13901 </ul> 13902 </td> 13903 13904 </tr> 13905 <tr class="entries_header"> 13906 <th class="th_details" colspan="6">Details</th> 13907 </tr> 13908 <tr class="entry_cont"> 13909 <td class="entry_details" colspan="6"> 13910 <p>The five calibration parameters that describe the 13911transform from camera-centric 3D coordinates to sensor 13912pixel coordinates:</p> 13913<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 13914</code></pre> 13915<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 13916focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 13917axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 13918being aligned with the lens plane.<wbr/></p> 13919<p>These are typically used within a transformation matrix K:</p> 13920<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 13921 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 13922 0 0,<wbr/> 1 ] 13923</code></pre> 13924<p>which can then be combined with the camera pose rotation 13925<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 13926<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the 13927complete transform from world coordinates to pixel 13928coordinates:</p> 13929<pre><code>P = [ K 0 * [ R -Rt 13930 0 1 ] 0 1 ] 13931</code></pre> 13932<p>(Note the negation of poseTranslation when mapping from camera 13933to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p> 13934<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system 13935and <code>p_<wbr/>s</code> being a point in the camera active pixel array 13936coordinate system,<wbr/> and with the mapping including the 13937homogeneous division by z:</p> 13938<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 13939p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 13940</code></pre> 13941<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 13942point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 13943(depth) in pixel coordinates.<wbr/></p> 13944<p>Note that the coordinate system for this transform is the 13945<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/> 13946where <code>(0,<wbr/>0)</code> is the top-left of the 13947preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 13948intrinsic calibration transforms have been applied to a 13949world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> 13950transform needs to be applied,<wbr/> and the result adjusted to 13951be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 13952system (where <code>(0,<wbr/> 0)</code> is the top-left of the 13953activeArraySize rectangle),<wbr/> to determine the final pixel 13954coordinate of the world point for processed (non-RAW) 13955output buffers.<wbr/></p> 13956<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at 13957coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/> So on a device with a 13958precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel 13959indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would 13960have an optical center at the exact center of the pixel grid,<wbr/> at 13961coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel 13962<code>(5,<wbr/>5)</code>.<wbr/></p> 13963 </td> 13964 </tr> 13965 13966 13967 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13968 <!-- end of entry --> 13969 13970 13971 <tr class="entry" id="static_android.lens.radialDistortion"> 13972 <td class="entry_name 13973 entry_name_deprecated 13974 " rowspan="3"> 13975 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 13976 </td> 13977 <td class="entry_type"> 13978 <span class="entry_type_name">float</span> 13979 <span class="entry_type_container">x</span> 13980 13981 <span class="entry_type_array"> 13982 6 13983 </span> 13984 <span class="entry_type_visibility"> [public]</span> 13985 13986 13987 13988 <span class="entry_type_deprecated">[deprecated] </span> 13989 13990 13991 13992 </td> <!-- entry_type --> 13993 13994 <td class="entry_description"> 13995 <p>The correction coefficients to correct for this camera device's 13996radial and tangential lens distortion.<wbr/></p> 13997 </td> 13998 13999 <td class="entry_units"> 14000 14001 Unitless coefficients.<wbr/> 14002 14003 </td> 14004 14005 <td class="entry_range"> 14006 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14007 </td> 14008 14009 <td class="entry_hal_version"> 14010 <p>3.<wbr/>2</p> 14011 </td> 14012 14013 <td class="entry_tags"> 14014 <ul class="entry_tags"> 14015 <li><a href="#tag_DEPTH">DEPTH</a></li> 14016 </ul> 14017 </td> 14018 14019 </tr> 14020 <tr class="entries_header"> 14021 <th class="th_details" colspan="6">Details</th> 14022 </tr> 14023 <tr class="entry_cont"> 14024 <td class="entry_details" colspan="6"> 14025 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 14026kappa_<wbr/>3]</code> and two tangential distortion coefficients 14027<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 14028lens's geometric distortion with the mapping equations:</p> 14029<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 ) + 14030 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 14031 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 14032 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 14033</code></pre> 14034<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 14035input image that correspond to the pixel values in the 14036corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 14037<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 14038</code></pre> 14039<p>The pixel coordinates are defined in a normalized 14040coordinate system related to the 14041<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 14042Both <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 14043lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 14044of both x and y coordinates are normalized to be 1 at the 14045edge further from the optical center,<wbr/> so the range 14046for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 14047<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 14048optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 14049is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 14050<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 14051 </td> 14052 </tr> 14053 14054 14055 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14056 <!-- end of entry --> 14057 14058 14059 <tr class="entry" id="static_android.lens.poseReference"> 14060 <td class="entry_name 14061 " rowspan="3"> 14062 android.<wbr/>lens.<wbr/>pose<wbr/>Reference 14063 </td> 14064 <td class="entry_type"> 14065 <span class="entry_type_name entry_type_name_enum">byte</span> 14066 14067 <span class="entry_type_visibility"> [public]</span> 14068 14069 14070 14071 14072 14073 <ul class="entry_type_enum"> 14074 <li> 14075 <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span> 14076 <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the optical center of 14077the largest camera device facing the same direction as this camera.<wbr/></p> 14078<p>This is the default value for API levels before Android P.<wbr/></p></span> 14079 </li> 14080 <li> 14081 <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span> 14082 <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the position of the 14083primary gyroscope of this Android device.<wbr/></p></span> 14084 </li> 14085 </ul> 14086 14087 </td> <!-- entry_type --> 14088 14089 <td class="entry_description"> 14090 <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p> 14091 </td> 14092 14093 <td class="entry_units"> 14094 </td> 14095 14096 <td class="entry_range"> 14097 </td> 14098 14099 <td class="entry_hal_version"> 14100 <p>3.<wbr/>3</p> 14101 </td> 14102 14103 <td class="entry_tags"> 14104 </td> 14105 14106 </tr> 14107 <tr class="entries_header"> 14108 <th class="th_details" colspan="6">Details</th> 14109 </tr> 14110 <tr class="entry_cont"> 14111 <td class="entry_details" colspan="6"> 14112 <p>Different calibration methods and use cases can produce better or worse results 14113depending on the selected coordinate origin.<wbr/></p> 14114 </td> 14115 </tr> 14116 14117 14118 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14119 <!-- end of entry --> 14120 14121 14122 <tr class="entry" id="static_android.lens.distortion"> 14123 <td class="entry_name 14124 " rowspan="3"> 14125 android.<wbr/>lens.<wbr/>distortion 14126 </td> 14127 <td class="entry_type"> 14128 <span class="entry_type_name">float</span> 14129 <span class="entry_type_container">x</span> 14130 14131 <span class="entry_type_array"> 14132 5 14133 </span> 14134 <span class="entry_type_visibility"> [public]</span> 14135 14136 14137 14138 14139 14140 14141 </td> <!-- entry_type --> 14142 14143 <td class="entry_description"> 14144 <p>The correction coefficients to correct for this camera device's 14145radial and tangential lens distortion.<wbr/></p> 14146<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was 14147inconsistently defined.<wbr/></p> 14148 </td> 14149 14150 <td class="entry_units"> 14151 14152 Unitless coefficients.<wbr/> 14153 14154 </td> 14155 14156 <td class="entry_range"> 14157 </td> 14158 14159 <td class="entry_hal_version"> 14160 <p>3.<wbr/>3</p> 14161 </td> 14162 14163 <td class="entry_tags"> 14164 <ul class="entry_tags"> 14165 <li><a href="#tag_DEPTH">DEPTH</a></li> 14166 </ul> 14167 </td> 14168 14169 </tr> 14170 <tr class="entries_header"> 14171 <th class="th_details" colspan="6">Details</th> 14172 </tr> 14173 <tr class="entry_cont"> 14174 <td class="entry_details" colspan="6"> 14175 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 14176kappa_<wbr/>3]</code> and two tangential distortion coefficients 14177<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 14178lens's geometric distortion with the mapping equations:</p> 14179<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 14180 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 14181 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 14182 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 14183</code></pre> 14184<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 14185input image that correspond to the pixel values in the 14186corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 14187<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 14188</code></pre> 14189<p>The pixel coordinates are defined in a coordinate system 14190related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 14191calibration fields; see that entry for details of the mapping stages.<wbr/> 14192Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> 14193have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and 14194the range of the coordinates depends on the focal length 14195terms of the intrinsic calibration.<wbr/></p> 14196<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 14197optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p> 14198<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 14199 </td> 14200 </tr> 14201 14202 14203 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14204 <!-- end of entry --> 14205 14206 14207 14208 <!-- end of kind --> 14209 </tbody> 14210 <tr><td colspan="7" class="kind">dynamic</td></tr> 14211 14212 <thead class="entries_header"> 14213 <tr> 14214 <th class="th_name">Property Name</th> 14215 <th class="th_type">Type</th> 14216 <th class="th_description">Description</th> 14217 <th class="th_units">Units</th> 14218 <th class="th_range">Range</th> 14219 <th class="th_hal_version">Initial HIDL HAL version</th> 14220 <th class="th_tags">Tags</th> 14221 </tr> 14222 </thead> 14223 14224 <tbody> 14225 14226 14227 14228 14229 14230 14231 14232 14233 14234 14235 <tr class="entry" id="dynamic_android.lens.aperture"> 14236 <td class="entry_name 14237 " rowspan="3"> 14238 android.<wbr/>lens.<wbr/>aperture 14239 </td> 14240 <td class="entry_type"> 14241 <span class="entry_type_name">float</span> 14242 14243 <span class="entry_type_visibility"> [public]</span> 14244 14245 14246 <span class="entry_type_hwlevel">[full] </span> 14247 14248 14249 14250 14251 </td> <!-- entry_type --> 14252 14253 <td class="entry_description"> 14254 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 14255effective aperture diameter.<wbr/></p> 14256 </td> 14257 14258 <td class="entry_units"> 14259 The f-number (f/<wbr/>N) 14260 </td> 14261 14262 <td class="entry_range"> 14263 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 14264 </td> 14265 14266 <td class="entry_hal_version"> 14267 <p>3.<wbr/>2</p> 14268 </td> 14269 14270 <td class="entry_tags"> 14271 <ul class="entry_tags"> 14272 <li><a href="#tag_V1">V1</a></li> 14273 </ul> 14274 </td> 14275 14276 </tr> 14277 <tr class="entries_header"> 14278 <th class="th_details" colspan="6">Details</th> 14279 </tr> 14280 <tr class="entry_cont"> 14281 <td class="entry_details" colspan="6"> 14282 <p>Setting this value is only supported on the camera devices that have a variable 14283aperture lens.<wbr/></p> 14284<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 14285this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 14286<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> 14287to achieve manual exposure control.<wbr/></p> 14288<p>The requested aperture value may take several frames to reach the 14289requested value; the camera device will report the current (intermediate) 14290aperture size in capture result metadata while the aperture is changing.<wbr/> 14291While 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> 14292<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 14293the ON modes,<wbr/> this will be overridden by the camera device 14294auto-exposure algorithm,<wbr/> the overridden values are then provided 14295back to the user in the corresponding result.<wbr/></p> 14296 </td> 14297 </tr> 14298 14299 14300 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14301 <!-- end of entry --> 14302 14303 14304 <tr class="entry" id="dynamic_android.lens.filterDensity"> 14305 <td class="entry_name 14306 " rowspan="3"> 14307 android.<wbr/>lens.<wbr/>filter<wbr/>Density 14308 </td> 14309 <td class="entry_type"> 14310 <span class="entry_type_name">float</span> 14311 14312 <span class="entry_type_visibility"> [public]</span> 14313 14314 14315 <span class="entry_type_hwlevel">[full] </span> 14316 14317 14318 14319 14320 </td> <!-- entry_type --> 14321 14322 <td class="entry_description"> 14323 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 14324 </td> 14325 14326 <td class="entry_units"> 14327 Exposure Value (EV) 14328 </td> 14329 14330 <td class="entry_range"> 14331 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 14332 </td> 14333 14334 <td class="entry_hal_version"> 14335 <p>3.<wbr/>2</p> 14336 </td> 14337 14338 <td class="entry_tags"> 14339 <ul class="entry_tags"> 14340 <li><a href="#tag_V1">V1</a></li> 14341 </ul> 14342 </td> 14343 14344 </tr> 14345 <tr class="entries_header"> 14346 <th class="th_details" colspan="6">Details</th> 14347 </tr> 14348 <tr class="entry_cont"> 14349 <td class="entry_details" colspan="6"> 14350 <p>This control will not be supported on most camera devices.<wbr/></p> 14351<p>Lens filters are typically used to lower the amount of light the 14352sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 14353step is the standard logarithmic representation,<wbr/> which are 14354non-negative,<wbr/> and inversely proportional to the amount of light 14355hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 14356in no reduction of the incoming light,<wbr/> and setting this to 2 would 14357mean that the filter is set to reduce incoming light by two stops 14358(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 14359<p>It may take several frames before the lens filter density changes 14360to the requested value.<wbr/> While the filter density is still changing,<wbr/> 14361<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 14362 </td> 14363 </tr> 14364 14365 14366 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14367 <!-- end of entry --> 14368 14369 14370 <tr class="entry" id="dynamic_android.lens.focalLength"> 14371 <td class="entry_name 14372 " rowspan="5"> 14373 android.<wbr/>lens.<wbr/>focal<wbr/>Length 14374 </td> 14375 <td class="entry_type"> 14376 <span class="entry_type_name">float</span> 14377 14378 <span class="entry_type_visibility"> [public]</span> 14379 14380 14381 <span class="entry_type_hwlevel">[legacy] </span> 14382 14383 14384 14385 14386 </td> <!-- entry_type --> 14387 14388 <td class="entry_description"> 14389 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 14390 </td> 14391 14392 <td class="entry_units"> 14393 Millimeters 14394 </td> 14395 14396 <td class="entry_range"> 14397 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 14398 </td> 14399 14400 <td class="entry_hal_version"> 14401 <p>3.<wbr/>2</p> 14402 </td> 14403 14404 <td class="entry_tags"> 14405 <ul class="entry_tags"> 14406 <li><a href="#tag_BC">BC</a></li> 14407 </ul> 14408 </td> 14409 14410 </tr> 14411 <tr class="entries_header"> 14412 <th class="th_details" colspan="6">Details</th> 14413 </tr> 14414 <tr class="entry_cont"> 14415 <td class="entry_details" colspan="6"> 14416 <p>This setting controls the physical focal length of the camera 14417device's lens.<wbr/> Changing the focal length changes the field of 14418view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 14419<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 14420setting won't be applied instantaneously,<wbr/> and it may take several 14421frames before the lens can change to the requested focal length.<wbr/> 14422While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 14423be set to MOVING.<wbr/></p> 14424<p>Optical zoom will not be supported on most devices.<wbr/></p> 14425 </td> 14426 </tr> 14427 14428 <tr class="entries_header"> 14429 <th class="th_details" colspan="6">HAL Implementation Details</th> 14430 </tr> 14431 <tr class="entry_cont"> 14432 <td class="entry_details" colspan="6"> 14433 <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and 14434cropRegion change in the same request,<wbr/> the camera device must make sure that the new 14435focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there 14436is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied 14437immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device 14438will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p> 14439 </td> 14440 </tr> 14441 14442 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14443 <!-- end of entry --> 14444 14445 14446 <tr class="entry" id="dynamic_android.lens.focusDistance"> 14447 <td class="entry_name 14448 " rowspan="3"> 14449 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 14450 </td> 14451 <td class="entry_type"> 14452 <span class="entry_type_name">float</span> 14453 14454 <span class="entry_type_visibility"> [public]</span> 14455 14456 14457 <span class="entry_type_hwlevel">[full] </span> 14458 14459 14460 14461 14462 </td> <!-- entry_type --> 14463 14464 <td class="entry_description"> 14465 <p>Desired distance to plane of sharpest focus,<wbr/> 14466measured from frontmost surface of the lens.<wbr/></p> 14467 </td> 14468 14469 <td class="entry_units"> 14470 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 14471 </td> 14472 14473 <td class="entry_range"> 14474 <p>>= 0</p> 14475 </td> 14476 14477 <td class="entry_hal_version"> 14478 <p>3.<wbr/>2</p> 14479 </td> 14480 14481 <td class="entry_tags"> 14482 <ul class="entry_tags"> 14483 <li><a href="#tag_BC">BC</a></li> 14484 </ul> 14485 </td> 14486 14487 </tr> 14488 <tr class="entries_header"> 14489 <th class="th_details" colspan="6">Details</th> 14490 </tr> 14491 <tr class="entry_cont"> 14492 <td class="entry_details" colspan="6"> 14493 <p>Should be zero for fixed-focus cameras</p> 14494 </td> 14495 </tr> 14496 14497 14498 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14499 <!-- end of entry --> 14500 14501 14502 <tr class="entry" id="dynamic_android.lens.focusRange"> 14503 <td class="entry_name 14504 " rowspan="3"> 14505 android.<wbr/>lens.<wbr/>focus<wbr/>Range 14506 </td> 14507 <td class="entry_type"> 14508 <span class="entry_type_name">float</span> 14509 <span class="entry_type_container">x</span> 14510 14511 <span class="entry_type_array"> 14512 2 14513 </span> 14514 <span class="entry_type_visibility"> [public as pairFloatFloat]</span> 14515 14516 14517 <span class="entry_type_hwlevel">[limited] </span> 14518 14519 14520 <div class="entry_type_notes">Range of scene distances that are in focus</div> 14521 14522 14523 </td> <!-- entry_type --> 14524 14525 <td class="entry_description"> 14526 <p>The range of scene distances that are in 14527sharp focus (depth of field).<wbr/></p> 14528 </td> 14529 14530 <td class="entry_units"> 14531 A pair of focus distances in diopters: (near,<wbr/> 14532 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 14533 </td> 14534 14535 <td class="entry_range"> 14536 <p>>=0</p> 14537 </td> 14538 14539 <td class="entry_hal_version"> 14540 <p>3.<wbr/>2</p> 14541 </td> 14542 14543 <td class="entry_tags"> 14544 <ul class="entry_tags"> 14545 <li><a href="#tag_BC">BC</a></li> 14546 </ul> 14547 </td> 14548 14549 </tr> 14550 <tr class="entries_header"> 14551 <th class="th_details" colspan="6">Details</th> 14552 </tr> 14553 <tr class="entry_cont"> 14554 <td class="entry_details" colspan="6"> 14555 <p>If variable focus not supported,<wbr/> can still report 14556fixed depth of field range</p> 14557 </td> 14558 </tr> 14559 14560 14561 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14562 <!-- end of entry --> 14563 14564 14565 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 14566 <td class="entry_name 14567 " rowspan="3"> 14568 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 14569 </td> 14570 <td class="entry_type"> 14571 <span class="entry_type_name entry_type_name_enum">byte</span> 14572 14573 <span class="entry_type_visibility"> [public]</span> 14574 14575 14576 <span class="entry_type_hwlevel">[limited] </span> 14577 14578 14579 14580 <ul class="entry_type_enum"> 14581 <li> 14582 <span class="entry_type_enum_name">OFF (v3.2)</span> 14583 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 14584 </li> 14585 <li> 14586 <span class="entry_type_enum_name">ON (v3.2)</span> 14587 <span class="entry_type_enum_optional">[optional]</span> 14588 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 14589 </li> 14590 </ul> 14591 14592 </td> <!-- entry_type --> 14593 14594 <td class="entry_description"> 14595 <p>Sets whether the camera device uses optical image stabilization (OIS) 14596when capturing images.<wbr/></p> 14597 </td> 14598 14599 <td class="entry_units"> 14600 </td> 14601 14602 <td class="entry_range"> 14603 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 14604 </td> 14605 14606 <td class="entry_hal_version"> 14607 <p>3.<wbr/>2</p> 14608 </td> 14609 14610 <td class="entry_tags"> 14611 <ul class="entry_tags"> 14612 <li><a href="#tag_V1">V1</a></li> 14613 </ul> 14614 </td> 14615 14616 </tr> 14617 <tr class="entries_header"> 14618 <th class="th_details" colspan="6">Details</th> 14619 </tr> 14620 <tr class="entry_cont"> 14621 <td class="entry_details" colspan="6"> 14622 <p>OIS is used to compensate for motion blur due to small 14623movements of the camera during capture.<wbr/> Unlike digital image 14624stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 14625makes use of mechanical elements to stabilize the camera 14626sensor,<wbr/> and thus allows for longer exposure times before 14627camera shake becomes apparent.<wbr/></p> 14628<p>Switching between different optical stabilization modes may take several 14629frames to initialize,<wbr/> the camera device will report the current mode in 14630capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 14631optical stabilization modes in the first several capture results may still 14632be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 14633<p>If a camera device supports both OIS and digital image stabilization 14634(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 14635interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 14636<p>Not all devices will support OIS; see 14637<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 14638available controls.<wbr/></p> 14639 </td> 14640 </tr> 14641 14642 14643 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14644 <!-- end of entry --> 14645 14646 14647 <tr class="entry" id="dynamic_android.lens.state"> 14648 <td class="entry_name 14649 " rowspan="3"> 14650 android.<wbr/>lens.<wbr/>state 14651 </td> 14652 <td class="entry_type"> 14653 <span class="entry_type_name entry_type_name_enum">byte</span> 14654 14655 <span class="entry_type_visibility"> [public]</span> 14656 14657 14658 <span class="entry_type_hwlevel">[limited] </span> 14659 14660 14661 14662 <ul class="entry_type_enum"> 14663 <li> 14664 <span class="entry_type_enum_name">STATIONARY (v3.2)</span> 14665 <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/> 14666<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> 14667 </li> 14668 <li> 14669 <span class="entry_type_enum_name">MOVING (v3.2)</span> 14670 <span class="entry_type_enum_notes"><p>One or several of the lens parameters 14671(<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/> 14672<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 14673currently changing.<wbr/></p></span> 14674 </li> 14675 </ul> 14676 14677 </td> <!-- entry_type --> 14678 14679 <td class="entry_description"> 14680 <p>Current lens status.<wbr/></p> 14681 </td> 14682 14683 <td class="entry_units"> 14684 </td> 14685 14686 <td class="entry_range"> 14687 </td> 14688 14689 <td class="entry_hal_version"> 14690 <p>3.<wbr/>2</p> 14691 </td> 14692 14693 <td class="entry_tags"> 14694 <ul class="entry_tags"> 14695 <li><a href="#tag_V1">V1</a></li> 14696 </ul> 14697 </td> 14698 14699 </tr> 14700 <tr class="entries_header"> 14701 <th class="th_details" colspan="6">Details</th> 14702 </tr> 14703 <tr class="entry_cont"> 14704 <td class="entry_details" colspan="6"> 14705 <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/> 14706<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/> 14707they may take several frames to reach the requested values.<wbr/> This state indicates 14708the current status of the lens parameters.<wbr/></p> 14709<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 14710either because the parameters are all fixed,<wbr/> or because the lens has had enough 14711time to reach the most recently-requested values.<wbr/> 14712If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 14713<ul> 14714<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 14715<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 14716<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/> 14717which means the optical zoom is not supported.<wbr/></li> 14718<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> 14719<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> 14720</ul> 14721<p>Then this state will always be STATIONARY.<wbr/></p> 14722<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 14723is changing.<wbr/></p> 14724 </td> 14725 </tr> 14726 14727 14728 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14729 <!-- end of entry --> 14730 14731 14732 <tr class="entry" id="dynamic_android.lens.poseRotation"> 14733 <td class="entry_name 14734 " rowspan="3"> 14735 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 14736 </td> 14737 <td class="entry_type"> 14738 <span class="entry_type_name">float</span> 14739 <span class="entry_type_container">x</span> 14740 14741 <span class="entry_type_array"> 14742 4 14743 </span> 14744 <span class="entry_type_visibility"> [public]</span> 14745 14746 14747 14748 14749 14750 14751 </td> <!-- entry_type --> 14752 14753 <td class="entry_description"> 14754 <p>The orientation of the camera relative to the sensor 14755coordinate system.<wbr/></p> 14756 </td> 14757 14758 <td class="entry_units"> 14759 14760 Quaternion coefficients 14761 14762 </td> 14763 14764 <td class="entry_range"> 14765 </td> 14766 14767 <td class="entry_hal_version"> 14768 <p>3.<wbr/>2</p> 14769 </td> 14770 14771 <td class="entry_tags"> 14772 <ul class="entry_tags"> 14773 <li><a href="#tag_DEPTH">DEPTH</a></li> 14774 </ul> 14775 </td> 14776 14777 </tr> 14778 <tr class="entries_header"> 14779 <th class="th_details" colspan="6">Details</th> 14780 </tr> 14781 <tr class="entry_cont"> 14782 <td class="entry_details" colspan="6"> 14783 <p>The four coefficients that describe the quaternion 14784rotation from the Android sensor coordinate system to a 14785camera-aligned coordinate system where the X-axis is 14786aligned with the long side of the image sensor,<wbr/> the Y-axis 14787is aligned with the short side of the image sensor,<wbr/> and 14788the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 14789<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 14790to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 14791amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 14792<pre><code> theta = 2 * acos(w) 14793a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 14794a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 14795a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 14796</code></pre> 14797<p>To create a 3x3 rotation matrix that applies the rotation 14798defined by this quaternion,<wbr/> the following matrix can be 14799used:</p> 14800<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 14801 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 14802 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 14803</code></pre> 14804<p>This matrix can then be used to apply the rotation to a 14805 column vector point with</p> 14806<p><code>p' = Rp</code></p> 14807<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 14808 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 14809 </td> 14810 </tr> 14811 14812 14813 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14814 <!-- end of entry --> 14815 14816 14817 <tr class="entry" id="dynamic_android.lens.poseTranslation"> 14818 <td class="entry_name 14819 " rowspan="3"> 14820 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 14821 </td> 14822 <td class="entry_type"> 14823 <span class="entry_type_name">float</span> 14824 <span class="entry_type_container">x</span> 14825 14826 <span class="entry_type_array"> 14827 3 14828 </span> 14829 <span class="entry_type_visibility"> [public]</span> 14830 14831 14832 14833 14834 14835 14836 </td> <!-- entry_type --> 14837 14838 <td class="entry_description"> 14839 <p>Position of the camera optical center.<wbr/></p> 14840 </td> 14841 14842 <td class="entry_units"> 14843 Meters 14844 </td> 14845 14846 <td class="entry_range"> 14847 </td> 14848 14849 <td class="entry_hal_version"> 14850 <p>3.<wbr/>2</p> 14851 </td> 14852 14853 <td class="entry_tags"> 14854 <ul class="entry_tags"> 14855 <li><a href="#tag_DEPTH">DEPTH</a></li> 14856 </ul> 14857 </td> 14858 14859 </tr> 14860 <tr class="entries_header"> 14861 <th class="th_details" colspan="6">Details</th> 14862 </tr> 14863 <tr class="entry_cont"> 14864 <td class="entry_details" colspan="6"> 14865 <p>The position of the camera device's lens optical center,<wbr/> 14866as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p> 14867<p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position 14868is relative to the optical center of the largest camera device facing in the same 14869direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor 14870coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor 14871coordinate system,<wbr/> but not the origin.<wbr/></p> 14872<p>If this device is the largest or only camera device with a given facing,<wbr/> then this 14873position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm 14874from the main sensor along the +X axis (to the right from the user's perspective) will 14875report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/> Note that this means that,<wbr/> for many computer vision 14876applications,<wbr/> the position needs to be negated to convert it to a translation from the 14877camera to the origin.<wbr/></p> 14878<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first 14879the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source 14880camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the 14881<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera 14882relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination 14883camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination 14884camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel 14885coordinates.<wbr/></p> 14886<p>To compare this against a real image from the destination camera,<wbr/> the destination camera 14887image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p> 14888<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to 14889the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as 14890with PRIMARY_<wbr/>CAMERA.<wbr/></p> 14891 </td> 14892 </tr> 14893 14894 14895 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14896 <!-- end of entry --> 14897 14898 14899 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration"> 14900 <td class="entry_name 14901 " rowspan="3"> 14902 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 14903 </td> 14904 <td class="entry_type"> 14905 <span class="entry_type_name">float</span> 14906 <span class="entry_type_container">x</span> 14907 14908 <span class="entry_type_array"> 14909 5 14910 </span> 14911 <span class="entry_type_visibility"> [public]</span> 14912 14913 14914 14915 14916 14917 14918 </td> <!-- entry_type --> 14919 14920 <td class="entry_description"> 14921 <p>The parameters for this camera device's intrinsic 14922calibration.<wbr/></p> 14923 </td> 14924 14925 <td class="entry_units"> 14926 14927 Pixels in the 14928 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 14929 coordinate system.<wbr/> 14930 14931 </td> 14932 14933 <td class="entry_range"> 14934 </td> 14935 14936 <td class="entry_hal_version"> 14937 <p>3.<wbr/>2</p> 14938 </td> 14939 14940 <td class="entry_tags"> 14941 <ul class="entry_tags"> 14942 <li><a href="#tag_DEPTH">DEPTH</a></li> 14943 </ul> 14944 </td> 14945 14946 </tr> 14947 <tr class="entries_header"> 14948 <th class="th_details" colspan="6">Details</th> 14949 </tr> 14950 <tr class="entry_cont"> 14951 <td class="entry_details" colspan="6"> 14952 <p>The five calibration parameters that describe the 14953transform from camera-centric 3D coordinates to sensor 14954pixel coordinates:</p> 14955<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 14956</code></pre> 14957<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 14958focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 14959axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 14960being aligned with the lens plane.<wbr/></p> 14961<p>These are typically used within a transformation matrix K:</p> 14962<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 14963 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 14964 0 0,<wbr/> 1 ] 14965</code></pre> 14966<p>which can then be combined with the camera pose rotation 14967<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 14968<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the 14969complete transform from world coordinates to pixel 14970coordinates:</p> 14971<pre><code>P = [ K 0 * [ R -Rt 14972 0 1 ] 0 1 ] 14973</code></pre> 14974<p>(Note the negation of poseTranslation when mapping from camera 14975to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p> 14976<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system 14977and <code>p_<wbr/>s</code> being a point in the camera active pixel array 14978coordinate system,<wbr/> and with the mapping including the 14979homogeneous division by z:</p> 14980<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 14981p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 14982</code></pre> 14983<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 14984point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 14985(depth) in pixel coordinates.<wbr/></p> 14986<p>Note that the coordinate system for this transform is the 14987<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/> 14988where <code>(0,<wbr/>0)</code> is the top-left of the 14989preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 14990intrinsic calibration transforms have been applied to a 14991world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> 14992transform needs to be applied,<wbr/> and the result adjusted to 14993be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 14994system (where <code>(0,<wbr/> 0)</code> is the top-left of the 14995activeArraySize rectangle),<wbr/> to determine the final pixel 14996coordinate of the world point for processed (non-RAW) 14997output buffers.<wbr/></p> 14998<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at 14999coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/> So on a device with a 15000precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel 15001indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would 15002have an optical center at the exact center of the pixel grid,<wbr/> at 15003coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel 15004<code>(5,<wbr/>5)</code>.<wbr/></p> 15005 </td> 15006 </tr> 15007 15008 15009 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15010 <!-- end of entry --> 15011 15012 15013 <tr class="entry" id="dynamic_android.lens.radialDistortion"> 15014 <td class="entry_name 15015 entry_name_deprecated 15016 " rowspan="3"> 15017 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 15018 </td> 15019 <td class="entry_type"> 15020 <span class="entry_type_name">float</span> 15021 <span class="entry_type_container">x</span> 15022 15023 <span class="entry_type_array"> 15024 6 15025 </span> 15026 <span class="entry_type_visibility"> [public]</span> 15027 15028 15029 15030 <span class="entry_type_deprecated">[deprecated] </span> 15031 15032 15033 15034 </td> <!-- entry_type --> 15035 15036 <td class="entry_description"> 15037 <p>The correction coefficients to correct for this camera device's 15038radial and tangential lens distortion.<wbr/></p> 15039 </td> 15040 15041 <td class="entry_units"> 15042 15043 Unitless coefficients.<wbr/> 15044 15045 </td> 15046 15047 <td class="entry_range"> 15048 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15049 </td> 15050 15051 <td class="entry_hal_version"> 15052 <p>3.<wbr/>2</p> 15053 </td> 15054 15055 <td class="entry_tags"> 15056 <ul class="entry_tags"> 15057 <li><a href="#tag_DEPTH">DEPTH</a></li> 15058 </ul> 15059 </td> 15060 15061 </tr> 15062 <tr class="entries_header"> 15063 <th class="th_details" colspan="6">Details</th> 15064 </tr> 15065 <tr class="entry_cont"> 15066 <td class="entry_details" colspan="6"> 15067 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 15068kappa_<wbr/>3]</code> and two tangential distortion coefficients 15069<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 15070lens's geometric distortion with the mapping equations:</p> 15071<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 ) + 15072 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 15073 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 15074 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 15075</code></pre> 15076<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 15077input image that correspond to the pixel values in the 15078corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 15079<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 15080</code></pre> 15081<p>The pixel coordinates are defined in a normalized 15082coordinate system related to the 15083<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 15084Both <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 15085lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 15086of both x and y coordinates are normalized to be 1 at the 15087edge further from the optical center,<wbr/> so the range 15088for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 15089<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 15090optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 15091is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 15092<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 15093 </td> 15094 </tr> 15095 15096 15097 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15098 <!-- end of entry --> 15099 15100 15101 <tr class="entry" id="dynamic_android.lens.distortion"> 15102 <td class="entry_name 15103 " rowspan="3"> 15104 android.<wbr/>lens.<wbr/>distortion 15105 </td> 15106 <td class="entry_type"> 15107 <span class="entry_type_name">float</span> 15108 <span class="entry_type_container">x</span> 15109 15110 <span class="entry_type_array"> 15111 5 15112 </span> 15113 <span class="entry_type_visibility"> [public]</span> 15114 15115 15116 15117 15118 15119 15120 </td> <!-- entry_type --> 15121 15122 <td class="entry_description"> 15123 <p>The correction coefficients to correct for this camera device's 15124radial and tangential lens distortion.<wbr/></p> 15125<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was 15126inconsistently defined.<wbr/></p> 15127 </td> 15128 15129 <td class="entry_units"> 15130 15131 Unitless coefficients.<wbr/> 15132 15133 </td> 15134 15135 <td class="entry_range"> 15136 </td> 15137 15138 <td class="entry_hal_version"> 15139 <p>3.<wbr/>3</p> 15140 </td> 15141 15142 <td class="entry_tags"> 15143 <ul class="entry_tags"> 15144 <li><a href="#tag_DEPTH">DEPTH</a></li> 15145 </ul> 15146 </td> 15147 15148 </tr> 15149 <tr class="entries_header"> 15150 <th class="th_details" colspan="6">Details</th> 15151 </tr> 15152 <tr class="entry_cont"> 15153 <td class="entry_details" colspan="6"> 15154 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 15155kappa_<wbr/>3]</code> and two tangential distortion coefficients 15156<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 15157lens's geometric distortion with the mapping equations:</p> 15158<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 15159 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 15160 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 15161 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 15162</code></pre> 15163<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 15164input image that correspond to the pixel values in the 15165corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 15166<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 15167</code></pre> 15168<p>The pixel coordinates are defined in a coordinate system 15169related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 15170calibration fields; see that entry for details of the mapping stages.<wbr/> 15171Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> 15172have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and 15173the range of the coordinates depends on the focal length 15174terms of the intrinsic calibration.<wbr/></p> 15175<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 15176optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p> 15177<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 15178 </td> 15179 </tr> 15180 15181 15182 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15183 <!-- end of entry --> 15184 15185 15186 15187 <!-- end of kind --> 15188 </tbody> 15189 15190 <!-- end of section --> 15191 <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr> 15192 15193 15194 <tr><td colspan="7" class="kind">controls</td></tr> 15195 15196 <thead class="entries_header"> 15197 <tr> 15198 <th class="th_name">Property Name</th> 15199 <th class="th_type">Type</th> 15200 <th class="th_description">Description</th> 15201 <th class="th_units">Units</th> 15202 <th class="th_range">Range</th> 15203 <th class="th_hal_version">Initial HIDL HAL version</th> 15204 <th class="th_tags">Tags</th> 15205 </tr> 15206 </thead> 15207 15208 <tbody> 15209 15210 15211 15212 15213 15214 15215 15216 15217 15218 15219 <tr class="entry" id="controls_android.noiseReduction.mode"> 15220 <td class="entry_name 15221 " rowspan="5"> 15222 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 15223 </td> 15224 <td class="entry_type"> 15225 <span class="entry_type_name entry_type_name_enum">byte</span> 15226 15227 <span class="entry_type_visibility"> [public]</span> 15228 15229 15230 <span class="entry_type_hwlevel">[full] </span> 15231 15232 15233 15234 <ul class="entry_type_enum"> 15235 <li> 15236 <span class="entry_type_enum_name">OFF (v3.2)</span> 15237 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 15238 </li> 15239 <li> 15240 <span class="entry_type_enum_name">FAST (v3.2)</span> 15241 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 15242output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 15243relative to sensor.<wbr/></p></span> 15244 </li> 15245 <li> 15246 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 15247 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 15248rate relative to sensor output.<wbr/></p></span> 15249 </li> 15250 <li> 15251 <span class="entry_type_enum_name">MINIMAL (v3.2)</span> 15252 <span class="entry_type_enum_optional">[optional]</span> 15253 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 15254sensor output.<wbr/> </p></span> 15255 </li> 15256 <li> 15257 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 15258 <span class="entry_type_enum_optional">[optional]</span> 15259 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 15260based 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>) 15261or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if 15262supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of 15263noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> 15264and the quality is equal to or better than FAST (since it is only applied to 15265lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 15266<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 15267with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 15268high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 15269produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 15270high-resolution buffers must not have noise reduction applied to maximize efficiency of 15271preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 15272low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 15273applied for reasonable preview quality.<wbr/></p> 15274<p>This mode is guaranteed to be supported by devices that support either the 15275YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 15276(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 15277be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 15278 </li> 15279 </ul> 15280 15281 </td> <!-- entry_type --> 15282 15283 <td class="entry_description"> 15284 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 15285 </td> 15286 15287 <td class="entry_units"> 15288 </td> 15289 15290 <td class="entry_range"> 15291 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 15292 </td> 15293 15294 <td class="entry_hal_version"> 15295 <p>3.<wbr/>2</p> 15296 </td> 15297 15298 <td class="entry_tags"> 15299 <ul class="entry_tags"> 15300 <li><a href="#tag_V1">V1</a></li> 15301 <li><a href="#tag_REPROC">REPROC</a></li> 15302 </ul> 15303 </td> 15304 15305 </tr> 15306 <tr class="entries_header"> 15307 <th class="th_details" colspan="6">Details</th> 15308 </tr> 15309 <tr class="entry_cont"> 15310 <td class="entry_details" colspan="6"> 15311 <p>The noise reduction algorithm attempts to improve image quality by removing 15312excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 15313<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 15314YUV domain.<wbr/></p> 15315<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 15316demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 15317This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 15318<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> 15319<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 15320will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 15321will use the highest-quality noise filtering algorithms,<wbr/> 15322even if it slows down capture rate.<wbr/> FAST means the camera device will not 15323slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 15324MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 15325Every output stream will have a similar amount of enhancement applied.<wbr/></p> 15326<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 15327buffer of high-resolution images during preview and reprocess image(s) from that buffer 15328into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 15329noise reduction to low-resolution streams (below maximum recording resolution) to maximize 15330preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 15331those will be reprocessed later if necessary.<wbr/></p> 15332<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 15333will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 15334may adjust the noise reduction parameters for best image quality based on the 15335<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 15336 </td> 15337 </tr> 15338 15339 <tr class="entries_header"> 15340 <th class="th_details" colspan="6">HAL Implementation Details</th> 15341 </tr> 15342 <tr class="entry_cont"> 15343 <td class="entry_details" colspan="6"> 15344 <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 15345adjust the internal noise reduction parameters appropriately to get the best quality 15346images.<wbr/></p> 15347 </td> 15348 </tr> 15349 15350 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15351 <!-- end of entry --> 15352 15353 15354 <tr class="entry" id="controls_android.noiseReduction.strength"> 15355 <td class="entry_name 15356 " rowspan="1"> 15357 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 15358 </td> 15359 <td class="entry_type"> 15360 <span class="entry_type_name">byte</span> 15361 15362 <span class="entry_type_visibility"> [system]</span> 15363 15364 15365 15366 15367 15368 15369 </td> <!-- entry_type --> 15370 15371 <td class="entry_description"> 15372 <p>Control the amount of noise reduction 15373applied to the images</p> 15374 </td> 15375 15376 <td class="entry_units"> 15377 1-10; 10 is max noise reduction 15378 </td> 15379 15380 <td class="entry_range"> 15381 <p>1 - 10</p> 15382 </td> 15383 15384 <td class="entry_hal_version"> 15385 <p>3.<wbr/>2</p> 15386 </td> 15387 15388 <td class="entry_tags"> 15389 <ul class="entry_tags"> 15390 <li><a href="#tag_FUTURE">FUTURE</a></li> 15391 </ul> 15392 </td> 15393 15394 </tr> 15395 15396 15397 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15398 <!-- end of entry --> 15399 15400 15401 15402 <!-- end of kind --> 15403 </tbody> 15404 <tr><td colspan="7" class="kind">static</td></tr> 15405 15406 <thead class="entries_header"> 15407 <tr> 15408 <th class="th_name">Property Name</th> 15409 <th class="th_type">Type</th> 15410 <th class="th_description">Description</th> 15411 <th class="th_units">Units</th> 15412 <th class="th_range">Range</th> 15413 <th class="th_hal_version">Initial HIDL HAL version</th> 15414 <th class="th_tags">Tags</th> 15415 </tr> 15416 </thead> 15417 15418 <tbody> 15419 15420 15421 15422 15423 15424 15425 15426 15427 15428 15429 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 15430 <td class="entry_name 15431 " rowspan="5"> 15432 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 15433 </td> 15434 <td class="entry_type"> 15435 <span class="entry_type_name">byte</span> 15436 <span class="entry_type_container">x</span> 15437 15438 <span class="entry_type_array"> 15439 n 15440 </span> 15441 <span class="entry_type_visibility"> [public as enumList]</span> 15442 15443 15444 <span class="entry_type_hwlevel">[limited] </span> 15445 15446 15447 <div class="entry_type_notes">list of enums</div> 15448 15449 15450 </td> <!-- entry_type --> 15451 15452 <td class="entry_description"> 15453 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported 15454by this camera device.<wbr/></p> 15455 </td> 15456 15457 <td class="entry_units"> 15458 </td> 15459 15460 <td class="entry_range"> 15461 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p> 15462 </td> 15463 15464 <td class="entry_hal_version"> 15465 <p>3.<wbr/>2</p> 15466 </td> 15467 15468 <td class="entry_tags"> 15469 <ul class="entry_tags"> 15470 <li><a href="#tag_V1">V1</a></li> 15471 <li><a href="#tag_REPROC">REPROC</a></li> 15472 </ul> 15473 </td> 15474 15475 </tr> 15476 <tr class="entries_header"> 15477 <th class="th_details" colspan="6">Details</th> 15478 </tr> 15479 <tr class="entry_cont"> 15480 <td class="entry_details" colspan="6"> 15481 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p> 15482<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support 15483ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p> 15484<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p> 15485 </td> 15486 </tr> 15487 15488 <tr class="entries_header"> 15489 <th class="th_details" colspan="6">HAL Implementation Details</th> 15490 </tr> 15491 <tr class="entry_cont"> 15492 <td class="entry_details" colspan="6"> 15493 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available 15494on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 15495That is,<wbr/> if the highest quality implementation on the camera device does not slow down 15496capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 15497 </td> 15498 </tr> 15499 15500 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15501 <!-- end of entry --> 15502 15503 15504 15505 <!-- end of kind --> 15506 </tbody> 15507 <tr><td colspan="7" class="kind">dynamic</td></tr> 15508 15509 <thead class="entries_header"> 15510 <tr> 15511 <th class="th_name">Property Name</th> 15512 <th class="th_type">Type</th> 15513 <th class="th_description">Description</th> 15514 <th class="th_units">Units</th> 15515 <th class="th_range">Range</th> 15516 <th class="th_hal_version">Initial HIDL HAL version</th> 15517 <th class="th_tags">Tags</th> 15518 </tr> 15519 </thead> 15520 15521 <tbody> 15522 15523 15524 15525 15526 15527 15528 15529 15530 15531 15532 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 15533 <td class="entry_name 15534 " rowspan="5"> 15535 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 15536 </td> 15537 <td class="entry_type"> 15538 <span class="entry_type_name entry_type_name_enum">byte</span> 15539 15540 <span class="entry_type_visibility"> [public]</span> 15541 15542 15543 <span class="entry_type_hwlevel">[full] </span> 15544 15545 15546 15547 <ul class="entry_type_enum"> 15548 <li> 15549 <span class="entry_type_enum_name">OFF (v3.2)</span> 15550 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 15551 </li> 15552 <li> 15553 <span class="entry_type_enum_name">FAST (v3.2)</span> 15554 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 15555output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 15556relative to sensor.<wbr/></p></span> 15557 </li> 15558 <li> 15559 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 15560 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 15561rate relative to sensor output.<wbr/></p></span> 15562 </li> 15563 <li> 15564 <span class="entry_type_enum_name">MINIMAL (v3.2)</span> 15565 <span class="entry_type_enum_optional">[optional]</span> 15566 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 15567sensor output.<wbr/> </p></span> 15568 </li> 15569 <li> 15570 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 15571 <span class="entry_type_enum_optional">[optional]</span> 15572 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 15573based 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>) 15574or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if 15575supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of 15576noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> 15577and the quality is equal to or better than FAST (since it is only applied to 15578lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 15579<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 15580with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 15581high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 15582produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 15583high-resolution buffers must not have noise reduction applied to maximize efficiency of 15584preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 15585low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 15586applied for reasonable preview quality.<wbr/></p> 15587<p>This mode is guaranteed to be supported by devices that support either the 15588YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 15589(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 15590be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 15591 </li> 15592 </ul> 15593 15594 </td> <!-- entry_type --> 15595 15596 <td class="entry_description"> 15597 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 15598 </td> 15599 15600 <td class="entry_units"> 15601 </td> 15602 15603 <td class="entry_range"> 15604 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 15605 </td> 15606 15607 <td class="entry_hal_version"> 15608 <p>3.<wbr/>2</p> 15609 </td> 15610 15611 <td class="entry_tags"> 15612 <ul class="entry_tags"> 15613 <li><a href="#tag_V1">V1</a></li> 15614 <li><a href="#tag_REPROC">REPROC</a></li> 15615 </ul> 15616 </td> 15617 15618 </tr> 15619 <tr class="entries_header"> 15620 <th class="th_details" colspan="6">Details</th> 15621 </tr> 15622 <tr class="entry_cont"> 15623 <td class="entry_details" colspan="6"> 15624 <p>The noise reduction algorithm attempts to improve image quality by removing 15625excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 15626<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 15627YUV domain.<wbr/></p> 15628<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 15629demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 15630This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 15631<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> 15632<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 15633will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 15634will use the highest-quality noise filtering algorithms,<wbr/> 15635even if it slows down capture rate.<wbr/> FAST means the camera device will not 15636slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 15637MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 15638Every output stream will have a similar amount of enhancement applied.<wbr/></p> 15639<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 15640buffer of high-resolution images during preview and reprocess image(s) from that buffer 15641into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 15642noise reduction to low-resolution streams (below maximum recording resolution) to maximize 15643preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 15644those will be reprocessed later if necessary.<wbr/></p> 15645<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 15646will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 15647may adjust the noise reduction parameters for best image quality based on the 15648<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 15649 </td> 15650 </tr> 15651 15652 <tr class="entries_header"> 15653 <th class="th_details" colspan="6">HAL Implementation Details</th> 15654 </tr> 15655 <tr class="entry_cont"> 15656 <td class="entry_details" colspan="6"> 15657 <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 15658adjust the internal noise reduction parameters appropriately to get the best quality 15659images.<wbr/></p> 15660 </td> 15661 </tr> 15662 15663 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15664 <!-- end of entry --> 15665 15666 15667 15668 <!-- end of kind --> 15669 </tbody> 15670 15671 <!-- end of section --> 15672 <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr> 15673 15674 15675 <tr><td colspan="7" class="kind">static</td></tr> 15676 15677 <thead class="entries_header"> 15678 <tr> 15679 <th class="th_name">Property Name</th> 15680 <th class="th_type">Type</th> 15681 <th class="th_description">Description</th> 15682 <th class="th_units">Units</th> 15683 <th class="th_range">Range</th> 15684 <th class="th_hal_version">Initial HIDL HAL version</th> 15685 <th class="th_tags">Tags</th> 15686 </tr> 15687 </thead> 15688 15689 <tbody> 15690 15691 15692 15693 15694 15695 15696 15697 15698 15699 15700 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 15701 <td class="entry_name 15702 entry_name_deprecated 15703 " rowspan="3"> 15704 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 15705 </td> 15706 <td class="entry_type"> 15707 <span class="entry_type_name">byte</span> 15708 15709 <span class="entry_type_visibility"> [system]</span> 15710 15711 15712 15713 <span class="entry_type_deprecated">[deprecated] </span> 15714 15715 15716 15717 </td> <!-- entry_type --> 15718 15719 <td class="entry_description"> 15720 <p>If set to 1,<wbr/> the camera service does not 15721scale 'normalized' coordinates with respect to the crop 15722region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 15723and output (face rectangles).<wbr/></p> 15724 </td> 15725 15726 <td class="entry_units"> 15727 </td> 15728 15729 <td class="entry_range"> 15730 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15731 </td> 15732 15733 <td class="entry_hal_version"> 15734 <p>3.<wbr/>2</p> 15735 </td> 15736 15737 <td class="entry_tags"> 15738 </td> 15739 15740 </tr> 15741 <tr class="entries_header"> 15742 <th class="th_details" colspan="6">Details</th> 15743 </tr> 15744 <tr class="entry_cont"> 15745 <td class="entry_details" colspan="6"> 15746 <p>Normalized coordinates refer to those in the 15747(-1000,<wbr/>1000) range mentioned in the 15748android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 15749<p>HAL implementations should instead always use and emit 15750sensor array-relative coordinates for all region data.<wbr/> Does 15751not need to be listed in static metadata.<wbr/> Support will be 15752removed in future versions of camera service.<wbr/></p> 15753 </td> 15754 </tr> 15755 15756 15757 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15758 <!-- end of entry --> 15759 15760 15761 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 15762 <td class="entry_name 15763 entry_name_deprecated 15764 " rowspan="3"> 15765 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 15766 </td> 15767 <td class="entry_type"> 15768 <span class="entry_type_name">byte</span> 15769 15770 <span class="entry_type_visibility"> [system]</span> 15771 15772 15773 15774 <span class="entry_type_deprecated">[deprecated] </span> 15775 15776 15777 15778 </td> <!-- entry_type --> 15779 15780 <td class="entry_description"> 15781 <p>If set to 1,<wbr/> then the camera service always 15782switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 15783trigger.<wbr/></p> 15784 </td> 15785 15786 <td class="entry_units"> 15787 </td> 15788 15789 <td class="entry_range"> 15790 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15791 </td> 15792 15793 <td class="entry_hal_version"> 15794 <p>3.<wbr/>2</p> 15795 </td> 15796 15797 <td class="entry_tags"> 15798 </td> 15799 15800 </tr> 15801 <tr class="entries_header"> 15802 <th class="th_details" colspan="6">Details</th> 15803 </tr> 15804 <tr class="entry_cont"> 15805 <td class="entry_details" colspan="6"> 15806 <p>HAL implementations should implement AF trigger 15807modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 15808CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 15809not need to be listed in static metadata.<wbr/> Support will be 15810removed in future versions of camera service</p> 15811 </td> 15812 </tr> 15813 15814 15815 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15816 <!-- end of entry --> 15817 15818 15819 <tr class="entry" id="static_android.quirks.useZslFormat"> 15820 <td class="entry_name 15821 entry_name_deprecated 15822 " rowspan="3"> 15823 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 15824 </td> 15825 <td class="entry_type"> 15826 <span class="entry_type_name">byte</span> 15827 15828 <span class="entry_type_visibility"> [system]</span> 15829 15830 15831 15832 <span class="entry_type_deprecated">[deprecated] </span> 15833 15834 15835 15836 </td> <!-- entry_type --> 15837 15838 <td class="entry_description"> 15839 <p>If set to 1,<wbr/> the camera service uses 15840CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 15841HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 15842shutter lag stream</p> 15843 </td> 15844 15845 <td class="entry_units"> 15846 </td> 15847 15848 <td class="entry_range"> 15849 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15850 </td> 15851 15852 <td class="entry_hal_version"> 15853 <p>3.<wbr/>2</p> 15854 </td> 15855 15856 <td class="entry_tags"> 15857 </td> 15858 15859 </tr> 15860 <tr class="entries_header"> 15861 <th class="th_details" colspan="6">Details</th> 15862 </tr> 15863 <tr class="entry_cont"> 15864 <td class="entry_details" colspan="6"> 15865 <p>HAL implementations should use gralloc usage flags 15866to determine that a stream will be used for 15867zero-shutter-lag,<wbr/> instead of relying on an explicit 15868format setting.<wbr/> Does not need to be listed in static 15869metadata.<wbr/> Support will be removed in future versions of 15870camera service.<wbr/></p> 15871 </td> 15872 </tr> 15873 15874 15875 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15876 <!-- end of entry --> 15877 15878 15879 <tr class="entry" id="static_android.quirks.usePartialResult"> 15880 <td class="entry_name 15881 entry_name_deprecated 15882 " rowspan="5"> 15883 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 15884 </td> 15885 <td class="entry_type"> 15886 <span class="entry_type_name">byte</span> 15887 15888 <span class="entry_type_visibility"> [hidden]</span> 15889 15890 15891 15892 <span class="entry_type_deprecated">[deprecated] </span> 15893 15894 15895 15896 </td> <!-- entry_type --> 15897 15898 <td class="entry_description"> 15899 <p>If set to 1,<wbr/> the HAL will always split result 15900metadata for a single capture into multiple buffers,<wbr/> 15901returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 15902 </td> 15903 15904 <td class="entry_units"> 15905 </td> 15906 15907 <td class="entry_range"> 15908 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15909 </td> 15910 15911 <td class="entry_hal_version"> 15912 <p>3.<wbr/>2</p> 15913 </td> 15914 15915 <td class="entry_tags"> 15916 </td> 15917 15918 </tr> 15919 <tr class="entries_header"> 15920 <th class="th_details" colspan="6">Details</th> 15921 </tr> 15922 <tr class="entry_cont"> 15923 <td class="entry_details" colspan="6"> 15924 <p>Does not need to be listed in static 15925metadata.<wbr/> Support for partial results will be reworked in 15926future versions of camera service.<wbr/> This quirk will stop 15927working at that point; DO NOT USE without careful 15928consideration of future support.<wbr/></p> 15929 </td> 15930 </tr> 15931 15932 <tr class="entries_header"> 15933 <th class="th_details" colspan="6">HAL Implementation Details</th> 15934 </tr> 15935 <tr class="entry_cont"> 15936 <td class="entry_details" colspan="6"> 15937 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 15938for information on how to implement partial results.<wbr/></p> 15939 </td> 15940 </tr> 15941 15942 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15943 <!-- end of entry --> 15944 15945 15946 15947 <!-- end of kind --> 15948 </tbody> 15949 <tr><td colspan="7" class="kind">dynamic</td></tr> 15950 15951 <thead class="entries_header"> 15952 <tr> 15953 <th class="th_name">Property Name</th> 15954 <th class="th_type">Type</th> 15955 <th class="th_description">Description</th> 15956 <th class="th_units">Units</th> 15957 <th class="th_range">Range</th> 15958 <th class="th_hal_version">Initial HIDL HAL version</th> 15959 <th class="th_tags">Tags</th> 15960 </tr> 15961 </thead> 15962 15963 <tbody> 15964 15965 15966 15967 15968 15969 15970 15971 15972 15973 15974 <tr class="entry" id="dynamic_android.quirks.partialResult"> 15975 <td class="entry_name 15976 entry_name_deprecated 15977 " rowspan="5"> 15978 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 15979 </td> 15980 <td class="entry_type"> 15981 <span class="entry_type_name entry_type_name_enum">byte</span> 15982 15983 <span class="entry_type_visibility"> [hidden as boolean]</span> 15984 15985 15986 15987 <span class="entry_type_deprecated">[deprecated] </span> 15988 15989 15990 <ul class="entry_type_enum"> 15991 <li> 15992 <span class="entry_type_enum_name">FINAL (v3.2)</span> 15993 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 15994for this capture.<wbr/></p></span> 15995 </li> 15996 <li> 15997 <span class="entry_type_enum_name">PARTIAL (v3.2)</span> 15998 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 15999capture.<wbr/> More result buffers for this capture will be sent 16000by the camera device,<wbr/> the last of which will be marked 16001FINAL.<wbr/></p></span> 16002 </li> 16003 </ul> 16004 16005 </td> <!-- entry_type --> 16006 16007 <td class="entry_description"> 16008 <p>Whether a result given to the framework is the 16009final one for the capture,<wbr/> or only a partial that contains a 16010subset of the full set of dynamic metadata 16011values.<wbr/></p> 16012 </td> 16013 16014 <td class="entry_units"> 16015 </td> 16016 16017 <td class="entry_range"> 16018 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16019 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> 16020 </td> 16021 16022 <td class="entry_hal_version"> 16023 <p>3.<wbr/>2</p> 16024 </td> 16025 16026 <td class="entry_tags"> 16027 </td> 16028 16029 </tr> 16030 <tr class="entries_header"> 16031 <th class="th_details" colspan="6">Details</th> 16032 </tr> 16033 <tr class="entry_cont"> 16034 <td class="entry_details" colspan="6"> 16035 <p>The entries in the result metadata buffers for a 16036single capture may not overlap,<wbr/> except for this entry.<wbr/> The 16037FINAL buffers must retain FIFO ordering relative to the 16038requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 16039always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 16040before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 16041in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 16042capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 16043only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 16044 </td> 16045 </tr> 16046 16047 <tr class="entries_header"> 16048 <th class="th_details" colspan="6">HAL Implementation Details</th> 16049 </tr> 16050 <tr class="entry_cont"> 16051 <td class="entry_details" colspan="6"> 16052 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 16053for information on how to implement partial results.<wbr/></p> 16054 </td> 16055 </tr> 16056 16057 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16058 <!-- end of entry --> 16059 16060 16061 16062 <!-- end of kind --> 16063 </tbody> 16064 16065 <!-- end of section --> 16066 <tr><td colspan="7" id="section_request" class="section">request</td></tr> 16067 16068 16069 <tr><td colspan="7" class="kind">controls</td></tr> 16070 16071 <thead class="entries_header"> 16072 <tr> 16073 <th class="th_name">Property Name</th> 16074 <th class="th_type">Type</th> 16075 <th class="th_description">Description</th> 16076 <th class="th_units">Units</th> 16077 <th class="th_range">Range</th> 16078 <th class="th_hal_version">Initial HIDL HAL version</th> 16079 <th class="th_tags">Tags</th> 16080 </tr> 16081 </thead> 16082 16083 <tbody> 16084 16085 16086 16087 16088 16089 16090 16091 16092 16093 16094 <tr class="entry" id="controls_android.request.frameCount"> 16095 <td class="entry_name 16096 entry_name_deprecated 16097 " rowspan="1"> 16098 android.<wbr/>request.<wbr/>frame<wbr/>Count 16099 </td> 16100 <td class="entry_type"> 16101 <span class="entry_type_name">int32</span> 16102 16103 <span class="entry_type_visibility"> [system]</span> 16104 16105 16106 16107 <span class="entry_type_deprecated">[deprecated] </span> 16108 16109 16110 16111 </td> <!-- entry_type --> 16112 16113 <td class="entry_description"> 16114 <p>A frame counter set by the framework.<wbr/> Must 16115be maintained unchanged in output frame.<wbr/> This value monotonically 16116increases with every new result (that is,<wbr/> each new result has a unique 16117frameCount value).<wbr/></p> 16118 </td> 16119 16120 <td class="entry_units"> 16121 incrementing integer 16122 </td> 16123 16124 <td class="entry_range"> 16125 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16126 <p>Any int.<wbr/></p> 16127 </td> 16128 16129 <td class="entry_hal_version"> 16130 <p>3.<wbr/>2</p> 16131 </td> 16132 16133 <td class="entry_tags"> 16134 </td> 16135 16136 </tr> 16137 16138 16139 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16140 <!-- end of entry --> 16141 16142 16143 <tr class="entry" id="controls_android.request.id"> 16144 <td class="entry_name 16145 " rowspan="1"> 16146 android.<wbr/>request.<wbr/>id 16147 </td> 16148 <td class="entry_type"> 16149 <span class="entry_type_name">int32</span> 16150 16151 <span class="entry_type_visibility"> [hidden]</span> 16152 16153 16154 16155 16156 16157 16158 </td> <!-- entry_type --> 16159 16160 <td class="entry_description"> 16161 <p>An application-specified ID for the current 16162request.<wbr/> Must be maintained unchanged in output 16163frame</p> 16164 </td> 16165 16166 <td class="entry_units"> 16167 arbitrary integer assigned by application 16168 </td> 16169 16170 <td class="entry_range"> 16171 <p>Any int</p> 16172 </td> 16173 16174 <td class="entry_hal_version"> 16175 <p>3.<wbr/>2</p> 16176 </td> 16177 16178 <td class="entry_tags"> 16179 <ul class="entry_tags"> 16180 <li><a href="#tag_V1">V1</a></li> 16181 </ul> 16182 </td> 16183 16184 </tr> 16185 16186 16187 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16188 <!-- end of entry --> 16189 16190 16191 <tr class="entry" id="controls_android.request.inputStreams"> 16192 <td class="entry_name 16193 entry_name_deprecated 16194 " rowspan="3"> 16195 android.<wbr/>request.<wbr/>input<wbr/>Streams 16196 </td> 16197 <td class="entry_type"> 16198 <span class="entry_type_name">int32</span> 16199 <span class="entry_type_container">x</span> 16200 16201 <span class="entry_type_array"> 16202 n 16203 </span> 16204 <span class="entry_type_visibility"> [system]</span> 16205 16206 16207 16208 <span class="entry_type_deprecated">[deprecated] </span> 16209 16210 16211 16212 </td> <!-- entry_type --> 16213 16214 <td class="entry_description"> 16215 <p>List which camera reprocess stream is used 16216for the source of reprocessing data.<wbr/></p> 16217 </td> 16218 16219 <td class="entry_units"> 16220 List of camera reprocess stream IDs 16221 </td> 16222 16223 <td class="entry_range"> 16224 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16225 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 16226 </td> 16227 16228 <td class="entry_hal_version"> 16229 <p>3.<wbr/>2</p> 16230 </td> 16231 16232 <td class="entry_tags"> 16233 <ul class="entry_tags"> 16234 <li><a href="#tag_HAL2">HAL2</a></li> 16235 </ul> 16236 </td> 16237 16238 </tr> 16239 <tr class="entries_header"> 16240 <th class="th_details" colspan="6">Details</th> 16241 </tr> 16242 <tr class="entry_cont"> 16243 <td class="entry_details" colspan="6"> 16244 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 16245REPROCESS.<wbr/> Ignored otherwise</p> 16246 </td> 16247 </tr> 16248 16249 16250 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16251 <!-- end of entry --> 16252 16253 16254 <tr class="entry" id="controls_android.request.metadataMode"> 16255 <td class="entry_name 16256 " rowspan="1"> 16257 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 16258 </td> 16259 <td class="entry_type"> 16260 <span class="entry_type_name entry_type_name_enum">byte</span> 16261 16262 <span class="entry_type_visibility"> [system]</span> 16263 16264 16265 16266 16267 16268 <ul class="entry_type_enum"> 16269 <li> 16270 <span class="entry_type_enum_name">NONE (v3.2)</span> 16271 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 16272for application-bound buffer data.<wbr/> If no 16273application-bound streams exist,<wbr/> no frame should be 16274placed in the output frame queue.<wbr/> If such streams 16275exist,<wbr/> a frame should be placed on the output queue 16276with null metadata but with the necessary output buffer 16277information.<wbr/> Timestamp information should still be 16278included with any output stream buffers</p></span> 16279 </li> 16280 <li> 16281 <span class="entry_type_enum_name">FULL (v3.2)</span> 16282 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 16283only be produced if they are separately 16284enabled</p></span> 16285 </li> 16286 </ul> 16287 16288 </td> <!-- entry_type --> 16289 16290 <td class="entry_description"> 16291 <p>How much metadata to produce on 16292output</p> 16293 </td> 16294 16295 <td class="entry_units"> 16296 </td> 16297 16298 <td class="entry_range"> 16299 </td> 16300 16301 <td class="entry_hal_version"> 16302 <p>3.<wbr/>2</p> 16303 </td> 16304 16305 <td class="entry_tags"> 16306 <ul class="entry_tags"> 16307 <li><a href="#tag_FUTURE">FUTURE</a></li> 16308 </ul> 16309 </td> 16310 16311 </tr> 16312 16313 16314 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16315 <!-- end of entry --> 16316 16317 16318 <tr class="entry" id="controls_android.request.outputStreams"> 16319 <td class="entry_name 16320 entry_name_deprecated 16321 " rowspan="3"> 16322 android.<wbr/>request.<wbr/>output<wbr/>Streams 16323 </td> 16324 <td class="entry_type"> 16325 <span class="entry_type_name">int32</span> 16326 <span class="entry_type_container">x</span> 16327 16328 <span class="entry_type_array"> 16329 n 16330 </span> 16331 <span class="entry_type_visibility"> [system]</span> 16332 16333 16334 16335 <span class="entry_type_deprecated">[deprecated] </span> 16336 16337 16338 16339 </td> <!-- entry_type --> 16340 16341 <td class="entry_description"> 16342 <p>Lists which camera output streams image data 16343from this capture must be sent to</p> 16344 </td> 16345 16346 <td class="entry_units"> 16347 List of camera stream IDs 16348 </td> 16349 16350 <td class="entry_range"> 16351 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16352 <p>List must only include streams that have been 16353created</p> 16354 </td> 16355 16356 <td class="entry_hal_version"> 16357 <p>3.<wbr/>2</p> 16358 </td> 16359 16360 <td class="entry_tags"> 16361 <ul class="entry_tags"> 16362 <li><a href="#tag_HAL2">HAL2</a></li> 16363 </ul> 16364 </td> 16365 16366 </tr> 16367 <tr class="entries_header"> 16368 <th class="th_details" colspan="6">Details</th> 16369 </tr> 16370 <tr class="entry_cont"> 16371 <td class="entry_details" colspan="6"> 16372 <p>If no output streams are listed,<wbr/> then the image 16373data should simply be discarded.<wbr/> The image data must 16374still be captured for metadata and statistics production,<wbr/> 16375and the lens and flash must operate as requested.<wbr/></p> 16376 </td> 16377 </tr> 16378 16379 16380 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16381 <!-- end of entry --> 16382 16383 16384 <tr class="entry" id="controls_android.request.type"> 16385 <td class="entry_name 16386 entry_name_deprecated 16387 " rowspan="1"> 16388 android.<wbr/>request.<wbr/>type 16389 </td> 16390 <td class="entry_type"> 16391 <span class="entry_type_name entry_type_name_enum">byte</span> 16392 16393 <span class="entry_type_visibility"> [system]</span> 16394 16395 16396 16397 <span class="entry_type_deprecated">[deprecated] </span> 16398 16399 16400 <ul class="entry_type_enum"> 16401 <li> 16402 <span class="entry_type_enum_name">CAPTURE (v3.2)</span> 16403 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 16404and process it according to the 16405settings</p></span> 16406 </li> 16407 <li> 16408 <span class="entry_type_enum_name">REPROCESS (v3.2)</span> 16409 <span class="entry_type_enum_notes"><p>Process previously captured data; the 16410<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 16411source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 16412needed for reprocessing with [RP]</p></span> 16413 </li> 16414 </ul> 16415 16416 </td> <!-- entry_type --> 16417 16418 <td class="entry_description"> 16419 <p>The type of the request; either CAPTURE or 16420REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p> 16421 </td> 16422 16423 <td class="entry_units"> 16424 </td> 16425 16426 <td class="entry_range"> 16427 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16428 </td> 16429 16430 <td class="entry_hal_version"> 16431 <p>3.<wbr/>2</p> 16432 </td> 16433 16434 <td class="entry_tags"> 16435 <ul class="entry_tags"> 16436 <li><a href="#tag_HAL2">HAL2</a></li> 16437 </ul> 16438 </td> 16439 16440 </tr> 16441 16442 16443 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16444 <!-- end of entry --> 16445 16446 16447 16448 <!-- end of kind --> 16449 </tbody> 16450 <tr><td colspan="7" class="kind">static</td></tr> 16451 16452 <thead class="entries_header"> 16453 <tr> 16454 <th class="th_name">Property Name</th> 16455 <th class="th_type">Type</th> 16456 <th class="th_description">Description</th> 16457 <th class="th_units">Units</th> 16458 <th class="th_range">Range</th> 16459 <th class="th_hal_version">Initial HIDL HAL version</th> 16460 <th class="th_tags">Tags</th> 16461 </tr> 16462 </thead> 16463 16464 <tbody> 16465 16466 16467 16468 16469 16470 16471 16472 16473 16474 16475 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 16476 <td class="entry_name 16477 " rowspan="3"> 16478 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 16479 </td> 16480 <td class="entry_type"> 16481 <span class="entry_type_name">int32</span> 16482 <span class="entry_type_container">x</span> 16483 16484 <span class="entry_type_array"> 16485 3 16486 </span> 16487 <span class="entry_type_visibility"> [ndk_public]</span> 16488 16489 16490 <span class="entry_type_hwlevel">[legacy] </span> 16491 16492 16493 16494 16495 </td> <!-- entry_type --> 16496 16497 <td class="entry_description"> 16498 <p>The maximum numbers of different types of output streams 16499that can be configured and used simultaneously by a camera device.<wbr/></p> 16500 </td> 16501 16502 <td class="entry_units"> 16503 </td> 16504 16505 <td class="entry_range"> 16506 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> 16507<p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> 16508<p>For processed (but not stalling) format streams,<wbr/> >= 3 16509for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 16510>= 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> 16511 </td> 16512 16513 <td class="entry_hal_version"> 16514 <p>3.<wbr/>2</p> 16515 </td> 16516 16517 <td class="entry_tags"> 16518 <ul class="entry_tags"> 16519 <li><a href="#tag_BC">BC</a></li> 16520 </ul> 16521 </td> 16522 16523 </tr> 16524 <tr class="entries_header"> 16525 <th class="th_details" colspan="6">Details</th> 16526 </tr> 16527 <tr class="entry_cont"> 16528 <td class="entry_details" colspan="6"> 16529 <p>This is a 3 element tuple that contains the max number of output simultaneous 16530streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 16531formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 16532stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 16533number 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> 16534<p>This lists the upper bound of the number of output streams supported by 16535the camera device.<wbr/> Using more streams simultaneously may require more hardware and 16536CPU resources that will consume more power.<wbr/> The image format for an output stream can 16537be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 16538The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized 16539into the 3 stream types as below:</p> 16540<ul> 16541<li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> 16542 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li> 16543<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 16544 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li> 16545<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> Typically 16546 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/> 16547 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> .<wbr/></li> 16548</ul> 16549 </td> 16550 </tr> 16551 16552 16553 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16554 <!-- end of entry --> 16555 16556 16557 <tr class="entry" id="static_android.request.maxNumOutputRaw"> 16558 <td class="entry_name 16559 " rowspan="3"> 16560 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw 16561 </td> 16562 <td class="entry_type"> 16563 <span class="entry_type_name">int32</span> 16564 16565 <span class="entry_type_visibility"> [java_public]</span> 16566 16567 <span class="entry_type_synthetic">[synthetic] </span> 16568 16569 <span class="entry_type_hwlevel">[legacy] </span> 16570 16571 16572 16573 16574 </td> <!-- entry_type --> 16575 16576 <td class="entry_description"> 16577 <p>The maximum numbers of different types of output streams 16578that can be configured and used simultaneously by a camera device 16579for any <code>RAW</code> formats.<wbr/></p> 16580 </td> 16581 16582 <td class="entry_units"> 16583 </td> 16584 16585 <td class="entry_range"> 16586 <p>>= 0</p> 16587 </td> 16588 16589 <td class="entry_hal_version"> 16590 <p>3.<wbr/>2</p> 16591 </td> 16592 16593 <td class="entry_tags"> 16594 </td> 16595 16596 </tr> 16597 <tr class="entries_header"> 16598 <th class="th_details" colspan="6">Details</th> 16599 </tr> 16600 <tr class="entry_cont"> 16601 <td class="entry_details" colspan="6"> 16602 <p>This value contains the max number of output simultaneous 16603streams from the raw sensor.<wbr/></p> 16604<p>This lists the upper bound of the number of output streams supported by 16605the camera device.<wbr/> Using more streams simultaneously may require more hardware and 16606CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 16607be 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> 16608<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> 16609<ul> 16610<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li> 16611<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li> 16612<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li> 16613</ul> 16614<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY) 16615never support raw streams.<wbr/></p> 16616 </td> 16617 </tr> 16618 16619 16620 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16621 <!-- end of entry --> 16622 16623 16624 <tr class="entry" id="static_android.request.maxNumOutputProc"> 16625 <td class="entry_name 16626 " rowspan="3"> 16627 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc 16628 </td> 16629 <td class="entry_type"> 16630 <span class="entry_type_name">int32</span> 16631 16632 <span class="entry_type_visibility"> [java_public]</span> 16633 16634 <span class="entry_type_synthetic">[synthetic] </span> 16635 16636 <span class="entry_type_hwlevel">[legacy] </span> 16637 16638 16639 16640 16641 </td> <!-- entry_type --> 16642 16643 <td class="entry_description"> 16644 <p>The maximum numbers of different types of output streams 16645that can be configured and used simultaneously by a camera device 16646for any processed (but not-stalling) formats.<wbr/></p> 16647 </td> 16648 16649 <td class="entry_units"> 16650 </td> 16651 16652 <td class="entry_range"> 16653 <p>>= 3 16654for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 16655>= 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> 16656 </td> 16657 16658 <td class="entry_hal_version"> 16659 <p>3.<wbr/>2</p> 16660 </td> 16661 16662 <td class="entry_tags"> 16663 </td> 16664 16665 </tr> 16666 <tr class="entries_header"> 16667 <th class="th_details" colspan="6">Details</th> 16668 </tr> 16669 <tr class="entry_cont"> 16670 <td class="entry_details" colspan="6"> 16671 <p>This value contains the max number of output simultaneous 16672streams for any processed (but not-stalling) formats.<wbr/></p> 16673<p>This lists the upper bound of the number of output streams supported by 16674the camera device.<wbr/> Using more streams simultaneously may require more hardware and 16675CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 16676be 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> 16677<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> 16678Typically:</p> 16679<ul> 16680<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li> 16681<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li> 16682<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li> 16683<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> 16684<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a></li> 16685</ul> 16686<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 16687processed format -- it will return 0 for a non-stalling stream.<wbr/></p> 16688<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p> 16689 </td> 16690 </tr> 16691 16692 16693 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16694 <!-- end of entry --> 16695 16696 16697 <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> 16698 <td class="entry_name 16699 " rowspan="3"> 16700 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling 16701 </td> 16702 <td class="entry_type"> 16703 <span class="entry_type_name">int32</span> 16704 16705 <span class="entry_type_visibility"> [java_public]</span> 16706 16707 <span class="entry_type_synthetic">[synthetic] </span> 16708 16709 <span class="entry_type_hwlevel">[legacy] </span> 16710 16711 16712 16713 16714 </td> <!-- entry_type --> 16715 16716 <td class="entry_description"> 16717 <p>The maximum numbers of different types of output streams 16718that can be configured and used simultaneously by a camera device 16719for any processed (and stalling) formats.<wbr/></p> 16720 </td> 16721 16722 <td class="entry_units"> 16723 </td> 16724 16725 <td class="entry_range"> 16726 <p>>= 1</p> 16727 </td> 16728 16729 <td class="entry_hal_version"> 16730 <p>3.<wbr/>2</p> 16731 </td> 16732 16733 <td class="entry_tags"> 16734 </td> 16735 16736 </tr> 16737 <tr class="entries_header"> 16738 <th class="th_details" colspan="6">Details</th> 16739 </tr> 16740 <tr class="entry_cont"> 16741 <td class="entry_details" colspan="6"> 16742 <p>This value contains the max number of output simultaneous 16743streams for any processed (but not-stalling) formats.<wbr/></p> 16744<p>This lists the upper bound of the number of output streams supported by 16745the camera device.<wbr/> Using more streams simultaneously may require more hardware and 16746CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 16747be 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> 16748<p>A processed and stalling format is defined as any non-RAW format with a stallDurations 16749> 0.<wbr/> Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a stalling format.<wbr/></p> 16750<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 16751processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> 16752<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p> 16753 </td> 16754 </tr> 16755 16756 16757 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16758 <!-- end of entry --> 16759 16760 16761 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 16762 <td class="entry_name 16763 entry_name_deprecated 16764 " rowspan="3"> 16765 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 16766 </td> 16767 <td class="entry_type"> 16768 <span class="entry_type_name">int32</span> 16769 <span class="entry_type_container">x</span> 16770 16771 <span class="entry_type_array"> 16772 1 16773 </span> 16774 <span class="entry_type_visibility"> [system]</span> 16775 16776 16777 16778 <span class="entry_type_deprecated">[deprecated] </span> 16779 16780 16781 16782 </td> <!-- entry_type --> 16783 16784 <td class="entry_description"> 16785 <p>How many reprocessing streams of any type 16786can be allocated at the same time.<wbr/></p> 16787 </td> 16788 16789 <td class="entry_units"> 16790 </td> 16791 16792 <td class="entry_range"> 16793 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16794 <p>>= 0</p> 16795 </td> 16796 16797 <td class="entry_hal_version"> 16798 <p>3.<wbr/>2</p> 16799 </td> 16800 16801 <td class="entry_tags"> 16802 <ul class="entry_tags"> 16803 <li><a href="#tag_HAL2">HAL2</a></li> 16804 </ul> 16805 </td> 16806 16807 </tr> 16808 <tr class="entries_header"> 16809 <th class="th_details" colspan="6">Details</th> 16810 </tr> 16811 <tr class="entry_cont"> 16812 <td class="entry_details" colspan="6"> 16813 <p>Only used by HAL2.<wbr/>x.<wbr/></p> 16814<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 16815 </td> 16816 </tr> 16817 16818 16819 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16820 <!-- end of entry --> 16821 16822 16823 <tr class="entry" id="static_android.request.maxNumInputStreams"> 16824 <td class="entry_name 16825 " rowspan="5"> 16826 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 16827 </td> 16828 <td class="entry_type"> 16829 <span class="entry_type_name">int32</span> 16830 16831 <span class="entry_type_visibility"> [java_public]</span> 16832 16833 16834 <span class="entry_type_hwlevel">[full] </span> 16835 16836 16837 16838 16839 </td> <!-- entry_type --> 16840 16841 <td class="entry_description"> 16842 <p>The maximum numbers of any type of input streams 16843that can be configured and used simultaneously by a camera device.<wbr/></p> 16844 </td> 16845 16846 <td class="entry_units"> 16847 </td> 16848 16849 <td class="entry_range"> 16850 <p>0 or 1.<wbr/></p> 16851 </td> 16852 16853 <td class="entry_hal_version"> 16854 <p>3.<wbr/>2</p> 16855 </td> 16856 16857 <td class="entry_tags"> 16858 <ul class="entry_tags"> 16859 <li><a href="#tag_REPROC">REPROC</a></li> 16860 </ul> 16861 </td> 16862 16863 </tr> 16864 <tr class="entries_header"> 16865 <th class="th_details" colspan="6">Details</th> 16866 </tr> 16867 <tr class="entry_cont"> 16868 <td class="entry_details" colspan="6"> 16869 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 16870<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 16871input stream,<wbr/> there must be at least one output stream configured to to receive the 16872reprocessed images.<wbr/></p> 16873<p>When an input stream and some output streams are used in a reprocessing request,<wbr/> 16874only the input buffer will be used to produce these output stream buffers,<wbr/> and a 16875new sensor image will not be captured.<wbr/></p> 16876<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 16877stream image format will be PRIVATE,<wbr/> the associated output stream image format 16878should be JPEG.<wbr/></p> 16879 </td> 16880 </tr> 16881 16882 <tr class="entries_header"> 16883 <th class="th_details" colspan="6">HAL Implementation Details</th> 16884 </tr> 16885 <tr class="entry_cont"> 16886 <td class="entry_details" colspan="6"> 16887 <p>For the reprocessing flow and controls,<wbr/> see 16888hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p> 16889 </td> 16890 </tr> 16891 16892 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16893 <!-- end of entry --> 16894 16895 16896 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 16897 <td class="entry_name 16898 " rowspan="5"> 16899 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 16900 </td> 16901 <td class="entry_type"> 16902 <span class="entry_type_name">byte</span> 16903 16904 <span class="entry_type_visibility"> [public]</span> 16905 16906 16907 <span class="entry_type_hwlevel">[legacy] </span> 16908 16909 16910 16911 16912 </td> <!-- entry_type --> 16913 16914 <td class="entry_description"> 16915 <p>Specifies the number of maximum pipeline stages a frame 16916has to go through from when it's exposed to when it's available 16917to the framework.<wbr/></p> 16918 </td> 16919 16920 <td class="entry_units"> 16921 </td> 16922 16923 <td class="entry_range"> 16924 </td> 16925 16926 <td class="entry_hal_version"> 16927 <p>3.<wbr/>2</p> 16928 </td> 16929 16930 <td class="entry_tags"> 16931 </td> 16932 16933 </tr> 16934 <tr class="entries_header"> 16935 <th class="th_details" colspan="6">Details</th> 16936 </tr> 16937 <tr class="entry_cont"> 16938 <td class="entry_details" colspan="6"> 16939 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 16940one stage to readout) from the sensor.<wbr/> The ISP then usually adds 16941its own stages to do custom HW processing.<wbr/> Further stages may be 16942added by SW processing.<wbr/></p> 16943<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 16944processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 16945depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 16946the max pipeline depth.<wbr/></p> 16947<p>A pipeline depth of X stages is equivalent to a pipeline latency of 16948X frame intervals.<wbr/></p> 16949<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/> 16950the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p> 16951 </td> 16952 </tr> 16953 16954 <tr class="entries_header"> 16955 <th class="th_details" colspan="6">HAL Implementation Details</th> 16956 </tr> 16957 <tr class="entry_cont"> 16958 <td class="entry_details" colspan="6"> 16959 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the 16960max batch sizes may be larger than 1.<wbr/></p> 16961 </td> 16962 </tr> 16963 16964 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16965 <!-- end of entry --> 16966 16967 16968 <tr class="entry" id="static_android.request.partialResultCount"> 16969 <td class="entry_name 16970 " rowspan="3"> 16971 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 16972 </td> 16973 <td class="entry_type"> 16974 <span class="entry_type_name">int32</span> 16975 16976 <span class="entry_type_visibility"> [public]</span> 16977 16978 16979 16980 16981 16982 16983 </td> <!-- entry_type --> 16984 16985 <td class="entry_description"> 16986 <p>Defines how many sub-components 16987a result will be composed of.<wbr/></p> 16988 </td> 16989 16990 <td class="entry_units"> 16991 </td> 16992 16993 <td class="entry_range"> 16994 <p>>= 1</p> 16995 </td> 16996 16997 <td class="entry_hal_version"> 16998 <p>3.<wbr/>2</p> 16999 </td> 17000 17001 <td class="entry_tags"> 17002 </td> 17003 17004 </tr> 17005 <tr class="entries_header"> 17006 <th class="th_details" colspan="6">Details</th> 17007 </tr> 17008 <tr class="entry_cont"> 17009 <td class="entry_details" colspan="6"> 17010 <p>In order to combat the pipeline latency,<wbr/> partial results 17011may be delivered to the application layer from the camera device as 17012soon as they are available.<wbr/></p> 17013<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial 17014results are not supported,<wbr/> and only the final TotalCaptureResult will 17015be produced by the camera device.<wbr/></p> 17016<p>A typical use case for this might be: after requesting an 17017auto-focus (AF) lock the new AF state might be available 50% 17018of the way through the pipeline.<wbr/> The camera device could 17019then immediately dispatch this state via a partial result to 17020the application,<wbr/> and the rest of the metadata via later 17021partial results.<wbr/></p> 17022 </td> 17023 </tr> 17024 17025 17026 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17027 <!-- end of entry --> 17028 17029 17030 <tr class="entry" id="static_android.request.availableCapabilities"> 17031 <td class="entry_name 17032 " rowspan="5"> 17033 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 17034 </td> 17035 <td class="entry_type"> 17036 <span class="entry_type_name entry_type_name_enum">byte</span> 17037 <span class="entry_type_container">x</span> 17038 17039 <span class="entry_type_array"> 17040 n 17041 </span> 17042 <span class="entry_type_visibility"> [public]</span> 17043 17044 17045 <span class="entry_type_hwlevel">[legacy] </span> 17046 17047 17048 17049 <ul class="entry_type_enum"> 17050 <li> 17051 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span> 17052 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 17053device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 17054supports.<wbr/></p> 17055<p>This capability is listed by all normal devices,<wbr/> and 17056indicates that the camera device has a feature set 17057that's comparable to the baseline requirements for the 17058older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 17059<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this 17060capability,<wbr/> indicating that they support only depth measurement,<wbr/> 17061not standard color output.<wbr/></p></span> 17062 </li> 17063 <li> 17064 <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span> 17065 <span class="entry_type_enum_optional">[optional]</span> 17066 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 17067as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> 17068The camera device supports basic manual control of the sensor image 17069acquisition related stages.<wbr/> This means the following controls are 17070guaranteed to be supported:</p> 17071<ul> 17072<li>Manual frame duration control<ul> 17073<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> 17074<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 17075</ul> 17076</li> 17077<li>Manual exposure control<ul> 17078<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 17079<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 17080</ul> 17081</li> 17082<li>Manual sensitivity control<ul> 17083<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 17084<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 17085</ul> 17086</li> 17087<li>Manual lens control (if the lens is adjustable)<ul> 17088<li>android.<wbr/>lens.<wbr/>*</li> 17089</ul> 17090</li> 17091<li>Manual flash control (if a flash unit is present)<ul> 17092<li>android.<wbr/>flash.<wbr/>*</li> 17093</ul> 17094</li> 17095<li>Manual black level locking<ul> 17096<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 17097</ul> 17098</li> 17099<li>Auto exposure lock<ul> 17100<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 17101</ul> 17102</li> 17103</ul> 17104<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 17105device will accurately report the values applied by 3A in the 17106result.<wbr/></p> 17107<p>A given camera device may also support additional manual sensor controls,<wbr/> 17108but this capability only covers the above list of controls.<wbr/></p> 17109<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will 17110additionally return a min frame duration that is greater than 17111zero for each supported size-format combination.<wbr/></p> 17112<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when the underlying active 17113physical camera switches,<wbr/> exposureTime,<wbr/> sensitivity,<wbr/> and lens properties may change 17114even if AE/<wbr/>AF is locked.<wbr/> However,<wbr/> the overall auto exposure and auto focus experience 17115for users will be consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span> 17116 </li> 17117 <li> 17118 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span> 17119 <span class="entry_type_enum_optional">[optional]</span> 17120 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> 17121The camera device supports basic manual control of the image post-processing 17122stages.<wbr/> This means the following controls are guaranteed to be supported:</p> 17123<ul> 17124<li> 17125<p>Manual tonemap control</p> 17126<ul> 17127<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> 17128<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 17129<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 17130<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li> 17131<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li> 17132</ul> 17133</li> 17134<li> 17135<p>Manual white balance control</p> 17136<ul> 17137<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 17138<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 17139</ul> 17140</li> 17141<li>Manual lens shading map control<ul> 17142<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li> 17143<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li> 17144<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 17145<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 17146</ul> 17147</li> 17148<li>Manual aberration correction control (if aberration correction is supported)<ul> 17149<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li> 17150<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li> 17151</ul> 17152</li> 17153<li>Auto white balance lock<ul> 17154<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 17155</ul> 17156</li> 17157</ul> 17158<p>If auto white balance is enabled,<wbr/> then the camera device 17159will accurately report the values applied by AWB in the result.<wbr/></p> 17160<p>A given camera device may also support additional post-processing 17161controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p> 17162<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when underlying active 17163physical camera switches,<wbr/> tonemap,<wbr/> white balance,<wbr/> and shading map may change even if 17164awb is locked.<wbr/> However,<wbr/> the overall post-processing experience for users will be 17165consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span> 17166 </li> 17167 <li> 17168 <span class="entry_type_enum_name">RAW (v3.2)</span> 17169 <span class="entry_type_enum_optional">[optional]</span> 17170 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and 17171metadata for interpreting them.<wbr/></p> 17172<p>Devices supporting the RAW capability allow both for 17173saving DNG files,<wbr/> and for direct application processing of 17174raw sensor images.<wbr/></p> 17175<ul> 17176<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li> 17177<li>The maximum available resolution for RAW_<wbr/>SENSOR streams 17178 will match either the value in 17179 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 17180 <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> 17181<li>All DNG-related optional metadata entries are provided 17182 by the camera device.<wbr/></li> 17183</ul></span> 17184 </li> 17185 <li> 17186 <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span> 17187 <span class="entry_type_enum_optional">[optional]</span> 17188 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p> 17189<ul> 17190<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> 17191<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/> 17192 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of 17193 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> 17194<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 17195 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> 17196<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> 17197<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop 17198 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 17199<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both 17200 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and 17201 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li> 17202<li>For a MONOCHROME camera supporting Y8 format,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into 17203 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a>.<wbr/></li> 17204<li>The maximum available resolution for PRIVATE streams 17205 (both input/<wbr/>output) will match the maximum available 17206 resolution of JPEG streams.<wbr/></li> 17207<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 17208<li>Only below controls are effective for reprocessing requests and 17209 will be present in capture results,<wbr/> other controls in reprocess 17210 requests will be ignored by the camera device.<wbr/><ul> 17211<li>android.<wbr/>jpeg.<wbr/>*</li> 17212<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 17213<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 17214</ul> 17215</li> 17216<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 17217 <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> 17218</ul></span> 17219 </li> 17220 <li> 17221 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span> 17222 <span class="entry_type_enum_optional">[optional]</span> 17223 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of 17224the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows 17225reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p> 17226<p>The values reported for the following controls are guaranteed to be available 17227in the CaptureResult,<wbr/> including when 3A is enabled:</p> 17228<ul> 17229<li>Exposure control<ul> 17230<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 17231</ul> 17232</li> 17233<li>Sensitivity control<ul> 17234<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 17235</ul> 17236</li> 17237<li>Lens controls (if the lens is adjustable)<ul> 17238<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li> 17239<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li> 17240</ul> 17241</li> 17242</ul> 17243<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will 17244always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span> 17245 </li> 17246 <li> 17247 <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span> 17248 <span class="entry_type_enum_optional">[optional]</span> 17249 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per 17250second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are 17251set to FAST.<wbr/> Additionally,<wbr/> all image resolutions less than 24 megapixels can be 17252captured at >= 10 frames per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 17253megapixels,<wbr/> or the maximum resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span> 17254 </li> 17255 <li> 17256 <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span> 17257 <span class="entry_type_enum_optional">[optional]</span> 17258 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as 17259PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the 17260following:</p> 17261<ul> 17262<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> 17263<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 17264 format,<wbr/> that is,<wbr/> YUV_<wbr/>420_<wbr/>888 is included in the lists of 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> 17265<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 17266 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> 17267<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> 17268<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 17269 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 17270<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 17271 <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> 17272<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 17273 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li> 17274<li>For a MONOCHROME camera with Y8 format support,<wbr/> all the requirements mentioned 17275 above for YUV_<wbr/>420_<wbr/>888 apply for Y8 format as well.<wbr/></li> 17276<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 17277<li>Only the below controls are effective for reprocessing requests and will be present 17278 in capture results.<wbr/> The reprocess requests are from the original capture results 17279 that 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> output buffers.<wbr/> All other controls in the 17280 reprocess requests will be ignored by the camera device.<wbr/><ul> 17281<li>android.<wbr/>jpeg.<wbr/>*</li> 17282<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 17283<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 17284<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li> 17285</ul> 17286</li> 17287<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 17288 <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> 17289</ul></span> 17290 </li> 17291 <li> 17292 <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span> 17293 <span class="entry_type_enum_optional">[optional]</span> 17294 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p> 17295<p>This capability requires the camera device to support the following:</p> 17296<ul> 17297<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as 17298 an output format.<wbr/></li> 17299<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 17300 optionally supported as an output format.<wbr/></li> 17301<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/> will 17302 list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> 17303 and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul> 17304<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 17305<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 17306<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 17307<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 17308</ul> 17309</li> 17310<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> 17311<li>As of Android P,<wbr/> the <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> entry is listed by this device.<wbr/></li> 17312<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support 17313 normal YUV_<wbr/>420_<wbr/>888,<wbr/> Y8,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the 17314 DEPTH16 format.<wbr/></li> 17315</ul> 17316<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/> 17317so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that 17318should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/> 17319On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/> 17320using a repeating burst is recommended,<wbr/> where a depth-output target is only included 17321once every N frames,<wbr/> where N is the ratio between preview output rate and depth output 17322rate,<wbr/> including depth stall time.<wbr/></p></span> 17323 </li> 17324 <li> 17325 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span> 17326 <span class="entry_type_enum_optional">[optional]</span> 17327 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) use 17328case.<wbr/> The camera device will support high speed capture session created by <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which 17329only accepts high speed request lists created by <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p> 17330<p>A camera device can still support high speed video streaming by advertising the high 17331speed FPS 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 17332normal capture request per frame control and synchronization requirements will apply 17333to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability 17334describes the capability of a specialized operating mode with many limitations (see 17335below),<wbr/> which is only targeted at high speed video recording.<wbr/></p> 17336<p>The supported high speed video sizes and fps ranges are specified in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/> 17337To get desired output frame rates,<wbr/> the application is only allowed to select video 17338size and FPS range combinations provided by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/> The 17339fps 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> 17340<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 17341ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 17342controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 17343and post-processing parameters is possible.<wbr/> All other controls operate the 17344same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 17345android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 17346<ul> 17347<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 17348<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 17349<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 17350<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 17351<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 17352<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 17353<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 17354<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 17355<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 17356<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 17357</ul> 17358<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 17359<ul> 17360<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not 17361work since aeMode is ON)</li> 17362<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 17363<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 17364<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li> 17365</ul> 17366<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 17367be lower than what camera can output,<wbr/> depending on the destination Surfaces for 17368the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 17369the application need check if the video encoder is capable of supporting the 17370high frame rate for a given video size,<wbr/> or it will end up with lower recording 17371frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame 17372rate will be bounded by the screen refresh rate.<wbr/></p> 17373<p>The camera device will only support up to 2 high speed simultaneous output surfaces 17374(preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only 17375if all of below conditions are true:</p> 17376<ul> 17377<li>The application creates a camera capture session with no more than 2 surfaces via 17378<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The 17379targeted surfaces must be preview surface (either from <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 recording 17380surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or <a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li> 17381<li>The stream sizes are selected from the sizes reported by 17382<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li> 17383<li>The FPS ranges are selected from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li> 17384</ul> 17385<p>When above conditions are NOT satistied,<wbr/> 17386<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 17387will fail.<wbr/></p> 17388<p>Switching to a FPS range that has different maximum FPS may trigger some camera device 17389reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 17390the application avoids unnecessary maximum target FPS changes as much as possible 17391during high speed streaming.<wbr/></p></span> 17392 </li> 17393 <li> 17394 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> 17395 <span class="entry_type_enum_optional">[optional]</span> 17396 <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for 17397<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a>,<wbr/> which limits maximum exposure time to 20 ms.<wbr/></p> 17398<p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking 17399results for use cases such as image stabilization or augmented reality.<wbr/></p></span> 17400 </li> 17401 <li> 17402 <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span> 17403 <span class="entry_type_enum_optional">[optional]</span> 17404 <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras.<wbr/></p> 17405<p>In API level 28,<wbr/> the physical cameras must also be exposed to the application via 17406<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/></p> 17407<p>Starting from API level 29,<wbr/> some or all physical cameras may not be independently 17408exposed to the application,<wbr/> in which case the physical camera IDs will not be 17409available in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/> But the 17410application can still query the physical cameras' characteristics by calling 17411<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/> Additionally,<wbr/> 17412if a physical camera is hidden from camera ID list,<wbr/> the mandatory stream combinations 17413for that physical camera must be supported through the logical camera using physical 17414streams.<wbr/></p> 17415<p>Combinations of logical and physical streams,<wbr/> or physical streams from different 17416physical cameras are not guaranteed.<wbr/> However,<wbr/> if the camera device supports 17417<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>,<wbr/> 17418application must be able to query whether a stream combination involving physical 17419streams is supported by calling 17420<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>.<wbr/></p> 17421<p>Camera application shouldn't assume that there are at most 1 rear camera and 1 front 17422camera in the system.<wbr/> For an application that switches between front and back cameras,<wbr/> 17423the recommendation is to switch between the first rear camera and the first front 17424camera in the list of supported camera devices.<wbr/></p> 17425<p>This capability requires the camera device to support the following:</p> 17426<ul> 17427<li>The IDs of underlying physical cameras are returned via 17428 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getPhysicalCameraIds">CameraCharacteristics#getPhysicalCameraIds</a>.<wbr/></li> 17429<li>This camera device must list static metadata 17430 <a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a> in 17431 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></li> 17432<li>The underlying physical cameras' static metadata must list the following entries,<wbr/> 17433 so that the application can correlate pixels from the physical streams:<ul> 17434<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li> 17435<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 17436<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 17437<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 17438<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 17439</ul> 17440</li> 17441<li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be 17442 the same.<wbr/></li> 17443<li>The logical camera must be LIMITED or higher device.<wbr/></li> 17444</ul> 17445<p>A logical camera device's dynamic metadata may contain 17446<a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id</a> to notify the application of the current 17447active physical camera Id.<wbr/> An active physical camera is the physical camera from which 17448the logical camera's main image data outputs (YUV or RAW) and metadata come from.<wbr/> 17449In addition,<wbr/> this serves as an indication which physical camera is used to output to 17450a RAW stream,<wbr/> or in case only physical cameras support RAW,<wbr/> which physical RAW stream 17451the application should request.<wbr/></p> 17452<p>Logical camera's static metadata tags below describe the default active physical 17453camera.<wbr/> An active physical camera is default if it's used when application directly 17454uses requests built from a template.<wbr/> All templates will default to the same active 17455physical camera.<wbr/></p> 17456<ul> 17457<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 17458<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li> 17459<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 17460<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 17461<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li> 17462<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li> 17463<li><a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a></li> 17464<li><a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></li> 17465<li><a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a></li> 17466<li><a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a></li> 17467<li><a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a></li> 17468<li><a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a></li> 17469<li><a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a></li> 17470<li><a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a></li> 17471<li><a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a></li> 17472<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li> 17473<li><a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a></li> 17474<li><a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a></li> 17475<li><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></li> 17476<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li> 17477<li><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a></li> 17478<li><a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a></li> 17479<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 17480<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 17481<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 17482<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li> 17483<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 17484</ul> 17485<p>The field of view of all non-RAW physical streams must be the same or as close as 17486possible to that of non-RAW logical streams.<wbr/> If the requested FOV is outside of the 17487range supported by the physical camera,<wbr/> the physical stream for that physical camera 17488will use either the maximum or minimum scaler crop region,<wbr/> depending on which one is 17489closer to the requested FOV.<wbr/> For example,<wbr/> for a logical camera with wide-tele lens 17490configuration where the wide lens is the default,<wbr/> if the logical camera's crop region 17491is set to maximum,<wbr/> the physical stream for the tele lens will be configured to its 17492maximum crop region.<wbr/> On the other hand,<wbr/> if the logical camera has a normal-wide lens 17493configuration where the normal lens is the default,<wbr/> when the logical camera's crop 17494region is set to maximum,<wbr/> the FOV of the logical streams will be that of the normal 17495lens.<wbr/> The FOV of the physical streams for the wide lens will be the same as the 17496logical stream,<wbr/> by making the crop region smaller than its active array size to 17497compensate for the smaller focal length.<wbr/></p> 17498<p>Even if the underlying physical cameras have different RAW characteristics (such as 17499size or CFA pattern),<wbr/> a logical camera can still advertise RAW capability.<wbr/> In this 17500case,<wbr/> when the application configures a RAW stream,<wbr/> the camera device will make sure 17501the active physical camera will remain active to ensure consistent RAW output 17502behavior,<wbr/> and not switch to other physical cameras.<wbr/></p> 17503<p>The capture request and result metadata tags required for backward compatible camera 17504functionalities will be solely based on the logical camera capabiltity.<wbr/> On the other 17505hand,<wbr/> the use of manual capture controls (sensor or post-processing) with a 17506logical camera may result in unexpected behavior when the HAL decides to switch 17507between physical cameras with different characteristics under the hood.<wbr/> For example,<wbr/> 17508when the application manually sets exposure time and sensitivity while zooming in,<wbr/> 17509the brightness of the camera images may suddenly change because HAL switches from one 17510physical camera to the other.<wbr/></p></span> 17511 </li> 17512 <li> 17513 <span class="entry_type_enum_name">MONOCHROME (v3.3)</span> 17514 <span class="entry_type_enum_optional">[optional]</span> 17515 <span class="entry_type_enum_notes"><p>The camera device is a monochrome camera that doesn't contain a color filter array,<wbr/> 17516and for YUV_<wbr/>420_<wbr/>888 stream,<wbr/> the pixel values on U and V planes are all 128.<wbr/></p> 17517<p>A MONOCHROME camera must support the guaranteed stream combinations required for 17518its device level and capabilities.<wbr/> Additionally,<wbr/> if the monochrome camera device 17519supports Y8 format,<wbr/> all mandatory stream combination requirements related to <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a> apply 17520to <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> as well.<wbr/> There are no 17521mandatory stream combination requirements with regard to 17522<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> for Bayer camera devices.<wbr/></p> 17523<p>Starting from Android Q,<wbr/> the SENSOR_<wbr/>INFO_<wbr/>COLOR_<wbr/>FILTER_<wbr/>ARRANGEMENT of a MONOCHROME 17524camera will be either MONO or NIR.<wbr/></p></span> 17525 </li> 17526 <li> 17527 <span class="entry_type_enum_name">SECURE_IMAGE_DATA (v3.4)</span> 17528 <span class="entry_type_enum_optional">[optional]</span> 17529 <span class="entry_type_enum_notes"><p>The camera device is capable of writing image data into a region of memory 17530inaccessible to Android userspace or the Android kernel,<wbr/> and only accessible to 17531trusted execution environments (TEE).<wbr/></p></span> 17532 </li> 17533 </ul> 17534 17535 </td> <!-- entry_type --> 17536 17537 <td class="entry_description"> 17538 <p>List of capabilities that this camera device 17539advertises as fully supporting.<wbr/></p> 17540 </td> 17541 17542 <td class="entry_units"> 17543 </td> 17544 17545 <td class="entry_range"> 17546 </td> 17547 17548 <td class="entry_hal_version"> 17549 <p>3.<wbr/>2</p> 17550 </td> 17551 17552 <td class="entry_tags"> 17553 </td> 17554 17555 </tr> 17556 <tr class="entries_header"> 17557 <th class="th_details" colspan="6">Details</th> 17558 </tr> 17559 <tr class="entry_cont"> 17560 <td class="entry_details" colspan="6"> 17561 <p>A capability is a contract that the camera device makes in order 17562to be able to satisfy one or more use cases.<wbr/></p> 17563<p>Listing a capability guarantees that the whole set of features 17564required to support a common use will all be available.<wbr/></p> 17565<p>Using a subset of the functionality provided by an unsupported 17566capability may be possible on a specific camera device implementation; 17567to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 17568<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 17569<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 17570<p>The following capabilities are guaranteed to be available on 17571<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 17572<ul> 17573<li>MANUAL_<wbr/>SENSOR</li> 17574<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> 17575</ul> 17576<p>Other capabilities may be available on either FULL or LIMITED 17577devices,<wbr/> but the application should query this key to be sure.<wbr/></p> 17578 </td> 17579 </tr> 17580 17581 <tr class="entries_header"> 17582 <th class="th_details" colspan="6">HAL Implementation Details</th> 17583 </tr> 17584 <tr class="entry_cont"> 17585 <td class="entry_details" colspan="6"> 17586 <p>Additional constraint details per-capability will be available 17587in the Compatibility Test Suite.<wbr/></p> 17588<p>Minimum baseline requirements required for the 17589BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> 17590Instead refer to "BC" tags and the camera CTS tests in the 17591android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p> 17592<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 17593<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 17594request and the result in order to be considered to be 17595capability-compliant.<wbr/></p> 17596<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 17597then exposure time must be configurable via the request <em>and</em> 17598the actual exposure applied must be available via 17599the result.<wbr/></p> 17600<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the 17601<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p> 17602<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see 17603hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p> 17604<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the 17605CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p> 17606<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the 17607YUV_<wbr/>REPROCESSING capability must support the 17608CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p> 17609<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys 17610<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> 17611<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> 17612<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in 17613addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT 17614enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available 17615if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace 17616DEPTH).<wbr/></p> 17617<p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the 17618same way as a physical camera device based on its hardware level and capabilities.<wbr/> 17619It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p> 17620<ul> 17621<li> 17622<p>In camera1 API,<wbr/> to maintain application compatibility,<wbr/> for each camera facing,<wbr/> there 17623may be one or more {logical_<wbr/>camera_<wbr/>id,<wbr/> physical_<wbr/>camera_<wbr/>1_<wbr/>id,<wbr/> physical_<wbr/>camera_<wbr/>2_<wbr/>id,<wbr/> ...<wbr/>} 17624combinations,<wbr/> where logical_<wbr/>camera_<wbr/>id is composed of physical_<wbr/>camera_<wbr/>N_<wbr/>id,<wbr/> camera 17625framework will only advertise one camera id 17626(within the combinations for the particular facing) that is frontmost in the HAL 17627published camera id list.<wbr/> 17628For example,<wbr/> if HAL advertises 6 back facing camera IDs (ID0 to ID5),<wbr/> among which ID4 17629and ID5 are logical cameras backed by ID0+ID1 and ID2+ID3 respectively.<wbr/> In this case,<wbr/> 17630only ID0 will be available for camera1 API to use.<wbr/></p> 17631</li> 17632<li> 17633<p>Camera HAL is strongly recommended to advertise camera devices with best feature,<wbr/> 17634power,<wbr/> performance,<wbr/> and latency tradeoffs at the front of the camera id list.<wbr/></p> 17635</li> 17636<li> 17637<p>Camera HAL may switch between physical cameras depending on focalLength or cropRegion.<wbr/> 17638If physical cameras have different sizes,<wbr/> HAL must maintain a single logical camera 17639active<wbr/>Array<wbr/>Size/<wbr/>pixel<wbr/>Array<wbr/>Size/<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size,<wbr/> and must do proper mapping 17640between logical camera and underlying physical cameras for all related metadata tags,<wbr/> 17641such as crop region,<wbr/> 3A regions,<wbr/> and intrinsicCalibration.<wbr/></p> 17642</li> 17643<li> 17644<p>Starting from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> camera HAL must support 17645isStreamCombinationSupported for application to query whether a particular logical and 17646physical streams combination are supported.<wbr/></p> 17647</li> 17648</ul> 17649<p>A MONOCHROME camera device must also advertise BACKWARD_<wbr/>COMPATIBLE capability,<wbr/> and must 17650not advertise MANUAL_<wbr/>POST_<wbr/>PROCESSING capability.<wbr/></p> 17651<ul> 17652<li> 17653<p>To maintain backward compatibility,<wbr/> the camera device must support all 17654BACKWARD_<wbr/>COMPATIBLE required keys.<wbr/> The <a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a> key only contains 17655AUTO,<wbr/> and <a href="#dynamic_android.control.awbState">android.<wbr/>control.<wbr/>awb<wbr/>State</a> are either CONVERGED or LOCKED depending on 17656<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>.<wbr/></p> 17657</li> 17658<li> 17659<p><a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>,<wbr/> <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> and 17660<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> must not be in available request and result keys.<wbr/> 17661As a result,<wbr/> the camera device cannot be a FULL device.<wbr/> However,<wbr/> the HAL can 17662still advertise other individual capabilites.<wbr/></p> 17663</li> 17664<li> 17665<p>If the device supports tonemap control,<wbr/> only <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> is used.<wbr/> 17666CurveGreen and curveBlue are no-ops.<wbr/></p> 17667</li> 17668</ul> 17669<p>In Android API level 28,<wbr/> a MONOCHROME camera device must not have RAW capability.<wbr/> From 17670API level 29,<wbr/> a camera is allowed to have both MONOCHROME and RAW capabilities.<wbr/></p> 17671 </td> 17672 </tr> 17673 17674 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17675 <!-- end of entry --> 17676 17677 17678 <tr class="entry" id="static_android.request.availableRequestKeys"> 17679 <td class="entry_name 17680 " rowspan="5"> 17681 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 17682 </td> 17683 <td class="entry_type"> 17684 <span class="entry_type_name">int32</span> 17685 <span class="entry_type_container">x</span> 17686 17687 <span class="entry_type_array"> 17688 n 17689 </span> 17690 <span class="entry_type_visibility"> [ndk_public]</span> 17691 17692 17693 <span class="entry_type_hwlevel">[legacy] </span> 17694 17695 17696 17697 17698 </td> <!-- entry_type --> 17699 17700 <td class="entry_description"> 17701 <p>A list of all keys that the camera device has available 17702to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p> 17703 </td> 17704 17705 <td class="entry_units"> 17706 </td> 17707 17708 <td class="entry_range"> 17709 </td> 17710 17711 <td class="entry_hal_version"> 17712 <p>3.<wbr/>2</p> 17713 </td> 17714 17715 <td class="entry_tags"> 17716 </td> 17717 17718 </tr> 17719 <tr class="entries_header"> 17720 <th class="th_details" colspan="6">Details</th> 17721 </tr> 17722 <tr class="entry_cont"> 17723 <td class="entry_details" colspan="6"> 17724 <p>Attempting to set a key into a CaptureRequest that is not 17725listed here will result in an invalid request and will be rejected 17726by the camera device.<wbr/></p> 17727<p>This field can be used to query the feature set of a camera device 17728at a more granular level than capabilities.<wbr/> This is especially 17729important for optional keys that are not listed under any capability 17730in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 17731 </td> 17732 </tr> 17733 17734 <tr class="entries_header"> 17735 <th class="th_details" colspan="6">HAL Implementation Details</th> 17736 </tr> 17737 <tr class="entry_cont"> 17738 <td class="entry_details" colspan="6"> 17739 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 17740use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p> 17741<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 17742vendor extensions API and not against this field.<wbr/></p> 17743<p>The HAL must not consume any request tags that are not listed either 17744here or in the vendor tag list.<wbr/></p> 17745<p>The public camera2 API will always make the vendor tags visible 17746via 17747<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 17748 </td> 17749 </tr> 17750 17751 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17752 <!-- end of entry --> 17753 17754 17755 <tr class="entry" id="static_android.request.availableResultKeys"> 17756 <td class="entry_name 17757 " rowspan="5"> 17758 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 17759 </td> 17760 <td class="entry_type"> 17761 <span class="entry_type_name">int32</span> 17762 <span class="entry_type_container">x</span> 17763 17764 <span class="entry_type_array"> 17765 n 17766 </span> 17767 <span class="entry_type_visibility"> [ndk_public]</span> 17768 17769 17770 <span class="entry_type_hwlevel">[legacy] </span> 17771 17772 17773 17774 17775 </td> <!-- entry_type --> 17776 17777 <td class="entry_description"> 17778 <p>A list of all keys that the camera device has available to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p> 17779 </td> 17780 17781 <td class="entry_units"> 17782 </td> 17783 17784 <td class="entry_range"> 17785 </td> 17786 17787 <td class="entry_hal_version"> 17788 <p>3.<wbr/>2</p> 17789 </td> 17790 17791 <td class="entry_tags"> 17792 </td> 17793 17794 </tr> 17795 <tr class="entries_header"> 17796 <th class="th_details" colspan="6">Details</th> 17797 </tr> 17798 <tr class="entry_cont"> 17799 <td class="entry_details" colspan="6"> 17800 <p>Attempting to get a key from a CaptureResult that is not 17801listed here will always return a <code>null</code> value.<wbr/> Getting a key from 17802a CaptureResult that is listed here will generally never return a <code>null</code> 17803value.<wbr/></p> 17804<p>The following keys may return <code>null</code> unless they are enabled:</p> 17805<ul> 17806<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> 17807</ul> 17808<p>(Those sometimes-null keys will nevertheless be listed here 17809if they are available.<wbr/>)</p> 17810<p>This field can be used to query the feature set of a camera device 17811at a more granular level than capabilities.<wbr/> This is especially 17812important for optional keys that are not listed under any capability 17813in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 17814 </td> 17815 </tr> 17816 17817 <tr class="entries_header"> 17818 <th class="th_details" colspan="6">HAL Implementation Details</th> 17819 </tr> 17820 <tr class="entry_cont"> 17821 <td class="entry_details" colspan="6"> 17822 <p>Tags listed here must always have an entry in the result metadata,<wbr/> 17823even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 17824matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 17825<p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 17826use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p> 17827<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 17828vendor extensions API and not against this field.<wbr/></p> 17829<p>The HAL must not produce any result tags that are not listed either 17830here or in the vendor tag list.<wbr/></p> 17831<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> 17832 </td> 17833 </tr> 17834 17835 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17836 <!-- end of entry --> 17837 17838 17839 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 17840 <td class="entry_name 17841 " rowspan="5"> 17842 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 17843 </td> 17844 <td class="entry_type"> 17845 <span class="entry_type_name">int32</span> 17846 <span class="entry_type_container">x</span> 17847 17848 <span class="entry_type_array"> 17849 n 17850 </span> 17851 <span class="entry_type_visibility"> [ndk_public]</span> 17852 17853 17854 <span class="entry_type_hwlevel">[legacy] </span> 17855 17856 17857 17858 17859 </td> <!-- entry_type --> 17860 17861 <td class="entry_description"> 17862 <p>A list of all keys that the camera device has available to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 17863 </td> 17864 17865 <td class="entry_units"> 17866 </td> 17867 17868 <td class="entry_range"> 17869 </td> 17870 17871 <td class="entry_hal_version"> 17872 <p>3.<wbr/>2</p> 17873 </td> 17874 17875 <td class="entry_tags"> 17876 </td> 17877 17878 </tr> 17879 <tr class="entries_header"> 17880 <th class="th_details" colspan="6">Details</th> 17881 </tr> 17882 <tr class="entry_cont"> 17883 <td class="entry_details" colspan="6"> 17884 <p>This entry follows the same rules as 17885<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 17886CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 17887details.<wbr/></p> 17888 </td> 17889 </tr> 17890 17891 <tr class="entries_header"> 17892 <th class="th_details" colspan="6">HAL Implementation Details</th> 17893 </tr> 17894 <tr class="entry_cont"> 17895 <td class="entry_details" colspan="6"> 17896 <p>Keys listed here must always have an entry in the static info metadata,<wbr/> 17897even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 17898matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 17899<p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use 17900the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p> 17901<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 17902vendor extensions API and not against this field.<wbr/></p> 17903<p>The HAL must not have any tags in its static info that are not listed 17904either here or in the vendor tag list.<wbr/></p> 17905<p>The public camera2 API will always make the vendor tags visible 17906via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p> 17907 </td> 17908 </tr> 17909 17910 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17911 <!-- end of entry --> 17912 17913 17914 <tr class="entry" id="static_android.request.availableSessionKeys"> 17915 <td class="entry_name 17916 " rowspan="5"> 17917 android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys 17918 </td> 17919 <td class="entry_type"> 17920 <span class="entry_type_name">int32</span> 17921 <span class="entry_type_container">x</span> 17922 17923 <span class="entry_type_array"> 17924 n 17925 </span> 17926 <span class="entry_type_visibility"> [ndk_public]</span> 17927 17928 17929 <span class="entry_type_hwlevel">[legacy] </span> 17930 17931 17932 17933 17934 </td> <!-- entry_type --> 17935 17936 <td class="entry_description"> 17937 <p>A subset of the available request keys that the camera device 17938can pass as part of the capture session initialization.<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_hal_version"> 17948 <p>3.<wbr/>3</p> 17949 </td> 17950 17951 <td class="entry_tags"> 17952 </td> 17953 17954 </tr> 17955 <tr class="entries_header"> 17956 <th class="th_details" colspan="6">Details</th> 17957 </tr> 17958 <tr class="entry_cont"> 17959 <td class="entry_details" colspan="6"> 17960 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which 17961contains a list of keys that are difficult to apply per-frame and 17962can result in unexpected delays when modified during the capture session 17963lifetime.<wbr/> Typical examples include parameters that require a 17964time-consuming hardware re-configuration or internal camera pipeline 17965change.<wbr/> For performance reasons we advise clients to pass their initial 17966values as part of 17967<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/> 17968Once the camera capture session is enabled it is also recommended to avoid 17969changing them from their initial values set in 17970<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/> 17971Control over session parameters can still be exerted in capture requests 17972but clients should be aware and expect delays during their application.<wbr/> 17973An example usage scenario could look like this:</p> 17974<ul> 17975<li>The camera client starts by quering the session parameter key list via 17976 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li> 17977<li>Before triggering the capture session create sequence,<wbr/> a capture request 17978 must be built via 17979 <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a> 17980 using an appropriate template matching the particular use case.<wbr/></li> 17981<li>The client should go over the list of session parameters and check 17982 whether some of the keys listed matches with the parameters that 17983 they intend to modify as part of the first capture request.<wbr/></li> 17984<li>If there is no such match,<wbr/> the capture request can be passed 17985 unmodified to 17986 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li> 17987<li>If matches do exist,<wbr/> the client should update the respective values 17988 and pass the request to 17989 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li> 17990<li>After the capture session initialization completes the session parameter 17991 key list can continue to serve as reference when posting or updating 17992 further requests.<wbr/> As mentioned above further changes to session 17993 parameters should ideally be avoided,<wbr/> if updates are necessary 17994 however clients could expect a delay/<wbr/>glitch during the 17995 parameter switch.<wbr/></li> 17996</ul> 17997 </td> 17998 </tr> 17999 18000 <tr class="entries_header"> 18001 <th class="th_details" colspan="6">HAL Implementation Details</th> 18002 </tr> 18003 <tr class="entry_cont"> 18004 <td class="entry_details" colspan="6"> 18005 <p>If <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> is part of the session parameters and constrained high 18006speed mode is enabled,<wbr/> then only modifications of the maximum framerate value will be 18007monitored by the framework and can trigger camera re-configuration.<wbr/> For more information 18008about framerate ranges during constrained high speed sessions see 18009<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 18010Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 18011use the extensions C api (refer to 18012android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p> 18013<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 18014vendor extensions API and not against this field.<wbr/></p> 18015<p>The HAL must not consume any request tags in the session parameters that 18016are not listed either here or in the vendor tag list.<wbr/></p> 18017<p>The public camera2 API will always make the vendor tags visible 18018via 18019<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p> 18020 </td> 18021 </tr> 18022 18023 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18024 <!-- end of entry --> 18025 18026 18027 <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys"> 18028 <td class="entry_name 18029 " rowspan="5"> 18030 android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys 18031 </td> 18032 <td class="entry_type"> 18033 <span class="entry_type_name">int32</span> 18034 <span class="entry_type_container">x</span> 18035 18036 <span class="entry_type_array"> 18037 n 18038 </span> 18039 <span class="entry_type_visibility"> [ndk_public]</span> 18040 18041 18042 <span class="entry_type_hwlevel">[limited] </span> 18043 18044 18045 18046 18047 </td> <!-- entry_type --> 18048 18049 <td class="entry_description"> 18050 <p>A subset of the available request keys that can be overridden for 18051physical devices backing a logical multi-camera.<wbr/></p> 18052 </td> 18053 18054 <td class="entry_units"> 18055 </td> 18056 18057 <td class="entry_range"> 18058 </td> 18059 18060 <td class="entry_hal_version"> 18061 <p>3.<wbr/>3</p> 18062 </td> 18063 18064 <td class="entry_tags"> 18065 </td> 18066 18067 </tr> 18068 <tr class="entries_header"> 18069 <th class="th_details" colspan="6">Details</th> 18070 </tr> 18071 <tr class="entry_cont"> 18072 <td class="entry_details" colspan="6"> 18073 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which contains a list 18074of keys that can be overridden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/> 18075The respective value of such request key can be obtained by calling 18076<a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain 18077individual physical device requests must be built via 18078<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p> 18079 </td> 18080 </tr> 18081 18082 <tr class="entries_header"> 18083 <th class="th_details" colspan="6">HAL Implementation Details</th> 18084 </tr> 18085 <tr class="entry_cont"> 18086 <td class="entry_details" colspan="6"> 18087 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 18088use the extensions C api (refer to 18089android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more 18090details).<wbr/></p> 18091<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 18092vendor extensions API and not against this field.<wbr/></p> 18093<p>The HAL must not consume any request tags in the session parameters that 18094are not listed either here or in the vendor tag list.<wbr/></p> 18095<p>There should be no overlap between this set of keys and the available session keys 18096<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along 18097with any other controls that can have impact on the dual-camera sync.<wbr/></p> 18098<p>The public camera2 API will always make the vendor tags visible 18099via 18100<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p> 18101 </td> 18102 </tr> 18103 18104 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18105 <!-- end of entry --> 18106 18107 18108 <tr class="entry" id="static_android.request.characteristicKeysNeedingPermission"> 18109 <td class="entry_name 18110 " rowspan="5"> 18111 android.<wbr/>request.<wbr/>characteristic<wbr/>Keys<wbr/>Needing<wbr/>Permission 18112 </td> 18113 <td class="entry_type"> 18114 <span class="entry_type_name">int32</span> 18115 <span class="entry_type_container">x</span> 18116 18117 <span class="entry_type_array"> 18118 n 18119 </span> 18120 <span class="entry_type_visibility"> [hidden]</span> 18121 18122 18123 <span class="entry_type_hwlevel">[legacy] </span> 18124 18125 18126 18127 18128 </td> <!-- entry_type --> 18129 18130 <td class="entry_description"> 18131 <p>A list of camera characteristics keys that are only available 18132in case the camera client has camera permission.<wbr/></p> 18133 </td> 18134 18135 <td class="entry_units"> 18136 </td> 18137 18138 <td class="entry_range"> 18139 </td> 18140 18141 <td class="entry_hal_version"> 18142 <p>3.<wbr/>4</p> 18143 </td> 18144 18145 <td class="entry_tags"> 18146 </td> 18147 18148 </tr> 18149 <tr class="entries_header"> 18150 <th class="th_details" colspan="6">Details</th> 18151 </tr> 18152 <tr class="entry_cont"> 18153 <td class="entry_details" colspan="6"> 18154 <p>The entry contains a subset of 18155<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a> that require camera clients 18156to acquire the <a href="https://developer.android.com/reference/android/Manifest/permission.html#CAMERA">permission#CAMERA</a> permission before calling 18157<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/> If the 18158permission is not held by the camera client,<wbr/> then the values of the repsective properties 18159will not be present in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 18160 </td> 18161 </tr> 18162 18163 <tr class="entries_header"> 18164 <th class="th_details" colspan="6">HAL Implementation Details</th> 18165 </tr> 18166 <tr class="entry_cont"> 18167 <td class="entry_details" colspan="6"> 18168 <p>Do not set this property directly,<wbr/> camera service will overwrite any previous values.<wbr/></p> 18169 </td> 18170 </tr> 18171 18172 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18173 <!-- end of entry --> 18174 18175 18176 18177 <!-- end of kind --> 18178 </tbody> 18179 <tr><td colspan="7" class="kind">dynamic</td></tr> 18180 18181 <thead class="entries_header"> 18182 <tr> 18183 <th class="th_name">Property Name</th> 18184 <th class="th_type">Type</th> 18185 <th class="th_description">Description</th> 18186 <th class="th_units">Units</th> 18187 <th class="th_range">Range</th> 18188 <th class="th_hal_version">Initial HIDL HAL version</th> 18189 <th class="th_tags">Tags</th> 18190 </tr> 18191 </thead> 18192 18193 <tbody> 18194 18195 18196 18197 18198 18199 18200 18201 18202 18203 18204 <tr class="entry" id="dynamic_android.request.frameCount"> 18205 <td class="entry_name 18206 entry_name_deprecated 18207 " rowspan="3"> 18208 android.<wbr/>request.<wbr/>frame<wbr/>Count 18209 </td> 18210 <td class="entry_type"> 18211 <span class="entry_type_name">int32</span> 18212 18213 <span class="entry_type_visibility"> [hidden]</span> 18214 18215 18216 18217 <span class="entry_type_deprecated">[deprecated] </span> 18218 18219 18220 18221 </td> <!-- entry_type --> 18222 18223 <td class="entry_description"> 18224 <p>A frame counter set by the framework.<wbr/> This value monotonically 18225increases with every new result (that is,<wbr/> each new result has a unique 18226frameCount value).<wbr/></p> 18227 </td> 18228 18229 <td class="entry_units"> 18230 count of frames 18231 </td> 18232 18233 <td class="entry_range"> 18234 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18235 <p>> 0</p> 18236 </td> 18237 18238 <td class="entry_hal_version"> 18239 <p>3.<wbr/>2</p> 18240 </td> 18241 18242 <td class="entry_tags"> 18243 </td> 18244 18245 </tr> 18246 <tr class="entries_header"> 18247 <th class="th_details" colspan="6">Details</th> 18248 </tr> 18249 <tr class="entry_cont"> 18250 <td class="entry_details" colspan="6"> 18251 <p>Reset on release()</p> 18252 </td> 18253 </tr> 18254 18255 18256 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18257 <!-- end of entry --> 18258 18259 18260 <tr class="entry" id="dynamic_android.request.id"> 18261 <td class="entry_name 18262 " rowspan="1"> 18263 android.<wbr/>request.<wbr/>id 18264 </td> 18265 <td class="entry_type"> 18266 <span class="entry_type_name">int32</span> 18267 18268 <span class="entry_type_visibility"> [hidden]</span> 18269 18270 18271 18272 18273 18274 18275 </td> <!-- entry_type --> 18276 18277 <td class="entry_description"> 18278 <p>An application-specified ID for the current 18279request.<wbr/> Must be maintained unchanged in output 18280frame</p> 18281 </td> 18282 18283 <td class="entry_units"> 18284 arbitrary integer assigned by application 18285 </td> 18286 18287 <td class="entry_range"> 18288 <p>Any int</p> 18289 </td> 18290 18291 <td class="entry_hal_version"> 18292 <p>3.<wbr/>2</p> 18293 </td> 18294 18295 <td class="entry_tags"> 18296 <ul class="entry_tags"> 18297 <li><a href="#tag_V1">V1</a></li> 18298 </ul> 18299 </td> 18300 18301 </tr> 18302 18303 18304 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18305 <!-- end of entry --> 18306 18307 18308 <tr class="entry" id="dynamic_android.request.metadataMode"> 18309 <td class="entry_name 18310 " rowspan="1"> 18311 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 18312 </td> 18313 <td class="entry_type"> 18314 <span class="entry_type_name entry_type_name_enum">byte</span> 18315 18316 <span class="entry_type_visibility"> [system]</span> 18317 18318 18319 18320 18321 18322 <ul class="entry_type_enum"> 18323 <li> 18324 <span class="entry_type_enum_name">NONE (v3.2)</span> 18325 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 18326for application-bound buffer data.<wbr/> If no 18327application-bound streams exist,<wbr/> no frame should be 18328placed in the output frame queue.<wbr/> If such streams 18329exist,<wbr/> a frame should be placed on the output queue 18330with null metadata but with the necessary output buffer 18331information.<wbr/> Timestamp information should still be 18332included with any output stream buffers</p></span> 18333 </li> 18334 <li> 18335 <span class="entry_type_enum_name">FULL (v3.2)</span> 18336 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 18337only be produced if they are separately 18338enabled</p></span> 18339 </li> 18340 </ul> 18341 18342 </td> <!-- entry_type --> 18343 18344 <td class="entry_description"> 18345 <p>How much metadata to produce on 18346output</p> 18347 </td> 18348 18349 <td class="entry_units"> 18350 </td> 18351 18352 <td class="entry_range"> 18353 </td> 18354 18355 <td class="entry_hal_version"> 18356 <p>3.<wbr/>2</p> 18357 </td> 18358 18359 <td class="entry_tags"> 18360 <ul class="entry_tags"> 18361 <li><a href="#tag_FUTURE">FUTURE</a></li> 18362 </ul> 18363 </td> 18364 18365 </tr> 18366 18367 18368 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18369 <!-- end of entry --> 18370 18371 18372 <tr class="entry" id="dynamic_android.request.outputStreams"> 18373 <td class="entry_name 18374 entry_name_deprecated 18375 " rowspan="3"> 18376 android.<wbr/>request.<wbr/>output<wbr/>Streams 18377 </td> 18378 <td class="entry_type"> 18379 <span class="entry_type_name">int32</span> 18380 <span class="entry_type_container">x</span> 18381 18382 <span class="entry_type_array"> 18383 n 18384 </span> 18385 <span class="entry_type_visibility"> [system]</span> 18386 18387 18388 18389 <span class="entry_type_deprecated">[deprecated] </span> 18390 18391 18392 18393 </td> <!-- entry_type --> 18394 18395 <td class="entry_description"> 18396 <p>Lists which camera output streams image data 18397from this capture must be sent to</p> 18398 </td> 18399 18400 <td class="entry_units"> 18401 List of camera stream IDs 18402 </td> 18403 18404 <td class="entry_range"> 18405 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18406 <p>List must only include streams that have been 18407created</p> 18408 </td> 18409 18410 <td class="entry_hal_version"> 18411 <p>3.<wbr/>2</p> 18412 </td> 18413 18414 <td class="entry_tags"> 18415 <ul class="entry_tags"> 18416 <li><a href="#tag_HAL2">HAL2</a></li> 18417 </ul> 18418 </td> 18419 18420 </tr> 18421 <tr class="entries_header"> 18422 <th class="th_details" colspan="6">Details</th> 18423 </tr> 18424 <tr class="entry_cont"> 18425 <td class="entry_details" colspan="6"> 18426 <p>If no output streams are listed,<wbr/> then the image 18427data should simply be discarded.<wbr/> The image data must 18428still be captured for metadata and statistics production,<wbr/> 18429and the lens and flash must operate as requested.<wbr/></p> 18430 </td> 18431 </tr> 18432 18433 18434 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18435 <!-- end of entry --> 18436 18437 18438 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 18439 <td class="entry_name 18440 " rowspan="5"> 18441 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 18442 </td> 18443 <td class="entry_type"> 18444 <span class="entry_type_name">byte</span> 18445 18446 <span class="entry_type_visibility"> [public]</span> 18447 18448 18449 <span class="entry_type_hwlevel">[legacy] </span> 18450 18451 18452 18453 18454 </td> <!-- entry_type --> 18455 18456 <td class="entry_description"> 18457 <p>Specifies the number of pipeline stages the frame went 18458through from when it was exposed to when the final completed result 18459was available to the framework.<wbr/></p> 18460 </td> 18461 18462 <td class="entry_units"> 18463 </td> 18464 18465 <td class="entry_range"> 18466 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 18467 </td> 18468 18469 <td class="entry_hal_version"> 18470 <p>3.<wbr/>2</p> 18471 </td> 18472 18473 <td class="entry_tags"> 18474 </td> 18475 18476 </tr> 18477 <tr class="entries_header"> 18478 <th class="th_details" colspan="6">Details</th> 18479 </tr> 18480 <tr class="entry_cont"> 18481 <td class="entry_details" colspan="6"> 18482 <p>Depending on what settings are used in the request,<wbr/> and 18483what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 18484and some pipeline stages skipped.<wbr/></p> 18485<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 18486 </td> 18487 </tr> 18488 18489 <tr class="entries_header"> 18490 <th class="th_details" colspan="6">HAL Implementation Details</th> 18491 </tr> 18492 <tr class="entry_cont"> 18493 <td class="entry_details" colspan="6"> 18494 <p>This value must always represent the accurate count of how many 18495pipeline stages were actually used.<wbr/></p> 18496 </td> 18497 </tr> 18498 18499 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18500 <!-- end of entry --> 18501 18502 18503 18504 <!-- end of kind --> 18505 </tbody> 18506 18507 <!-- end of section --> 18508 <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr> 18509 18510 18511 <tr><td colspan="7" class="kind">controls</td></tr> 18512 18513 <thead class="entries_header"> 18514 <tr> 18515 <th class="th_name">Property Name</th> 18516 <th class="th_type">Type</th> 18517 <th class="th_description">Description</th> 18518 <th class="th_units">Units</th> 18519 <th class="th_range">Range</th> 18520 <th class="th_hal_version">Initial HIDL HAL version</th> 18521 <th class="th_tags">Tags</th> 18522 </tr> 18523 </thead> 18524 18525 <tbody> 18526 18527 18528 18529 18530 18531 18532 18533 18534 18535 18536 <tr class="entry" id="controls_android.scaler.cropRegion"> 18537 <td class="entry_name 18538 " rowspan="5"> 18539 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 18540 </td> 18541 <td class="entry_type"> 18542 <span class="entry_type_name">int32</span> 18543 <span class="entry_type_container">x</span> 18544 18545 <span class="entry_type_array"> 18546 4 18547 </span> 18548 <span class="entry_type_visibility"> [public as rectangle]</span> 18549 18550 18551 <span class="entry_type_hwlevel">[legacy] </span> 18552 18553 18554 18555 18556 </td> <!-- entry_type --> 18557 18558 <td class="entry_description"> 18559 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 18560 </td> 18561 18562 <td class="entry_units"> 18563 Pixel coordinates relative to 18564 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 18565 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction 18566 capability and mode 18567 </td> 18568 18569 <td class="entry_range"> 18570 </td> 18571 18572 <td class="entry_hal_version"> 18573 <p>3.<wbr/>2</p> 18574 </td> 18575 18576 <td class="entry_tags"> 18577 <ul class="entry_tags"> 18578 <li><a href="#tag_BC">BC</a></li> 18579 </ul> 18580 </td> 18581 18582 </tr> 18583 <tr class="entries_header"> 18584 <th class="th_details" colspan="6">Details</th> 18585 </tr> 18586 <tr class="entry_cont"> 18587 <td class="entry_details" colspan="6"> 18588 <p>This control can be used to implement digital zoom.<wbr/></p> 18589<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 18590system always follows that of <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 18591the top-left pixel of the active array.<wbr/></p> 18592<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 18593system depends on the mode being set.<wbr/> 18594When the distortion correction mode is OFF,<wbr/> the coordinate system follows 18595<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with 18596<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/> 18597When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 18598<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 18599<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 18600<p>Output streams use this rectangle to produce their output,<wbr/> 18601cropping to a smaller region if necessary to maintain the 18602stream's aspect ratio,<wbr/> then scaling the sensor input to 18603match the output's configured resolution.<wbr/></p> 18604<p>The crop region is applied after the RAW to other color 18605space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 18606(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 18607croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 18608<p>For non-raw streams,<wbr/> any additional per-stream cropping will 18609be done to maximize the final pixel area of the stream.<wbr/></p> 18610<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 18611ratio,<wbr/> then 4:3 streams will use the exact crop 18612region.<wbr/> 16:9 streams will further crop vertically 18613(letterbox).<wbr/></p> 18614<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 18615outputs will crop horizontally (pillarbox),<wbr/> and 16:9 18616streams will match exactly.<wbr/> These additional crops will 18617be centered within the crop region.<wbr/></p> 18618<p>If the coordinate system is <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> the width and height 18619of the crop region cannot be set to be smaller than 18620<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 18621<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> 18622<p>If the coordinate system is <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> the width 18623and height of the crop region cannot be set to be smaller than 18624<code>floor( preCorrectionActiveArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code> 18625and 18626<code>floor( preCorrectionActiveArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/> 18627respectively.<wbr/></p> 18628<p>The camera device may adjust the crop region to account 18629for rounding and other hardware requirements; the final 18630crop region used will be included in the output capture 18631result.<wbr/></p> 18632 </td> 18633 </tr> 18634 18635 <tr class="entries_header"> 18636 <th class="th_details" colspan="6">HAL Implementation Details</th> 18637 </tr> 18638 <tr class="entry_cont"> 18639 <td class="entry_details" colspan="6"> 18640 <p>The output streams must maintain square pixels at all 18641times,<wbr/> no matter what the relative aspect ratios of the 18642crop region and the stream are.<wbr/> Negative values for 18643corner are allowed for raw output if full pixel array is 18644larger than active pixel array.<wbr/> Width and height may be 18645rounded to nearest larger supportable width,<wbr/> especially 18646for raw output,<wbr/> where only a few fixed scales may be 18647possible.<wbr/></p> 18648<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 18649size than pre-correction active array size,<wbr/> the HAL need follow below cropping rules:</p> 18650<ul> 18651<li> 18652<p>The HAL need handle the cropRegion as if the sensor crop size is the effective 18653pre-correction active array size.<wbr/> More specifically,<wbr/> the HAL must transform the request 18654cropRegion from <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> to the sensor cropped 18655pixel area size in this way:</p> 18656<ol> 18657<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 18658cropped pixel area by (tx,<wbr/> ty),<wbr/> 18659where <code>ty = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> preCorrectionActiveArraySize.<wbr/>height)</code> 18660and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> preCorrectionActiveArraySize.<wbr/>width)</code>.<wbr/> 18661The (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 18662<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 18663<li>Scale the width and height of requested cropRegion with scaling factor of 18664sensor<wbr/>Crop.<wbr/>width/<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size.<wbr/>height 18665respectively.<wbr/> 18666Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 18667with regard to the sensor crop size (effective pre-correction active array size).<wbr/> The 18668HAL still need follow the general cropping rule for this new cropRegion and effective 18669pre-correction active array size.<wbr/></li> 18670</ol> 18671</li> 18672<li> 18673<p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/> 18674The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full pre-correction 18675active array size.<wbr/> The reported cropRegion may be slightly different with the requested 18676cropRegion since the HAL may adjust the crop region to account for rounding,<wbr/> conversion 18677error,<wbr/> or other hardware limitations.<wbr/></p> 18678</li> 18679</ul> 18680<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 18681 </td> 18682 </tr> 18683 18684 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18685 <!-- end of entry --> 18686 18687 18688 18689 <!-- end of kind --> 18690 </tbody> 18691 <tr><td colspan="7" class="kind">static</td></tr> 18692 18693 <thead class="entries_header"> 18694 <tr> 18695 <th class="th_name">Property Name</th> 18696 <th class="th_type">Type</th> 18697 <th class="th_description">Description</th> 18698 <th class="th_units">Units</th> 18699 <th class="th_range">Range</th> 18700 <th class="th_hal_version">Initial HIDL HAL version</th> 18701 <th class="th_tags">Tags</th> 18702 </tr> 18703 </thead> 18704 18705 <tbody> 18706 18707 18708 18709 18710 18711 18712 18713 18714 18715 18716 <tr class="entry" id="static_android.scaler.availableFormats"> 18717 <td class="entry_name 18718 entry_name_deprecated 18719 " rowspan="5"> 18720 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 18721 </td> 18722 <td class="entry_type"> 18723 <span class="entry_type_name entry_type_name_enum">int32</span> 18724 <span class="entry_type_container">x</span> 18725 18726 <span class="entry_type_array"> 18727 n 18728 </span> 18729 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 18730 18731 18732 18733 <span class="entry_type_deprecated">[deprecated] </span> 18734 18735 18736 <ul class="entry_type_enum"> 18737 <li> 18738 <span class="entry_type_enum_name">RAW16 (v3.2)</span> 18739 <span class="entry_type_enum_optional">[optional]</span> 18740 <span class="entry_type_enum_value">0x20</span> 18741 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 18742buffers with 16-bit pixels.<wbr/></p> 18743<p>Buffers of this format are typically expected to have a 18744Color Filter Array (CFA) layout,<wbr/> which is given in 18745<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with 18746CFAs that are not representable by a format in 18747<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not 18748use this format.<wbr/></p> 18749<p>Buffers of this format will also follow the constraints given for 18750RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 18751<p>This format is intended to give users access to the full contents 18752of the buffers coming directly from the image sensor prior to any 18753cropping or scaling operations,<wbr/> and all coordinate systems for 18754metadata used for this format are relative to the size of the 18755active region of the image sensor before any geometric distortion 18756correction has been applied (i.<wbr/>e.<wbr/> 18757<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 18758dimensions for this format are limited to the full dimensions of 18759the 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 18760<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 18761only supported output size).<wbr/></p> 18762<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 18763the full set of performance guarantees.<wbr/></p></span> 18764 </li> 18765 <li> 18766 <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span> 18767 <span class="entry_type_enum_optional">[optional]</span> 18768 <span class="entry_type_enum_value">0x24</span> 18769 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or 18770<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a> 18771as referred in public API) is a format for raw image buffers 18772coming from an image sensor.<wbr/></p> 18773<p>The actual structure of buffers of this format is 18774platform-specific,<wbr/> but must follow several constraints:</p> 18775<ol> 18776<li>No image post-processing operations may have been applied to 18777buffers of this type.<wbr/> These buffers contain raw image data coming 18778directly from the image sensor.<wbr/></li> 18779<li>If a buffer of this format is passed to the camera device for 18780reprocessing,<wbr/> the resulting images will be identical to the images 18781produced if the buffer had come directly from the sensor and was 18782processed with the same settings.<wbr/></li> 18783</ol> 18784<p>The intended use for this format is to allow access to the native 18785raw format buffers coming directly from the camera sensor without 18786any additional conversions or decrease in framerate.<wbr/></p> 18787<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 18788performance guarantees.<wbr/></p></span> 18789 </li> 18790 <li> 18791 <span class="entry_type_enum_name">YV12 (v3.2)</span> 18792 <span class="entry_type_enum_optional">[optional]</span> 18793 <span class="entry_type_enum_value">0x32315659</span> 18794 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 18795 </li> 18796 <li> 18797 <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span> 18798 <span class="entry_type_enum_optional">[optional]</span> 18799 <span class="entry_type_enum_value">0x11</span> 18800 <span class="entry_type_enum_notes"><p>NV21</p></span> 18801 </li> 18802 <li> 18803 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span> 18804 <span class="entry_type_enum_value">0x22</span> 18805 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 18806 </li> 18807 <li> 18808 <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span> 18809 <span class="entry_type_enum_value">0x23</span> 18810 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 18811 </li> 18812 <li> 18813 <span class="entry_type_enum_name">BLOB (v3.2)</span> 18814 <span class="entry_type_enum_value">0x21</span> 18815 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 18816 </li> 18817 <li> 18818 <span class="entry_type_enum_name">RAW10 (v3.4)</span> 18819 <span class="entry_type_enum_value">0x25</span> 18820 <span class="entry_type_enum_notes"><p>RAW10</p></span> 18821 </li> 18822 <li> 18823 <span class="entry_type_enum_name">RAW12 (v3.4)</span> 18824 <span class="entry_type_enum_value">0x26</span> 18825 <span class="entry_type_enum_notes"><p>RAW12</p></span> 18826 </li> 18827 <li> 18828 <span class="entry_type_enum_name">Y8 (v3.4)</span> 18829 <span class="entry_type_enum_value">0x20203859</span> 18830 <span class="entry_type_enum_notes"><p>Y8</p></span> 18831 </li> 18832 </ul> 18833 18834 </td> <!-- entry_type --> 18835 18836 <td class="entry_description"> 18837 <p>The list of image formats that are supported by this 18838camera device for output streams.<wbr/></p> 18839 </td> 18840 18841 <td class="entry_units"> 18842 </td> 18843 18844 <td class="entry_range"> 18845 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18846 </td> 18847 18848 <td class="entry_hal_version"> 18849 <p>3.<wbr/>2</p> 18850 </td> 18851 18852 <td class="entry_tags"> 18853 <ul class="entry_tags"> 18854 <li><a href="#tag_BC">BC</a></li> 18855 </ul> 18856 </td> 18857 18858 </tr> 18859 <tr class="entries_header"> 18860 <th class="th_details" colspan="6">Details</th> 18861 </tr> 18862 <tr class="entry_cont"> 18863 <td class="entry_details" colspan="6"> 18864 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 18865<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 18866 </td> 18867 </tr> 18868 18869 <tr class="entries_header"> 18870 <th class="th_details" colspan="6">HAL Implementation Details</th> 18871 </tr> 18872 <tr class="entry_cont"> 18873 <td class="entry_details" colspan="6"> 18874 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 18875system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 18876<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 18877gralloc module will select a format based on the usage flags provided 18878by the camera HAL device and the other endpoint of the stream.<wbr/> It is 18879usually used by preview and recording streams,<wbr/> where the application doesn't 18880need access the image data.<wbr/></p> 18881<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 18882needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/> For a MONOCHROME 18883camera device,<wbr/> the pixel value of Cb and Cr planes is 128.<wbr/></p> 18884<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 18885<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 18886recommended that any information used by the camera device when 18887processing images is fully expressed by the result metadata 18888for that image buffer.<wbr/></p> 18889 </td> 18890 </tr> 18891 18892 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18893 <!-- end of entry --> 18894 18895 18896 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 18897 <td class="entry_name 18898 entry_name_deprecated 18899 " rowspan="3"> 18900 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 18901 </td> 18902 <td class="entry_type"> 18903 <span class="entry_type_name">int64</span> 18904 <span class="entry_type_container">x</span> 18905 18906 <span class="entry_type_array"> 18907 n 18908 </span> 18909 <span class="entry_type_visibility"> [hidden]</span> 18910 18911 18912 18913 <span class="entry_type_deprecated">[deprecated] </span> 18914 18915 18916 18917 </td> <!-- entry_type --> 18918 18919 <td class="entry_description"> 18920 <p>The minimum frame duration that is supported 18921for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 18922 </td> 18923 18924 <td class="entry_units"> 18925 Nanoseconds 18926 </td> 18927 18928 <td class="entry_range"> 18929 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18930 <p>TODO: Remove property.<wbr/></p> 18931 </td> 18932 18933 <td class="entry_hal_version"> 18934 <p>3.<wbr/>2</p> 18935 </td> 18936 18937 <td class="entry_tags"> 18938 <ul class="entry_tags"> 18939 <li><a href="#tag_BC">BC</a></li> 18940 </ul> 18941 </td> 18942 18943 </tr> 18944 <tr class="entries_header"> 18945 <th class="th_details" colspan="6">Details</th> 18946 </tr> 18947 <tr class="entry_cont"> 18948 <td class="entry_details" colspan="6"> 18949 <p>This corresponds to the minimum steady-state frame duration when only 18950that JPEG stream is active and captured in a burst,<wbr/> with all 18951processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 18952<p>When multiple streams are configured,<wbr/> the minimum 18953frame duration will be >= max(individual stream min 18954durations)</p> 18955 </td> 18956 </tr> 18957 18958 18959 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18960 <!-- end of entry --> 18961 18962 18963 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 18964 <td class="entry_name 18965 entry_name_deprecated 18966 " rowspan="5"> 18967 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 18968 </td> 18969 <td class="entry_type"> 18970 <span class="entry_type_name">int32</span> 18971 <span class="entry_type_container">x</span> 18972 18973 <span class="entry_type_array"> 18974 n x 2 18975 </span> 18976 <span class="entry_type_visibility"> [hidden as size]</span> 18977 18978 18979 18980 <span class="entry_type_deprecated">[deprecated] </span> 18981 18982 18983 18984 </td> <!-- entry_type --> 18985 18986 <td class="entry_description"> 18987 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 18988 </td> 18989 18990 <td class="entry_units"> 18991 </td> 18992 18993 <td class="entry_range"> 18994 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18995 <p>TODO: Remove property.<wbr/></p> 18996 </td> 18997 18998 <td class="entry_hal_version"> 18999 <p>3.<wbr/>2</p> 19000 </td> 19001 19002 <td class="entry_tags"> 19003 <ul class="entry_tags"> 19004 <li><a href="#tag_BC">BC</a></li> 19005 </ul> 19006 </td> 19007 19008 </tr> 19009 <tr class="entries_header"> 19010 <th class="th_details" colspan="6">Details</th> 19011 </tr> 19012 <tr class="entry_cont"> 19013 <td class="entry_details" colspan="6"> 19014 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 19015sensor 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> 19016 </td> 19017 </tr> 19018 19019 <tr class="entries_header"> 19020 <th class="th_details" colspan="6">HAL Implementation Details</th> 19021 </tr> 19022 <tr class="entry_cont"> 19023 <td class="entry_details" colspan="6"> 19024 <p>The HAL must include sensor maximum resolution 19025(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 19026and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 19027 </td> 19028 </tr> 19029 19030 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19031 <!-- end of entry --> 19032 19033 19034 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 19035 <td class="entry_name 19036 " rowspan="3"> 19037 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 19038 </td> 19039 <td class="entry_type"> 19040 <span class="entry_type_name">float</span> 19041 19042 <span class="entry_type_visibility"> [public]</span> 19043 19044 19045 <span class="entry_type_hwlevel">[legacy] </span> 19046 19047 19048 19049 19050 </td> <!-- entry_type --> 19051 19052 <td class="entry_description"> 19053 <p>The maximum ratio between both active area width 19054and crop region width,<wbr/> and active area height and 19055crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 19056 </td> 19057 19058 <td class="entry_units"> 19059 Zoom scale factor 19060 </td> 19061 19062 <td class="entry_range"> 19063 <p>>=1</p> 19064 </td> 19065 19066 <td class="entry_hal_version"> 19067 <p>3.<wbr/>2</p> 19068 </td> 19069 19070 <td class="entry_tags"> 19071 <ul class="entry_tags"> 19072 <li><a href="#tag_BC">BC</a></li> 19073 </ul> 19074 </td> 19075 19076 </tr> 19077 <tr class="entries_header"> 19078 <th class="th_details" colspan="6">Details</th> 19079 </tr> 19080 <tr class="entry_cont"> 19081 <td class="entry_details" colspan="6"> 19082 <p>This represents the maximum amount of zooming possible by 19083the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping 19084window size.<wbr/></p> 19085<p>Crop regions that have a width or height that is smaller 19086than this ratio allows will be rounded up to the minimum 19087allowed size by the camera device.<wbr/></p> 19088 </td> 19089 </tr> 19090 19091 19092 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19093 <!-- end of entry --> 19094 19095 19096 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 19097 <td class="entry_name 19098 entry_name_deprecated 19099 " rowspan="3"> 19100 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 19101 </td> 19102 <td class="entry_type"> 19103 <span class="entry_type_name">int64</span> 19104 <span class="entry_type_container">x</span> 19105 19106 <span class="entry_type_array"> 19107 n 19108 </span> 19109 <span class="entry_type_visibility"> [hidden]</span> 19110 19111 19112 19113 <span class="entry_type_deprecated">[deprecated] </span> 19114 19115 19116 19117 </td> <!-- entry_type --> 19118 19119 <td class="entry_description"> 19120 <p>For each available processed output size (defined in 19121<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 19122minimum supportable frame duration for that size.<wbr/></p> 19123 </td> 19124 19125 <td class="entry_units"> 19126 Nanoseconds 19127 </td> 19128 19129 <td class="entry_range"> 19130 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 19131 </td> 19132 19133 <td class="entry_hal_version"> 19134 <p>3.<wbr/>2</p> 19135 </td> 19136 19137 <td class="entry_tags"> 19138 <ul class="entry_tags"> 19139 <li><a href="#tag_BC">BC</a></li> 19140 </ul> 19141 </td> 19142 19143 </tr> 19144 <tr class="entries_header"> 19145 <th class="th_details" colspan="6">Details</th> 19146 </tr> 19147 <tr class="entry_cont"> 19148 <td class="entry_details" colspan="6"> 19149 <p>This should correspond to the frame duration when only that processed 19150stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 19151set to FAST.<wbr/></p> 19152<p>When multiple streams are configured,<wbr/> the minimum frame duration will 19153be >= max(individual stream min durations).<wbr/></p> 19154 </td> 19155 </tr> 19156 19157 19158 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19159 <!-- end of entry --> 19160 19161 19162 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 19163 <td class="entry_name 19164 entry_name_deprecated 19165 " rowspan="5"> 19166 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 19167 </td> 19168 <td class="entry_type"> 19169 <span class="entry_type_name">int32</span> 19170 <span class="entry_type_container">x</span> 19171 19172 <span class="entry_type_array"> 19173 n x 2 19174 </span> 19175 <span class="entry_type_visibility"> [hidden as size]</span> 19176 19177 19178 19179 <span class="entry_type_deprecated">[deprecated] </span> 19180 19181 19182 19183 </td> <!-- entry_type --> 19184 19185 <td class="entry_description"> 19186 <p>The resolutions available for use with 19187processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 19188platform opaque YUV/<wbr/>RGB streams to the GPU or video 19189encoders.<wbr/></p> 19190 </td> 19191 19192 <td class="entry_units"> 19193 </td> 19194 19195 <td class="entry_range"> 19196 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 19197 </td> 19198 19199 <td class="entry_hal_version"> 19200 <p>3.<wbr/>2</p> 19201 </td> 19202 19203 <td class="entry_tags"> 19204 <ul class="entry_tags"> 19205 <li><a href="#tag_BC">BC</a></li> 19206 </ul> 19207 </td> 19208 19209 </tr> 19210 <tr class="entries_header"> 19211 <th class="th_details" colspan="6">Details</th> 19212 </tr> 19213 <tr class="entry_cont"> 19214 <td class="entry_details" colspan="6"> 19215 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 19216<p>For a given use case,<wbr/> the actual maximum supported resolution 19217may be lower than what is listed here,<wbr/> depending on the destination 19218Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 19219the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 19220smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 19221can provide.<wbr/></p> 19222<p>Please reference the documentation for the image data destination to 19223check if it limits the maximum size for image data.<wbr/></p> 19224 </td> 19225 </tr> 19226 19227 <tr class="entries_header"> 19228 <th class="th_details" colspan="6">HAL Implementation Details</th> 19229 </tr> 19230 <tr class="entry_cont"> 19231 <td class="entry_details" colspan="6"> 19232 <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/> 19233the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 19234and each below resolution if it is smaller than or equal to the sensor 19235maximum resolution (if they are not listed in JPEG sizes already):</p> 19236<ul> 19237<li>240p (320 x 240)</li> 19238<li>480p (640 x 480)</li> 19239<li>720p (1280 x 720)</li> 19240<li>1080p (1920 x 1080)</li> 19241</ul> 19242<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/> 19243the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 19244 </td> 19245 </tr> 19246 19247 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19248 <!-- end of entry --> 19249 19250 19251 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 19252 <td class="entry_name 19253 entry_name_deprecated 19254 " rowspan="3"> 19255 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 19256 </td> 19257 <td class="entry_type"> 19258 <span class="entry_type_name">int64</span> 19259 <span class="entry_type_container">x</span> 19260 19261 <span class="entry_type_array"> 19262 n 19263 </span> 19264 <span class="entry_type_visibility"> [system]</span> 19265 19266 19267 19268 <span class="entry_type_deprecated">[deprecated] </span> 19269 19270 19271 19272 </td> <!-- entry_type --> 19273 19274 <td class="entry_description"> 19275 <p>For each available raw output size (defined in 19276<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 19277supportable frame duration for that size.<wbr/></p> 19278 </td> 19279 19280 <td class="entry_units"> 19281 Nanoseconds 19282 </td> 19283 19284 <td class="entry_range"> 19285 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 19286 </td> 19287 19288 <td class="entry_hal_version"> 19289 <p>3.<wbr/>2</p> 19290 </td> 19291 19292 <td class="entry_tags"> 19293 <ul class="entry_tags"> 19294 <li><a href="#tag_BC">BC</a></li> 19295 </ul> 19296 </td> 19297 19298 </tr> 19299 <tr class="entries_header"> 19300 <th class="th_details" colspan="6">Details</th> 19301 </tr> 19302 <tr class="entry_cont"> 19303 <td class="entry_details" colspan="6"> 19304 <p>Should correspond to the frame duration when only the raw stream is 19305active.<wbr/></p> 19306<p>When multiple streams are configured,<wbr/> the minimum 19307frame duration will be >= max(individual stream min 19308durations)</p> 19309 </td> 19310 </tr> 19311 19312 19313 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19314 <!-- end of entry --> 19315 19316 19317 <tr class="entry" id="static_android.scaler.availableRawSizes"> 19318 <td class="entry_name 19319 entry_name_deprecated 19320 " rowspan="1"> 19321 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 19322 </td> 19323 <td class="entry_type"> 19324 <span class="entry_type_name">int32</span> 19325 <span class="entry_type_container">x</span> 19326 19327 <span class="entry_type_array"> 19328 n x 2 19329 </span> 19330 <span class="entry_type_visibility"> [system as size]</span> 19331 19332 19333 19334 <span class="entry_type_deprecated">[deprecated] </span> 19335 19336 19337 19338 </td> <!-- entry_type --> 19339 19340 <td class="entry_description"> 19341 <p>The resolutions available for use with raw 19342sensor output streams,<wbr/> listed as width,<wbr/> 19343height</p> 19344 </td> 19345 19346 <td class="entry_units"> 19347 </td> 19348 19349 <td class="entry_range"> 19350 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 19351 </td> 19352 19353 <td class="entry_hal_version"> 19354 <p>3.<wbr/>2</p> 19355 </td> 19356 19357 <td class="entry_tags"> 19358 </td> 19359 19360 </tr> 19361 19362 19363 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19364 <!-- end of entry --> 19365 19366 19367 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 19368 <td class="entry_name 19369 " rowspan="5"> 19370 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 19371 </td> 19372 <td class="entry_type"> 19373 <span class="entry_type_name">int32</span> 19374 19375 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> 19376 19377 19378 19379 19380 19381 19382 </td> <!-- entry_type --> 19383 19384 <td class="entry_description"> 19385 <p>The mapping of image formats that are supported by this 19386camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 19387 </td> 19388 19389 <td class="entry_units"> 19390 </td> 19391 19392 <td class="entry_range"> 19393 </td> 19394 19395 <td class="entry_hal_version"> 19396 <p>3.<wbr/>2</p> 19397 </td> 19398 19399 <td class="entry_tags"> 19400 <ul class="entry_tags"> 19401 <li><a href="#tag_REPROC">REPROC</a></li> 19402 </ul> 19403 </td> 19404 19405 </tr> 19406 <tr class="entries_header"> 19407 <th class="th_details" colspan="6">Details</th> 19408 </tr> 19409 <tr class="entry_cont"> 19410 <td class="entry_details" colspan="6"> 19411 <p>All camera devices with at least 1 19412<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 19413available input format.<wbr/></p> 19414<p>The camera device will support the following map of formats,<wbr/> 19415if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 19416<table> 19417<thead> 19418<tr> 19419<th align="left">Input Format</th> 19420<th align="left">Output Format</th> 19421<th align="left">Capability</th> 19422</tr> 19423</thead> 19424<tbody> 19425<tr> 19426<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 19427<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 19428<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 19429</tr> 19430<tr> 19431<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 19432<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> 19433<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 19434</tr> 19435<tr> 19436<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> 19437<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 19438<td align="left">YUV_<wbr/>REPROCESSING</td> 19439</tr> 19440<tr> 19441<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> 19442<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> 19443<td align="left">YUV_<wbr/>REPROCESSING</td> 19444</tr> 19445</tbody> 19446</table> 19447<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A 19448PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a> 19449with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p> 19450<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input 19451or 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> 19452<p>Attempting to configure an input stream with output streams not 19453listed as available in this map is not valid.<wbr/></p> 19454<p>Additionally,<wbr/> if the camera device is MONOCHROME with Y8 support,<wbr/> it will also support 19455the following map of formats if its dependent capability 19456(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 19457<table> 19458<thead> 19459<tr> 19460<th align="left">Input Format</th> 19461<th align="left">Output Format</th> 19462<th align="left">Capability</th> 19463</tr> 19464</thead> 19465<tbody> 19466<tr> 19467<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 19468<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td> 19469<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 19470</tr> 19471<tr> 19472<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td> 19473<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 19474<td align="left">YUV_<wbr/>REPROCESSING</td> 19475</tr> 19476<tr> 19477<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td> 19478<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td> 19479<td align="left">YUV_<wbr/>REPROCESSING</td> 19480</tr> 19481</tbody> 19482</table> 19483 </td> 19484 </tr> 19485 19486 <tr class="entries_header"> 19487 <th class="th_details" colspan="6">HAL Implementation Details</th> 19488 </tr> 19489 <tr class="entry_cont"> 19490 <td class="entry_details" colspan="6"> 19491 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition 19492of the image format enumerations.<wbr/> The PRIVATE format refers to the 19493HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine 19494the actual format by using the gralloc usage flags.<wbr/> 19495For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially 19496processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/> 19497See camera3.<wbr/>h for more details.<wbr/></p> 19498<p>This value is encoded as a variable-size array-of-arrays.<wbr/> 19499The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 19500<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 19501inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 19502<p>A code sample to read/<wbr/>write this encoding (with a device that 19503supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 19504and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 19505<pre><code>//<wbr/> reading 19506int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 19507for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 19508 int32_<wbr/>t format = contents[i++]; 19509 int32_<wbr/>t length = contents[i++]; 19510 int32_<wbr/>t output_<wbr/>formats[length]; 19511 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 19512 length * sizeof(int32_<wbr/>t)); 19513 i += length; 19514} 19515 19516//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING) 19517int32_<wbr/>t[] contents = { 19518 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 19519 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 19520}; 19521update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 19522 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 19523</code></pre> 19524<p>If the HAL claims to support any of the capabilities listed in the 19525above details,<wbr/> then it must also support all the input-output 19526combinations listed for that capability.<wbr/> It can optionally support 19527additional formats if it so chooses.<wbr/></p> 19528 </td> 19529 </tr> 19530 19531 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19532 <!-- end of entry --> 19533 19534 19535 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 19536 <td class="entry_name 19537 " rowspan="5"> 19538 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 19539 </td> 19540 <td class="entry_type"> 19541 <span class="entry_type_name entry_type_name_enum">int32</span> 19542 <span class="entry_type_container">x</span> 19543 19544 <span class="entry_type_array"> 19545 n x 4 19546 </span> 19547 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 19548 19549 19550 <span class="entry_type_hwlevel">[legacy] </span> 19551 19552 19553 19554 <ul class="entry_type_enum"> 19555 <li> 19556 <span class="entry_type_enum_name">OUTPUT (v3.2)</span> 19557 </li> 19558 <li> 19559 <span class="entry_type_enum_name">INPUT (v3.2)</span> 19560 </li> 19561 </ul> 19562 19563 </td> <!-- entry_type --> 19564 19565 <td class="entry_description"> 19566 <p>The available stream configurations that this 19567camera device supports 19568(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 19569 </td> 19570 19571 <td class="entry_units"> 19572 </td> 19573 19574 <td class="entry_range"> 19575 </td> 19576 19577 <td class="entry_hal_version"> 19578 <p>3.<wbr/>2</p> 19579 </td> 19580 19581 <td class="entry_tags"> 19582 </td> 19583 19584 </tr> 19585 <tr class="entries_header"> 19586 <th class="th_details" colspan="6">Details</th> 19587 </tr> 19588 <tr class="entry_cont"> 19589 <td class="entry_details" colspan="6"> 19590 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 19591tuples.<wbr/></p> 19592<p>For a given use case,<wbr/> the actual maximum supported resolution 19593may be lower than what is listed here,<wbr/> depending on the destination 19594Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 19595the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 19596smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 19597can provide.<wbr/></p> 19598<p>Please reference the documentation for the image data destination to 19599check if it limits the maximum size for image data.<wbr/></p> 19600<p>Not all output formats may be supported in a configuration with 19601an input stream of a particular format.<wbr/> For more details,<wbr/> see 19602<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 19603<p>The following table describes the minimum required output stream 19604configurations based on the hardware level 19605(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 19606<table> 19607<thead> 19608<tr> 19609<th align="center">Format</th> 19610<th align="center">Size</th> 19611<th align="center">Hardware Level</th> 19612<th align="center">Notes</th> 19613</tr> 19614</thead> 19615<tbody> 19616<tr> 19617<td align="center">JPEG</td> 19618<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 19619<td align="center">Any</td> 19620<td align="center"></td> 19621</tr> 19622<tr> 19623<td align="center">JPEG</td> 19624<td align="center">1920x1080 (1080p)</td> 19625<td align="center">Any</td> 19626<td align="center">if 1080p <= activeArraySize</td> 19627</tr> 19628<tr> 19629<td align="center">JPEG</td> 19630<td align="center">1280x720 (720)</td> 19631<td align="center">Any</td> 19632<td align="center">if 720p <= activeArraySize</td> 19633</tr> 19634<tr> 19635<td align="center">JPEG</td> 19636<td align="center">640x480 (480p)</td> 19637<td align="center">Any</td> 19638<td align="center">if 480p <= activeArraySize</td> 19639</tr> 19640<tr> 19641<td align="center">JPEG</td> 19642<td align="center">320x240 (240p)</td> 19643<td align="center">Any</td> 19644<td align="center">if 240p <= activeArraySize</td> 19645</tr> 19646<tr> 19647<td align="center">YUV_<wbr/>420_<wbr/>888</td> 19648<td align="center">all output sizes available for JPEG</td> 19649<td align="center">FULL</td> 19650<td align="center"></td> 19651</tr> 19652<tr> 19653<td align="center">YUV_<wbr/>420_<wbr/>888</td> 19654<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 19655<td align="center">LIMITED</td> 19656<td align="center"></td> 19657</tr> 19658<tr> 19659<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 19660<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 19661<td align="center">Any</td> 19662<td align="center"></td> 19663</tr> 19664</tbody> 19665</table> 19666<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 19667mandatory stream configurations on a per-capability basis.<wbr/></p> 19668<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability for 19669downscaling from larger resolution to smaller,<wbr/> and the QCIF resolution sometimes is not 19670fully supported due to this limitation on devices with high-resolution image sensors.<wbr/> 19671Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other 19672stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/> 19673and capture session creation will fail if it is not.<wbr/></p> 19674 </td> 19675 </tr> 19676 19677 <tr class="entries_header"> 19678 <th class="th_details" colspan="6">HAL Implementation Details</th> 19679 </tr> 19680 <tr class="entry_cont"> 19681 <td class="entry_details" colspan="6"> 19682 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 19683of sensor maximum resolution for JPEG formats (regardless of hardware 19684level).<wbr/></p> 19685<p>(The following is a rewording of the above required table):</p> 19686<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 19687<ul> 19688<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 19689(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 19690(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/> 19691it does not have to be included in the supported JPEG sizes.<wbr/></li> 19692<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 19693the dimensions being a multiple of 16.<wbr/></li> 19694</ul> 19695<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 19696However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 19697resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 19698additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 19699if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 19700ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 197013264x2448.<wbr/></p> 19702<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/> 19703the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 19704here as output streams.<wbr/></p> 19705<p>It must also include each below resolution if it is smaller than or 19706equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 19707formats),<wbr/> as output streams:</p> 19708<ul> 19709<li>240p (320 x 240)</li> 19710<li>480p (640 x 480)</li> 19711<li>720p (1280 x 720)</li> 19712<li>1080p (1920 x 1080)</li> 19713</ul> 19714<p>For LIMITED capability devices 19715(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 19716the HAL only has to list up to the maximum video size 19717supported by the device.<wbr/></p> 19718<p>Regardless of hardware level,<wbr/> every output resolution available for 19719YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 19720<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 19721<ul> 19722<li>availableFormats</li> 19723<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 19724</ul> 19725 </td> 19726 </tr> 19727 19728 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19729 <!-- end of entry --> 19730 19731 19732 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 19733 <td class="entry_name 19734 " rowspan="3"> 19735 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 19736 </td> 19737 <td class="entry_type"> 19738 <span class="entry_type_name">int64</span> 19739 <span class="entry_type_container">x</span> 19740 19741 <span class="entry_type_array"> 19742 4 x n 19743 </span> 19744 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 19745 19746 19747 <span class="entry_type_hwlevel">[legacy] </span> 19748 19749 19750 19751 19752 </td> <!-- entry_type --> 19753 19754 <td class="entry_description"> 19755 <p>This lists the minimum frame duration for each 19756format/<wbr/>size combination.<wbr/></p> 19757 </td> 19758 19759 <td class="entry_units"> 19760 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 19761 </td> 19762 19763 <td class="entry_range"> 19764 </td> 19765 19766 <td class="entry_hal_version"> 19767 <p>3.<wbr/>2</p> 19768 </td> 19769 19770 <td class="entry_tags"> 19771 <ul class="entry_tags"> 19772 <li><a href="#tag_V1">V1</a></li> 19773 </ul> 19774 </td> 19775 19776 </tr> 19777 <tr class="entries_header"> 19778 <th class="th_details" colspan="6">Details</th> 19779 </tr> 19780 <tr class="entry_cont"> 19781 <td class="entry_details" colspan="6"> 19782 <p>This should correspond to the frame duration when only that 19783stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 19784set to either OFF or FAST.<wbr/></p> 19785<p>When multiple streams are used in a request,<wbr/> the minimum frame 19786duration will be max(individual stream min durations).<wbr/></p> 19787<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 19788is the same regardless of whether the stream is input or output.<wbr/></p> 19789<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 19790<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 19791calculating the max frame rate.<wbr/></p> 19792 </td> 19793 </tr> 19794 19795 19796 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19797 <!-- end of entry --> 19798 19799 19800 <tr class="entry" id="static_android.scaler.availableStallDurations"> 19801 <td class="entry_name 19802 " rowspan="5"> 19803 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 19804 </td> 19805 <td class="entry_type"> 19806 <span class="entry_type_name">int64</span> 19807 <span class="entry_type_container">x</span> 19808 19809 <span class="entry_type_array"> 19810 4 x n 19811 </span> 19812 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 19813 19814 19815 <span class="entry_type_hwlevel">[legacy] </span> 19816 19817 19818 19819 19820 </td> <!-- entry_type --> 19821 19822 <td class="entry_description"> 19823 <p>This lists the maximum stall duration for each 19824output format/<wbr/>size combination.<wbr/></p> 19825 </td> 19826 19827 <td class="entry_units"> 19828 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 19829 </td> 19830 19831 <td class="entry_range"> 19832 </td> 19833 19834 <td class="entry_hal_version"> 19835 <p>3.<wbr/>2</p> 19836 </td> 19837 19838 <td class="entry_tags"> 19839 <ul class="entry_tags"> 19840 <li><a href="#tag_V1">V1</a></li> 19841 </ul> 19842 </td> 19843 19844 </tr> 19845 <tr class="entries_header"> 19846 <th class="th_details" colspan="6">Details</th> 19847 </tr> 19848 <tr class="entry_cont"> 19849 <td class="entry_details" colspan="6"> 19850 <p>A stall duration is how much extra time would get added 19851to the normal minimum frame duration for a repeating request 19852that has streams with non-zero stall.<wbr/></p> 19853<p>For example,<wbr/> consider JPEG captures which have the following 19854characteristics:</p> 19855<ul> 19856<li>JPEG streams act like processed YUV streams in requests for which 19857they are not included; in requests in which they are directly 19858referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 19859JPEG stream requires the underlying YUV data to always be ready for 19860use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 19861frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 19862<li>The JPEG processor can run concurrently to the rest of the camera 19863pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 19864</ul> 19865<p>In other words,<wbr/> using a repeating YUV request would result 19866in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 19867JPEG request is submitted periodically,<wbr/> the frame rate will stay 19868at 30 FPS (as long as we wait for the previous JPEG to return each 19869time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 19870the frame rate will drop from 30 FPS.<wbr/></p> 19871<p>In general,<wbr/> submitting a new request with a non-0 stall time 19872stream will <em>not</em> cause a frame rate drop unless there are still 19873outstanding buffers for that stream from previous requests.<wbr/></p> 19874<p>Submitting a repeating request with streams (call this <code>S</code>) 19875is the same as setting the minimum frame duration from 19876the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 19877the maximum stall duration for <code>S</code>.<wbr/></p> 19878<p>If interleaving requests with and without a stall duration,<wbr/> 19879a request will stall by the maximum of the remaining times 19880for each can-stall stream with outstanding buffers.<wbr/></p> 19881<p>This means that a stalling request will not have an exposure start 19882until the stall has completed.<wbr/></p> 19883<p>This should correspond to the stall duration when only that stream is 19884active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 19885or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 19886effectively results in an indeterminate stall duration for all 19887streams in a request (the regular stall calculation rules are 19888ignored).<wbr/></p> 19889<p>The following formats may always have a stall duration:</p> 19890<ul> 19891<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li> 19892<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li> 19893</ul> 19894<p>The following formats will never have a stall duration:</p> 19895<ul> 19896<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> 19897<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li> 19898<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li> 19899<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></li> 19900</ul> 19901<p>All other formats may or may not have an allowed stall duration on 19902a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 19903for more details.<wbr/></p> 19904<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 19905calculating the max frame rate (absent stalls).<wbr/></p> 19906 </td> 19907 </tr> 19908 19909 <tr class="entries_header"> 19910 <th class="th_details" colspan="6">HAL Implementation Details</th> 19911 </tr> 19912 <tr class="entry_cont"> 19913 <td class="entry_details" colspan="6"> 19914 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 19915(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE 19916and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 19917 </td> 19918 </tr> 19919 19920 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19921 <!-- end of entry --> 19922 19923 19924 <tr class="entry" id="static_android.scaler.streamConfigurationMap"> 19925 <td class="entry_name 19926 " rowspan="5"> 19927 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map 19928 </td> 19929 <td class="entry_type"> 19930 <span class="entry_type_name">int32</span> 19931 19932 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span> 19933 19934 <span class="entry_type_synthetic">[synthetic] </span> 19935 19936 <span class="entry_type_hwlevel">[legacy] </span> 19937 19938 19939 19940 19941 </td> <!-- entry_type --> 19942 19943 <td class="entry_description"> 19944 <p>The available stream configurations that this 19945camera device supports; also includes the minimum frame durations 19946and the stall durations for each format/<wbr/>size combination.<wbr/></p> 19947 </td> 19948 19949 <td class="entry_units"> 19950 </td> 19951 19952 <td class="entry_range"> 19953 </td> 19954 19955 <td class="entry_hal_version"> 19956 <p>3.<wbr/>2</p> 19957 </td> 19958 19959 <td class="entry_tags"> 19960 </td> 19961 19962 </tr> 19963 <tr class="entries_header"> 19964 <th class="th_details" colspan="6">Details</th> 19965 </tr> 19966 <tr class="entry_cont"> 19967 <td class="entry_details" colspan="6"> 19968 <p>All camera devices will support sensor maximum resolution (defined by 19969<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> 19970<p>For a given use case,<wbr/> the actual maximum supported resolution 19971may be lower than what is listed here,<wbr/> depending on the destination 19972Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 19973the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 19974smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 19975can provide.<wbr/></p> 19976<p>Please reference the documentation for the image data destination to 19977check if it limits the maximum size for image data.<wbr/></p> 19978<p>The following table describes the minimum required output stream 19979configurations based on the hardware level 19980(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 19981<table> 19982<thead> 19983<tr> 19984<th align="center">Format</th> 19985<th align="center">Size</th> 19986<th align="center">Hardware Level</th> 19987<th align="center">Notes</th> 19988</tr> 19989</thead> 19990<tbody> 19991<tr> 19992<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 19993<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td> 19994<td align="center">Any</td> 19995<td align="center"></td> 19996</tr> 19997<tr> 19998<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 19999<td align="center">1920x1080 (1080p)</td> 20000<td align="center">Any</td> 20001<td align="center">if 1080p <= activeArraySize</td> 20002</tr> 20003<tr> 20004<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 20005<td align="center">1280x720 (720p)</td> 20006<td align="center">Any</td> 20007<td align="center">if 720p <= activeArraySize</td> 20008</tr> 20009<tr> 20010<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 20011<td align="center">640x480 (480p)</td> 20012<td align="center">Any</td> 20013<td align="center">if 480p <= activeArraySize</td> 20014</tr> 20015<tr> 20016<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 20017<td align="center">320x240 (240p)</td> 20018<td align="center">Any</td> 20019<td align="center">if 240p <= activeArraySize</td> 20020</tr> 20021<tr> 20022<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> 20023<td align="center">all output sizes available for JPEG</td> 20024<td align="center">FULL</td> 20025<td align="center"></td> 20026</tr> 20027<tr> 20028<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> 20029<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 20030<td align="center">LIMITED</td> 20031<td align="center"></td> 20032</tr> 20033<tr> 20034<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 20035<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 20036<td align="center">Any</td> 20037<td align="center"></td> 20038</tr> 20039</tbody> 20040</table> 20041<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 20042stream configurations on a per-capability basis.<wbr/></p> 20043<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 20044<ul> 20045<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 20046(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 20047(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/> 20048it does not have to be included in the supported JPEG sizes.<wbr/></li> 20049<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 20050the dimensions being a multiple of 16.<wbr/> 20051Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 20052However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum 20053resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 20054additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 20055if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 20056ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 200573264x2448.<wbr/></li> 20058</ul> 20059<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability on 20060downscaling from larger resolution to smaller ones,<wbr/> and the QCIF resolution can sometimes 20061not be fully supported due to this limitation on devices with high-resolution image 20062sensors.<wbr/> Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other 20063stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/> 20064and capture session creation will fail if it is not.<wbr/></p> 20065 </td> 20066 </tr> 20067 20068 <tr class="entries_header"> 20069 <th class="th_details" colspan="6">HAL Implementation Details</th> 20070 </tr> 20071 <tr class="entry_cont"> 20072 <td class="entry_details" colspan="6"> 20073 <p>Do not set this property directly 20074(it is synthetic and will not be available at the HAL layer); 20075set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> 20076<p>Not all output formats may be supported in a configuration with 20077an input stream of a particular format.<wbr/> For more details,<wbr/> see 20078<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 20079<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 20080of sensor maximum resolution for JPEG formats (regardless of hardware 20081level).<wbr/></p> 20082<p>(The following is a rewording of the above required table):</p> 20083<p>The HAL must include sensor maximum resolution (defined by 20084<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 20085<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/> 20086the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 20087here as output streams.<wbr/></p> 20088<p>It must also include each below resolution if it is smaller than or 20089equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 20090formats),<wbr/> as output streams:</p> 20091<ul> 20092<li>240p (320 x 240)</li> 20093<li>480p (640 x 480)</li> 20094<li>720p (1280 x 720)</li> 20095<li>1080p (1920 x 1080)</li> 20096</ul> 20097<p>For LIMITED capability devices 20098(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 20099the HAL only has to list up to the maximum video size 20100supported by the device.<wbr/></p> 20101<p>Regardless of hardware level,<wbr/> every output resolution available for 20102YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 20103<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 20104<ul> 20105<li>availableFormats</li> 20106<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 20107</ul> 20108 </td> 20109 </tr> 20110 20111 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20112 <!-- end of entry --> 20113 20114 20115 <tr class="entry" id="static_android.scaler.croppingType"> 20116 <td class="entry_name 20117 " rowspan="3"> 20118 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type 20119 </td> 20120 <td class="entry_type"> 20121 <span class="entry_type_name entry_type_name_enum">byte</span> 20122 20123 <span class="entry_type_visibility"> [public]</span> 20124 20125 20126 <span class="entry_type_hwlevel">[legacy] </span> 20127 20128 20129 20130 <ul class="entry_type_enum"> 20131 <li> 20132 <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span> 20133 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span> 20134 </li> 20135 <li> 20136 <span class="entry_type_enum_name">FREEFORM (v3.2)</span> 20137 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span> 20138 </li> 20139 </ul> 20140 20141 </td> <!-- entry_type --> 20142 20143 <td class="entry_description"> 20144 <p>The crop type that this camera device supports.<wbr/></p> 20145 </td> 20146 20147 <td class="entry_units"> 20148 </td> 20149 20150 <td class="entry_range"> 20151 </td> 20152 20153 <td class="entry_hal_version"> 20154 <p>3.<wbr/>2</p> 20155 </td> 20156 20157 <td class="entry_tags"> 20158 </td> 20159 20160 </tr> 20161 <tr class="entries_header"> 20162 <th class="th_details" colspan="6">Details</th> 20163 </tr> 20164 <tr class="entry_cont"> 20165 <td class="entry_details" colspan="6"> 20166 <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 20167device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 20168crop 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>) 20169and keep the crop region width and height unchanged.<wbr/> The camera device will return the 20170final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 20171<p>Camera devices that support FREEFORM cropping will support any crop region that 20172is inside of the active array.<wbr/> The camera device will apply the same crop region and 20173return 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> 20174<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p> 20175 </td> 20176 </tr> 20177 20178 20179 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20180 <!-- end of entry --> 20181 20182 20183 <tr class="entry" id="static_android.scaler.availableRecommendedStreamConfigurations"> 20184 <td class="entry_name 20185 " rowspan="5"> 20186 android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations 20187 </td> 20188 <td class="entry_type"> 20189 <span class="entry_type_name entry_type_name_enum">int32</span> 20190 <span class="entry_type_container">x</span> 20191 20192 <span class="entry_type_array"> 20193 n x 5 20194 </span> 20195 <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span> 20196 20197 20198 20199 20200 20201 <ul class="entry_type_enum"> 20202 <li> 20203 <span class="entry_type_enum_name">PREVIEW (v3.4)</span> 20204 <span class="entry_type_enum_value">0x0</span> 20205 <span class="entry_type_enum_notes"><p>Preview must only include non-stalling processed stream configurations with 20206output formats like 20207<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a>,<wbr/> 20208<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a>,<wbr/> etc.<wbr/></p></span> 20209 </li> 20210 <li> 20211 <span class="entry_type_enum_name">RECORD (v3.4)</span> 20212 <span class="entry_type_enum_value">0x1</span> 20213 <span class="entry_type_enum_notes"><p>Video record must include stream configurations that match the advertised 20214supported media profiles <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> with 20215IMPLEMENTATION_<wbr/>DEFINED format.<wbr/></p></span> 20216 </li> 20217 <li> 20218 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.4)</span> 20219 <span class="entry_type_enum_value">0x2</span> 20220 <span class="entry_type_enum_notes"><p>Video snapshot must include stream configurations at least as big as 20221the maximum RECORD resolutions and only with 20222<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/> 20223Additionally the configurations shouldn't cause preview glitches and also be able to 20224run at 30 fps.<wbr/></p></span> 20225 </li> 20226 <li> 20227 <span class="entry_type_enum_name">SNAPSHOT (v3.4)</span> 20228 <span class="entry_type_enum_value">0x3</span> 20229 <span class="entry_type_enum_notes"><p>Recommended snapshot stream configurations must include at least one with 20230size close to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> and 20231<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/> 20232Taking into account restrictions on aspect ratio,<wbr/> alignment etc.<wbr/> the area of the 20233maximum suggested size shouldn’t be less than 97% of the sensor array size area.<wbr/></p></span> 20234 </li> 20235 <li> 20236 <span class="entry_type_enum_name">ZSL (v3.4)</span> 20237 <span class="entry_type_enum_value">0x4</span> 20238 <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended input stream configurations must only be advertised with 20239ZSL along with other processed and/<wbr/>or stalling output formats.<wbr/></p></span> 20240 </li> 20241 <li> 20242 <span class="entry_type_enum_name">RAW (v3.4)</span> 20243 <span class="entry_type_enum_value">0x5</span> 20244 <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended raw stream configurations must only include RAW based 20245output formats.<wbr/></p></span> 20246 </li> 20247 <li> 20248 <span class="entry_type_enum_name">LOW_LATENCY_SNAPSHOT (v3.4)</span> 20249 <span class="entry_type_enum_value">0x6</span> 20250 <span class="entry_type_enum_notes"><p>If supported,<wbr/> the recommended low latency stream configurations must have 20251end-to-end latency that does not exceed 200 ms.<wbr/> under standard operating conditions 20252(reasonable light levels,<wbr/> not loaded system) and using template 20253TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE.<wbr/> This is primarily for listing configurations for the 20254<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a> 20255however other supported output formats can be added as well.<wbr/></p></span> 20256 </li> 20257 <li> 20258 <span class="entry_type_enum_name">PUBLIC_END (v3.4)</span> 20259 <span class="entry_type_enum_value">0x7</span> 20260 </li> 20261 <li> 20262 <span class="entry_type_enum_name">VENDOR_START (v3.4)</span> 20263 <span class="entry_type_enum_value">0x18</span> 20264 <span class="entry_type_enum_notes"><p>Vendor defined use cases.<wbr/> These depend on the vendor implementation.<wbr/></p></span> 20265 </li> 20266 </ul> 20267 20268 </td> <!-- entry_type --> 20269 20270 <td class="entry_description"> 20271 <p>Recommended stream configurations for common client use cases.<wbr/></p> 20272 </td> 20273 20274 <td class="entry_units"> 20275 </td> 20276 20277 <td class="entry_range"> 20278 </td> 20279 20280 <td class="entry_hal_version"> 20281 <p>3.<wbr/>4</p> 20282 </td> 20283 20284 <td class="entry_tags"> 20285 </td> 20286 20287 </tr> 20288 <tr class="entries_header"> 20289 <th class="th_details" colspan="6">Details</th> 20290 </tr> 20291 <tr class="entry_cont"> 20292 <td class="entry_details" colspan="6"> 20293 <p>Optional subset of the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> that contains 20294similar tuples listed as 20295(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/> 20296Camera devices will be able to suggest particular stream configurations which are 20297power and performance efficient for specific use cases.<wbr/> For more information about 20298retrieving the suggestions see 20299<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p> 20300 </td> 20301 </tr> 20302 20303 <tr class="entries_header"> 20304 <th class="th_details" colspan="6">HAL Implementation Details</th> 20305 </tr> 20306 <tr class="entry_cont"> 20307 <td class="entry_details" colspan="6"> 20308 <p>There are some requirements that need to be considered regarding the usecases and the 20309suggested configurations:</p> 20310<ul> 20311<li>If <a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations</a> is set,<wbr/> then recommended 20312stream configurations must be present for all mandatory usecases PREVIEW,<wbr/> 20313SNAPSHOT,<wbr/> RECORD,<wbr/> VIDEO_<wbr/>SNAPSHOT.<wbr/> ZSL and RAW are 20314required depending on device capabilities see <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></li> 20315<li>Non-existing usecases and non-vendor usecases within the range 20316(RAW : VENDOR_<wbr/>START] are prohibited as well as stream configurations not 20317present in the exhaustive <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> list.<wbr/></li> 20318</ul> 20319<p>For example,<wbr/> in case the camera device supports only 4K and 1080p and both resolutions are 20320recommended for the mandatory usecases except preview which can run efficiently only 20321on 1080p.<wbr/> The array may look like this:</p> 20322<p>[3840,<wbr/> 2160,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 20323 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/> 20324 (1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/> 20325 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/> 20326 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT),<wbr/></p> 20327<p>1920,<wbr/> 1080,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 20328 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/> 20329 (1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>PREVIEW |<wbr/> 20330 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/> 20331 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/> 20332 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT)]</p> 20333 </td> 20334 </tr> 20335 20336 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20337 <!-- end of entry --> 20338 20339 20340 <tr class="entry" id="static_android.scaler.availableRecommendedInputOutputFormatsMap"> 20341 <td class="entry_name 20342 " rowspan="5"> 20343 android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 20344 </td> 20345 <td class="entry_type"> 20346 <span class="entry_type_name">int32</span> 20347 20348 <span class="entry_type_visibility"> [ndk_public as reprocessFormatsMap]</span> 20349 20350 20351 20352 20353 20354 20355 </td> <!-- entry_type --> 20356 20357 <td class="entry_description"> 20358 <p>Recommended mappings of image formats that are supported by this 20359camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 20360 </td> 20361 20362 <td class="entry_units"> 20363 </td> 20364 20365 <td class="entry_range"> 20366 </td> 20367 20368 <td class="entry_hal_version"> 20369 <p>3.<wbr/>4</p> 20370 </td> 20371 20372 <td class="entry_tags"> 20373 <ul class="entry_tags"> 20374 <li><a href="#tag_REPROC">REPROC</a></li> 20375 </ul> 20376 </td> 20377 20378 </tr> 20379 <tr class="entries_header"> 20380 <th class="th_details" colspan="6">Details</th> 20381 </tr> 20382 <tr class="entry_cont"> 20383 <td class="entry_details" colspan="6"> 20384 <p>This is a recommended subset of the complete list of mappings found in 20385<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/> The same requirements apply here as well.<wbr/> 20386The list however doesn't need to contain all available and supported mappings.<wbr/> Instead of 20387this developers must list only recommended and efficient entries.<wbr/> 20388If set,<wbr/> the information will be available in the ZERO_<wbr/>SHUTTER_<wbr/>LAG recommended stream 20389configuration see 20390<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p> 20391 </td> 20392 </tr> 20393 20394 <tr class="entries_header"> 20395 <th class="th_details" colspan="6">HAL Implementation Details</th> 20396 </tr> 20397 <tr class="entry_cont"> 20398 <td class="entry_details" colspan="6"> 20399 <p>For a code sample of the required data encoding please check 20400<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 20401 </td> 20402 </tr> 20403 20404 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20405 <!-- end of entry --> 20406 20407 20408 <tr class="entry" id="static_android.scaler.mandatoryStreamCombinations"> 20409 <td class="entry_name 20410 " rowspan="5"> 20411 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Stream<wbr/>Combinations 20412 </td> 20413 <td class="entry_type"> 20414 <span class="entry_type_name">int32</span> 20415 <span class="entry_type_container">x</span> 20416 20417 <span class="entry_type_array"> 20418 n 20419 </span> 20420 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span> 20421 20422 <span class="entry_type_synthetic">[synthetic] </span> 20423 20424 <span class="entry_type_hwlevel">[limited] </span> 20425 20426 20427 20428 20429 </td> <!-- entry_type --> 20430 20431 <td class="entry_description"> 20432 <p>An array of mandatory stream combinations generated according to the camera device 20433<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL">Camera<wbr/>Characteristics#INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL</a> 20434and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES</a>.<wbr/> 20435This is an app-readable conversion of the mandatory stream combination 20436<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p> 20437 </td> 20438 20439 <td class="entry_units"> 20440 </td> 20441 20442 <td class="entry_range"> 20443 </td> 20444 20445 <td class="entry_hal_version"> 20446 <p>3.<wbr/>2</p> 20447 </td> 20448 20449 <td class="entry_tags"> 20450 </td> 20451 20452 </tr> 20453 <tr class="entries_header"> 20454 <th class="th_details" colspan="6">Details</th> 20455 </tr> 20456 <tr class="entry_cont"> 20457 <td class="entry_details" colspan="6"> 20458 <p>The array of 20459<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is 20460generated according to the documented 20461<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> based on 20462specific device level and capabilities.<wbr/> 20463Clients can use the array as a quick reference to find an appropriate camera stream 20464combination.<wbr/> 20465As per documentation,<wbr/> the stream combinations with given PREVIEW,<wbr/> RECORD and 20466MAXIMUM resolutions and anything smaller from the list given by 20467<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> are 20468guaranteed to work.<wbr/> 20469For a physical camera not independently exposed in 20470<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>,<wbr/> the mandatory stream 20471combinations for that physical camera Id are also generated,<wbr/> so that the application can 20472configure them as physical streams via the logical camera.<wbr/> 20473The mandatory stream combination array will be {@code null} in case the device is not 20474backward compatible.<wbr/></p> 20475 </td> 20476 </tr> 20477 20478 <tr class="entries_header"> 20479 <th class="th_details" colspan="6">HAL Implementation Details</th> 20480 </tr> 20481 <tr class="entry_cont"> 20482 <td class="entry_details" colspan="6"> 20483 <p>Do not set this property directly 20484(it is synthetic and will not be available at the HAL layer).<wbr/></p> 20485 </td> 20486 </tr> 20487 20488 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20489 <!-- end of entry --> 20490 20491 20492 20493 <!-- end of kind --> 20494 </tbody> 20495 <tr><td colspan="7" class="kind">dynamic</td></tr> 20496 20497 <thead class="entries_header"> 20498 <tr> 20499 <th class="th_name">Property Name</th> 20500 <th class="th_type">Type</th> 20501 <th class="th_description">Description</th> 20502 <th class="th_units">Units</th> 20503 <th class="th_range">Range</th> 20504 <th class="th_hal_version">Initial HIDL HAL version</th> 20505 <th class="th_tags">Tags</th> 20506 </tr> 20507 </thead> 20508 20509 <tbody> 20510 20511 20512 20513 20514 20515 20516 20517 20518 20519 20520 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 20521 <td class="entry_name 20522 " rowspan="5"> 20523 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 20524 </td> 20525 <td class="entry_type"> 20526 <span class="entry_type_name">int32</span> 20527 <span class="entry_type_container">x</span> 20528 20529 <span class="entry_type_array"> 20530 4 20531 </span> 20532 <span class="entry_type_visibility"> [public as rectangle]</span> 20533 20534 20535 <span class="entry_type_hwlevel">[legacy] </span> 20536 20537 20538 20539 20540 </td> <!-- entry_type --> 20541 20542 <td class="entry_description"> 20543 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 20544 </td> 20545 20546 <td class="entry_units"> 20547 Pixel coordinates relative to 20548 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 20549 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction 20550 capability and mode 20551 </td> 20552 20553 <td class="entry_range"> 20554 </td> 20555 20556 <td class="entry_hal_version"> 20557 <p>3.<wbr/>2</p> 20558 </td> 20559 20560 <td class="entry_tags"> 20561 <ul class="entry_tags"> 20562 <li><a href="#tag_BC">BC</a></li> 20563 </ul> 20564 </td> 20565 20566 </tr> 20567 <tr class="entries_header"> 20568 <th class="th_details" colspan="6">Details</th> 20569 </tr> 20570 <tr class="entry_cont"> 20571 <td class="entry_details" colspan="6"> 20572 <p>This control can be used to implement digital zoom.<wbr/></p> 20573<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 20574system always follows that of <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 20575the top-left pixel of the active array.<wbr/></p> 20576<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 20577system depends on the mode being set.<wbr/> 20578When the distortion correction mode is OFF,<wbr/> the coordinate system follows 20579<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with 20580<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/> 20581When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 20582<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 20583<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 20584<p>Output streams use this rectangle to produce their output,<wbr/> 20585cropping to a smaller region if necessary to maintain the 20586stream's aspect ratio,<wbr/> then scaling the sensor input to 20587match the output's configured resolution.<wbr/></p> 20588<p>The crop region is applied after the RAW to other color 20589space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 20590(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 20591croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 20592<p>For non-raw streams,<wbr/> any additional per-stream cropping will 20593be done to maximize the final pixel area of the stream.<wbr/></p> 20594<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 20595ratio,<wbr/> then 4:3 streams will use the exact crop 20596region.<wbr/> 16:9 streams will further crop vertically 20597(letterbox).<wbr/></p> 20598<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 20599outputs will crop horizontally (pillarbox),<wbr/> and 16:9 20600streams will match exactly.<wbr/> These additional crops will 20601be centered within the crop region.<wbr/></p> 20602<p>If the coordinate system is <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> the width and height 20603of the crop region cannot be set to be smaller than 20604<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 20605<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> 20606<p>If the coordinate system is <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> the width 20607and height of the crop region cannot be set to be smaller than 20608<code>floor( preCorrectionActiveArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code> 20609and 20610<code>floor( preCorrectionActiveArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/> 20611respectively.<wbr/></p> 20612<p>The camera device may adjust the crop region to account 20613for rounding and other hardware requirements; the final 20614crop region used will be included in the output capture 20615result.<wbr/></p> 20616 </td> 20617 </tr> 20618 20619 <tr class="entries_header"> 20620 <th class="th_details" colspan="6">HAL Implementation Details</th> 20621 </tr> 20622 <tr class="entry_cont"> 20623 <td class="entry_details" colspan="6"> 20624 <p>The output streams must maintain square pixels at all 20625times,<wbr/> no matter what the relative aspect ratios of the 20626crop region and the stream are.<wbr/> Negative values for 20627corner are allowed for raw output if full pixel array is 20628larger than active pixel array.<wbr/> Width and height may be 20629rounded to nearest larger supportable width,<wbr/> especially 20630for raw output,<wbr/> where only a few fixed scales may be 20631possible.<wbr/></p> 20632<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 20633size than pre-correction active array size,<wbr/> the HAL need follow below cropping rules:</p> 20634<ul> 20635<li> 20636<p>The HAL need handle the cropRegion as if the sensor crop size is the effective 20637pre-correction active array size.<wbr/> More specifically,<wbr/> the HAL must transform the request 20638cropRegion from <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> to the sensor cropped 20639pixel area size in this way:</p> 20640<ol> 20641<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 20642cropped pixel area by (tx,<wbr/> ty),<wbr/> 20643where <code>ty = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> preCorrectionActiveArraySize.<wbr/>height)</code> 20644and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> preCorrectionActiveArraySize.<wbr/>width)</code>.<wbr/> 20645The (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 20646<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 20647<li>Scale the width and height of requested cropRegion with scaling factor of 20648sensor<wbr/>Crop.<wbr/>width/<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size.<wbr/>height 20649respectively.<wbr/> 20650Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 20651with regard to the sensor crop size (effective pre-correction active array size).<wbr/> The 20652HAL still need follow the general cropping rule for this new cropRegion and effective 20653pre-correction active array size.<wbr/></li> 20654</ol> 20655</li> 20656<li> 20657<p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/> 20658The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full pre-correction 20659active array size.<wbr/> The reported cropRegion may be slightly different with the requested 20660cropRegion since the HAL may adjust the crop region to account for rounding,<wbr/> conversion 20661error,<wbr/> or other hardware limitations.<wbr/></p> 20662</li> 20663</ul> 20664<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 20665 </td> 20666 </tr> 20667 20668 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20669 <!-- end of entry --> 20670 20671 20672 20673 <!-- end of kind --> 20674 </tbody> 20675 20676 <!-- end of section --> 20677 <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr> 20678 20679 20680 <tr><td colspan="7" class="kind">controls</td></tr> 20681 20682 <thead class="entries_header"> 20683 <tr> 20684 <th class="th_name">Property Name</th> 20685 <th class="th_type">Type</th> 20686 <th class="th_description">Description</th> 20687 <th class="th_units">Units</th> 20688 <th class="th_range">Range</th> 20689 <th class="th_hal_version">Initial HIDL HAL version</th> 20690 <th class="th_tags">Tags</th> 20691 </tr> 20692 </thead> 20693 20694 <tbody> 20695 20696 20697 20698 20699 20700 20701 20702 20703 20704 20705 <tr class="entry" id="controls_android.sensor.exposureTime"> 20706 <td class="entry_name 20707 " rowspan="3"> 20708 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 20709 </td> 20710 <td class="entry_type"> 20711 <span class="entry_type_name">int64</span> 20712 20713 <span class="entry_type_visibility"> [public]</span> 20714 20715 20716 <span class="entry_type_hwlevel">[full] </span> 20717 20718 20719 20720 20721 </td> <!-- entry_type --> 20722 20723 <td class="entry_description"> 20724 <p>Duration each pixel is exposed to 20725light.<wbr/></p> 20726 </td> 20727 20728 <td class="entry_units"> 20729 Nanoseconds 20730 </td> 20731 20732 <td class="entry_range"> 20733 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 20734 </td> 20735 20736 <td class="entry_hal_version"> 20737 <p>3.<wbr/>2</p> 20738 </td> 20739 20740 <td class="entry_tags"> 20741 <ul class="entry_tags"> 20742 <li><a href="#tag_V1">V1</a></li> 20743 </ul> 20744 </td> 20745 20746 </tr> 20747 <tr class="entries_header"> 20748 <th class="th_details" colspan="6">Details</th> 20749 </tr> 20750 <tr class="entry_cont"> 20751 <td class="entry_details" colspan="6"> 20752 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 20753duration exposed to the nearest possible value (rather than expose longer).<wbr/> 20754The final exposure time used will be available in the output capture result.<wbr/></p> 20755<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 20756OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20757 </td> 20758 </tr> 20759 20760 20761 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20762 <!-- end of entry --> 20763 20764 20765 <tr class="entry" id="controls_android.sensor.frameDuration"> 20766 <td class="entry_name 20767 " rowspan="5"> 20768 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 20769 </td> 20770 <td class="entry_type"> 20771 <span class="entry_type_name">int64</span> 20772 20773 <span class="entry_type_visibility"> [public]</span> 20774 20775 20776 <span class="entry_type_hwlevel">[full] </span> 20777 20778 20779 20780 20781 </td> <!-- entry_type --> 20782 20783 <td class="entry_description"> 20784 <p>Duration from start of frame exposure to 20785start of next frame exposure.<wbr/></p> 20786 </td> 20787 20788 <td class="entry_units"> 20789 Nanoseconds 20790 </td> 20791 20792 <td class="entry_range"> 20793 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>.<wbr/> 20794The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 20795 </td> 20796 20797 <td class="entry_hal_version"> 20798 <p>3.<wbr/>2</p> 20799 </td> 20800 20801 <td class="entry_tags"> 20802 <ul class="entry_tags"> 20803 <li><a href="#tag_V1">V1</a></li> 20804 </ul> 20805 </td> 20806 20807 </tr> 20808 <tr class="entries_header"> 20809 <th class="th_details" colspan="6">Details</th> 20810 </tr> 20811 <tr class="entry_cont"> 20812 <td class="entry_details" colspan="6"> 20813 <p>The maximum frame rate that can be supported by a camera subsystem is 20814a function of many factors:</p> 20815<ul> 20816<li>Requested resolutions of output image streams</li> 20817<li>Availability of binning /<wbr/> skipping modes on the imager</li> 20818<li>The bandwidth of the imager interface</li> 20819<li>The bandwidth of the various ISP processing blocks</li> 20820</ul> 20821<p>Since these factors can vary greatly between different ISPs and 20822sensors,<wbr/> the camera abstraction tries to represent the bandwidth 20823restrictions with as simple a model as possible.<wbr/></p> 20824<p>The model presented has the following characteristics:</p> 20825<ul> 20826<li>The image sensor is always configured to output the smallest 20827resolution possible given the application's requested output stream 20828sizes.<wbr/> The smallest resolution is defined as being at least as large 20829as the largest requested output stream size; the camera pipeline must 20830never digitally upsample sensor data when the crop region covers the 20831whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 20832resolutions are configured,<wbr/> the sensor can provide a higher frame 20833rate.<wbr/></li> 20834<li>Since any request may use any or all the currently configured 20835output streams,<wbr/> the sensor and ISP must be configured to support 20836scaling a single capture to all the streams at the same time.<wbr/> This 20837means the camera pipeline must be ready to produce the largest 20838requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 20839frame rate of a given configured stream set is governed only by the 20840largest requested stream resolution.<wbr/></li> 20841<li>Using more than one output stream in a request does not affect the 20842frame duration.<wbr/></li> 20843<li>Certain format-streams may need to do additional background processing 20844before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 20845can run concurrently to the rest of the camera pipeline,<wbr/> but 20846cannot process more than 1 capture at a time.<wbr/></li> 20847</ul> 20848<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via 20849<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 20850These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is 20851possible for a given stream configuration.<wbr/></p> 20852<p>Specifically,<wbr/> the application can use the following rules to 20853determine the minimum frame duration it can request from the camera 20854device:</p> 20855<ol> 20856<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li> 20857<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking it up in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 20858(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li> 20859<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum 20860out of all values in <code>F</code>.<wbr/> Let the streams used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 20861</ol> 20862<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> 20863using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady 20864state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let 20865this special kind of request be called <code>Rsimple</code>.<wbr/></p> 20866<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a 20867new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if 20868<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all 20869buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p> 20870<p>For more details about stalling,<wbr/> see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> 20871<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 20872OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20873 </td> 20874 </tr> 20875 20876 <tr class="entries_header"> 20877 <th class="th_details" colspan="6">HAL Implementation Details</th> 20878 </tr> 20879 <tr class="entry_cont"> 20880 <td class="entry_details" colspan="6"> 20881 <p>For more details about stalling,<wbr/> see 20882<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 20883 </td> 20884 </tr> 20885 20886 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20887 <!-- end of entry --> 20888 20889 20890 <tr class="entry" id="controls_android.sensor.sensitivity"> 20891 <td class="entry_name 20892 " rowspan="5"> 20893 android.<wbr/>sensor.<wbr/>sensitivity 20894 </td> 20895 <td class="entry_type"> 20896 <span class="entry_type_name">int32</span> 20897 20898 <span class="entry_type_visibility"> [public]</span> 20899 20900 20901 <span class="entry_type_hwlevel">[full] </span> 20902 20903 20904 20905 20906 </td> <!-- entry_type --> 20907 20908 <td class="entry_description"> 20909 <p>The amount of gain applied to sensor data 20910before processing.<wbr/></p> 20911 </td> 20912 20913 <td class="entry_units"> 20914 ISO arithmetic units 20915 </td> 20916 20917 <td class="entry_range"> 20918 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 20919 </td> 20920 20921 <td class="entry_hal_version"> 20922 <p>3.<wbr/>2</p> 20923 </td> 20924 20925 <td class="entry_tags"> 20926 <ul class="entry_tags"> 20927 <li><a href="#tag_V1">V1</a></li> 20928 </ul> 20929 </td> 20930 20931 </tr> 20932 <tr class="entries_header"> 20933 <th class="th_details" colspan="6">Details</th> 20934 </tr> 20935 <tr class="entry_cont"> 20936 <td class="entry_details" colspan="6"> 20937 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 20938as defined in ISO 12232:2006.<wbr/></p> 20939<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 20940if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 20941is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 20942<p>If the camera device cannot apply the exact sensitivity 20943requested,<wbr/> it will reduce the gain to the nearest supported 20944value.<wbr/> The final sensitivity used will be available in the 20945output capture result.<wbr/></p> 20946<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 20947OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20948 </td> 20949 </tr> 20950 20951 <tr class="entries_header"> 20952 <th class="th_details" colspan="6">HAL Implementation Details</th> 20953 </tr> 20954 <tr class="entry_cont"> 20955 <td class="entry_details" colspan="6"> 20956 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 20957 </td> 20958 </tr> 20959 20960 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20961 <!-- end of entry --> 20962 20963 20964 <tr class="entry" id="controls_android.sensor.testPatternData"> 20965 <td class="entry_name 20966 " rowspan="5"> 20967 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 20968 </td> 20969 <td class="entry_type"> 20970 <span class="entry_type_name">int32</span> 20971 <span class="entry_type_container">x</span> 20972 20973 <span class="entry_type_array"> 20974 4 20975 </span> 20976 <span class="entry_type_visibility"> [public]</span> 20977 20978 20979 20980 20981 20982 20983 </td> <!-- entry_type --> 20984 20985 <td class="entry_description"> 20986 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 20987when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 20988 </td> 20989 20990 <td class="entry_units"> 20991 </td> 20992 20993 <td class="entry_range"> 20994 </td> 20995 20996 <td class="entry_hal_version"> 20997 <p>3.<wbr/>2</p> 20998 </td> 20999 21000 <td class="entry_tags"> 21001 </td> 21002 21003 </tr> 21004 <tr class="entries_header"> 21005 <th class="th_details" colspan="6">Details</th> 21006 </tr> 21007 <tr class="entry_cont"> 21008 <td class="entry_details" colspan="6"> 21009 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 21010The camera device then uses the most significant X bits 21011that correspond to how many bits are in its Bayer raw sensor 21012output.<wbr/></p> 21013<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 2101410 most significant bits from each color channel.<wbr/></p> 21015 </td> 21016 </tr> 21017 21018 <tr class="entries_header"> 21019 <th class="th_details" colspan="6">HAL Implementation Details</th> 21020 </tr> 21021 <tr class="entry_cont"> 21022 <td class="entry_details" colspan="6"> 21023 21024 </td> 21025 </tr> 21026 21027 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21028 <!-- end of entry --> 21029 21030 21031 <tr class="entry" id="controls_android.sensor.testPatternMode"> 21032 <td class="entry_name 21033 " rowspan="5"> 21034 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 21035 </td> 21036 <td class="entry_type"> 21037 <span class="entry_type_name entry_type_name_enum">int32</span> 21038 21039 <span class="entry_type_visibility"> [public]</span> 21040 21041 21042 21043 21044 21045 <ul class="entry_type_enum"> 21046 <li> 21047 <span class="entry_type_enum_name">OFF (v3.2)</span> 21048 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 21049device returns captures from the image sensor.<wbr/></p> 21050<p>This is the default if the key is not set.<wbr/></p></span> 21051 </li> 21052 <li> 21053 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span> 21054 <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 21055respective color channel provided in 21056<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 21057<p>For example:</p> 21058<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 21059</code></pre> 21060<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 21061<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 21062</code></pre> 21063<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 21064are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 21065 </li> 21066 <li> 21067 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span> 21068 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 21069<p>The vertical bars (left-to-right) are as follows:</p> 21070<ul> 21071<li>100% white</li> 21072<li>yellow</li> 21073<li>cyan</li> 21074<li>green</li> 21075<li>magenta</li> 21076<li>red</li> 21077<li>blue</li> 21078<li>black</li> 21079</ul> 21080<p>In general the image would look like the following:</p> 21081<pre><code>W Y C G M R B K 21082W Y C G M R B K 21083W Y C G M R B K 21084W Y C G M R B K 21085W Y C G M R B K 21086.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21087.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21088.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21089 21090(B = Blue,<wbr/> K = Black) 21091</code></pre> 21092<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 21093When this is not possible,<wbr/> the bar size should be rounded 21094down to the nearest integer and the pattern can repeat 21095on the right side.<wbr/></p> 21096<p>Each bar's height must always take up the full sensor 21097pixel array height.<wbr/></p> 21098<p>Each pixel in this test pattern must be set to either 210990% intensity or 100% intensity.<wbr/></p></span> 21100 </li> 21101 <li> 21102 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span> 21103 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 21104each bar should start at its specified color at the top,<wbr/> 21105and fade to gray at the bottom.<wbr/></p> 21106<p>Furthermore each bar is further subdivided into a left and 21107right half.<wbr/> The left half should have a smooth gradient,<wbr/> 21108and the right half should have a quantized gradient.<wbr/></p> 21109<p>In particular,<wbr/> the right half's should consist of blocks of the 21110same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 21111<p>The least significant bits in the quantized gradient should 21112be copied from the most significant bits of the smooth gradient.<wbr/></p> 21113<p>The height of each bar should always be a multiple of 128.<wbr/> 21114When this is not the case,<wbr/> the pattern should repeat at the bottom 21115of the image.<wbr/></p></span> 21116 </li> 21117 <li> 21118 <span class="entry_type_enum_name">PN9 (v3.2)</span> 21119 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 21120generated from a PN9 512-bit sequence (typically implemented 21121in hardware with a linear feedback shift register).<wbr/></p> 21122<p>The generator should be reset at the beginning of each frame,<wbr/> 21123and thus each subsequent raw frame with this test pattern should 21124be exactly the same as the last.<wbr/></p></span> 21125 </li> 21126 <li> 21127 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span> 21128 <span class="entry_type_enum_value">256</span> 21129 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 21130available only on this camera device are at least this numeric 21131value.<wbr/></p> 21132<p>All of the custom test patterns will be static 21133(that is the raw image must not vary from frame to frame).<wbr/></p></span> 21134 </li> 21135 </ul> 21136 21137 </td> <!-- entry_type --> 21138 21139 <td class="entry_description"> 21140 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 21141doing a real exposure from the camera.<wbr/></p> 21142 </td> 21143 21144 <td class="entry_units"> 21145 </td> 21146 21147 <td class="entry_range"> 21148 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 21149 </td> 21150 21151 <td class="entry_hal_version"> 21152 <p>3.<wbr/>2</p> 21153 </td> 21154 21155 <td class="entry_tags"> 21156 </td> 21157 21158 </tr> 21159 <tr class="entries_header"> 21160 <th class="th_details" colspan="6">Details</th> 21161 </tr> 21162 <tr class="entry_cont"> 21163 <td class="entry_details" colspan="6"> 21164 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 21165by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 21166work as normal.<wbr/></p> 21167<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 21168occur (and that the test pattern remain unmodified,<wbr/> since the flash 21169would not actually affect it).<wbr/></p> 21170<p>Defaults to OFF.<wbr/></p> 21171 </td> 21172 </tr> 21173 21174 <tr class="entries_header"> 21175 <th class="th_details" colspan="6">HAL Implementation Details</th> 21176 </tr> 21177 <tr class="entry_cont"> 21178 <td class="entry_details" colspan="6"> 21179 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 21180<p>The HAL may choose to substitute test patterns from the sensor 21181with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 21182indistinguishable to the ISP whether the data came from the 21183sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 21184 </td> 21185 </tr> 21186 21187 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21188 <!-- end of entry --> 21189 21190 21191 21192 <!-- end of kind --> 21193 </tbody> 21194 <tr><td colspan="7" class="kind">static</td></tr> 21195 21196 <thead class="entries_header"> 21197 <tr> 21198 <th class="th_name">Property Name</th> 21199 <th class="th_type">Type</th> 21200 <th class="th_description">Description</th> 21201 <th class="th_units">Units</th> 21202 <th class="th_range">Range</th> 21203 <th class="th_hal_version">Initial HIDL HAL version</th> 21204 <th class="th_tags">Tags</th> 21205 </tr> 21206 </thead> 21207 21208 <tbody> 21209 21210 21211 21212 21213 21214 21215 21216 21217 21218 21219 21220 21221 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 21222 <td class="entry_name 21223 " rowspan="5"> 21224 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 21225 </td> 21226 <td class="entry_type"> 21227 <span class="entry_type_name">int32</span> 21228 <span class="entry_type_container">x</span> 21229 21230 <span class="entry_type_array"> 21231 4 21232 </span> 21233 <span class="entry_type_visibility"> [public as rectangle]</span> 21234 21235 21236 <span class="entry_type_hwlevel">[legacy] </span> 21237 21238 21239 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 21240 21241 21242 </td> <!-- entry_type --> 21243 21244 <td class="entry_description"> 21245 <p>The area of the image sensor which corresponds to active pixels after any geometric 21246distortion correction has been applied.<wbr/></p> 21247 </td> 21248 21249 <td class="entry_units"> 21250 Pixel coordinates on the image sensor 21251 </td> 21252 21253 <td class="entry_range"> 21254 </td> 21255 21256 <td class="entry_hal_version"> 21257 <p>3.<wbr/>2</p> 21258 </td> 21259 21260 <td class="entry_tags"> 21261 <ul class="entry_tags"> 21262 <li><a href="#tag_RAW">RAW</a></li> 21263 </ul> 21264 </td> 21265 21266 </tr> 21267 <tr class="entries_header"> 21268 <th class="th_details" colspan="6">Details</th> 21269 </tr> 21270 <tr class="entry_cont"> 21271 <td class="entry_details" colspan="6"> 21272 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 21273the region that actually receives light from the scene) after any geometric correction 21274has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the 21275image output formats aside from the raw formats.<wbr/></p> 21276<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 21277the full pixel array,<wbr/> and the size of the full pixel array is given by 21278<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21279<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including 21280<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 21281this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p> 21282<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may 21283include black calibration pixels or other inactive regions.<wbr/></p> 21284<p>For devices that do not support <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the active 21285array must be the same as <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> 21286<p>For devices that support <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the active array must 21287be enclosed by <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/> The difference between 21288pre-correction active array and active array accounts for scaling or cropping caused 21289by lens geometric distortion correction.<wbr/></p> 21290<p>In general,<wbr/> application should always refer to active array size for controls like 21291metering regions or crop region.<wbr/> Two exceptions are when the application is dealing with 21292RAW image buffers (RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 etc),<wbr/> or when application explicitly set 21293<a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> to OFF.<wbr/> In these cases,<wbr/> application should refer 21294to <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> 21295 </td> 21296 </tr> 21297 21298 <tr class="entries_header"> 21299 <th class="th_details" colspan="6">HAL Implementation Details</th> 21300 </tr> 21301 <tr class="entry_cont"> 21302 <td class="entry_details" colspan="6"> 21303 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 21304>= <code>(0,<wbr/>0)</code>.<wbr/> 21305The <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> 21306 </td> 21307 </tr> 21308 21309 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21310 <!-- end of entry --> 21311 21312 21313 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 21314 <td class="entry_name 21315 " rowspan="3"> 21316 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 21317 </td> 21318 <td class="entry_type"> 21319 <span class="entry_type_name">int32</span> 21320 <span class="entry_type_container">x</span> 21321 21322 <span class="entry_type_array"> 21323 2 21324 </span> 21325 <span class="entry_type_visibility"> [public as rangeInt]</span> 21326 21327 21328 <span class="entry_type_hwlevel">[full] </span> 21329 21330 21331 <div class="entry_type_notes">Range of supported sensitivities</div> 21332 21333 21334 </td> <!-- entry_type --> 21335 21336 <td class="entry_description"> 21337 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this 21338camera device.<wbr/></p> 21339 </td> 21340 21341 <td class="entry_units"> 21342 </td> 21343 21344 <td class="entry_range"> 21345 <p>Min <= 100,<wbr/> Max >= 800</p> 21346 </td> 21347 21348 <td class="entry_hal_version"> 21349 <p>3.<wbr/>2</p> 21350 </td> 21351 21352 <td class="entry_tags"> 21353 <ul class="entry_tags"> 21354 <li><a href="#tag_BC">BC</a></li> 21355 <li><a href="#tag_V1">V1</a></li> 21356 </ul> 21357 </td> 21358 21359 </tr> 21360 <tr class="entries_header"> 21361 <th class="th_details" colspan="6">Details</th> 21362 </tr> 21363 <tr class="entry_cont"> 21364 <td class="entry_details" colspan="6"> 21365 <p>The values are the standard ISO sensitivity values,<wbr/> 21366as defined in ISO 12232:2006.<wbr/></p> 21367 </td> 21368 </tr> 21369 21370 21371 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21372 <!-- end of entry --> 21373 21374 21375 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 21376 <td class="entry_name 21377 " rowspan="3"> 21378 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 21379 </td> 21380 <td class="entry_type"> 21381 <span class="entry_type_name entry_type_name_enum">byte</span> 21382 21383 <span class="entry_type_visibility"> [public]</span> 21384 21385 21386 <span class="entry_type_hwlevel">[full] </span> 21387 21388 21389 21390 <ul class="entry_type_enum"> 21391 <li> 21392 <span class="entry_type_enum_name">RGGB (v3.2)</span> 21393 </li> 21394 <li> 21395 <span class="entry_type_enum_name">GRBG (v3.2)</span> 21396 </li> 21397 <li> 21398 <span class="entry_type_enum_name">GBRG (v3.2)</span> 21399 </li> 21400 <li> 21401 <span class="entry_type_enum_name">BGGR (v3.2)</span> 21402 </li> 21403 <li> 21404 <span class="entry_type_enum_name">RGB (v3.2)</span> 21405 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 21406values for each pixel,<wbr/> instead of just 1 16-bit value 21407per pixel.<wbr/></p></span> 21408 </li> 21409 <li> 21410 <span class="entry_type_enum_name">MONO (v3.4)</span> 21411 <span class="entry_type_enum_notes"><p>Sensor doesn't have any Bayer color filter.<wbr/> 21412Such sensor captures visible light in monochrome.<wbr/> The exact weighting and 21413wavelengths captured is not specified,<wbr/> but generally only includes the visible 21414frequencies.<wbr/> This value implies a MONOCHROME camera.<wbr/></p></span> 21415 </li> 21416 <li> 21417 <span class="entry_type_enum_name">NIR (v3.4)</span> 21418 <span class="entry_type_enum_notes"><p>Sensor has a near infrared filter capturing light with wavelength between 21419roughly 750nm and 1400nm,<wbr/> and the same filter covers the whole sensor array.<wbr/> This 21420value implies a MONOCHROME camera.<wbr/></p></span> 21421 </li> 21422 </ul> 21423 21424 </td> <!-- entry_type --> 21425 21426 <td class="entry_description"> 21427 <p>The arrangement of color filters on sensor; 21428represents the colors in the top-left 2x2 section of 21429the sensor,<wbr/> in reading order,<wbr/> for a Bayer camera,<wbr/> or the 21430light spectrum it captures for MONOCHROME camera.<wbr/></p> 21431 </td> 21432 21433 <td class="entry_units"> 21434 </td> 21435 21436 <td class="entry_range"> 21437 </td> 21438 21439 <td class="entry_hal_version"> 21440 <p>3.<wbr/>2</p> 21441 </td> 21442 21443 <td class="entry_tags"> 21444 <ul class="entry_tags"> 21445 <li><a href="#tag_RAW">RAW</a></li> 21446 </ul> 21447 </td> 21448 21449 </tr> 21450 21451 <tr class="entries_header"> 21452 <th class="th_details" colspan="6">HAL Implementation Details</th> 21453 </tr> 21454 <tr class="entry_cont"> 21455 <td class="entry_details" colspan="6"> 21456 <p>Starting from Android Q,<wbr/> the colorFilterArrangement for a MONOCHROME camera must be 21457single color patterns,<wbr/> such as MONO or NIR.<wbr/></p> 21458 </td> 21459 </tr> 21460 21461 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21462 <!-- end of entry --> 21463 21464 21465 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 21466 <td class="entry_name 21467 " rowspan="3"> 21468 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 21469 </td> 21470 <td class="entry_type"> 21471 <span class="entry_type_name">int64</span> 21472 <span class="entry_type_container">x</span> 21473 21474 <span class="entry_type_array"> 21475 2 21476 </span> 21477 <span class="entry_type_visibility"> [public as rangeLong]</span> 21478 21479 21480 <span class="entry_type_hwlevel">[full] </span> 21481 21482 21483 <div class="entry_type_notes">nanoseconds</div> 21484 21485 21486 </td> <!-- entry_type --> 21487 21488 <td class="entry_description"> 21489 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported 21490by this camera device.<wbr/></p> 21491 </td> 21492 21493 <td class="entry_units"> 21494 Nanoseconds 21495 </td> 21496 21497 <td class="entry_range"> 21498 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL 21499capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 21500the maximum exposure time will be greater than 100ms.<wbr/></p> 21501 </td> 21502 21503 <td class="entry_hal_version"> 21504 <p>3.<wbr/>2</p> 21505 </td> 21506 21507 <td class="entry_tags"> 21508 <ul class="entry_tags"> 21509 <li><a href="#tag_V1">V1</a></li> 21510 </ul> 21511 </td> 21512 21513 </tr> 21514 21515 <tr class="entries_header"> 21516 <th class="th_details" colspan="6">HAL Implementation Details</th> 21517 </tr> 21518 <tr class="entry_cont"> 21519 <td class="entry_details" colspan="6"> 21520 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 21521The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least 21522100ms.<wbr/></p> 21523 </td> 21524 </tr> 21525 21526 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21527 <!-- end of entry --> 21528 21529 21530 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 21531 <td class="entry_name 21532 " rowspan="5"> 21533 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 21534 </td> 21535 <td class="entry_type"> 21536 <span class="entry_type_name">int64</span> 21537 21538 <span class="entry_type_visibility"> [public]</span> 21539 21540 21541 <span class="entry_type_hwlevel">[full] </span> 21542 21543 21544 21545 21546 </td> <!-- entry_type --> 21547 21548 <td class="entry_description"> 21549 <p>The maximum possible frame duration (minimum frame rate) for 21550<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p> 21551 </td> 21552 21553 <td class="entry_units"> 21554 Nanoseconds 21555 </td> 21556 21557 <td class="entry_range"> 21558 <p>For FULL capability devices 21559(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p> 21560 </td> 21561 21562 <td class="entry_hal_version"> 21563 <p>3.<wbr/>2</p> 21564 </td> 21565 21566 <td class="entry_tags"> 21567 <ul class="entry_tags"> 21568 <li><a href="#tag_V1">V1</a></li> 21569 </ul> 21570 </td> 21571 21572 </tr> 21573 <tr class="entries_header"> 21574 <th class="th_details" colspan="6">Details</th> 21575 </tr> 21576 <tr class="entry_cont"> 21577 <td class="entry_details" colspan="6"> 21578 <p>Attempting to use frame durations beyond the maximum will result in the frame 21579duration being clipped to the maximum.<wbr/> See that control for a full definition of frame 21580durations.<wbr/></p> 21581<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 21582for the minimum frame duration values.<wbr/></p> 21583 </td> 21584 </tr> 21585 21586 <tr class="entries_header"> 21587 <th class="th_details" colspan="6">HAL Implementation Details</th> 21588 </tr> 21589 <tr class="entry_cont"> 21590 <td class="entry_details" colspan="6"> 21591 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 21592The maximum of the range SHOULD be at least 215931 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 21594<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 21595equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 21596value (since exposure time overrides frame duration).<wbr/></p> 21597<p>Available minimum frame durations for JPEG must be no greater 21598than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 21599minimum frame durations (for that respective size).<wbr/></p> 21600<p>Since JPEG processing is considered offline and can take longer than 21601a single uncompressed capture,<wbr/> refer to 21602<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 21603for details about encoding this scenario.<wbr/></p> 21604 </td> 21605 </tr> 21606 21607 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21608 <!-- end of entry --> 21609 21610 21611 <tr class="entry" id="static_android.sensor.info.physicalSize"> 21612 <td class="entry_name 21613 " rowspan="5"> 21614 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 21615 </td> 21616 <td class="entry_type"> 21617 <span class="entry_type_name">float</span> 21618 <span class="entry_type_container">x</span> 21619 21620 <span class="entry_type_array"> 21621 2 21622 </span> 21623 <span class="entry_type_visibility"> [public as sizeF]</span> 21624 21625 21626 <span class="entry_type_hwlevel">[legacy] </span> 21627 21628 21629 <div class="entry_type_notes">width x height</div> 21630 21631 21632 </td> <!-- entry_type --> 21633 21634 <td class="entry_description"> 21635 <p>The physical dimensions of the full pixel 21636array.<wbr/></p> 21637 </td> 21638 21639 <td class="entry_units"> 21640 Millimeters 21641 </td> 21642 21643 <td class="entry_range"> 21644 </td> 21645 21646 <td class="entry_hal_version"> 21647 <p>3.<wbr/>2</p> 21648 </td> 21649 21650 <td class="entry_tags"> 21651 <ul class="entry_tags"> 21652 <li><a href="#tag_V1">V1</a></li> 21653 <li><a href="#tag_BC">BC</a></li> 21654 </ul> 21655 </td> 21656 21657 </tr> 21658 <tr class="entries_header"> 21659 <th class="th_details" colspan="6">Details</th> 21660 </tr> 21661 <tr class="entry_cont"> 21662 <td class="entry_details" colspan="6"> 21663 <p>This is the physical size of the sensor pixel 21664array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21665 </td> 21666 </tr> 21667 21668 <tr class="entries_header"> 21669 <th class="th_details" colspan="6">HAL Implementation Details</th> 21670 </tr> 21671 <tr class="entry_cont"> 21672 <td class="entry_details" colspan="6"> 21673 <p>Needed for FOV calculation for old API</p> 21674 </td> 21675 </tr> 21676 21677 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21678 <!-- end of entry --> 21679 21680 21681 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 21682 <td class="entry_name 21683 " rowspan="3"> 21684 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 21685 </td> 21686 <td class="entry_type"> 21687 <span class="entry_type_name">int32</span> 21688 <span class="entry_type_container">x</span> 21689 21690 <span class="entry_type_array"> 21691 2 21692 </span> 21693 <span class="entry_type_visibility"> [public as size]</span> 21694 21695 21696 <span class="entry_type_hwlevel">[legacy] </span> 21697 21698 21699 21700 21701 </td> <!-- entry_type --> 21702 21703 <td class="entry_description"> 21704 <p>Dimensions of the full pixel array,<wbr/> possibly 21705including black calibration pixels.<wbr/></p> 21706 </td> 21707 21708 <td class="entry_units"> 21709 Pixels 21710 </td> 21711 21712 <td class="entry_range"> 21713 </td> 21714 21715 <td class="entry_hal_version"> 21716 <p>3.<wbr/>2</p> 21717 </td> 21718 21719 <td class="entry_tags"> 21720 <ul class="entry_tags"> 21721 <li><a href="#tag_RAW">RAW</a></li> 21722 <li><a href="#tag_BC">BC</a></li> 21723 </ul> 21724 </td> 21725 21726 </tr> 21727 <tr class="entries_header"> 21728 <th class="th_details" colspan="6">Details</th> 21729 </tr> 21730 <tr class="entry_cont"> 21731 <td class="entry_details" colspan="6"> 21732 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers 21733<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 21734the raw buffers produced by this sensor.<wbr/></p> 21735<p>If a camera device supports raw sensor formats,<wbr/> either this or 21736<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 21737output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a> 21738(this depends on whether or not the image sensor returns buffers containing pixels that 21739are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p> 21740<p>Some parts of the full pixel array may not receive light from the scene,<wbr/> 21741or 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 21742defines the rectangle of active pixels that will be included in processed image 21743formats.<wbr/></p> 21744 </td> 21745 </tr> 21746 21747 21748 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21749 <!-- end of entry --> 21750 21751 21752 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 21753 <td class="entry_name 21754 " rowspan="5"> 21755 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 21756 </td> 21757 <td class="entry_type"> 21758 <span class="entry_type_name">int32</span> 21759 21760 <span class="entry_type_visibility"> [public]</span> 21761 21762 21763 21764 21765 21766 21767 </td> <!-- entry_type --> 21768 21769 <td class="entry_description"> 21770 <p>Maximum raw value output by sensor.<wbr/></p> 21771 </td> 21772 21773 <td class="entry_units"> 21774 </td> 21775 21776 <td class="entry_range"> 21777 <p>> 255 (8-bit output)</p> 21778 </td> 21779 21780 <td class="entry_hal_version"> 21781 <p>3.<wbr/>2</p> 21782 </td> 21783 21784 <td class="entry_tags"> 21785 <ul class="entry_tags"> 21786 <li><a href="#tag_RAW">RAW</a></li> 21787 </ul> 21788 </td> 21789 21790 </tr> 21791 <tr class="entries_header"> 21792 <th class="th_details" colspan="6">Details</th> 21793 </tr> 21794 <tr class="entry_cont"> 21795 <td class="entry_details" colspan="6"> 21796 <p>This specifies the fully-saturated encoding level for the raw 21797sample values from the sensor.<wbr/> This is typically caused by the 21798sensor becoming highly non-linear or clipping.<wbr/> The minimum for 21799each channel is specified by the offset in the 21800<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p> 21801<p>The white level is typically determined either by sensor bit depth 21802(8-14 bits is expected),<wbr/> or by the point where the sensor response 21803becomes too non-linear to be useful.<wbr/> The default value for this is 21804maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 21805<p>The white level values of captured images may vary for different 21806capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 21807represents a coarse approximation for such case.<wbr/> It is recommended 21808to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported 21809by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p> 21810 </td> 21811 </tr> 21812 21813 <tr class="entries_header"> 21814 <th class="th_details" colspan="6">HAL Implementation Details</th> 21815 </tr> 21816 <tr class="entry_cont"> 21817 <td class="entry_details" colspan="6"> 21818 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 21819so the value for linear sensors should not be significantly lower 21820than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 21821 </td> 21822 </tr> 21823 21824 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21825 <!-- end of entry --> 21826 21827 21828 <tr class="entry" id="static_android.sensor.info.timestampSource"> 21829 <td class="entry_name 21830 " rowspan="5"> 21831 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source 21832 </td> 21833 <td class="entry_type"> 21834 <span class="entry_type_name entry_type_name_enum">byte</span> 21835 21836 <span class="entry_type_visibility"> [public]</span> 21837 21838 21839 <span class="entry_type_hwlevel">[legacy] </span> 21840 21841 21842 21843 <ul class="entry_type_enum"> 21844 <li> 21845 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span> 21846 <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/> 21847but can not be compared to timestamps from other subsystems 21848(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different 21849camera devices in the same system.<wbr/> Timestamps between streams and results for 21850a single camera instance are comparable,<wbr/> and the timestamps for all buffers 21851and the result metadata generated by a single capture are identical.<wbr/></p></span> 21852 </li> 21853 <li> 21854 <span class="entry_type_enum_name">REALTIME (v3.2)</span> 21855 <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 21856<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> 21857and they can be compared to other timestamps using that base.<wbr/></p></span> 21858 </li> 21859 </ul> 21860 21861 </td> <!-- entry_type --> 21862 21863 <td class="entry_description"> 21864 <p>The time base source for sensor capture start timestamps.<wbr/></p> 21865 </td> 21866 21867 <td class="entry_units"> 21868 </td> 21869 21870 <td class="entry_range"> 21871 </td> 21872 21873 <td class="entry_hal_version"> 21874 <p>3.<wbr/>2</p> 21875 </td> 21876 21877 <td class="entry_tags"> 21878 <ul class="entry_tags"> 21879 <li><a href="#tag_V1">V1</a></li> 21880 </ul> 21881 </td> 21882 21883 </tr> 21884 <tr class="entries_header"> 21885 <th class="th_details" colspan="6">Details</th> 21886 </tr> 21887 <tr class="entry_cont"> 21888 <td class="entry_details" colspan="6"> 21889 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but 21890may not based on a time source that can be compared to other system time sources.<wbr/></p> 21891<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they 21892can be compared against other system time sources/<wbr/>timestamps.<wbr/></p> 21893 </td> 21894 </tr> 21895 21896 <tr class="entries_header"> 21897 <th class="th_details" colspan="6">HAL Implementation Details</th> 21898 </tr> 21899 <tr class="entry_cont"> 21900 <td class="entry_details" colspan="6"> 21901 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp 21902source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera 21903framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See 21904system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and 21905SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video 21906recording might suffer unexpected behavior.<wbr/></p> 21907<p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which 21908tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p> 21909 </td> 21910 </tr> 21911 21912 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21913 <!-- end of entry --> 21914 21915 21916 <tr class="entry" id="static_android.sensor.info.lensShadingApplied"> 21917 <td class="entry_name 21918 " rowspan="3"> 21919 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied 21920 </td> 21921 <td class="entry_type"> 21922 <span class="entry_type_name entry_type_name_enum">byte</span> 21923 21924 <span class="entry_type_visibility"> [public as boolean]</span> 21925 21926 21927 21928 21929 21930 <ul class="entry_type_enum"> 21931 <li> 21932 <span class="entry_type_enum_name">FALSE (v3.2)</span> 21933 </li> 21934 <li> 21935 <span class="entry_type_enum_name">TRUE (v3.2)</span> 21936 </li> 21937 </ul> 21938 21939 </td> <!-- entry_type --> 21940 21941 <td class="entry_description"> 21942 <p>Whether the RAW images output from this camera device are subject to 21943lens shading correction.<wbr/></p> 21944 </td> 21945 21946 <td class="entry_units"> 21947 </td> 21948 21949 <td class="entry_range"> 21950 </td> 21951 21952 <td class="entry_hal_version"> 21953 <p>3.<wbr/>2</p> 21954 </td> 21955 21956 <td class="entry_tags"> 21957 </td> 21958 21959 </tr> 21960 <tr class="entries_header"> 21961 <th class="th_details" colspan="6">Details</th> 21962 </tr> 21963 <tr class="entry_cont"> 21964 <td class="entry_details" colspan="6"> 21965 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will 21966have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will 21967not be adjusted for lens shading correction.<wbr/> 21968See <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> 21969<p>This key will be <code>null</code> for all devices do not report this information.<wbr/> 21970Devices with RAW capability will always report this information in this key.<wbr/></p> 21971 </td> 21972 </tr> 21973 21974 21975 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21976 <!-- end of entry --> 21977 21978 21979 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize"> 21980 <td class="entry_name 21981 " rowspan="5"> 21982 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 21983 </td> 21984 <td class="entry_type"> 21985 <span class="entry_type_name">int32</span> 21986 <span class="entry_type_container">x</span> 21987 21988 <span class="entry_type_array"> 21989 4 21990 </span> 21991 <span class="entry_type_visibility"> [public as rectangle]</span> 21992 21993 21994 <span class="entry_type_hwlevel">[legacy] </span> 21995 21996 21997 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 21998 21999 22000 </td> <!-- entry_type --> 22001 22002 <td class="entry_description"> 22003 <p>The area of the image sensor which corresponds to active pixels prior to the 22004application of any geometric distortion correction.<wbr/></p> 22005 </td> 22006 22007 <td class="entry_units"> 22008 Pixel coordinates on the image sensor 22009 </td> 22010 22011 <td class="entry_range"> 22012 </td> 22013 22014 <td class="entry_hal_version"> 22015 <p>3.<wbr/>2</p> 22016 </td> 22017 22018 <td class="entry_tags"> 22019 <ul class="entry_tags"> 22020 <li><a href="#tag_RAW">RAW</a></li> 22021 </ul> 22022 </td> 22023 22024 </tr> 22025 <tr class="entries_header"> 22026 <th class="th_details" colspan="6">Details</th> 22027 </tr> 22028 <tr class="entry_cont"> 22029 <td class="entry_details" colspan="6"> 22030 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 22031the region that actually receives light from the scene) before any geometric correction 22032has been applied,<wbr/> and should be treated as the active region rectangle for any of the 22033raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading 22034correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as 22035the origin,<wbr/> (0,<wbr/>0).<wbr/></p> 22036<p>The size of this region determines the maximum field of view and the maximum number of 22037pixels that an image from this sensor can contain,<wbr/> prior to the application of 22038geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a 22039post-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> 22040field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image 22041can be calculated by applying the geometric distortion correction fields to this 22042rectangle,<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> 22043<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the 22044dimensions 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/> 22045(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in 22046<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p> 22047<ol> 22048<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in 22049<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 22050to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li> 22051<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/> 22052(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw 22053buffers is defined relative to the top,<wbr/> left of the 22054<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> 22055<li>If the resulting corrected pixel coordinate is within the region given in 22056<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 22057processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/> 22058when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li> 22059</ol> 22060<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> 22061is (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/> 22062<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 22063correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in 22064pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer 22065with 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) 22066relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in 22067<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 22068<p>The currently supported fields that correct for geometric distortion are:</p> 22069<ol> 22070<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li> 22071</ol> 22072<p>If the camera device doesn't support geometric distortion correction,<wbr/> or all of the 22073geometric distortion fields are no-ops,<wbr/> this rectangle will be the same as the 22074post-distortion-corrected rectangle given in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 22075<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 22076the full pixel array,<wbr/> and the size of the full pixel array is given by 22077<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 22078<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the 22079full array may include black calibration pixels or other inactive regions.<wbr/></p> 22080 </td> 22081 </tr> 22082 22083 <tr class="entries_header"> 22084 <th class="th_details" colspan="6">HAL Implementation Details</th> 22085 </tr> 22086 <tr class="entry_cont"> 22087 <td class="entry_details" colspan="6"> 22088 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 22089>= <code>(0,<wbr/>0)</code>.<wbr/> 22090The <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> 22091<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is 22092the same as the post-correction active array region given in 22093<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 22094 </td> 22095 </tr> 22096 22097 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22098 <!-- end of entry --> 22099 22100 22101 22102 22103 22104 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 22105 <td class="entry_name 22106 " rowspan="5"> 22107 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 22108 </td> 22109 <td class="entry_type"> 22110 <span class="entry_type_name entry_type_name_enum">byte</span> 22111 22112 <span class="entry_type_visibility"> [public]</span> 22113 22114 22115 22116 22117 22118 <ul class="entry_type_enum"> 22119 <li> 22120 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> 22121 <span class="entry_type_enum_value">1</span> 22122 </li> 22123 <li> 22124 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> 22125 <span class="entry_type_enum_value">2</span> 22126 </li> 22127 <li> 22128 <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span> 22129 <span class="entry_type_enum_value">3</span> 22130 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 22131 </li> 22132 <li> 22133 <span class="entry_type_enum_name">FLASH (v3.2)</span> 22134 <span class="entry_type_enum_value">4</span> 22135 </li> 22136 <li> 22137 <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span> 22138 <span class="entry_type_enum_value">9</span> 22139 </li> 22140 <li> 22141 <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span> 22142 <span class="entry_type_enum_value">10</span> 22143 </li> 22144 <li> 22145 <span class="entry_type_enum_name">SHADE (v3.2)</span> 22146 <span class="entry_type_enum_value">11</span> 22147 </li> 22148 <li> 22149 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span> 22150 <span class="entry_type_enum_value">12</span> 22151 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 22152 </li> 22153 <li> 22154 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span> 22155 <span class="entry_type_enum_value">13</span> 22156 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 22157 </li> 22158 <li> 22159 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span> 22160 <span class="entry_type_enum_value">14</span> 22161 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 22162 </li> 22163 <li> 22164 <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span> 22165 <span class="entry_type_enum_value">15</span> 22166 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 22167 </li> 22168 <li> 22169 <span class="entry_type_enum_name">STANDARD_A (v3.2)</span> 22170 <span class="entry_type_enum_value">17</span> 22171 </li> 22172 <li> 22173 <span class="entry_type_enum_name">STANDARD_B (v3.2)</span> 22174 <span class="entry_type_enum_value">18</span> 22175 </li> 22176 <li> 22177 <span class="entry_type_enum_name">STANDARD_C (v3.2)</span> 22178 <span class="entry_type_enum_value">19</span> 22179 </li> 22180 <li> 22181 <span class="entry_type_enum_name">D55 (v3.2)</span> 22182 <span class="entry_type_enum_value">20</span> 22183 </li> 22184 <li> 22185 <span class="entry_type_enum_name">D65 (v3.2)</span> 22186 <span class="entry_type_enum_value">21</span> 22187 </li> 22188 <li> 22189 <span class="entry_type_enum_name">D75 (v3.2)</span> 22190 <span class="entry_type_enum_value">22</span> 22191 </li> 22192 <li> 22193 <span class="entry_type_enum_name">D50 (v3.2)</span> 22194 <span class="entry_type_enum_value">23</span> 22195 </li> 22196 <li> 22197 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span> 22198 <span class="entry_type_enum_value">24</span> 22199 </li> 22200 </ul> 22201 22202 </td> <!-- entry_type --> 22203 22204 <td class="entry_description"> 22205 <p>The standard reference illuminant used as the scene light source when 22206calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 22207<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 22208<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> 22209 </td> 22210 22211 <td class="entry_units"> 22212 </td> 22213 22214 <td class="entry_range"> 22215 </td> 22216 22217 <td class="entry_hal_version"> 22218 <p>3.<wbr/>2</p> 22219 </td> 22220 22221 <td class="entry_tags"> 22222 <ul class="entry_tags"> 22223 <li><a href="#tag_RAW">RAW</a></li> 22224 </ul> 22225 </td> 22226 22227 </tr> 22228 <tr class="entries_header"> 22229 <th class="th_details" colspan="6">Details</th> 22230 </tr> 22231 <tr class="entry_cont"> 22232 <td class="entry_details" colspan="6"> 22233 <p>The values in this key correspond to the values defined for the 22234EXIF LightSource tag.<wbr/> These illuminants are standard light sources 22235that are often used calibrating camera devices.<wbr/></p> 22236<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 22237<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 22238<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> 22239<p>Some devices may choose to provide a second set of calibration 22240information for improved quality,<wbr/> including 22241<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> 22242<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 22243the camera device has RAW capability.<wbr/></p> 22244 </td> 22245 </tr> 22246 22247 <tr class="entries_header"> 22248 <th class="th_details" colspan="6">HAL Implementation Details</th> 22249 </tr> 22250 <tr class="entry_cont"> 22251 <td class="entry_details" colspan="6"> 22252 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 22253and corresponding matrices must be present to support the RAW capability 22254and DNG output.<wbr/></p> 22255<p>When producing raw images with a color profile that has only been 22256calibrated against a single light source,<wbr/> it is valid to omit 22257<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the 22258<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/> 22259and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 22260<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be 22261chosen so that it is representative of typical scene lighting.<wbr/> In 22262general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> 22263<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and 22264<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be 22265chosen to represent the typical range of scene lighting conditions.<wbr/> 22266In general,<wbr/> low color temperature illuminant such as Standard-A will 22267be chosen for the first reference illuminant and a higher color 22268temperature illuminant such as D65 will be chosen for the second 22269reference illuminant.<wbr/></p> 22270 </td> 22271 </tr> 22272 22273 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22274 <!-- end of entry --> 22275 22276 22277 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 22278 <td class="entry_name 22279 " rowspan="3"> 22280 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 22281 </td> 22282 <td class="entry_type"> 22283 <span class="entry_type_name">byte</span> 22284 22285 <span class="entry_type_visibility"> [public]</span> 22286 22287 22288 22289 22290 22291 22292 </td> <!-- entry_type --> 22293 22294 <td class="entry_description"> 22295 <p>The standard reference illuminant used as the scene light source when 22296calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 22297<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 22298<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 22299 </td> 22300 22301 <td class="entry_units"> 22302 </td> 22303 22304 <td class="entry_range"> 22305 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p> 22306 </td> 22307 22308 <td class="entry_hal_version"> 22309 <p>3.<wbr/>2</p> 22310 </td> 22311 22312 <td class="entry_tags"> 22313 <ul class="entry_tags"> 22314 <li><a href="#tag_RAW">RAW</a></li> 22315 </ul> 22316 </td> 22317 22318 </tr> 22319 <tr class="entries_header"> 22320 <th class="th_details" colspan="6">Details</th> 22321 </tr> 22322 <tr class="entry_cont"> 22323 <td class="entry_details" colspan="6"> 22324 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p> 22325<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 22326<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 22327<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> 22328<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 22329the camera device has RAW capability.<wbr/></p> 22330 </td> 22331 </tr> 22332 22333 22334 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22335 <!-- end of entry --> 22336 22337 22338 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 22339 <td class="entry_name 22340 " rowspan="3"> 22341 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 22342 </td> 22343 <td class="entry_type"> 22344 <span class="entry_type_name">rational</span> 22345 <span class="entry_type_container">x</span> 22346 22347 <span class="entry_type_array"> 22348 3 x 3 22349 </span> 22350 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 22351 22352 22353 22354 22355 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 22356 22357 22358 </td> <!-- entry_type --> 22359 22360 <td class="entry_description"> 22361 <p>A per-device calibration transform matrix that maps from the 22362reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> 22363 </td> 22364 22365 <td class="entry_units"> 22366 </td> 22367 22368 <td class="entry_range"> 22369 </td> 22370 22371 <td class="entry_hal_version"> 22372 <p>3.<wbr/>2</p> 22373 </td> 22374 22375 <td class="entry_tags"> 22376 <ul class="entry_tags"> 22377 <li><a href="#tag_RAW">RAW</a></li> 22378 </ul> 22379 </td> 22380 22381 </tr> 22382 <tr class="entries_header"> 22383 <th class="th_details" colspan="6">Details</th> 22384 </tr> 22385 <tr class="entry_cont"> 22386 <td class="entry_details" colspan="6"> 22387 <p>This matrix is used to correct for per-device variations in the 22388sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 22389<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 22390contains a per-device calibration transform that maps colors 22391from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 22392colorspace) into this camera device's native sensor color 22393space under the first reference illuminant 22394(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 22395<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 22396the camera device has RAW capability.<wbr/></p> 22397 </td> 22398 </tr> 22399 22400 22401 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22402 <!-- end of entry --> 22403 22404 22405 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 22406 <td class="entry_name 22407 " rowspan="3"> 22408 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 22409 </td> 22410 <td class="entry_type"> 22411 <span class="entry_type_name">rational</span> 22412 <span class="entry_type_container">x</span> 22413 22414 <span class="entry_type_array"> 22415 3 x 3 22416 </span> 22417 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 22418 22419 22420 22421 22422 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 22423 22424 22425 </td> <!-- entry_type --> 22426 22427 <td class="entry_description"> 22428 <p>A per-device calibration transform matrix that maps from the 22429reference sensor colorspace to the actual device sensor colorspace 22430(this is the colorspace of the raw buffer data).<wbr/></p> 22431 </td> 22432 22433 <td class="entry_units"> 22434 </td> 22435 22436 <td class="entry_range"> 22437 </td> 22438 22439 <td class="entry_hal_version"> 22440 <p>3.<wbr/>2</p> 22441 </td> 22442 22443 <td class="entry_tags"> 22444 <ul class="entry_tags"> 22445 <li><a href="#tag_RAW">RAW</a></li> 22446 </ul> 22447 </td> 22448 22449 </tr> 22450 <tr class="entries_header"> 22451 <th class="th_details" colspan="6">Details</th> 22452 </tr> 22453 <tr class="entry_cont"> 22454 <td class="entry_details" colspan="6"> 22455 <p>This matrix is used to correct for per-device variations in the 22456sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 22457<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 22458contains a per-device calibration transform that maps colors 22459from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 22460colorspace) into this camera device's native sensor color 22461space under the second reference illuminant 22462(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 22463<p>This matrix will only be present if the second reference 22464illuminant is present.<wbr/></p> 22465<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 22466the camera device has RAW capability.<wbr/></p> 22467 </td> 22468 </tr> 22469 22470 22471 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22472 <!-- end of entry --> 22473 22474 22475 <tr class="entry" id="static_android.sensor.colorTransform1"> 22476 <td class="entry_name 22477 " rowspan="3"> 22478 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 22479 </td> 22480 <td class="entry_type"> 22481 <span class="entry_type_name">rational</span> 22482 <span class="entry_type_container">x</span> 22483 22484 <span class="entry_type_array"> 22485 3 x 3 22486 </span> 22487 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 22488 22489 22490 22491 22492 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 22493 22494 22495 </td> <!-- entry_type --> 22496 22497 <td class="entry_description"> 22498 <p>A matrix that transforms color values from CIE XYZ color space to 22499reference sensor color space.<wbr/></p> 22500 </td> 22501 22502 <td class="entry_units"> 22503 </td> 22504 22505 <td class="entry_range"> 22506 </td> 22507 22508 <td class="entry_hal_version"> 22509 <p>3.<wbr/>2</p> 22510 </td> 22511 22512 <td class="entry_tags"> 22513 <ul class="entry_tags"> 22514 <li><a href="#tag_RAW">RAW</a></li> 22515 </ul> 22516 </td> 22517 22518 </tr> 22519 <tr class="entries_header"> 22520 <th class="th_details" colspan="6">Details</th> 22521 </tr> 22522 <tr class="entry_cont"> 22523 <td class="entry_details" colspan="6"> 22524 <p>This matrix is used to convert from the standard CIE XYZ color 22525space to the reference sensor colorspace,<wbr/> and is used when processing 22526raw buffer data.<wbr/></p> 22527<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 22528contains a color transform matrix that maps colors from the CIE 22529XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 22530"golden module" colorspace) under the first reference illuminant 22531(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 22532<p>The white points chosen in both the reference sensor color space 22533and the CIE XYZ colorspace when calculating this transform will 22534match the standard white point for the first reference illuminant 22535(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 22536<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 22537the camera device has RAW capability.<wbr/></p> 22538 </td> 22539 </tr> 22540 22541 22542 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22543 <!-- end of entry --> 22544 22545 22546 <tr class="entry" id="static_android.sensor.colorTransform2"> 22547 <td class="entry_name 22548 " rowspan="3"> 22549 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 22550 </td> 22551 <td class="entry_type"> 22552 <span class="entry_type_name">rational</span> 22553 <span class="entry_type_container">x</span> 22554 22555 <span class="entry_type_array"> 22556 3 x 3 22557 </span> 22558 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 22559 22560 22561 22562 22563 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 22564 22565 22566 </td> <!-- entry_type --> 22567 22568 <td class="entry_description"> 22569 <p>A matrix that transforms color values from CIE XYZ color space to 22570reference sensor color space.<wbr/></p> 22571 </td> 22572 22573 <td class="entry_units"> 22574 </td> 22575 22576 <td class="entry_range"> 22577 </td> 22578 22579 <td class="entry_hal_version"> 22580 <p>3.<wbr/>2</p> 22581 </td> 22582 22583 <td class="entry_tags"> 22584 <ul class="entry_tags"> 22585 <li><a href="#tag_RAW">RAW</a></li> 22586 </ul> 22587 </td> 22588 22589 </tr> 22590 <tr class="entries_header"> 22591 <th class="th_details" colspan="6">Details</th> 22592 </tr> 22593 <tr class="entry_cont"> 22594 <td class="entry_details" colspan="6"> 22595 <p>This matrix is used to convert from the standard CIE XYZ color 22596space to the reference sensor colorspace,<wbr/> and is used when processing 22597raw buffer data.<wbr/></p> 22598<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 22599contains a color transform matrix that maps colors from the CIE 22600XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 22601"golden module" colorspace) under the second reference illuminant 22602(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 22603<p>The white points chosen in both the reference sensor color space 22604and the CIE XYZ colorspace when calculating this transform will 22605match the standard white point for the second reference illuminant 22606(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 22607<p>This matrix will only be present if the second reference 22608illuminant is present.<wbr/></p> 22609<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 22610the camera device has RAW capability.<wbr/></p> 22611 </td> 22612 </tr> 22613 22614 22615 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22616 <!-- end of entry --> 22617 22618 22619 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 22620 <td class="entry_name 22621 " rowspan="3"> 22622 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 22623 </td> 22624 <td class="entry_type"> 22625 <span class="entry_type_name">rational</span> 22626 <span class="entry_type_container">x</span> 22627 22628 <span class="entry_type_array"> 22629 3 x 3 22630 </span> 22631 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 22632 22633 22634 22635 22636 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 22637 22638 22639 </td> <!-- entry_type --> 22640 22641 <td class="entry_description"> 22642 <p>A matrix that transforms white balanced camera colors from the reference 22643sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 22644 </td> 22645 22646 <td class="entry_units"> 22647 </td> 22648 22649 <td class="entry_range"> 22650 </td> 22651 22652 <td class="entry_hal_version"> 22653 <p>3.<wbr/>2</p> 22654 </td> 22655 22656 <td class="entry_tags"> 22657 <ul class="entry_tags"> 22658 <li><a href="#tag_RAW">RAW</a></li> 22659 </ul> 22660 </td> 22661 22662 </tr> 22663 <tr class="entries_header"> 22664 <th class="th_details" colspan="6">Details</th> 22665 </tr> 22666 <tr class="entry_cont"> 22667 <td class="entry_details" colspan="6"> 22668 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 22669is used when processing raw buffer data.<wbr/></p> 22670<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 22671a color transform matrix that maps white balanced colors from the 22672reference sensor color space to the CIE XYZ color space with a D50 white 22673point.<wbr/></p> 22674<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 22675this matrix is chosen so that the standard white point for this reference 22676illuminant in the reference sensor colorspace is mapped to D50 in the 22677CIE XYZ colorspace.<wbr/></p> 22678<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 22679the camera device has RAW capability.<wbr/></p> 22680 </td> 22681 </tr> 22682 22683 22684 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22685 <!-- end of entry --> 22686 22687 22688 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 22689 <td class="entry_name 22690 " rowspan="3"> 22691 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 22692 </td> 22693 <td class="entry_type"> 22694 <span class="entry_type_name">rational</span> 22695 <span class="entry_type_container">x</span> 22696 22697 <span class="entry_type_array"> 22698 3 x 3 22699 </span> 22700 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 22701 22702 22703 22704 22705 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 22706 22707 22708 </td> <!-- entry_type --> 22709 22710 <td class="entry_description"> 22711 <p>A matrix that transforms white balanced camera colors from the reference 22712sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 22713 </td> 22714 22715 <td class="entry_units"> 22716 </td> 22717 22718 <td class="entry_range"> 22719 </td> 22720 22721 <td class="entry_hal_version"> 22722 <p>3.<wbr/>2</p> 22723 </td> 22724 22725 <td class="entry_tags"> 22726 <ul class="entry_tags"> 22727 <li><a href="#tag_RAW">RAW</a></li> 22728 </ul> 22729 </td> 22730 22731 </tr> 22732 <tr class="entries_header"> 22733 <th class="th_details" colspan="6">Details</th> 22734 </tr> 22735 <tr class="entry_cont"> 22736 <td class="entry_details" colspan="6"> 22737 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 22738is used when processing raw buffer data.<wbr/></p> 22739<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 22740a color transform matrix that maps white balanced colors from the 22741reference sensor color space to the CIE XYZ color space with a D50 white 22742point.<wbr/></p> 22743<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 22744this matrix is chosen so that the standard white point for this reference 22745illuminant in the reference sensor colorspace is mapped to D50 in the 22746CIE XYZ colorspace.<wbr/></p> 22747<p>This matrix will only be present if the second reference 22748illuminant is present.<wbr/></p> 22749<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 22750the camera device has RAW capability.<wbr/></p> 22751 </td> 22752 </tr> 22753 22754 22755 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22756 <!-- end of entry --> 22757 22758 22759 <tr class="entry" id="static_android.sensor.baseGainFactor"> 22760 <td class="entry_name 22761 " rowspan="1"> 22762 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 22763 </td> 22764 <td class="entry_type"> 22765 <span class="entry_type_name">rational</span> 22766 22767 <span class="entry_type_visibility"> [system]</span> 22768 22769 22770 22771 22772 22773 22774 </td> <!-- entry_type --> 22775 22776 <td class="entry_description"> 22777 <p>Gain factor from electrons to raw units when 22778ISO=100</p> 22779 </td> 22780 22781 <td class="entry_units"> 22782 </td> 22783 22784 <td class="entry_range"> 22785 </td> 22786 22787 <td class="entry_hal_version"> 22788 <p>3.<wbr/>2</p> 22789 </td> 22790 22791 <td class="entry_tags"> 22792 <ul class="entry_tags"> 22793 <li><a href="#tag_FUTURE">FUTURE</a></li> 22794 </ul> 22795 </td> 22796 22797 </tr> 22798 22799 22800 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22801 <!-- end of entry --> 22802 22803 22804 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 22805 <td class="entry_name 22806 " rowspan="5"> 22807 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 22808 </td> 22809 <td class="entry_type"> 22810 <span class="entry_type_name">int32</span> 22811 <span class="entry_type_container">x</span> 22812 22813 <span class="entry_type_array"> 22814 4 22815 </span> 22816 <span class="entry_type_visibility"> [public as blackLevelPattern]</span> 22817 22818 22819 22820 22821 <div class="entry_type_notes">2x2 raw count block</div> 22822 22823 22824 </td> <!-- entry_type --> 22825 22826 <td class="entry_description"> 22827 <p>A fixed black level offset for each of the color filter arrangement 22828(CFA) mosaic channels.<wbr/></p> 22829 </td> 22830 22831 <td class="entry_units"> 22832 </td> 22833 22834 <td class="entry_range"> 22835 <p>>= 0 for each.<wbr/></p> 22836 </td> 22837 22838 <td class="entry_hal_version"> 22839 <p>3.<wbr/>2</p> 22840 </td> 22841 22842 <td class="entry_tags"> 22843 <ul class="entry_tags"> 22844 <li><a href="#tag_RAW">RAW</a></li> 22845 </ul> 22846 </td> 22847 22848 </tr> 22849 <tr class="entries_header"> 22850 <th class="th_details" colspan="6">Details</th> 22851 </tr> 22852 <tr class="entry_cont"> 22853 <td class="entry_details" colspan="6"> 22854 <p>This key specifies the zero light value for each of the CFA mosaic 22855channels in the camera sensor.<wbr/> The maximal value output by the 22856sensor 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> 22857<p>The values are given in the same order as channels listed for the CFA 22858layout 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 22859nth value given corresponds to the black level offset for the nth 22860color channel listed in the CFA.<wbr/></p> 22861<p>The black level values of captured images may vary for different 22862capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 22863represents a coarse approximation for such case.<wbr/> It is recommended to 22864use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from 22865<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when 22866supported by the camera device,<wbr/> which provides more accurate black 22867level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use 22868pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black 22869level values for each frame.<wbr/></p> 22870<p>For a MONOCHROME camera device,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p> 22871 </td> 22872 </tr> 22873 22874 <tr class="entries_header"> 22875 <th class="th_details" colspan="6">HAL Implementation Details</th> 22876 </tr> 22877 <tr class="entry_cont"> 22878 <td class="entry_details" colspan="6"> 22879 <p>The values are given in row-column scan order,<wbr/> with the first value 22880corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 22881 </td> 22882 </tr> 22883 22884 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22885 <!-- end of entry --> 22886 22887 22888 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 22889 <td class="entry_name 22890 " rowspan="3"> 22891 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 22892 </td> 22893 <td class="entry_type"> 22894 <span class="entry_type_name">int32</span> 22895 22896 <span class="entry_type_visibility"> [public]</span> 22897 22898 22899 <span class="entry_type_hwlevel">[full] </span> 22900 22901 22902 22903 22904 </td> <!-- entry_type --> 22905 22906 <td class="entry_description"> 22907 <p>Maximum sensitivity that is implemented 22908purely through analog gain.<wbr/></p> 22909 </td> 22910 22911 <td class="entry_units"> 22912 </td> 22913 22914 <td class="entry_range"> 22915 </td> 22916 22917 <td class="entry_hal_version"> 22918 <p>3.<wbr/>2</p> 22919 </td> 22920 22921 <td class="entry_tags"> 22922 <ul class="entry_tags"> 22923 <li><a href="#tag_V1">V1</a></li> 22924 <li><a href="#tag_FULL">FULL</a></li> 22925 </ul> 22926 </td> 22927 22928 </tr> 22929 <tr class="entries_header"> 22930 <th class="th_details" colspan="6">Details</th> 22931 </tr> 22932 <tr class="entry_cont"> 22933 <td class="entry_details" colspan="6"> 22934 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 22935equal to this,<wbr/> all applied gain must be analog.<wbr/> For 22936values above this,<wbr/> the gain applied can be a mix of analog and 22937digital.<wbr/></p> 22938 </td> 22939 </tr> 22940 22941 22942 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22943 <!-- end of entry --> 22944 22945 22946 <tr class="entry" id="static_android.sensor.orientation"> 22947 <td class="entry_name 22948 " rowspan="3"> 22949 android.<wbr/>sensor.<wbr/>orientation 22950 </td> 22951 <td class="entry_type"> 22952 <span class="entry_type_name">int32</span> 22953 22954 <span class="entry_type_visibility"> [public]</span> 22955 22956 22957 <span class="entry_type_hwlevel">[legacy] </span> 22958 22959 22960 22961 22962 </td> <!-- entry_type --> 22963 22964 <td class="entry_description"> 22965 <p>Clockwise angle through which the output image needs to be rotated to be 22966upright on the device screen in its native orientation.<wbr/></p> 22967 </td> 22968 22969 <td class="entry_units"> 22970 Degrees of clockwise rotation; always a multiple of 22971 90 22972 </td> 22973 22974 <td class="entry_range"> 22975 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 22976 </td> 22977 22978 <td class="entry_hal_version"> 22979 <p>3.<wbr/>2</p> 22980 </td> 22981 22982 <td class="entry_tags"> 22983 <ul class="entry_tags"> 22984 <li><a href="#tag_BC">BC</a></li> 22985 </ul> 22986 </td> 22987 22988 </tr> 22989 <tr class="entries_header"> 22990 <th class="th_details" colspan="6">Details</th> 22991 </tr> 22992 <tr class="entry_cont"> 22993 <td class="entry_details" colspan="6"> 22994 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in 22995the sensor's coordinate system.<wbr/></p> 22996 </td> 22997 </tr> 22998 22999 23000 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23001 <!-- end of entry --> 23002 23003 23004 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 23005 <td class="entry_name 23006 " rowspan="3"> 23007 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 23008 </td> 23009 <td class="entry_type"> 23010 <span class="entry_type_name">int32</span> 23011 <span class="entry_type_container">x</span> 23012 23013 <span class="entry_type_array"> 23014 3 23015 </span> 23016 <span class="entry_type_visibility"> [system]</span> 23017 23018 23019 23020 23021 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 23022 23023 23024 </td> <!-- entry_type --> 23025 23026 <td class="entry_description"> 23027 <p>The number of input samples for each dimension of 23028<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 23029 </td> 23030 23031 <td class="entry_units"> 23032 </td> 23033 23034 <td class="entry_range"> 23035 <p>Hue >= 1,<wbr/> 23036Saturation >= 2,<wbr/> 23037Value >= 1</p> 23038 </td> 23039 23040 <td class="entry_hal_version"> 23041 <p>3.<wbr/>2</p> 23042 </td> 23043 23044 <td class="entry_tags"> 23045 <ul class="entry_tags"> 23046 <li><a href="#tag_RAW">RAW</a></li> 23047 </ul> 23048 </td> 23049 23050 </tr> 23051 <tr class="entries_header"> 23052 <th class="th_details" colspan="6">Details</th> 23053 </tr> 23054 <tr class="entry_cont"> 23055 <td class="entry_details" colspan="6"> 23056 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 23057dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 23058dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 23059element.<wbr/></p> 23060 </td> 23061 </tr> 23062 23063 23064 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23065 <!-- end of entry --> 23066 23067 23068 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 23069 <td class="entry_name 23070 " rowspan="5"> 23071 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 23072 </td> 23073 <td class="entry_type"> 23074 <span class="entry_type_name">int32</span> 23075 <span class="entry_type_container">x</span> 23076 23077 <span class="entry_type_array"> 23078 n 23079 </span> 23080 <span class="entry_type_visibility"> [public]</span> 23081 23082 23083 23084 23085 <div class="entry_type_notes">list of enums</div> 23086 23087 23088 </td> <!-- entry_type --> 23089 23090 <td class="entry_description"> 23091 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> 23092supported by this camera device.<wbr/></p> 23093 </td> 23094 23095 <td class="entry_units"> 23096 </td> 23097 23098 <td class="entry_range"> 23099 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p> 23100 </td> 23101 23102 <td class="entry_hal_version"> 23103 <p>3.<wbr/>2</p> 23104 </td> 23105 23106 <td class="entry_tags"> 23107 </td> 23108 23109 </tr> 23110 <tr class="entries_header"> 23111 <th class="th_details" colspan="6">Details</th> 23112 </tr> 23113 <tr class="entry_cont"> 23114 <td class="entry_details" colspan="6"> 23115 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p> 23116 </td> 23117 </tr> 23118 23119 <tr class="entries_header"> 23120 <th class="th_details" colspan="6">HAL Implementation Details</th> 23121 </tr> 23122 <tr class="entry_cont"> 23123 <td class="entry_details" colspan="6"> 23124 <p>All custom modes must be >= CUSTOM1.<wbr/></p> 23125 </td> 23126 </tr> 23127 23128 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23129 <!-- end of entry --> 23130 23131 23132 <tr class="entry" id="static_android.sensor.opticalBlackRegions"> 23133 <td class="entry_name 23134 " rowspan="5"> 23135 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions 23136 </td> 23137 <td class="entry_type"> 23138 <span class="entry_type_name">int32</span> 23139 <span class="entry_type_container">x</span> 23140 23141 <span class="entry_type_array"> 23142 4 x num_regions 23143 </span> 23144 <span class="entry_type_visibility"> [public as rectangle]</span> 23145 23146 23147 23148 23149 23150 23151 </td> <!-- entry_type --> 23152 23153 <td class="entry_description"> 23154 <p>List of disjoint rectangles indicating the sensor 23155optically shielded black pixel regions.<wbr/></p> 23156 </td> 23157 23158 <td class="entry_units"> 23159 </td> 23160 23161 <td class="entry_range"> 23162 </td> 23163 23164 <td class="entry_hal_version"> 23165 <p>3.<wbr/>2</p> 23166 </td> 23167 23168 <td class="entry_tags"> 23169 </td> 23170 23171 </tr> 23172 <tr class="entries_header"> 23173 <th class="th_details" colspan="6">Details</th> 23174 </tr> 23175 <tr class="entry_cont"> 23176 <td class="entry_details" colspan="6"> 23177 <p>In most camera sensors,<wbr/> the active array is surrounded by some 23178optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels 23179provides a reliable black reference for black level compensation 23180in active array region.<wbr/></p> 23181<p>This key provides a list of disjoint rectangles specifying the 23182regions of optically shielded (with metal shield) black pixel 23183regions if the camera device is capable of reading out these black 23184pixels in the output raw images.<wbr/> In comparison to the fixed black 23185level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key 23186may provide a more accurate way for the application to calculate 23187black level of each captured raw images.<wbr/></p> 23188<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 23189<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p> 23190 </td> 23191 </tr> 23192 23193 <tr class="entries_header"> 23194 <th class="th_details" colspan="6">HAL Implementation Details</th> 23195 </tr> 23196 <tr class="entry_cont"> 23197 <td class="entry_details" colspan="6"> 23198 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin) 23199must be >= (0,<wbr/>0) and <= 23200<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 23201<= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be 23202outside the region reported by 23203<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> 23204<p>The HAL must report minimal number of disjoint regions for the 23205optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can 23206be covered by one rectangle,<wbr/> the HAL must not split this region into 23207multiple rectangles.<wbr/></p> 23208 </td> 23209 </tr> 23210 23211 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23212 <!-- end of entry --> 23213 23214 23215 <tr class="entry" id="static_android.sensor.opaqueRawSize"> 23216 <td class="entry_name 23217 " rowspan="5"> 23218 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size 23219 </td> 23220 <td class="entry_type"> 23221 <span class="entry_type_name">int32</span> 23222 <span class="entry_type_container">x</span> 23223 23224 <span class="entry_type_array"> 23225 n x 3 23226 </span> 23227 <span class="entry_type_visibility"> [system]</span> 23228 23229 23230 23231 23232 23233 23234 </td> <!-- entry_type --> 23235 23236 <td class="entry_description"> 23237 <p>Size in bytes for all the listed opaque RAW buffer sizes</p> 23238 </td> 23239 23240 <td class="entry_units"> 23241 </td> 23242 23243 <td class="entry_range"> 23244 <p>Must be large enough to fit the opaque RAW of corresponding size produced by 23245the camera</p> 23246 </td> 23247 23248 <td class="entry_hal_version"> 23249 <p>3.<wbr/>2</p> 23250 </td> 23251 23252 <td class="entry_tags"> 23253 </td> 23254 23255 </tr> 23256 <tr class="entries_header"> 23257 <th class="th_details" colspan="6">Details</th> 23258 </tr> 23259 <tr class="entry_cont"> 23260 <td class="entry_details" colspan="6"> 23261 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/> 23262This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/> 23263All RAW_<wbr/>OPAQUE output stream configuration listed in 23264<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in 23265this key.<wbr/></p> 23266 </td> 23267 </tr> 23268 23269 <tr class="entries_header"> 23270 <th class="th_details" colspan="6">HAL Implementation Details</th> 23271 </tr> 23272 <tr class="entry_cont"> 23273 <td class="entry_details" colspan="6"> 23274 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p> 23275<p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this 23276key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera 23277framework will derive this key by assuming each pixel takes two bytes and no padding bytes 23278between rows.<wbr/></p> 23279 </td> 23280 </tr> 23281 23282 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23283 <!-- end of entry --> 23284 23285 23286 23287 <!-- end of kind --> 23288 </tbody> 23289 <tr><td colspan="7" class="kind">dynamic</td></tr> 23290 23291 <thead class="entries_header"> 23292 <tr> 23293 <th class="th_name">Property Name</th> 23294 <th class="th_type">Type</th> 23295 <th class="th_description">Description</th> 23296 <th class="th_units">Units</th> 23297 <th class="th_range">Range</th> 23298 <th class="th_hal_version">Initial HIDL HAL version</th> 23299 <th class="th_tags">Tags</th> 23300 </tr> 23301 </thead> 23302 23303 <tbody> 23304 23305 23306 23307 23308 23309 23310 23311 23312 23313 23314 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 23315 <td class="entry_name 23316 " rowspan="3"> 23317 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 23318 </td> 23319 <td class="entry_type"> 23320 <span class="entry_type_name">int64</span> 23321 23322 <span class="entry_type_visibility"> [public]</span> 23323 23324 23325 <span class="entry_type_hwlevel">[full] </span> 23326 23327 23328 23329 23330 </td> <!-- entry_type --> 23331 23332 <td class="entry_description"> 23333 <p>Duration each pixel is exposed to 23334light.<wbr/></p> 23335 </td> 23336 23337 <td class="entry_units"> 23338 Nanoseconds 23339 </td> 23340 23341 <td class="entry_range"> 23342 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 23343 </td> 23344 23345 <td class="entry_hal_version"> 23346 <p>3.<wbr/>2</p> 23347 </td> 23348 23349 <td class="entry_tags"> 23350 <ul class="entry_tags"> 23351 <li><a href="#tag_V1">V1</a></li> 23352 </ul> 23353 </td> 23354 23355 </tr> 23356 <tr class="entries_header"> 23357 <th class="th_details" colspan="6">Details</th> 23358 </tr> 23359 <tr class="entry_cont"> 23360 <td class="entry_details" colspan="6"> 23361 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 23362duration exposed to the nearest possible value (rather than expose longer).<wbr/> 23363The final exposure time used will be available in the output capture result.<wbr/></p> 23364<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 23365OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 23366 </td> 23367 </tr> 23368 23369 23370 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23371 <!-- end of entry --> 23372 23373 23374 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 23375 <td class="entry_name 23376 " rowspan="5"> 23377 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 23378 </td> 23379 <td class="entry_type"> 23380 <span class="entry_type_name">int64</span> 23381 23382 <span class="entry_type_visibility"> [public]</span> 23383 23384 23385 <span class="entry_type_hwlevel">[full] </span> 23386 23387 23388 23389 23390 </td> <!-- entry_type --> 23391 23392 <td class="entry_description"> 23393 <p>Duration from start of frame exposure to 23394start of next frame exposure.<wbr/></p> 23395 </td> 23396 23397 <td class="entry_units"> 23398 Nanoseconds 23399 </td> 23400 23401 <td class="entry_range"> 23402 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>.<wbr/> 23403The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 23404 </td> 23405 23406 <td class="entry_hal_version"> 23407 <p>3.<wbr/>2</p> 23408 </td> 23409 23410 <td class="entry_tags"> 23411 <ul class="entry_tags"> 23412 <li><a href="#tag_V1">V1</a></li> 23413 </ul> 23414 </td> 23415 23416 </tr> 23417 <tr class="entries_header"> 23418 <th class="th_details" colspan="6">Details</th> 23419 </tr> 23420 <tr class="entry_cont"> 23421 <td class="entry_details" colspan="6"> 23422 <p>The maximum frame rate that can be supported by a camera subsystem is 23423a function of many factors:</p> 23424<ul> 23425<li>Requested resolutions of output image streams</li> 23426<li>Availability of binning /<wbr/> skipping modes on the imager</li> 23427<li>The bandwidth of the imager interface</li> 23428<li>The bandwidth of the various ISP processing blocks</li> 23429</ul> 23430<p>Since these factors can vary greatly between different ISPs and 23431sensors,<wbr/> the camera abstraction tries to represent the bandwidth 23432restrictions with as simple a model as possible.<wbr/></p> 23433<p>The model presented has the following characteristics:</p> 23434<ul> 23435<li>The image sensor is always configured to output the smallest 23436resolution possible given the application's requested output stream 23437sizes.<wbr/> The smallest resolution is defined as being at least as large 23438as the largest requested output stream size; the camera pipeline must 23439never digitally upsample sensor data when the crop region covers the 23440whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 23441resolutions are configured,<wbr/> the sensor can provide a higher frame 23442rate.<wbr/></li> 23443<li>Since any request may use any or all the currently configured 23444output streams,<wbr/> the sensor and ISP must be configured to support 23445scaling a single capture to all the streams at the same time.<wbr/> This 23446means the camera pipeline must be ready to produce the largest 23447requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 23448frame rate of a given configured stream set is governed only by the 23449largest requested stream resolution.<wbr/></li> 23450<li>Using more than one output stream in a request does not affect the 23451frame duration.<wbr/></li> 23452<li>Certain format-streams may need to do additional background processing 23453before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 23454can run concurrently to the rest of the camera pipeline,<wbr/> but 23455cannot process more than 1 capture at a time.<wbr/></li> 23456</ul> 23457<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via 23458<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 23459These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is 23460possible for a given stream configuration.<wbr/></p> 23461<p>Specifically,<wbr/> the application can use the following rules to 23462determine the minimum frame duration it can request from the camera 23463device:</p> 23464<ol> 23465<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li> 23466<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking it up in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 23467(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li> 23468<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum 23469out of all values in <code>F</code>.<wbr/> Let the streams used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 23470</ol> 23471<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> 23472using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady 23473state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let 23474this special kind of request be called <code>Rsimple</code>.<wbr/></p> 23475<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a 23476new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if 23477<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all 23478buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p> 23479<p>For more details about stalling,<wbr/> see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> 23480<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 23481OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 23482 </td> 23483 </tr> 23484 23485 <tr class="entries_header"> 23486 <th class="th_details" colspan="6">HAL Implementation Details</th> 23487 </tr> 23488 <tr class="entry_cont"> 23489 <td class="entry_details" colspan="6"> 23490 <p>For more details about stalling,<wbr/> see 23491<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 23492 </td> 23493 </tr> 23494 23495 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23496 <!-- end of entry --> 23497 23498 23499 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 23500 <td class="entry_name 23501 " rowspan="5"> 23502 android.<wbr/>sensor.<wbr/>sensitivity 23503 </td> 23504 <td class="entry_type"> 23505 <span class="entry_type_name">int32</span> 23506 23507 <span class="entry_type_visibility"> [public]</span> 23508 23509 23510 <span class="entry_type_hwlevel">[full] </span> 23511 23512 23513 23514 23515 </td> <!-- entry_type --> 23516 23517 <td class="entry_description"> 23518 <p>The amount of gain applied to sensor data 23519before processing.<wbr/></p> 23520 </td> 23521 23522 <td class="entry_units"> 23523 ISO arithmetic units 23524 </td> 23525 23526 <td class="entry_range"> 23527 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 23528 </td> 23529 23530 <td class="entry_hal_version"> 23531 <p>3.<wbr/>2</p> 23532 </td> 23533 23534 <td class="entry_tags"> 23535 <ul class="entry_tags"> 23536 <li><a href="#tag_V1">V1</a></li> 23537 </ul> 23538 </td> 23539 23540 </tr> 23541 <tr class="entries_header"> 23542 <th class="th_details" colspan="6">Details</th> 23543 </tr> 23544 <tr class="entry_cont"> 23545 <td class="entry_details" colspan="6"> 23546 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 23547as defined in ISO 12232:2006.<wbr/></p> 23548<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 23549if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 23550is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 23551<p>If the camera device cannot apply the exact sensitivity 23552requested,<wbr/> it will reduce the gain to the nearest supported 23553value.<wbr/> The final sensitivity used will be available in the 23554output capture result.<wbr/></p> 23555<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 23556OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 23557 </td> 23558 </tr> 23559 23560 <tr class="entries_header"> 23561 <th class="th_details" colspan="6">HAL Implementation Details</th> 23562 </tr> 23563 <tr class="entry_cont"> 23564 <td class="entry_details" colspan="6"> 23565 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 23566 </td> 23567 </tr> 23568 23569 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23570 <!-- end of entry --> 23571 23572 23573 <tr class="entry" id="dynamic_android.sensor.timestamp"> 23574 <td class="entry_name 23575 " rowspan="5"> 23576 android.<wbr/>sensor.<wbr/>timestamp 23577 </td> 23578 <td class="entry_type"> 23579 <span class="entry_type_name">int64</span> 23580 23581 <span class="entry_type_visibility"> [public]</span> 23582 23583 23584 <span class="entry_type_hwlevel">[legacy] </span> 23585 23586 23587 23588 23589 </td> <!-- entry_type --> 23590 23591 <td class="entry_description"> 23592 <p>Time at start of exposure of first 23593row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p> 23594 </td> 23595 23596 <td class="entry_units"> 23597 Nanoseconds 23598 </td> 23599 23600 <td class="entry_range"> 23601 <p>> 0</p> 23602 </td> 23603 23604 <td class="entry_hal_version"> 23605 <p>3.<wbr/>2</p> 23606 </td> 23607 23608 <td class="entry_tags"> 23609 <ul class="entry_tags"> 23610 <li><a href="#tag_BC">BC</a></li> 23611 </ul> 23612 </td> 23613 23614 </tr> 23615 <tr class="entries_header"> 23616 <th class="th_details" colspan="6">Details</th> 23617 </tr> 23618 <tr class="entry_cont"> 23619 <td class="entry_details" colspan="6"> 23620 <p>The timestamps are also included in all image 23621buffers produced for the same capture,<wbr/> and will be identical 23622on all the outputs.<wbr/></p> 23623<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/> 23624the timestamps measure time since an unspecified starting point,<wbr/> 23625and are monotonically increasing.<wbr/> They can be compared with the 23626timestamps for other captures from the same camera device,<wbr/> but are 23627not guaranteed to be comparable to any other time source.<wbr/></p> 23628<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the 23629timestamps 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 23630be compared to other timestamps from other subsystems that 23631are using that base.<wbr/></p> 23632<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of 23633the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the 23634timestamp</a> in the TotalCaptureResult that was used to create the 23635reprocess capture request.<wbr/></p> 23636 </td> 23637 </tr> 23638 23639 <tr class="entries_header"> 23640 <th class="th_details" colspan="6">HAL Implementation Details</th> 23641 </tr> 23642 <tr class="entry_cont"> 23643 <td class="entry_details" colspan="6"> 23644 <p>All timestamps must be in reference to the kernel's 23645CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for 23646time spent asleep.<wbr/> This allows for synchronization with 23647sensors that continue to operate while the system is 23648otherwise asleep.<wbr/></p> 23649<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 23650The timestamp must be synchronized with the timestamps from other 23651sensor subsystems that are using the same timebase.<wbr/></p> 23652<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up 23653with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the 23654capture request.<wbr/></p> 23655 </td> 23656 </tr> 23657 23658 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23659 <!-- end of entry --> 23660 23661 23662 <tr class="entry" id="dynamic_android.sensor.temperature"> 23663 <td class="entry_name 23664 " rowspan="1"> 23665 android.<wbr/>sensor.<wbr/>temperature 23666 </td> 23667 <td class="entry_type"> 23668 <span class="entry_type_name">float</span> 23669 23670 <span class="entry_type_visibility"> [system]</span> 23671 23672 23673 23674 23675 23676 23677 </td> <!-- entry_type --> 23678 23679 <td class="entry_description"> 23680 <p>The temperature of the sensor,<wbr/> sampled at the time 23681exposure began for this frame.<wbr/></p> 23682<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 23683somewhere close to it.<wbr/></p> 23684 </td> 23685 23686 <td class="entry_units"> 23687 Celsius 23688 </td> 23689 23690 <td class="entry_range"> 23691 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 23692 </td> 23693 23694 <td class="entry_hal_version"> 23695 <p>3.<wbr/>2</p> 23696 </td> 23697 23698 <td class="entry_tags"> 23699 <ul class="entry_tags"> 23700 <li><a href="#tag_FUTURE">FUTURE</a></li> 23701 </ul> 23702 </td> 23703 23704 </tr> 23705 23706 23707 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23708 <!-- end of entry --> 23709 23710 23711 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 23712 <td class="entry_name 23713 " rowspan="3"> 23714 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 23715 </td> 23716 <td class="entry_type"> 23717 <span class="entry_type_name">rational</span> 23718 <span class="entry_type_container">x</span> 23719 23720 <span class="entry_type_array"> 23721 3 23722 </span> 23723 <span class="entry_type_visibility"> [public]</span> 23724 23725 23726 23727 23728 23729 23730 </td> <!-- entry_type --> 23731 23732 <td class="entry_description"> 23733 <p>The estimated camera neutral color in the native sensor colorspace at 23734the time of capture.<wbr/></p> 23735 </td> 23736 23737 <td class="entry_units"> 23738 </td> 23739 23740 <td class="entry_range"> 23741 </td> 23742 23743 <td class="entry_hal_version"> 23744 <p>3.<wbr/>2</p> 23745 </td> 23746 23747 <td class="entry_tags"> 23748 <ul class="entry_tags"> 23749 <li><a href="#tag_RAW">RAW</a></li> 23750 </ul> 23751 </td> 23752 23753 </tr> 23754 <tr class="entries_header"> 23755 <th class="th_details" colspan="6">Details</th> 23756 </tr> 23757 <tr class="entry_cont"> 23758 <td class="entry_details" colspan="6"> 23759 <p>This value gives the neutral color point encoded as an RGB value in the 23760native sensor color space.<wbr/> The neutral color point indicates the 23761currently estimated white point of the scene illumination.<wbr/> It can be 23762used to interpolate between the provided color transforms when 23763processing raw sensor data.<wbr/></p> 23764<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 23765<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 23766the camera device has RAW capability.<wbr/></p> 23767 </td> 23768 </tr> 23769 23770 23771 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23772 <!-- end of entry --> 23773 23774 23775 <tr class="entry" id="dynamic_android.sensor.noiseProfile"> 23776 <td class="entry_name 23777 " rowspan="5"> 23778 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile 23779 </td> 23780 <td class="entry_type"> 23781 <span class="entry_type_name">double</span> 23782 <span class="entry_type_container">x</span> 23783 23784 <span class="entry_type_array"> 23785 2 x CFA Channels 23786 </span> 23787 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span> 23788 23789 23790 23791 23792 <div class="entry_type_notes">Pairs of noise model coefficients</div> 23793 23794 23795 </td> <!-- entry_type --> 23796 23797 <td class="entry_description"> 23798 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p> 23799 </td> 23800 23801 <td class="entry_units"> 23802 </td> 23803 23804 <td class="entry_range"> 23805 </td> 23806 23807 <td class="entry_hal_version"> 23808 <p>3.<wbr/>2</p> 23809 </td> 23810 23811 <td class="entry_tags"> 23812 <ul class="entry_tags"> 23813 <li><a href="#tag_RAW">RAW</a></li> 23814 </ul> 23815 </td> 23816 23817 </tr> 23818 <tr class="entries_header"> 23819 <th class="th_details" colspan="6">Details</th> 23820 </tr> 23821 <tr class="entry_cont"> 23822 <td class="entry_details" colspan="6"> 23823 <p>This key contains two noise model coefficients for each CFA channel 23824corresponding to the sensor amplification (S) and sensor readout 23825noise (O).<wbr/> These are given as pairs of coefficients for each channel 23826in the same order as channels listed for the CFA layout key 23827(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is 23828represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where 23829the first member of the Pair at index n is the S coefficient and the 23830second member is the O coefficient for the nth color channel in the CFA.<wbr/></p> 23831<p>These coefficients are used in a two parameter noise model to describe 23832the amount of noise present in the image for each CFA channel.<wbr/> The 23833noise model used here is:</p> 23834<p>N(x) = sqrt(Sx + O)</p> 23835<p>Where x represents the recorded signal of a CFA channel normalized to 23836the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for 23837that channel.<wbr/></p> 23838<p>A more detailed description of the noise model can be found in the 23839Adobe DNG specification for the NoiseProfile tag.<wbr/></p> 23840<p>For a MONOCHROME camera,<wbr/> there is only one color channel.<wbr/> So the noise model coefficients 23841will only contain one S and one O.<wbr/></p> 23842 </td> 23843 </tr> 23844 23845 <tr class="entries_header"> 23846 <th class="th_details" colspan="6">HAL Implementation Details</th> 23847 </tr> 23848 <tr class="entry_cont"> 23849 <td class="entry_details" colspan="6"> 23850 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as 23851an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients 23852for the red channel,<wbr/> S1 and O1 are the coefficients for the first green 23853channel,<wbr/> etc.<wbr/></p> 23854 </td> 23855 </tr> 23856 23857 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23858 <!-- end of entry --> 23859 23860 23861 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 23862 <td class="entry_name 23863 " rowspan="3"> 23864 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 23865 </td> 23866 <td class="entry_type"> 23867 <span class="entry_type_name">float</span> 23868 <span class="entry_type_container">x</span> 23869 23870 <span class="entry_type_array"> 23871 hue_samples x saturation_samples x value_samples x 3 23872 </span> 23873 <span class="entry_type_visibility"> [system]</span> 23874 23875 23876 23877 23878 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 23879 23880 23881 </td> <!-- entry_type --> 23882 23883 <td class="entry_description"> 23884 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 23885for each pixel.<wbr/></p> 23886 </td> 23887 23888 <td class="entry_units"> 23889 23890 The hue shift is given in degrees; saturation and value scale factors are 23891 unitless and are between 0 and 1 inclusive 23892 23893 </td> 23894 23895 <td class="entry_range"> 23896 </td> 23897 23898 <td class="entry_hal_version"> 23899 <p>3.<wbr/>2</p> 23900 </td> 23901 23902 <td class="entry_tags"> 23903 <ul class="entry_tags"> 23904 <li><a href="#tag_RAW">RAW</a></li> 23905 </ul> 23906 </td> 23907 23908 </tr> 23909 <tr class="entries_header"> 23910 <th class="th_details" colspan="6">Details</th> 23911 </tr> 23912 <tr class="entry_cont"> 23913 <td class="entry_details" colspan="6"> 23914 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 23915<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 23916<p>Each entry of this map contains three floats corresponding to the 23917hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 23918hue shift has the lowest index.<wbr/> The map entries are stored in the key 23919in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 23920hue divisions in the middle loop,<wbr/> and the saturation divisions in the 23921inner loop.<wbr/> All zero input saturation entries are required to have a 23922value scale factor of 1.<wbr/>0.<wbr/></p> 23923 </td> 23924 </tr> 23925 23926 23927 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23928 <!-- end of entry --> 23929 23930 23931 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 23932 <td class="entry_name 23933 " rowspan="3"> 23934 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 23935 </td> 23936 <td class="entry_type"> 23937 <span class="entry_type_name">float</span> 23938 <span class="entry_type_container">x</span> 23939 23940 <span class="entry_type_array"> 23941 samples x 2 23942 </span> 23943 <span class="entry_type_visibility"> [system]</span> 23944 23945 23946 23947 23948 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 23949 23950 23951 </td> <!-- entry_type --> 23952 23953 <td class="entry_description"> 23954 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 23955 </td> 23956 23957 <td class="entry_units"> 23958 </td> 23959 23960 <td class="entry_range"> 23961 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 23962<code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 23963sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 23964 </td> 23965 23966 <td class="entry_hal_version"> 23967 <p>3.<wbr/>2</p> 23968 </td> 23969 23970 <td class="entry_tags"> 23971 <ul class="entry_tags"> 23972 <li><a href="#tag_RAW">RAW</a></li> 23973 </ul> 23974 </td> 23975 23976 </tr> 23977 <tr class="entries_header"> 23978 <th class="th_details" colspan="6">Details</th> 23979 </tr> 23980 <tr class="entry_cont"> 23981 <td class="entry_details" colspan="6"> 23982 <p>This key contains a default tone curve that can be applied while 23983processing the image as a starting point for user adjustments.<wbr/> 23984The curve is specified as a list of value pairs in linear gamma.<wbr/> 23985The curve is interpolated using a cubic spline.<wbr/></p> 23986 </td> 23987 </tr> 23988 23989 23990 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23991 <!-- end of entry --> 23992 23993 23994 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 23995 <td class="entry_name 23996 " rowspan="5"> 23997 android.<wbr/>sensor.<wbr/>green<wbr/>Split 23998 </td> 23999 <td class="entry_type"> 24000 <span class="entry_type_name">float</span> 24001 24002 <span class="entry_type_visibility"> [public]</span> 24003 24004 24005 24006 24007 24008 24009 </td> <!-- entry_type --> 24010 24011 <td class="entry_description"> 24012 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 24013 </td> 24014 24015 <td class="entry_units"> 24016 </td> 24017 24018 <td class="entry_range"> 24019 <p>>= 0</p> 24020 </td> 24021 24022 <td class="entry_hal_version"> 24023 <p>3.<wbr/>2</p> 24024 </td> 24025 24026 <td class="entry_tags"> 24027 <ul class="entry_tags"> 24028 <li><a href="#tag_RAW">RAW</a></li> 24029 </ul> 24030 </td> 24031 24032 </tr> 24033 <tr class="entries_header"> 24034 <th class="th_details" colspan="6">Details</th> 24035 </tr> 24036 <tr class="entry_cont"> 24037 <td class="entry_details" colspan="6"> 24038 <p>This value is an estimate of the worst case split between the 24039Bayer green channels in the red and blue rows in the sensor color 24040filter array.<wbr/></p> 24041<p>The green split is calculated as follows:</p> 24042<ol> 24043<li>A 5x5 pixel (or larger) window W within the active sensor array is 24044chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 24045mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 24046chosen is implementation defined,<wbr/> and should be chosen to provide a 24047green split estimate that is both representative of the entire image 24048for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 24049<li>The arithmetic mean of the green channels from the red 24050rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 24051<li>The arithmetic mean of the green channels from the blue 24052rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 24053<li>The maximum ratio R of the two means is computed as follows: 24054<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 24055</ol> 24056<p>The ratio R is the green split divergence reported for this property,<wbr/> 24057which represents how much the green channels differ in the mosaic 24058pattern.<wbr/> This value is typically used to determine the treatment of 24059the green mosaic channels when demosaicing.<wbr/></p> 24060<p>The green split value can be roughly interpreted as follows:</p> 24061<ul> 24062<li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 24063<li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 24064correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 24065<li>R > 1.<wbr/>20 will require strong software correction to produce 24066a usuable image (>20% divergence).<wbr/></li> 24067</ul> 24068<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 24069the camera device has RAW capability.<wbr/></p> 24070 </td> 24071 </tr> 24072 24073 <tr class="entries_header"> 24074 <th class="th_details" colspan="6">HAL Implementation Details</th> 24075 </tr> 24076 <tr class="entry_cont"> 24077 <td class="entry_details" colspan="6"> 24078 <p>The green split given may be a static value based on prior 24079characterization of the camera sensor using the green split 24080calculation method given here over a large,<wbr/> representative,<wbr/> sample 24081set of images.<wbr/> Other methods of calculation that produce equivalent 24082results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 24083 </td> 24084 </tr> 24085 24086 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24087 <!-- end of entry --> 24088 24089 24090 <tr class="entry" id="dynamic_android.sensor.testPatternData"> 24091 <td class="entry_name 24092 " rowspan="5"> 24093 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 24094 </td> 24095 <td class="entry_type"> 24096 <span class="entry_type_name">int32</span> 24097 <span class="entry_type_container">x</span> 24098 24099 <span class="entry_type_array"> 24100 4 24101 </span> 24102 <span class="entry_type_visibility"> [public]</span> 24103 24104 24105 24106 24107 24108 24109 </td> <!-- entry_type --> 24110 24111 <td class="entry_description"> 24112 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 24113when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 24114 </td> 24115 24116 <td class="entry_units"> 24117 </td> 24118 24119 <td class="entry_range"> 24120 </td> 24121 24122 <td class="entry_hal_version"> 24123 <p>3.<wbr/>2</p> 24124 </td> 24125 24126 <td class="entry_tags"> 24127 </td> 24128 24129 </tr> 24130 <tr class="entries_header"> 24131 <th class="th_details" colspan="6">Details</th> 24132 </tr> 24133 <tr class="entry_cont"> 24134 <td class="entry_details" colspan="6"> 24135 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 24136The camera device then uses the most significant X bits 24137that correspond to how many bits are in its Bayer raw sensor 24138output.<wbr/></p> 24139<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 2414010 most significant bits from each color channel.<wbr/></p> 24141 </td> 24142 </tr> 24143 24144 <tr class="entries_header"> 24145 <th class="th_details" colspan="6">HAL Implementation Details</th> 24146 </tr> 24147 <tr class="entry_cont"> 24148 <td class="entry_details" colspan="6"> 24149 24150 </td> 24151 </tr> 24152 24153 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24154 <!-- end of entry --> 24155 24156 24157 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 24158 <td class="entry_name 24159 " rowspan="5"> 24160 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 24161 </td> 24162 <td class="entry_type"> 24163 <span class="entry_type_name entry_type_name_enum">int32</span> 24164 24165 <span class="entry_type_visibility"> [public]</span> 24166 24167 24168 24169 24170 24171 <ul class="entry_type_enum"> 24172 <li> 24173 <span class="entry_type_enum_name">OFF (v3.2)</span> 24174 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 24175device returns captures from the image sensor.<wbr/></p> 24176<p>This is the default if the key is not set.<wbr/></p></span> 24177 </li> 24178 <li> 24179 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span> 24180 <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 24181respective color channel provided in 24182<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 24183<p>For example:</p> 24184<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 24185</code></pre> 24186<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 24187<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 24188</code></pre> 24189<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 24190are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 24191 </li> 24192 <li> 24193 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span> 24194 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 24195<p>The vertical bars (left-to-right) are as follows:</p> 24196<ul> 24197<li>100% white</li> 24198<li>yellow</li> 24199<li>cyan</li> 24200<li>green</li> 24201<li>magenta</li> 24202<li>red</li> 24203<li>blue</li> 24204<li>black</li> 24205</ul> 24206<p>In general the image would look like the following:</p> 24207<pre><code>W Y C G M R B K 24208W Y C G M R B K 24209W Y C G M R B K 24210W Y C G M R B K 24211W Y C G M R B K 24212.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 24213.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 24214.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 24215 24216(B = Blue,<wbr/> K = Black) 24217</code></pre> 24218<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 24219When this is not possible,<wbr/> the bar size should be rounded 24220down to the nearest integer and the pattern can repeat 24221on the right side.<wbr/></p> 24222<p>Each bar's height must always take up the full sensor 24223pixel array height.<wbr/></p> 24224<p>Each pixel in this test pattern must be set to either 242250% intensity or 100% intensity.<wbr/></p></span> 24226 </li> 24227 <li> 24228 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span> 24229 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 24230each bar should start at its specified color at the top,<wbr/> 24231and fade to gray at the bottom.<wbr/></p> 24232<p>Furthermore each bar is further subdivided into a left and 24233right half.<wbr/> The left half should have a smooth gradient,<wbr/> 24234and the right half should have a quantized gradient.<wbr/></p> 24235<p>In particular,<wbr/> the right half's should consist of blocks of the 24236same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 24237<p>The least significant bits in the quantized gradient should 24238be copied from the most significant bits of the smooth gradient.<wbr/></p> 24239<p>The height of each bar should always be a multiple of 128.<wbr/> 24240When this is not the case,<wbr/> the pattern should repeat at the bottom 24241of the image.<wbr/></p></span> 24242 </li> 24243 <li> 24244 <span class="entry_type_enum_name">PN9 (v3.2)</span> 24245 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 24246generated from a PN9 512-bit sequence (typically implemented 24247in hardware with a linear feedback shift register).<wbr/></p> 24248<p>The generator should be reset at the beginning of each frame,<wbr/> 24249and thus each subsequent raw frame with this test pattern should 24250be exactly the same as the last.<wbr/></p></span> 24251 </li> 24252 <li> 24253 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span> 24254 <span class="entry_type_enum_value">256</span> 24255 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 24256available only on this camera device are at least this numeric 24257value.<wbr/></p> 24258<p>All of the custom test patterns will be static 24259(that is the raw image must not vary from frame to frame).<wbr/></p></span> 24260 </li> 24261 </ul> 24262 24263 </td> <!-- entry_type --> 24264 24265 <td class="entry_description"> 24266 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 24267doing a real exposure from the camera.<wbr/></p> 24268 </td> 24269 24270 <td class="entry_units"> 24271 </td> 24272 24273 <td class="entry_range"> 24274 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 24275 </td> 24276 24277 <td class="entry_hal_version"> 24278 <p>3.<wbr/>2</p> 24279 </td> 24280 24281 <td class="entry_tags"> 24282 </td> 24283 24284 </tr> 24285 <tr class="entries_header"> 24286 <th class="th_details" colspan="6">Details</th> 24287 </tr> 24288 <tr class="entry_cont"> 24289 <td class="entry_details" colspan="6"> 24290 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 24291by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 24292work as normal.<wbr/></p> 24293<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 24294occur (and that the test pattern remain unmodified,<wbr/> since the flash 24295would not actually affect it).<wbr/></p> 24296<p>Defaults to OFF.<wbr/></p> 24297 </td> 24298 </tr> 24299 24300 <tr class="entries_header"> 24301 <th class="th_details" colspan="6">HAL Implementation Details</th> 24302 </tr> 24303 <tr class="entry_cont"> 24304 <td class="entry_details" colspan="6"> 24305 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 24306<p>The HAL may choose to substitute test patterns from the sensor 24307with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 24308indistinguishable to the ISP whether the data came from the 24309sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 24310 </td> 24311 </tr> 24312 24313 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24314 <!-- end of entry --> 24315 24316 24317 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew"> 24318 <td class="entry_name 24319 " rowspan="5"> 24320 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew 24321 </td> 24322 <td class="entry_type"> 24323 <span class="entry_type_name">int64</span> 24324 24325 <span class="entry_type_visibility"> [public]</span> 24326 24327 24328 <span class="entry_type_hwlevel">[limited] </span> 24329 24330 24331 24332 24333 </td> <!-- entry_type --> 24334 24335 <td class="entry_description"> 24336 <p>Duration between the start of first row exposure 24337and the start of last row exposure.<wbr/></p> 24338 </td> 24339 24340 <td class="entry_units"> 24341 Nanoseconds 24342 </td> 24343 24344 <td class="entry_range"> 24345 <p>>= 0 and < 24346<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p> 24347 </td> 24348 24349 <td class="entry_hal_version"> 24350 <p>3.<wbr/>2</p> 24351 </td> 24352 24353 <td class="entry_tags"> 24354 <ul class="entry_tags"> 24355 <li><a href="#tag_V1">V1</a></li> 24356 </ul> 24357 </td> 24358 24359 </tr> 24360 <tr class="entries_header"> 24361 <th class="th_details" colspan="6">Details</th> 24362 </tr> 24363 <tr class="entry_cont"> 24364 <td class="entry_details" colspan="6"> 24365 <p>This is the exposure time skew between the first and last 24366row exposure start times.<wbr/> The first row and the last row are 24367the first and last rows inside of the 24368<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 24369<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent 24370to the frame readout time.<wbr/></p> 24371 </td> 24372 </tr> 24373 24374 <tr class="entries_header"> 24375 <th class="th_details" colspan="6">HAL Implementation Details</th> 24376 </tr> 24377 <tr class="entry_cont"> 24378 <td class="entry_details" colspan="6"> 24379 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin 24380exposure at the same time.<wbr/></p> 24381 </td> 24382 </tr> 24383 24384 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24385 <!-- end of entry --> 24386 24387 24388 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel"> 24389 <td class="entry_name 24390 " rowspan="5"> 24391 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level 24392 </td> 24393 <td class="entry_type"> 24394 <span class="entry_type_name">float</span> 24395 <span class="entry_type_container">x</span> 24396 24397 <span class="entry_type_array"> 24398 4 24399 </span> 24400 <span class="entry_type_visibility"> [public]</span> 24401 24402 24403 24404 24405 <div class="entry_type_notes">2x2 raw count block</div> 24406 24407 24408 </td> <!-- entry_type --> 24409 24410 <td class="entry_description"> 24411 <p>A per-frame dynamic black level offset for each of the color filter 24412arrangement (CFA) mosaic channels.<wbr/></p> 24413 </td> 24414 24415 <td class="entry_units"> 24416 </td> 24417 24418 <td class="entry_range"> 24419 <p>>= 0 for each.<wbr/></p> 24420 </td> 24421 24422 <td class="entry_hal_version"> 24423 <p>3.<wbr/>2</p> 24424 </td> 24425 24426 <td class="entry_tags"> 24427 <ul class="entry_tags"> 24428 <li><a href="#tag_RAW">RAW</a></li> 24429 </ul> 24430 </td> 24431 24432 </tr> 24433 <tr class="entries_header"> 24434 <th class="th_details" colspan="6">Details</th> 24435 </tr> 24436 <tr class="entry_cont"> 24437 <td class="entry_details" colspan="6"> 24438 <p>Camera sensor black levels may vary dramatically for different 24439capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black 24440level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too 24441inaccurate to represent the actual value on a per-frame basis.<wbr/> The 24442camera device internal pipeline relies on reliable black level values 24443to process the raw images appropriately.<wbr/> To get the best image 24444quality,<wbr/> the camera device may choose to estimate the per frame black 24445level values either based on optically shielded black regions 24446(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p> 24447<p>This key reports the camera device estimated per-frame zero light 24448value for each of the CFA mosaic channels in the camera sensor.<wbr/> The 24449<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse 24450approximation of the actual black level values.<wbr/> This value is the 24451black level used in camera device internal image processing pipeline 24452and generally more accurate than the fixed black level values.<wbr/> 24453However,<wbr/> since they are estimated values by the camera device,<wbr/> they 24454may not be as accurate as the black level values calculated from the 24455optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p> 24456<p>The values are given in the same order as channels listed for the CFA 24457layout 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 24458nth value given corresponds to the black level offset for the nth 24459color channel listed in the CFA.<wbr/></p> 24460<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p> 24461<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is available or the 24462camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p> 24463 </td> 24464 </tr> 24465 24466 <tr class="entries_header"> 24467 <th class="th_details" colspan="6">HAL Implementation Details</th> 24468 </tr> 24469 <tr class="entry_cont"> 24470 <td class="entry_details" colspan="6"> 24471 <p>The values are given in row-column scan order,<wbr/> with the first value 24472corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 24473 </td> 24474 </tr> 24475 24476 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24477 <!-- end of entry --> 24478 24479 24480 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel"> 24481 <td class="entry_name 24482 " rowspan="5"> 24483 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level 24484 </td> 24485 <td class="entry_type"> 24486 <span class="entry_type_name">int32</span> 24487 24488 <span class="entry_type_visibility"> [public]</span> 24489 24490 24491 24492 24493 24494 24495 </td> <!-- entry_type --> 24496 24497 <td class="entry_description"> 24498 <p>Maximum raw value output by sensor for this frame.<wbr/></p> 24499 </td> 24500 24501 <td class="entry_units"> 24502 </td> 24503 24504 <td class="entry_range"> 24505 <p>>= 0</p> 24506 </td> 24507 24508 <td class="entry_hal_version"> 24509 <p>3.<wbr/>2</p> 24510 </td> 24511 24512 <td class="entry_tags"> 24513 <ul class="entry_tags"> 24514 <li><a href="#tag_RAW">RAW</a></li> 24515 </ul> 24516 </td> 24517 24518 </tr> 24519 <tr class="entries_header"> 24520 <th class="th_details" colspan="6">Details</th> 24521 </tr> 24522 <tr class="entry_cont"> 24523 <td class="entry_details" colspan="6"> 24524 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different 24525capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white 24526level will change accordingly.<wbr/> This key is similar to 24527<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device 24528estimated white level for each frame.<wbr/></p> 24529<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is 24530available or the camera device advertises this key via 24531<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 24532 </td> 24533 </tr> 24534 24535 <tr class="entries_header"> 24536 <th class="th_details" colspan="6">HAL Implementation Details</th> 24537 </tr> 24538 <tr class="entry_cont"> 24539 <td class="entry_details" colspan="6"> 24540 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 24541so the value for linear sensors should not be significantly lower 24542than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 24543 </td> 24544 </tr> 24545 24546 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24547 <!-- end of entry --> 24548 24549 24550 24551 <!-- end of kind --> 24552 </tbody> 24553 24554 <!-- end of section --> 24555 <tr><td colspan="7" id="section_shading" class="section">shading</td></tr> 24556 24557 24558 <tr><td colspan="7" class="kind">controls</td></tr> 24559 24560 <thead class="entries_header"> 24561 <tr> 24562 <th class="th_name">Property Name</th> 24563 <th class="th_type">Type</th> 24564 <th class="th_description">Description</th> 24565 <th class="th_units">Units</th> 24566 <th class="th_range">Range</th> 24567 <th class="th_hal_version">Initial HIDL HAL version</th> 24568 <th class="th_tags">Tags</th> 24569 </tr> 24570 </thead> 24571 24572 <tbody> 24573 24574 24575 24576 24577 24578 24579 24580 24581 24582 24583 <tr class="entry" id="controls_android.shading.mode"> 24584 <td class="entry_name 24585 " rowspan="3"> 24586 android.<wbr/>shading.<wbr/>mode 24587 </td> 24588 <td class="entry_type"> 24589 <span class="entry_type_name entry_type_name_enum">byte</span> 24590 24591 <span class="entry_type_visibility"> [public]</span> 24592 24593 24594 <span class="entry_type_hwlevel">[full] </span> 24595 24596 24597 24598 <ul class="entry_type_enum"> 24599 <li> 24600 <span class="entry_type_enum_name">OFF (v3.2)</span> 24601 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 24602 </li> 24603 <li> 24604 <span class="entry_type_enum_name">FAST (v3.2)</span> 24605 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 24606frame rate relative to sensor raw output</p></span> 24607 </li> 24608 <li> 24609 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 24610 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 24611cost of possibly reduced frame rate.<wbr/></p></span> 24612 </li> 24613 </ul> 24614 24615 </td> <!-- entry_type --> 24616 24617 <td class="entry_description"> 24618 <p>Quality of lens shading correction applied 24619to the image data.<wbr/></p> 24620 </td> 24621 24622 <td class="entry_units"> 24623 </td> 24624 24625 <td class="entry_range"> 24626 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 24627 </td> 24628 24629 <td class="entry_hal_version"> 24630 <p>3.<wbr/>2</p> 24631 </td> 24632 24633 <td class="entry_tags"> 24634 </td> 24635 24636 </tr> 24637 <tr class="entries_header"> 24638 <th class="th_details" colspan="6">Details</th> 24639 </tr> 24640 <tr class="entry_cont"> 24641 <td class="entry_details" colspan="6"> 24642 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 24643camera device,<wbr/> and an identity lens shading map data will be provided 24644if <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 24645shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 24646the 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 24647map shown below:</p> 24648<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/> 24649 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/> 24650 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/> 24651 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/> 24652 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/> 24653 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 ] 24654</code></pre> 24655<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 24656device.<wbr/> Applications can request lens shading map data by setting 24657<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 24658shading 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 24659data will be the one applied by the camera device for this capture request.<wbr/></p> 24660<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 24661the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 24662AWB 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> 24663OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 24664to be converged before using the returned shading map data.<wbr/></p> 24665 </td> 24666 </tr> 24667 24668 24669 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24670 <!-- end of entry --> 24671 24672 24673 <tr class="entry" id="controls_android.shading.strength"> 24674 <td class="entry_name 24675 " rowspan="1"> 24676 android.<wbr/>shading.<wbr/>strength 24677 </td> 24678 <td class="entry_type"> 24679 <span class="entry_type_name">byte</span> 24680 24681 <span class="entry_type_visibility"> [system]</span> 24682 24683 24684 24685 24686 24687 24688 </td> <!-- entry_type --> 24689 24690 <td class="entry_description"> 24691 <p>Control the amount of shading correction 24692applied to the images</p> 24693 </td> 24694 24695 <td class="entry_units"> 24696 unitless: 1-10; 10 is full shading 24697 compensation 24698 </td> 24699 24700 <td class="entry_range"> 24701 </td> 24702 24703 <td class="entry_hal_version"> 24704 <p>3.<wbr/>2</p> 24705 </td> 24706 24707 <td class="entry_tags"> 24708 <ul class="entry_tags"> 24709 <li><a href="#tag_FUTURE">FUTURE</a></li> 24710 </ul> 24711 </td> 24712 24713 </tr> 24714 24715 24716 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24717 <!-- end of entry --> 24718 24719 24720 24721 <!-- end of kind --> 24722 </tbody> 24723 <tr><td colspan="7" class="kind">dynamic</td></tr> 24724 24725 <thead class="entries_header"> 24726 <tr> 24727 <th class="th_name">Property Name</th> 24728 <th class="th_type">Type</th> 24729 <th class="th_description">Description</th> 24730 <th class="th_units">Units</th> 24731 <th class="th_range">Range</th> 24732 <th class="th_hal_version">Initial HIDL HAL version</th> 24733 <th class="th_tags">Tags</th> 24734 </tr> 24735 </thead> 24736 24737 <tbody> 24738 24739 24740 24741 24742 24743 24744 24745 24746 24747 24748 <tr class="entry" id="dynamic_android.shading.mode"> 24749 <td class="entry_name 24750 " rowspan="3"> 24751 android.<wbr/>shading.<wbr/>mode 24752 </td> 24753 <td class="entry_type"> 24754 <span class="entry_type_name entry_type_name_enum">byte</span> 24755 24756 <span class="entry_type_visibility"> [public]</span> 24757 24758 24759 <span class="entry_type_hwlevel">[full] </span> 24760 24761 24762 24763 <ul class="entry_type_enum"> 24764 <li> 24765 <span class="entry_type_enum_name">OFF (v3.2)</span> 24766 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 24767 </li> 24768 <li> 24769 <span class="entry_type_enum_name">FAST (v3.2)</span> 24770 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 24771frame rate relative to sensor raw output</p></span> 24772 </li> 24773 <li> 24774 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 24775 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 24776cost of possibly reduced frame rate.<wbr/></p></span> 24777 </li> 24778 </ul> 24779 24780 </td> <!-- entry_type --> 24781 24782 <td class="entry_description"> 24783 <p>Quality of lens shading correction applied 24784to the image data.<wbr/></p> 24785 </td> 24786 24787 <td class="entry_units"> 24788 </td> 24789 24790 <td class="entry_range"> 24791 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 24792 </td> 24793 24794 <td class="entry_hal_version"> 24795 <p>3.<wbr/>2</p> 24796 </td> 24797 24798 <td class="entry_tags"> 24799 </td> 24800 24801 </tr> 24802 <tr class="entries_header"> 24803 <th class="th_details" colspan="6">Details</th> 24804 </tr> 24805 <tr class="entry_cont"> 24806 <td class="entry_details" colspan="6"> 24807 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 24808camera device,<wbr/> and an identity lens shading map data will be provided 24809if <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 24810shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 24811the 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 24812map shown below:</p> 24813<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/> 24814 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/> 24815 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/> 24816 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/> 24817 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/> 24818 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 ] 24819</code></pre> 24820<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 24821device.<wbr/> Applications can request lens shading map data by setting 24822<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 24823shading 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 24824data will be the one applied by the camera device for this capture request.<wbr/></p> 24825<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 24826the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 24827AWB 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> 24828OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 24829to be converged before using the returned shading map data.<wbr/></p> 24830 </td> 24831 </tr> 24832 24833 24834 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24835 <!-- end of entry --> 24836 24837 24838 24839 <!-- end of kind --> 24840 </tbody> 24841 <tr><td colspan="7" class="kind">static</td></tr> 24842 24843 <thead class="entries_header"> 24844 <tr> 24845 <th class="th_name">Property Name</th> 24846 <th class="th_type">Type</th> 24847 <th class="th_description">Description</th> 24848 <th class="th_units">Units</th> 24849 <th class="th_range">Range</th> 24850 <th class="th_hal_version">Initial HIDL HAL version</th> 24851 <th class="th_tags">Tags</th> 24852 </tr> 24853 </thead> 24854 24855 <tbody> 24856 24857 24858 24859 24860 24861 24862 24863 24864 24865 24866 <tr class="entry" id="static_android.shading.availableModes"> 24867 <td class="entry_name 24868 " rowspan="5"> 24869 android.<wbr/>shading.<wbr/>available<wbr/>Modes 24870 </td> 24871 <td class="entry_type"> 24872 <span class="entry_type_name">byte</span> 24873 <span class="entry_type_container">x</span> 24874 24875 <span class="entry_type_array"> 24876 n 24877 </span> 24878 <span class="entry_type_visibility"> [public as enumList]</span> 24879 24880 24881 <span class="entry_type_hwlevel">[legacy] </span> 24882 24883 24884 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div> 24885 24886 24887 </td> <!-- entry_type --> 24888 24889 <td class="entry_description"> 24890 <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> 24891 </td> 24892 24893 <td class="entry_units"> 24894 </td> 24895 24896 <td class="entry_range"> 24897 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p> 24898 </td> 24899 24900 <td class="entry_hal_version"> 24901 <p>3.<wbr/>2</p> 24902 </td> 24903 24904 <td class="entry_tags"> 24905 </td> 24906 24907 </tr> 24908 <tr class="entries_header"> 24909 <th class="th_details" colspan="6">Details</th> 24910 </tr> 24911 <tr class="entry_cont"> 24912 <td class="entry_details" colspan="6"> 24913 <p>This list contains lens shading modes that can be set for the camera device.<wbr/> 24914Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always 24915list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/> 24916LEGACY devices will always only support FAST mode.<wbr/></p> 24917 </td> 24918 </tr> 24919 24920 <tr class="entries_header"> 24921 <th class="th_details" colspan="6">HAL Implementation Details</th> 24922 </tr> 24923 <tr class="entry_cont"> 24924 <td class="entry_details" colspan="6"> 24925 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is 24926available on the camera device,<wbr/> but the underlying implementation can be the same for 24927both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not 24928slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 24929 </td> 24930 </tr> 24931 24932 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24933 <!-- end of entry --> 24934 24935 24936 24937 <!-- end of kind --> 24938 </tbody> 24939 24940 <!-- end of section --> 24941 <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr> 24942 24943 24944 <tr><td colspan="7" class="kind">controls</td></tr> 24945 24946 <thead class="entries_header"> 24947 <tr> 24948 <th class="th_name">Property Name</th> 24949 <th class="th_type">Type</th> 24950 <th class="th_description">Description</th> 24951 <th class="th_units">Units</th> 24952 <th class="th_range">Range</th> 24953 <th class="th_hal_version">Initial HIDL HAL version</th> 24954 <th class="th_tags">Tags</th> 24955 </tr> 24956 </thead> 24957 24958 <tbody> 24959 24960 24961 24962 24963 24964 24965 24966 24967 24968 24969 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 24970 <td class="entry_name 24971 " rowspan="5"> 24972 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 24973 </td> 24974 <td class="entry_type"> 24975 <span class="entry_type_name entry_type_name_enum">byte</span> 24976 24977 <span class="entry_type_visibility"> [public]</span> 24978 24979 24980 <span class="entry_type_hwlevel">[legacy] </span> 24981 24982 24983 24984 <ul class="entry_type_enum"> 24985 <li> 24986 <span class="entry_type_enum_name">OFF (v3.2)</span> 24987 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 24988results.<wbr/></p></span> 24989 </li> 24990 <li> 24991 <span class="entry_type_enum_name">SIMPLE (v3.2)</span> 24992 <span class="entry_type_enum_optional">[optional]</span> 24993 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 24994 </li> 24995 <li> 24996 <span class="entry_type_enum_name">FULL (v3.2)</span> 24997 <span class="entry_type_enum_optional">[optional]</span> 24998 <span class="entry_type_enum_notes"><p>Return all face 24999metadata.<wbr/></p> 25000<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 25001 </li> 25002 </ul> 25003 25004 </td> <!-- entry_type --> 25005 25006 <td class="entry_description"> 25007 <p>Operating mode for the face detector 25008unit.<wbr/></p> 25009 </td> 25010 25011 <td class="entry_units"> 25012 </td> 25013 25014 <td class="entry_range"> 25015 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 25016 </td> 25017 25018 <td class="entry_hal_version"> 25019 <p>3.<wbr/>2</p> 25020 </td> 25021 25022 <td class="entry_tags"> 25023 <ul class="entry_tags"> 25024 <li><a href="#tag_BC">BC</a></li> 25025 </ul> 25026 </td> 25027 25028 </tr> 25029 <tr class="entries_header"> 25030 <th class="th_details" colspan="6">Details</th> 25031 </tr> 25032 <tr class="entry_cont"> 25033 <td class="entry_details" colspan="6"> 25034 <p>Whether face detection is enabled,<wbr/> and whether it 25035should output just the basic fields or the full set of 25036fields.<wbr/></p> 25037 </td> 25038 </tr> 25039 25040 <tr class="entries_header"> 25041 <th class="th_details" colspan="6">HAL Implementation Details</th> 25042 </tr> 25043 <tr class="entry_cont"> 25044 <td class="entry_details" colspan="6"> 25045 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 25046<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 25047FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 25048<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 25049 </td> 25050 </tr> 25051 25052 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25053 <!-- end of entry --> 25054 25055 25056 <tr class="entry" id="controls_android.statistics.histogramMode"> 25057 <td class="entry_name 25058 " rowspan="1"> 25059 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 25060 </td> 25061 <td class="entry_type"> 25062 <span class="entry_type_name entry_type_name_enum">byte</span> 25063 25064 <span class="entry_type_visibility"> [system as boolean]</span> 25065 25066 25067 25068 25069 25070 <ul class="entry_type_enum"> 25071 <li> 25072 <span class="entry_type_enum_name">OFF (v3.2)</span> 25073 </li> 25074 <li> 25075 <span class="entry_type_enum_name">ON (v3.2)</span> 25076 </li> 25077 </ul> 25078 25079 </td> <!-- entry_type --> 25080 25081 <td class="entry_description"> 25082 <p>Operating mode for histogram 25083generation</p> 25084 </td> 25085 25086 <td class="entry_units"> 25087 </td> 25088 25089 <td class="entry_range"> 25090 </td> 25091 25092 <td class="entry_hal_version"> 25093 <p>3.<wbr/>2</p> 25094 </td> 25095 25096 <td class="entry_tags"> 25097 <ul class="entry_tags"> 25098 <li><a href="#tag_FUTURE">FUTURE</a></li> 25099 </ul> 25100 </td> 25101 25102 </tr> 25103 25104 25105 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25106 <!-- end of entry --> 25107 25108 25109 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 25110 <td class="entry_name 25111 " rowspan="1"> 25112 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 25113 </td> 25114 <td class="entry_type"> 25115 <span class="entry_type_name entry_type_name_enum">byte</span> 25116 25117 <span class="entry_type_visibility"> [system as boolean]</span> 25118 25119 25120 25121 25122 25123 <ul class="entry_type_enum"> 25124 <li> 25125 <span class="entry_type_enum_name">OFF (v3.2)</span> 25126 </li> 25127 <li> 25128 <span class="entry_type_enum_name">ON (v3.2)</span> 25129 </li> 25130 </ul> 25131 25132 </td> <!-- entry_type --> 25133 25134 <td class="entry_description"> 25135 <p>Operating mode for sharpness map 25136generation</p> 25137 </td> 25138 25139 <td class="entry_units"> 25140 </td> 25141 25142 <td class="entry_range"> 25143 </td> 25144 25145 <td class="entry_hal_version"> 25146 <p>3.<wbr/>2</p> 25147 </td> 25148 25149 <td class="entry_tags"> 25150 <ul class="entry_tags"> 25151 <li><a href="#tag_FUTURE">FUTURE</a></li> 25152 </ul> 25153 </td> 25154 25155 </tr> 25156 25157 25158 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25159 <!-- end of entry --> 25160 25161 25162 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 25163 <td class="entry_name 25164 " rowspan="3"> 25165 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 25166 </td> 25167 <td class="entry_type"> 25168 <span class="entry_type_name entry_type_name_enum">byte</span> 25169 25170 <span class="entry_type_visibility"> [public as boolean]</span> 25171 25172 25173 25174 25175 25176 <ul class="entry_type_enum"> 25177 <li> 25178 <span class="entry_type_enum_name">OFF (v3.2)</span> 25179 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 25180 </li> 25181 <li> 25182 <span class="entry_type_enum_name">ON (v3.2)</span> 25183 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 25184 </li> 25185 </ul> 25186 25187 </td> <!-- entry_type --> 25188 25189 <td class="entry_description"> 25190 <p>Operating mode for hot pixel map generation.<wbr/></p> 25191 </td> 25192 25193 <td class="entry_units"> 25194 </td> 25195 25196 <td class="entry_range"> 25197 <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> 25198 </td> 25199 25200 <td class="entry_hal_version"> 25201 <p>3.<wbr/>2</p> 25202 </td> 25203 25204 <td class="entry_tags"> 25205 <ul class="entry_tags"> 25206 <li><a href="#tag_V1">V1</a></li> 25207 <li><a href="#tag_RAW">RAW</a></li> 25208 </ul> 25209 </td> 25210 25211 </tr> 25212 <tr class="entries_header"> 25213 <th class="th_details" colspan="6">Details</th> 25214 </tr> 25215 <tr class="entry_cont"> 25216 <td class="entry_details" colspan="6"> 25217 <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/> 25218If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 25219 </td> 25220 </tr> 25221 25222 25223 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25224 <!-- end of entry --> 25225 25226 25227 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 25228 <td class="entry_name 25229 " rowspan="3"> 25230 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 25231 </td> 25232 <td class="entry_type"> 25233 <span class="entry_type_name entry_type_name_enum">byte</span> 25234 25235 <span class="entry_type_visibility"> [public]</span> 25236 25237 25238 <span class="entry_type_hwlevel">[full] </span> 25239 25240 25241 25242 <ul class="entry_type_enum"> 25243 <li> 25244 <span class="entry_type_enum_name">OFF (v3.2)</span> 25245 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 25246 </li> 25247 <li> 25248 <span class="entry_type_enum_name">ON (v3.2)</span> 25249 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 25250 </li> 25251 </ul> 25252 25253 </td> <!-- entry_type --> 25254 25255 <td class="entry_description"> 25256 <p>Whether the camera device will output the lens 25257shading map in output result metadata.<wbr/></p> 25258 </td> 25259 25260 <td class="entry_units"> 25261 </td> 25262 25263 <td class="entry_range"> 25264 <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> 25265 </td> 25266 25267 <td class="entry_hal_version"> 25268 <p>3.<wbr/>2</p> 25269 </td> 25270 25271 <td class="entry_tags"> 25272 <ul class="entry_tags"> 25273 <li><a href="#tag_RAW">RAW</a></li> 25274 </ul> 25275 </td> 25276 25277 </tr> 25278 <tr class="entries_header"> 25279 <th class="th_details" colspan="6">Details</th> 25280 </tr> 25281 <tr class="entry_cont"> 25282 <td class="entry_details" colspan="6"> 25283 <p>When set to ON,<wbr/> 25284<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 25285the output result metadata.<wbr/></p> 25286<p>ON is always supported on devices with the RAW capability.<wbr/></p> 25287 </td> 25288 </tr> 25289 25290 25291 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25292 <!-- end of entry --> 25293 25294 25295 <tr class="entry" id="controls_android.statistics.oisDataMode"> 25296 <td class="entry_name 25297 " rowspan="3"> 25298 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode 25299 </td> 25300 <td class="entry_type"> 25301 <span class="entry_type_name entry_type_name_enum">byte</span> 25302 25303 <span class="entry_type_visibility"> [public]</span> 25304 25305 25306 25307 25308 25309 <ul class="entry_type_enum"> 25310 <li> 25311 <span class="entry_type_enum_name">OFF (v3.3)</span> 25312 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span> 25313 </li> 25314 <li> 25315 <span class="entry_type_enum_name">ON (v3.3)</span> 25316 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span> 25317 </li> 25318 </ul> 25319 25320 </td> <!-- entry_type --> 25321 25322 <td class="entry_description"> 25323 <p>A control for selecting whether optical stabilization (OIS) position 25324information is included in output result metadata.<wbr/></p> 25325 </td> 25326 25327 <td class="entry_units"> 25328 </td> 25329 25330 <td class="entry_range"> 25331 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p> 25332 </td> 25333 25334 <td class="entry_hal_version"> 25335 <p>3.<wbr/>3</p> 25336 </td> 25337 25338 <td class="entry_tags"> 25339 </td> 25340 25341 </tr> 25342 <tr class="entries_header"> 25343 <th class="th_details" colspan="6">Details</th> 25344 </tr> 25345 <tr class="entry_cont"> 25346 <td class="entry_details" colspan="6"> 25347 <p>Since optical image stabilization generally involves motion much faster than the duration 25348of individualq image exposure,<wbr/> multiple OIS samples can be included for a single capture 25349result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating 25350at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined 25351with the rolling shutter skew to account for lens motion during image exposure in 25352post-processing algorithms.<wbr/></p> 25353 </td> 25354 </tr> 25355 25356 25357 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25358 <!-- end of entry --> 25359 25360 25361 25362 <!-- end of kind --> 25363 </tbody> 25364 <tr><td colspan="7" class="kind">static</td></tr> 25365 25366 <thead class="entries_header"> 25367 <tr> 25368 <th class="th_name">Property Name</th> 25369 <th class="th_type">Type</th> 25370 <th class="th_description">Description</th> 25371 <th class="th_units">Units</th> 25372 <th class="th_range">Range</th> 25373 <th class="th_hal_version">Initial HIDL HAL version</th> 25374 <th class="th_tags">Tags</th> 25375 </tr> 25376 </thead> 25377 25378 <tbody> 25379 25380 25381 25382 25383 25384 25385 25386 25387 25388 25389 25390 25391 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 25392 <td class="entry_name 25393 " rowspan="3"> 25394 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 25395 </td> 25396 <td class="entry_type"> 25397 <span class="entry_type_name">byte</span> 25398 <span class="entry_type_container">x</span> 25399 25400 <span class="entry_type_array"> 25401 n 25402 </span> 25403 <span class="entry_type_visibility"> [public as enumList]</span> 25404 25405 25406 <span class="entry_type_hwlevel">[legacy] </span> 25407 25408 25409 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 25410 25411 25412 </td> <!-- entry_type --> 25413 25414 <td class="entry_description"> 25415 <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 25416supported by this camera device.<wbr/></p> 25417 </td> 25418 25419 <td class="entry_units"> 25420 </td> 25421 25422 <td class="entry_range"> 25423 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p> 25424 </td> 25425 25426 <td class="entry_hal_version"> 25427 <p>3.<wbr/>2</p> 25428 </td> 25429 25430 <td class="entry_tags"> 25431 </td> 25432 25433 </tr> 25434 <tr class="entries_header"> 25435 <th class="th_details" colspan="6">Details</th> 25436 </tr> 25437 <tr class="entry_cont"> 25438 <td class="entry_details" colspan="6"> 25439 <p>OFF is always supported.<wbr/></p> 25440 </td> 25441 </tr> 25442 25443 25444 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25445 <!-- end of entry --> 25446 25447 25448 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 25449 <td class="entry_name 25450 " rowspan="1"> 25451 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 25452 </td> 25453 <td class="entry_type"> 25454 <span class="entry_type_name">int32</span> 25455 25456 <span class="entry_type_visibility"> [system]</span> 25457 25458 25459 25460 25461 25462 25463 </td> <!-- entry_type --> 25464 25465 <td class="entry_description"> 25466 <p>Number of histogram buckets 25467supported</p> 25468 </td> 25469 25470 <td class="entry_units"> 25471 </td> 25472 25473 <td class="entry_range"> 25474 <p>>= 64</p> 25475 </td> 25476 25477 <td class="entry_hal_version"> 25478 <p>3.<wbr/>2</p> 25479 </td> 25480 25481 <td class="entry_tags"> 25482 <ul class="entry_tags"> 25483 <li><a href="#tag_FUTURE">FUTURE</a></li> 25484 </ul> 25485 </td> 25486 25487 </tr> 25488 25489 25490 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25491 <!-- end of entry --> 25492 25493 25494 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 25495 <td class="entry_name 25496 " rowspan="1"> 25497 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 25498 </td> 25499 <td class="entry_type"> 25500 <span class="entry_type_name">int32</span> 25501 25502 <span class="entry_type_visibility"> [public]</span> 25503 25504 25505 <span class="entry_type_hwlevel">[legacy] </span> 25506 25507 25508 25509 25510 </td> <!-- entry_type --> 25511 25512 <td class="entry_description"> 25513 <p>The maximum number of simultaneously detectable 25514faces.<wbr/></p> 25515 </td> 25516 25517 <td class="entry_units"> 25518 </td> 25519 25520 <td class="entry_range"> 25521 <p>0 for cameras without available face detection; otherwise: 25522<code>>=4</code> for LIMITED or FULL hwlevel devices or 25523<code>>0</code> for LEGACY devices.<wbr/></p> 25524 </td> 25525 25526 <td class="entry_hal_version"> 25527 <p>3.<wbr/>2</p> 25528 </td> 25529 25530 <td class="entry_tags"> 25531 <ul class="entry_tags"> 25532 <li><a href="#tag_BC">BC</a></li> 25533 </ul> 25534 </td> 25535 25536 </tr> 25537 25538 25539 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25540 <!-- end of entry --> 25541 25542 25543 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 25544 <td class="entry_name 25545 " rowspan="1"> 25546 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 25547 </td> 25548 <td class="entry_type"> 25549 <span class="entry_type_name">int32</span> 25550 25551 <span class="entry_type_visibility"> [system]</span> 25552 25553 25554 25555 25556 25557 25558 </td> <!-- entry_type --> 25559 25560 <td class="entry_description"> 25561 <p>Maximum value possible for a histogram 25562bucket</p> 25563 </td> 25564 25565 <td class="entry_units"> 25566 </td> 25567 25568 <td class="entry_range"> 25569 </td> 25570 25571 <td class="entry_hal_version"> 25572 <p>3.<wbr/>2</p> 25573 </td> 25574 25575 <td class="entry_tags"> 25576 <ul class="entry_tags"> 25577 <li><a href="#tag_FUTURE">FUTURE</a></li> 25578 </ul> 25579 </td> 25580 25581 </tr> 25582 25583 25584 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25585 <!-- end of entry --> 25586 25587 25588 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 25589 <td class="entry_name 25590 " rowspan="1"> 25591 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 25592 </td> 25593 <td class="entry_type"> 25594 <span class="entry_type_name">int32</span> 25595 25596 <span class="entry_type_visibility"> [system]</span> 25597 25598 25599 25600 25601 25602 25603 </td> <!-- entry_type --> 25604 25605 <td class="entry_description"> 25606 <p>Maximum value possible for a sharpness map 25607region.<wbr/></p> 25608 </td> 25609 25610 <td class="entry_units"> 25611 </td> 25612 25613 <td class="entry_range"> 25614 </td> 25615 25616 <td class="entry_hal_version"> 25617 <p>3.<wbr/>2</p> 25618 </td> 25619 25620 <td class="entry_tags"> 25621 <ul class="entry_tags"> 25622 <li><a href="#tag_FUTURE">FUTURE</a></li> 25623 </ul> 25624 </td> 25625 25626 </tr> 25627 25628 25629 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25630 <!-- end of entry --> 25631 25632 25633 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 25634 <td class="entry_name 25635 " rowspan="1"> 25636 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 25637 </td> 25638 <td class="entry_type"> 25639 <span class="entry_type_name">int32</span> 25640 <span class="entry_type_container">x</span> 25641 25642 <span class="entry_type_array"> 25643 2 25644 </span> 25645 <span class="entry_type_visibility"> [system as size]</span> 25646 25647 25648 25649 25650 <div class="entry_type_notes">width x height</div> 25651 25652 25653 </td> <!-- entry_type --> 25654 25655 <td class="entry_description"> 25656 <p>Dimensions of the sharpness 25657map</p> 25658 </td> 25659 25660 <td class="entry_units"> 25661 </td> 25662 25663 <td class="entry_range"> 25664 <p>Must be at least 32 x 32</p> 25665 </td> 25666 25667 <td class="entry_hal_version"> 25668 <p>3.<wbr/>2</p> 25669 </td> 25670 25671 <td class="entry_tags"> 25672 <ul class="entry_tags"> 25673 <li><a href="#tag_FUTURE">FUTURE</a></li> 25674 </ul> 25675 </td> 25676 25677 </tr> 25678 25679 25680 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25681 <!-- end of entry --> 25682 25683 25684 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 25685 <td class="entry_name 25686 " rowspan="3"> 25687 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 25688 </td> 25689 <td class="entry_type"> 25690 <span class="entry_type_name">byte</span> 25691 <span class="entry_type_container">x</span> 25692 25693 <span class="entry_type_array"> 25694 n 25695 </span> 25696 <span class="entry_type_visibility"> [public as boolean]</span> 25697 25698 25699 25700 25701 <div class="entry_type_notes">list of enums</div> 25702 25703 25704 </td> <!-- entry_type --> 25705 25706 <td class="entry_description"> 25707 <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 25708supported by this camera device.<wbr/></p> 25709 </td> 25710 25711 <td class="entry_units"> 25712 </td> 25713 25714 <td class="entry_range"> 25715 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p> 25716 </td> 25717 25718 <td class="entry_hal_version"> 25719 <p>3.<wbr/>2</p> 25720 </td> 25721 25722 <td class="entry_tags"> 25723 <ul class="entry_tags"> 25724 <li><a href="#tag_V1">V1</a></li> 25725 <li><a href="#tag_RAW">RAW</a></li> 25726 </ul> 25727 </td> 25728 25729 </tr> 25730 <tr class="entries_header"> 25731 <th class="th_details" colspan="6">Details</th> 25732 </tr> 25733 <tr class="entry_cont"> 25734 <td class="entry_details" colspan="6"> 25735 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only 25736<code>false</code>.<wbr/></p> 25737<p>ON is always supported on devices with the RAW capability.<wbr/></p> 25738 </td> 25739 </tr> 25740 25741 25742 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25743 <!-- end of entry --> 25744 25745 25746 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes"> 25747 <td class="entry_name 25748 " rowspan="3"> 25749 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes 25750 </td> 25751 <td class="entry_type"> 25752 <span class="entry_type_name">byte</span> 25753 <span class="entry_type_container">x</span> 25754 25755 <span class="entry_type_array"> 25756 n 25757 </span> 25758 <span class="entry_type_visibility"> [public as enumList]</span> 25759 25760 25761 25762 25763 <div class="entry_type_notes">list of enums</div> 25764 25765 25766 </td> <!-- entry_type --> 25767 25768 <td class="entry_description"> 25769 <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 25770are supported by this camera device.<wbr/></p> 25771 </td> 25772 25773 <td class="entry_units"> 25774 </td> 25775 25776 <td class="entry_range"> 25777 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p> 25778 </td> 25779 25780 <td class="entry_hal_version"> 25781 <p>3.<wbr/>2</p> 25782 </td> 25783 25784 <td class="entry_tags"> 25785 </td> 25786 25787 </tr> 25788 <tr class="entries_header"> 25789 <th class="th_details" colspan="6">Details</th> 25790 </tr> 25791 <tr class="entry_cont"> 25792 <td class="entry_details" colspan="6"> 25793 <p>If no lens shading map output is available for this camera device,<wbr/> this key will 25794contain only OFF.<wbr/></p> 25795<p>ON is always supported on devices with the RAW capability.<wbr/> 25796LEGACY mode devices will always only support OFF.<wbr/></p> 25797 </td> 25798 </tr> 25799 25800 25801 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25802 <!-- end of entry --> 25803 25804 25805 <tr class="entry" id="static_android.statistics.info.availableOisDataModes"> 25806 <td class="entry_name 25807 " rowspan="3"> 25808 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes 25809 </td> 25810 <td class="entry_type"> 25811 <span class="entry_type_name">byte</span> 25812 <span class="entry_type_container">x</span> 25813 25814 <span class="entry_type_array"> 25815 n 25816 </span> 25817 <span class="entry_type_visibility"> [public as enumList]</span> 25818 25819 25820 25821 25822 <div class="entry_type_notes">list of enums</div> 25823 25824 25825 </td> <!-- entry_type --> 25826 25827 <td class="entry_description"> 25828 <p>List of OIS data output modes for <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a> that 25829are supported by this camera device.<wbr/></p> 25830 </td> 25831 25832 <td class="entry_units"> 25833 </td> 25834 25835 <td class="entry_range"> 25836 <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p> 25837 </td> 25838 25839 <td class="entry_hal_version"> 25840 <p>3.<wbr/>3</p> 25841 </td> 25842 25843 <td class="entry_tags"> 25844 </td> 25845 25846 </tr> 25847 <tr class="entries_header"> 25848 <th class="th_details" colspan="6">Details</th> 25849 </tr> 25850 <tr class="entry_cont"> 25851 <td class="entry_details" colspan="6"> 25852 <p>If no OIS data output is available for this camera device,<wbr/> this key will 25853contain only OFF.<wbr/></p> 25854 </td> 25855 </tr> 25856 25857 25858 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25859 <!-- end of entry --> 25860 25861 25862 25863 25864 25865 25866 <!-- end of kind --> 25867 </tbody> 25868 <tr><td colspan="7" class="kind">dynamic</td></tr> 25869 25870 <thead class="entries_header"> 25871 <tr> 25872 <th class="th_name">Property Name</th> 25873 <th class="th_type">Type</th> 25874 <th class="th_description">Description</th> 25875 <th class="th_units">Units</th> 25876 <th class="th_range">Range</th> 25877 <th class="th_hal_version">Initial HIDL HAL version</th> 25878 <th class="th_tags">Tags</th> 25879 </tr> 25880 </thead> 25881 25882 <tbody> 25883 25884 25885 25886 25887 25888 25889 25890 25891 25892 25893 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 25894 <td class="entry_name 25895 " rowspan="5"> 25896 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 25897 </td> 25898 <td class="entry_type"> 25899 <span class="entry_type_name entry_type_name_enum">byte</span> 25900 25901 <span class="entry_type_visibility"> [public]</span> 25902 25903 25904 <span class="entry_type_hwlevel">[legacy] </span> 25905 25906 25907 25908 <ul class="entry_type_enum"> 25909 <li> 25910 <span class="entry_type_enum_name">OFF (v3.2)</span> 25911 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 25912results.<wbr/></p></span> 25913 </li> 25914 <li> 25915 <span class="entry_type_enum_name">SIMPLE (v3.2)</span> 25916 <span class="entry_type_enum_optional">[optional]</span> 25917 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 25918 </li> 25919 <li> 25920 <span class="entry_type_enum_name">FULL (v3.2)</span> 25921 <span class="entry_type_enum_optional">[optional]</span> 25922 <span class="entry_type_enum_notes"><p>Return all face 25923metadata.<wbr/></p> 25924<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 25925 </li> 25926 </ul> 25927 25928 </td> <!-- entry_type --> 25929 25930 <td class="entry_description"> 25931 <p>Operating mode for the face detector 25932unit.<wbr/></p> 25933 </td> 25934 25935 <td class="entry_units"> 25936 </td> 25937 25938 <td class="entry_range"> 25939 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 25940 </td> 25941 25942 <td class="entry_hal_version"> 25943 <p>3.<wbr/>2</p> 25944 </td> 25945 25946 <td class="entry_tags"> 25947 <ul class="entry_tags"> 25948 <li><a href="#tag_BC">BC</a></li> 25949 </ul> 25950 </td> 25951 25952 </tr> 25953 <tr class="entries_header"> 25954 <th class="th_details" colspan="6">Details</th> 25955 </tr> 25956 <tr class="entry_cont"> 25957 <td class="entry_details" colspan="6"> 25958 <p>Whether face detection is enabled,<wbr/> and whether it 25959should output just the basic fields or the full set of 25960fields.<wbr/></p> 25961 </td> 25962 </tr> 25963 25964 <tr class="entries_header"> 25965 <th class="th_details" colspan="6">HAL Implementation Details</th> 25966 </tr> 25967 <tr class="entry_cont"> 25968 <td class="entry_details" colspan="6"> 25969 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 25970<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 25971FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 25972<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 25973 </td> 25974 </tr> 25975 25976 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25977 <!-- end of entry --> 25978 25979 25980 <tr class="entry" id="dynamic_android.statistics.faceIds"> 25981 <td class="entry_name 25982 " rowspan="3"> 25983 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 25984 </td> 25985 <td class="entry_type"> 25986 <span class="entry_type_name">int32</span> 25987 <span class="entry_type_container">x</span> 25988 25989 <span class="entry_type_array"> 25990 n 25991 </span> 25992 <span class="entry_type_visibility"> [ndk_public]</span> 25993 25994 25995 <span class="entry_type_hwlevel">[legacy] </span> 25996 25997 25998 25999 26000 </td> <!-- entry_type --> 26001 26002 <td class="entry_description"> 26003 <p>List of unique IDs for detected faces.<wbr/></p> 26004 </td> 26005 26006 <td class="entry_units"> 26007 </td> 26008 26009 <td class="entry_range"> 26010 </td> 26011 26012 <td class="entry_hal_version"> 26013 <p>3.<wbr/>2</p> 26014 </td> 26015 26016 <td class="entry_tags"> 26017 <ul class="entry_tags"> 26018 <li><a href="#tag_BC">BC</a></li> 26019 </ul> 26020 </td> 26021 26022 </tr> 26023 <tr class="entries_header"> 26024 <th class="th_details" colspan="6">Details</th> 26025 </tr> 26026 <tr class="entry_cont"> 26027 <td class="entry_details" colspan="6"> 26028 <p>Each detected face is given a unique ID that is valid for as long as the face is visible 26029to the camera device.<wbr/> A face that leaves the field of view and later returns may be 26030assigned a new ID.<wbr/></p> 26031<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 26032 </td> 26033 </tr> 26034 26035 26036 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26037 <!-- end of entry --> 26038 26039 26040 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 26041 <td class="entry_name 26042 " rowspan="5"> 26043 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 26044 </td> 26045 <td class="entry_type"> 26046 <span class="entry_type_name">int32</span> 26047 <span class="entry_type_container">x</span> 26048 26049 <span class="entry_type_array"> 26050 n x 6 26051 </span> 26052 <span class="entry_type_visibility"> [ndk_public]</span> 26053 26054 26055 <span class="entry_type_hwlevel">[legacy] </span> 26056 26057 26058 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 26059 26060 26061 </td> <!-- entry_type --> 26062 26063 <td class="entry_description"> 26064 <p>List of landmarks for detected 26065faces.<wbr/></p> 26066 </td> 26067 26068 <td class="entry_units"> 26069 </td> 26070 26071 <td class="entry_range"> 26072 </td> 26073 26074 <td class="entry_hal_version"> 26075 <p>3.<wbr/>2</p> 26076 </td> 26077 26078 <td class="entry_tags"> 26079 <ul class="entry_tags"> 26080 <li><a href="#tag_BC">BC</a></li> 26081 </ul> 26082 </td> 26083 26084 </tr> 26085 <tr class="entries_header"> 26086 <th class="th_details" colspan="6">Details</th> 26087 </tr> 26088 <tr class="entry_cont"> 26089 <td class="entry_details" colspan="6"> 26090 <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 26091system always follows that of <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 26092the top-left pixel of the active array.<wbr/></p> 26093<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 26094system depends on the mode being set.<wbr/> 26095When the distortion correction mode is OFF,<wbr/> the coordinate system follows 26096<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with 26097<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/> 26098When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 26099<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 26100<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 26101<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 26102 </td> 26103 </tr> 26104 26105 <tr class="entries_header"> 26106 <th class="th_details" colspan="6">HAL Implementation Details</th> 26107 </tr> 26108 <tr class="entry_cont"> 26109 <td class="entry_details" colspan="6"> 26110 <p>HAL must always report face landmarks in the coordinate system of pre-correction 26111active array.<wbr/></p> 26112 </td> 26113 </tr> 26114 26115 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26116 <!-- end of entry --> 26117 26118 26119 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 26120 <td class="entry_name 26121 " rowspan="5"> 26122 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 26123 </td> 26124 <td class="entry_type"> 26125 <span class="entry_type_name">int32</span> 26126 <span class="entry_type_container">x</span> 26127 26128 <span class="entry_type_array"> 26129 n x 4 26130 </span> 26131 <span class="entry_type_visibility"> [ndk_public as rectangle]</span> 26132 26133 26134 <span class="entry_type_hwlevel">[legacy] </span> 26135 26136 26137 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 26138 26139 26140 </td> <!-- entry_type --> 26141 26142 <td class="entry_description"> 26143 <p>List of the bounding rectangles for detected 26144faces.<wbr/></p> 26145 </td> 26146 26147 <td class="entry_units"> 26148 </td> 26149 26150 <td class="entry_range"> 26151 </td> 26152 26153 <td class="entry_hal_version"> 26154 <p>3.<wbr/>2</p> 26155 </td> 26156 26157 <td class="entry_tags"> 26158 <ul class="entry_tags"> 26159 <li><a href="#tag_BC">BC</a></li> 26160 </ul> 26161 </td> 26162 26163 </tr> 26164 <tr class="entries_header"> 26165 <th class="th_details" colspan="6">Details</th> 26166 </tr> 26167 <tr class="entry_cont"> 26168 <td class="entry_details" colspan="6"> 26169 <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 26170system always follows that of <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 26171the top-left pixel of the active array.<wbr/></p> 26172<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 26173system depends on the mode being set.<wbr/> 26174When the distortion correction mode is OFF,<wbr/> the coordinate system follows 26175<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with 26176<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/> 26177When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 26178<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 26179<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 26180<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p> 26181 </td> 26182 </tr> 26183 26184 <tr class="entries_header"> 26185 <th class="th_details" colspan="6">HAL Implementation Details</th> 26186 </tr> 26187 <tr class="entry_cont"> 26188 <td class="entry_details" colspan="6"> 26189 <p>HAL must always report face rectangles in the coordinate system of pre-correction 26190active array.<wbr/></p> 26191 </td> 26192 </tr> 26193 26194 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26195 <!-- end of entry --> 26196 26197 26198 <tr class="entry" id="dynamic_android.statistics.faceScores"> 26199 <td class="entry_name 26200 " rowspan="5"> 26201 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 26202 </td> 26203 <td class="entry_type"> 26204 <span class="entry_type_name">byte</span> 26205 <span class="entry_type_container">x</span> 26206 26207 <span class="entry_type_array"> 26208 n 26209 </span> 26210 <span class="entry_type_visibility"> [ndk_public]</span> 26211 26212 26213 <span class="entry_type_hwlevel">[legacy] </span> 26214 26215 26216 26217 26218 </td> <!-- entry_type --> 26219 26220 <td class="entry_description"> 26221 <p>List of the face confidence scores for 26222detected faces</p> 26223 </td> 26224 26225 <td class="entry_units"> 26226 </td> 26227 26228 <td class="entry_range"> 26229 <p>1-100</p> 26230 </td> 26231 26232 <td class="entry_hal_version"> 26233 <p>3.<wbr/>2</p> 26234 </td> 26235 26236 <td class="entry_tags"> 26237 <ul class="entry_tags"> 26238 <li><a href="#tag_BC">BC</a></li> 26239 </ul> 26240 </td> 26241 26242 </tr> 26243 <tr class="entries_header"> 26244 <th class="th_details" colspan="6">Details</th> 26245 </tr> 26246 <tr class="entry_cont"> 26247 <td class="entry_details" colspan="6"> 26248 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 26249 </td> 26250 </tr> 26251 26252 <tr class="entries_header"> 26253 <th class="th_details" colspan="6">HAL Implementation Details</th> 26254 </tr> 26255 <tr class="entry_cont"> 26256 <td class="entry_details" colspan="6"> 26257 <p>The value should be meaningful (for example,<wbr/> setting 100 at 26258all times is illegal).<wbr/></p> 26259 </td> 26260 </tr> 26261 26262 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26263 <!-- end of entry --> 26264 26265 26266 <tr class="entry" id="dynamic_android.statistics.faces"> 26267 <td class="entry_name 26268 " rowspan="3"> 26269 android.<wbr/>statistics.<wbr/>faces 26270 </td> 26271 <td class="entry_type"> 26272 <span class="entry_type_name">int32</span> 26273 <span class="entry_type_container">x</span> 26274 26275 <span class="entry_type_array"> 26276 n 26277 </span> 26278 <span class="entry_type_visibility"> [java_public as face]</span> 26279 26280 <span class="entry_type_synthetic">[synthetic] </span> 26281 26282 <span class="entry_type_hwlevel">[legacy] </span> 26283 26284 26285 26286 26287 </td> <!-- entry_type --> 26288 26289 <td class="entry_description"> 26290 <p>List of the faces detected through camera face detection 26291in this capture.<wbr/></p> 26292 </td> 26293 26294 <td class="entry_units"> 26295 </td> 26296 26297 <td class="entry_range"> 26298 </td> 26299 26300 <td class="entry_hal_version"> 26301 <p>3.<wbr/>2</p> 26302 </td> 26303 26304 <td class="entry_tags"> 26305 </td> 26306 26307 </tr> 26308 <tr class="entries_header"> 26309 <th class="th_details" colspan="6">Details</th> 26310 </tr> 26311 <tr class="entry_cont"> 26312 <td class="entry_details" colspan="6"> 26313 <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> 26314 </td> 26315 </tr> 26316 26317 26318 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26319 <!-- end of entry --> 26320 26321 26322 <tr class="entry" id="dynamic_android.statistics.histogram"> 26323 <td class="entry_name 26324 " rowspan="3"> 26325 android.<wbr/>statistics.<wbr/>histogram 26326 </td> 26327 <td class="entry_type"> 26328 <span class="entry_type_name">int32</span> 26329 <span class="entry_type_container">x</span> 26330 26331 <span class="entry_type_array"> 26332 n x 3 26333 </span> 26334 <span class="entry_type_visibility"> [system]</span> 26335 26336 26337 26338 26339 <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> 26340 26341 26342 </td> <!-- entry_type --> 26343 26344 <td class="entry_description"> 26345 <p>A 3-channel histogram based on the raw 26346sensor data</p> 26347 </td> 26348 26349 <td class="entry_units"> 26350 </td> 26351 26352 <td class="entry_range"> 26353 </td> 26354 26355 <td class="entry_hal_version"> 26356 <p>3.<wbr/>2</p> 26357 </td> 26358 26359 <td class="entry_tags"> 26360 <ul class="entry_tags"> 26361 <li><a href="#tag_FUTURE">FUTURE</a></li> 26362 </ul> 26363 </td> 26364 26365 </tr> 26366 <tr class="entries_header"> 26367 <th class="th_details" colspan="6">Details</th> 26368 </tr> 26369 <tr class="entry_cont"> 26370 <td class="entry_details" colspan="6"> 26371 <p>The k'th bucket (0-based) covers the input range 26372(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/> 26373(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 26374supported,<wbr/> all channels should have the same data</p> 26375 </td> 26376 </tr> 26377 26378 26379 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26380 <!-- end of entry --> 26381 26382 26383 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 26384 <td class="entry_name 26385 " rowspan="1"> 26386 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 26387 </td> 26388 <td class="entry_type"> 26389 <span class="entry_type_name entry_type_name_enum">byte</span> 26390 26391 <span class="entry_type_visibility"> [system as boolean]</span> 26392 26393 26394 26395 26396 26397 <ul class="entry_type_enum"> 26398 <li> 26399 <span class="entry_type_enum_name">OFF (v3.2)</span> 26400 </li> 26401 <li> 26402 <span class="entry_type_enum_name">ON (v3.2)</span> 26403 </li> 26404 </ul> 26405 26406 </td> <!-- entry_type --> 26407 26408 <td class="entry_description"> 26409 <p>Operating mode for histogram 26410generation</p> 26411 </td> 26412 26413 <td class="entry_units"> 26414 </td> 26415 26416 <td class="entry_range"> 26417 </td> 26418 26419 <td class="entry_hal_version"> 26420 <p>3.<wbr/>2</p> 26421 </td> 26422 26423 <td class="entry_tags"> 26424 <ul class="entry_tags"> 26425 <li><a href="#tag_FUTURE">FUTURE</a></li> 26426 </ul> 26427 </td> 26428 26429 </tr> 26430 26431 26432 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26433 <!-- end of entry --> 26434 26435 26436 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 26437 <td class="entry_name 26438 " rowspan="3"> 26439 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 26440 </td> 26441 <td class="entry_type"> 26442 <span class="entry_type_name">int32</span> 26443 <span class="entry_type_container">x</span> 26444 26445 <span class="entry_type_array"> 26446 n x m x 3 26447 </span> 26448 <span class="entry_type_visibility"> [system]</span> 26449 26450 26451 26452 26453 <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> 26454 26455 26456 </td> <!-- entry_type --> 26457 26458 <td class="entry_description"> 26459 <p>A 3-channel sharpness map,<wbr/> based on the raw 26460sensor data</p> 26461 </td> 26462 26463 <td class="entry_units"> 26464 </td> 26465 26466 <td class="entry_range"> 26467 </td> 26468 26469 <td class="entry_hal_version"> 26470 <p>3.<wbr/>2</p> 26471 </td> 26472 26473 <td class="entry_tags"> 26474 <ul class="entry_tags"> 26475 <li><a href="#tag_FUTURE">FUTURE</a></li> 26476 </ul> 26477 </td> 26478 26479 </tr> 26480 <tr class="entries_header"> 26481 <th class="th_details" colspan="6">Details</th> 26482 </tr> 26483 <tr class="entry_cont"> 26484 <td class="entry_details" colspan="6"> 26485 <p>If only a monochrome sharpness map is supported,<wbr/> 26486all channels should have the same data</p> 26487 </td> 26488 </tr> 26489 26490 26491 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26492 <!-- end of entry --> 26493 26494 26495 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 26496 <td class="entry_name 26497 " rowspan="1"> 26498 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 26499 </td> 26500 <td class="entry_type"> 26501 <span class="entry_type_name entry_type_name_enum">byte</span> 26502 26503 <span class="entry_type_visibility"> [system as boolean]</span> 26504 26505 26506 26507 26508 26509 <ul class="entry_type_enum"> 26510 <li> 26511 <span class="entry_type_enum_name">OFF (v3.2)</span> 26512 </li> 26513 <li> 26514 <span class="entry_type_enum_name">ON (v3.2)</span> 26515 </li> 26516 </ul> 26517 26518 </td> <!-- entry_type --> 26519 26520 <td class="entry_description"> 26521 <p>Operating mode for sharpness map 26522generation</p> 26523 </td> 26524 26525 <td class="entry_units"> 26526 </td> 26527 26528 <td class="entry_range"> 26529 </td> 26530 26531 <td class="entry_hal_version"> 26532 <p>3.<wbr/>2</p> 26533 </td> 26534 26535 <td class="entry_tags"> 26536 <ul class="entry_tags"> 26537 <li><a href="#tag_FUTURE">FUTURE</a></li> 26538 </ul> 26539 </td> 26540 26541 </tr> 26542 26543 26544 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26545 <!-- end of entry --> 26546 26547 26548 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> 26549 <td class="entry_name 26550 " rowspan="3"> 26551 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map 26552 </td> 26553 <td class="entry_type"> 26554 <span class="entry_type_name">byte</span> 26555 26556 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span> 26557 26558 26559 <span class="entry_type_hwlevel">[full] </span> 26560 26561 26562 26563 26564 </td> <!-- entry_type --> 26565 26566 <td class="entry_description"> 26567 <p>The shading map is a low-resolution floating-point map 26568that lists the coefficients used to correct for vignetting,<wbr/> for each 26569Bayer color channel.<wbr/></p> 26570 </td> 26571 26572 <td class="entry_units"> 26573 </td> 26574 26575 <td class="entry_range"> 26576 <p>Each gain factor is >= 1</p> 26577 </td> 26578 26579 <td class="entry_hal_version"> 26580 <p>3.<wbr/>2</p> 26581 </td> 26582 26583 <td class="entry_tags"> 26584 </td> 26585 26586 </tr> 26587 <tr class="entries_header"> 26588 <th class="th_details" colspan="6">Details</th> 26589 </tr> 26590 <tr class="entry_cont"> 26591 <td class="entry_details" colspan="6"> 26592 <p>The map provided here is the same map that is used by the camera device to 26593correct both color shading and vignetting for output non-RAW images.<wbr/></p> 26594<p>When there is no lens shading correction applied to RAW 26595output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> 26596false),<wbr/> this map is the complete lens shading correction 26597map; when there is some lens shading correction applied to 26598the 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 26599correction map that needs to be applied to get shading 26600corrected images that match the camera device's output for 26601non-RAW formats.<wbr/></p> 26602<p>For a complete shading correction map,<wbr/> the least shaded 26603section of the image will have a gain factor of 1; all 26604other sections will have gains above 1.<wbr/></p> 26605<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 26606will take into account the colorCorrection settings.<wbr/></p> 26607<p>The shading map is for the entire active pixel array,<wbr/> and is not 26608affected by the crop region specified in the request.<wbr/> Each shading map 26609entry is the value of the shading compensation map over a specific 26610pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 26611map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 26612(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 26613pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 26614The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 26615<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 26616channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 26617The shading map is stored in a fully interleaved format.<wbr/></p> 26618<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/> 26619and will be smaller than 64x64.<wbr/></p> 26620<p>As an example,<wbr/> given a very small map defined as:</p> 26621<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] 26622values = 26623[ 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/> 26624 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/> 26625 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/> 26626 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/> 26627 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/> 26628 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 ] 26629</code></pre> 26630<p>The low-resolution scaling map images for each channel are 26631(displayed using nearest-neighbor interpolation):</p> 26632<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 26633<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 26634<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 26635<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 26636<p>As a visualization only,<wbr/> inverting the full-color map to recover an 26637image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 26638<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 26639<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example 26640shading map for such a camera is defined as:</p> 26641<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 26642<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 26643[ 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 26644 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 26645 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 26646 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 26647 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 26648 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3 ] 26649</code></pre> 26650 </td> 26651 </tr> 26652 26653 26654 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26655 <!-- end of entry --> 26656 26657 26658 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 26659 <td class="entry_name 26660 " rowspan="5"> 26661 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 26662 </td> 26663 <td class="entry_type"> 26664 <span class="entry_type_name">float</span> 26665 <span class="entry_type_container">x</span> 26666 26667 <span class="entry_type_array"> 26668 4 x n x m 26669 </span> 26670 <span class="entry_type_visibility"> [ndk_public]</span> 26671 26672 26673 <span class="entry_type_hwlevel">[full] </span> 26674 26675 26676 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 26677 26678 26679 </td> <!-- entry_type --> 26680 26681 <td class="entry_description"> 26682 <p>The shading map is a low-resolution floating-point map 26683that lists the coefficients used to correct for vignetting and color shading,<wbr/> 26684for each Bayer color channel of RAW image data.<wbr/></p> 26685 </td> 26686 26687 <td class="entry_units"> 26688 </td> 26689 26690 <td class="entry_range"> 26691 <p>Each gain factor is >= 1</p> 26692 </td> 26693 26694 <td class="entry_hal_version"> 26695 <p>3.<wbr/>2</p> 26696 </td> 26697 26698 <td class="entry_tags"> 26699 </td> 26700 26701 </tr> 26702 <tr class="entries_header"> 26703 <th class="th_details" colspan="6">Details</th> 26704 </tr> 26705 <tr class="entry_cont"> 26706 <td class="entry_details" colspan="6"> 26707 <p>The map provided here is the same map that is used by the camera device to 26708correct both color shading and vignetting for output non-RAW images.<wbr/></p> 26709<p>When there is no lens shading correction applied to RAW 26710output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> 26711false),<wbr/> this map is the complete lens shading correction 26712map; when there is some lens shading correction applied to 26713the 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 26714correction map that needs to be applied to get shading 26715corrected images that match the camera device's output for 26716non-RAW formats.<wbr/></p> 26717<p>For a complete shading correction map,<wbr/> the least shaded 26718section of the image will have a gain factor of 1; all 26719other sections will have gains above 1.<wbr/></p> 26720<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 26721will take into account the colorCorrection settings.<wbr/></p> 26722<p>The shading map is for the entire active pixel array,<wbr/> and is not 26723affected by the crop region specified in the request.<wbr/> Each shading map 26724entry is the value of the shading compensation map over a specific 26725pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 26726map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 26727(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 26728pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 26729The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 26730<p>For a Bayer camera,<wbr/> the channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is 26731the green channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 26732The shading map is stored in a fully interleaved format,<wbr/> and its size 26733is 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> 26734<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/> 26735and will be smaller than 64x64.<wbr/></p> 26736<p>As an example,<wbr/> given a very small map for a Bayer camera defined as:</p> 26737<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 26738<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 26739[ 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/> 26740 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/> 26741 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/> 26742 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/> 26743 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/> 26744 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 ] 26745</code></pre> 26746<p>The low-resolution scaling map images for each channel are 26747(displayed using nearest-neighbor interpolation):</p> 26748<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 26749<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 26750<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 26751<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 26752<p>As a visualization only,<wbr/> inverting the full-color map to recover an 26753image of a gray wall (using bicubic interpolation for visual quality) 26754as captured by the sensor gives:</p> 26755<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 26756<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example 26757shading map for such a camera is defined as:</p> 26758<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 26759<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 26760[ 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 26761 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 26762 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 26763 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 26764 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 26765 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3 ] 26766</code></pre> 26767<p>Note that the RAW image data might be subject to lens shading 26768correction not reported on this map.<wbr/> Query 26769<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 26770to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> 26771is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading 26772correction.<wbr/> In the case full lens shading correction is applied to RAW 26773images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/> 26774In other words,<wbr/> the map reported in this key is the remaining lens shading 26775that needs to be applied on the RAW image to get images without lens shading 26776artifacts.<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 26777formats.<wbr/></p> 26778 </td> 26779 </tr> 26780 26781 <tr class="entries_header"> 26782 <th class="th_details" colspan="6">HAL Implementation Details</th> 26783 </tr> 26784 <tr class="entry_cont"> 26785 <td class="entry_details" colspan="6"> 26786 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> 26787When AE and AWB are in AUTO modes 26788(<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 26789may have all the information it need to generate most accurate lens shading map.<wbr/> When 26790AE or AWB are in manual mode 26791(<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 26792may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 26793generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 26794the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p> 26795 </td> 26796 </tr> 26797 26798 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26799 <!-- end of entry --> 26800 26801 26802 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 26803 <td class="entry_name 26804 entry_name_deprecated 26805 " rowspan="3"> 26806 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 26807 </td> 26808 <td class="entry_type"> 26809 <span class="entry_type_name">float</span> 26810 <span class="entry_type_container">x</span> 26811 26812 <span class="entry_type_array"> 26813 4 26814 </span> 26815 <span class="entry_type_visibility"> [hidden]</span> 26816 26817 26818 26819 <span class="entry_type_deprecated">[deprecated] </span> 26820 26821 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 26822 26823 26824 </td> <!-- entry_type --> 26825 26826 <td class="entry_description"> 26827 <p>The best-fit color channel gains calculated 26828by the camera device's statistics units for the current output frame.<wbr/></p> 26829 </td> 26830 26831 <td class="entry_units"> 26832 </td> 26833 26834 <td class="entry_range"> 26835 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 26836 </td> 26837 26838 <td class="entry_hal_version"> 26839 <p>3.<wbr/>2</p> 26840 </td> 26841 26842 <td class="entry_tags"> 26843 </td> 26844 26845 </tr> 26846 <tr class="entries_header"> 26847 <th class="th_details" colspan="6">Details</th> 26848 </tr> 26849 <tr class="entry_cont"> 26850 <td class="entry_details" colspan="6"> 26851 <p>This may be different than the gains used for this frame,<wbr/> 26852since statistics processing on data from a new frame 26853typically completes after the transform has already been 26854applied to that frame.<wbr/></p> 26855<p>The 4 channel gains are defined in Bayer domain,<wbr/> 26856see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 26857<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 26858regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 26859 </td> 26860 </tr> 26861 26862 26863 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26864 <!-- end of entry --> 26865 26866 26867 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 26868 <td class="entry_name 26869 entry_name_deprecated 26870 " rowspan="3"> 26871 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 26872 </td> 26873 <td class="entry_type"> 26874 <span class="entry_type_name">rational</span> 26875 <span class="entry_type_container">x</span> 26876 26877 <span class="entry_type_array"> 26878 3 x 3 26879 </span> 26880 <span class="entry_type_visibility"> [hidden]</span> 26881 26882 26883 26884 <span class="entry_type_deprecated">[deprecated] </span> 26885 26886 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 26887 26888 26889 </td> <!-- entry_type --> 26890 26891 <td class="entry_description"> 26892 <p>The best-fit color transform matrix estimate 26893calculated by the camera device's statistics units for the current 26894output frame.<wbr/></p> 26895 </td> 26896 26897 <td class="entry_units"> 26898 </td> 26899 26900 <td class="entry_range"> 26901 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 26902 </td> 26903 26904 <td class="entry_hal_version"> 26905 <p>3.<wbr/>2</p> 26906 </td> 26907 26908 <td class="entry_tags"> 26909 </td> 26910 26911 </tr> 26912 <tr class="entries_header"> 26913 <th class="th_details" colspan="6">Details</th> 26914 </tr> 26915 <tr class="entry_cont"> 26916 <td class="entry_details" colspan="6"> 26917 <p>The camera device will provide the estimate from its 26918statistics unit on the white balance transforms to use 26919for the next frame.<wbr/> These are the values the camera device believes 26920are the best fit for the current output frame.<wbr/> This may 26921be different than the transform used for this frame,<wbr/> since 26922statistics processing on data from a new frame typically 26923completes after the transform has already been applied to 26924that frame.<wbr/></p> 26925<p>These estimates must be provided for all frames,<wbr/> even if 26926capture settings and color transforms are set by the application.<wbr/></p> 26927<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 26928regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 26929 </td> 26930 </tr> 26931 26932 26933 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26934 <!-- end of entry --> 26935 26936 26937 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 26938 <td class="entry_name 26939 " rowspan="3"> 26940 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 26941 </td> 26942 <td class="entry_type"> 26943 <span class="entry_type_name entry_type_name_enum">byte</span> 26944 26945 <span class="entry_type_visibility"> [public]</span> 26946 26947 26948 <span class="entry_type_hwlevel">[full] </span> 26949 26950 26951 26952 <ul class="entry_type_enum"> 26953 <li> 26954 <span class="entry_type_enum_name">NONE (v3.2)</span> 26955 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination 26956in the current scene.<wbr/></p></span> 26957 </li> 26958 <li> 26959 <span class="entry_type_enum_name">50HZ (v3.2)</span> 26960 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz 26961in the current scene.<wbr/></p></span> 26962 </li> 26963 <li> 26964 <span class="entry_type_enum_name">60HZ (v3.2)</span> 26965 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz 26966in the current scene.<wbr/></p></span> 26967 </li> 26968 </ul> 26969 26970 </td> <!-- entry_type --> 26971 26972 <td class="entry_description"> 26973 <p>The camera device estimated scene illumination lighting 26974frequency.<wbr/></p> 26975 </td> 26976 26977 <td class="entry_units"> 26978 </td> 26979 26980 <td class="entry_range"> 26981 </td> 26982 26983 <td class="entry_hal_version"> 26984 <p>3.<wbr/>2</p> 26985 </td> 26986 26987 <td class="entry_tags"> 26988 </td> 26989 26990 </tr> 26991 <tr class="entries_header"> 26992 <th class="th_details" colspan="6">Details</th> 26993 </tr> 26994 <tr class="entry_cont"> 26995 <td class="entry_details" colspan="6"> 26996 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 26997that depends on the local utility power standards.<wbr/> This flicker must be 26998accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 26999The camera device uses this entry to tell the application what the scene 27000illuminant frequency is.<wbr/></p> 27001<p>When manual exposure control is enabled 27002(<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> == 27003OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform 27004antibanding,<wbr/> and the application can ensure it selects 27005exposure times that do not cause banding issues by looking 27006into this metadata field.<wbr/> See 27007<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p> 27008<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p> 27009 </td> 27010 </tr> 27011 27012 27013 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27014 <!-- end of entry --> 27015 27016 27017 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 27018 <td class="entry_name 27019 " rowspan="3"> 27020 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 27021 </td> 27022 <td class="entry_type"> 27023 <span class="entry_type_name entry_type_name_enum">byte</span> 27024 27025 <span class="entry_type_visibility"> [public as boolean]</span> 27026 27027 27028 27029 27030 27031 <ul class="entry_type_enum"> 27032 <li> 27033 <span class="entry_type_enum_name">OFF (v3.2)</span> 27034 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 27035 </li> 27036 <li> 27037 <span class="entry_type_enum_name">ON (v3.2)</span> 27038 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 27039 </li> 27040 </ul> 27041 27042 </td> <!-- entry_type --> 27043 27044 <td class="entry_description"> 27045 <p>Operating mode for hot pixel map generation.<wbr/></p> 27046 </td> 27047 27048 <td class="entry_units"> 27049 </td> 27050 27051 <td class="entry_range"> 27052 <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> 27053 </td> 27054 27055 <td class="entry_hal_version"> 27056 <p>3.<wbr/>2</p> 27057 </td> 27058 27059 <td class="entry_tags"> 27060 <ul class="entry_tags"> 27061 <li><a href="#tag_V1">V1</a></li> 27062 <li><a href="#tag_RAW">RAW</a></li> 27063 </ul> 27064 </td> 27065 27066 </tr> 27067 <tr class="entries_header"> 27068 <th class="th_details" colspan="6">Details</th> 27069 </tr> 27070 <tr class="entry_cont"> 27071 <td class="entry_details" colspan="6"> 27072 <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/> 27073If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 27074 </td> 27075 </tr> 27076 27077 27078 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27079 <!-- end of entry --> 27080 27081 27082 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 27083 <td class="entry_name 27084 " rowspan="5"> 27085 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 27086 </td> 27087 <td class="entry_type"> 27088 <span class="entry_type_name">int32</span> 27089 <span class="entry_type_container">x</span> 27090 27091 <span class="entry_type_array"> 27092 2 x n 27093 </span> 27094 <span class="entry_type_visibility"> [public as point]</span> 27095 27096 27097 27098 27099 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 27100 27101 27102 </td> <!-- entry_type --> 27103 27104 <td class="entry_description"> 27105 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 27106 </td> 27107 27108 <td class="entry_units"> 27109 </td> 27110 27111 <td class="entry_range"> 27112 <p>n <= number of pixels on the sensor.<wbr/> 27113The <code>(x,<wbr/> y)</code> coordinates must be bounded by 27114<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 27115 </td> 27116 27117 <td class="entry_hal_version"> 27118 <p>3.<wbr/>2</p> 27119 </td> 27120 27121 <td class="entry_tags"> 27122 <ul class="entry_tags"> 27123 <li><a href="#tag_V1">V1</a></li> 27124 <li><a href="#tag_RAW">RAW</a></li> 27125 </ul> 27126 </td> 27127 27128 </tr> 27129 <tr class="entries_header"> 27130 <th class="th_details" colspan="6">Details</th> 27131 </tr> 27132 <tr class="entry_cont"> 27133 <td class="entry_details" colspan="6"> 27134 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 27135<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 27136bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 27137height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 27138This may include hot pixels that lie outside of the active array 27139bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 27140 </td> 27141 </tr> 27142 27143 <tr class="entries_header"> 27144 <th class="th_details" colspan="6">HAL Implementation Details</th> 27145 </tr> 27146 <tr class="entry_cont"> 27147 <td class="entry_details" colspan="6"> 27148 <p>A hotpixel map contains the coordinates of pixels on the camera 27149sensor that do report valid values (usually due to defects in 27150the camera sensor).<wbr/> This includes pixels that are stuck at certain 27151values,<wbr/> or have a response that does not accuractly encode the 27152incoming light from the scene.<wbr/></p> 27153<p>To avoid performance issues,<wbr/> there should be significantly fewer hot 27154pixels than actual pixels on the camera sensor.<wbr/></p> 27155 </td> 27156 </tr> 27157 27158 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27159 <!-- end of entry --> 27160 27161 27162 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> 27163 <td class="entry_name 27164 " rowspan="3"> 27165 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 27166 </td> 27167 <td class="entry_type"> 27168 <span class="entry_type_name entry_type_name_enum">byte</span> 27169 27170 <span class="entry_type_visibility"> [public]</span> 27171 27172 27173 <span class="entry_type_hwlevel">[full] </span> 27174 27175 27176 27177 <ul class="entry_type_enum"> 27178 <li> 27179 <span class="entry_type_enum_name">OFF (v3.2)</span> 27180 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 27181 </li> 27182 <li> 27183 <span class="entry_type_enum_name">ON (v3.2)</span> 27184 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 27185 </li> 27186 </ul> 27187 27188 </td> <!-- entry_type --> 27189 27190 <td class="entry_description"> 27191 <p>Whether the camera device will output the lens 27192shading map in output result metadata.<wbr/></p> 27193 </td> 27194 27195 <td class="entry_units"> 27196 </td> 27197 27198 <td class="entry_range"> 27199 <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> 27200 </td> 27201 27202 <td class="entry_hal_version"> 27203 <p>3.<wbr/>2</p> 27204 </td> 27205 27206 <td class="entry_tags"> 27207 <ul class="entry_tags"> 27208 <li><a href="#tag_RAW">RAW</a></li> 27209 </ul> 27210 </td> 27211 27212 </tr> 27213 <tr class="entries_header"> 27214 <th class="th_details" colspan="6">Details</th> 27215 </tr> 27216 <tr class="entry_cont"> 27217 <td class="entry_details" colspan="6"> 27218 <p>When set to ON,<wbr/> 27219<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 27220the output result metadata.<wbr/></p> 27221<p>ON is always supported on devices with the RAW capability.<wbr/></p> 27222 </td> 27223 </tr> 27224 27225 27226 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27227 <!-- end of entry --> 27228 27229 27230 <tr class="entry" id="dynamic_android.statistics.oisDataMode"> 27231 <td class="entry_name 27232 " rowspan="3"> 27233 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode 27234 </td> 27235 <td class="entry_type"> 27236 <span class="entry_type_name entry_type_name_enum">byte</span> 27237 27238 <span class="entry_type_visibility"> [public]</span> 27239 27240 27241 27242 27243 27244 <ul class="entry_type_enum"> 27245 <li> 27246 <span class="entry_type_enum_name">OFF (v3.3)</span> 27247 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span> 27248 </li> 27249 <li> 27250 <span class="entry_type_enum_name">ON (v3.3)</span> 27251 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span> 27252 </li> 27253 </ul> 27254 27255 </td> <!-- entry_type --> 27256 27257 <td class="entry_description"> 27258 <p>A control for selecting whether optical stabilization (OIS) position 27259information is included in output result metadata.<wbr/></p> 27260 </td> 27261 27262 <td class="entry_units"> 27263 </td> 27264 27265 <td class="entry_range"> 27266 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p> 27267 </td> 27268 27269 <td class="entry_hal_version"> 27270 <p>3.<wbr/>3</p> 27271 </td> 27272 27273 <td class="entry_tags"> 27274 </td> 27275 27276 </tr> 27277 <tr class="entries_header"> 27278 <th class="th_details" colspan="6">Details</th> 27279 </tr> 27280 <tr class="entry_cont"> 27281 <td class="entry_details" colspan="6"> 27282 <p>Since optical image stabilization generally involves motion much faster than the duration 27283of individualq image exposure,<wbr/> multiple OIS samples can be included for a single capture 27284result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating 27285at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined 27286with the rolling shutter skew to account for lens motion during image exposure in 27287post-processing algorithms.<wbr/></p> 27288 </td> 27289 </tr> 27290 27291 27292 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27293 <!-- end of entry --> 27294 27295 27296 <tr class="entry" id="dynamic_android.statistics.oisTimestamps"> 27297 <td class="entry_name 27298 " rowspan="3"> 27299 android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps 27300 </td> 27301 <td class="entry_type"> 27302 <span class="entry_type_name">int64</span> 27303 <span class="entry_type_container">x</span> 27304 27305 <span class="entry_type_array"> 27306 n 27307 </span> 27308 <span class="entry_type_visibility"> [ndk_public]</span> 27309 27310 27311 27312 27313 27314 27315 </td> <!-- entry_type --> 27316 27317 <td class="entry_description"> 27318 <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p> 27319 </td> 27320 27321 <td class="entry_units"> 27322 nanoseconds 27323 </td> 27324 27325 <td class="entry_range"> 27326 </td> 27327 27328 <td class="entry_hal_version"> 27329 <p>3.<wbr/>3</p> 27330 </td> 27331 27332 <td class="entry_tags"> 27333 </td> 27334 27335 </tr> 27336 <tr class="entries_header"> 27337 <th class="th_details" colspan="6">Details</th> 27338 </tr> 27339 <tr class="entry_cont"> 27340 <td class="entry_details" colspan="6"> 27341 <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same 27342timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p> 27343 </td> 27344 </tr> 27345 27346 27347 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27348 <!-- end of entry --> 27349 27350 27351 <tr class="entry" id="dynamic_android.statistics.oisXShifts"> 27352 <td class="entry_name 27353 " rowspan="3"> 27354 android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts 27355 </td> 27356 <td class="entry_type"> 27357 <span class="entry_type_name">float</span> 27358 <span class="entry_type_container">x</span> 27359 27360 <span class="entry_type_array"> 27361 n 27362 </span> 27363 <span class="entry_type_visibility"> [ndk_public]</span> 27364 27365 27366 27367 27368 27369 27370 </td> <!-- entry_type --> 27371 27372 <td class="entry_description"> 27373 <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p> 27374 </td> 27375 27376 <td class="entry_units"> 27377 Pixels in active array.<wbr/> 27378 </td> 27379 27380 <td class="entry_range"> 27381 </td> 27382 27383 <td class="entry_hal_version"> 27384 <p>3.<wbr/>3</p> 27385 </td> 27386 27387 <td class="entry_tags"> 27388 </td> 27389 27390 </tr> 27391 <tr class="entries_header"> 27392 <th class="th_details" colspan="6">Details</th> 27393 </tr> 27394 <tr class="entry_cont"> 27395 <td class="entry_details" colspan="6"> 27396 <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/> 27397A positive value is a shift from left to right in the pre-correction active array 27398coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in pre-correction 27399active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p> 27400<p>The number of shifts must match the number of timestamps in 27401<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p> 27402<p>The OIS samples are not affected by whether lens distortion correction is enabled (on 27403supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/> 27404since the scaling of OIS shifts would depend on the specific spot on the sensor the shift 27405is needed.<wbr/></p> 27406 </td> 27407 </tr> 27408 27409 27410 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27411 <!-- end of entry --> 27412 27413 27414 <tr class="entry" id="dynamic_android.statistics.oisYShifts"> 27415 <td class="entry_name 27416 " rowspan="3"> 27417 android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts 27418 </td> 27419 <td class="entry_type"> 27420 <span class="entry_type_name">float</span> 27421 <span class="entry_type_container">x</span> 27422 27423 <span class="entry_type_array"> 27424 n 27425 </span> 27426 <span class="entry_type_visibility"> [ndk_public]</span> 27427 27428 27429 27430 27431 27432 27433 </td> <!-- entry_type --> 27434 27435 <td class="entry_description"> 27436 <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p> 27437 </td> 27438 27439 <td class="entry_units"> 27440 Pixels in active array.<wbr/> 27441 </td> 27442 27443 <td class="entry_range"> 27444 </td> 27445 27446 <td class="entry_hal_version"> 27447 <p>3.<wbr/>3</p> 27448 </td> 27449 27450 <td class="entry_tags"> 27451 </td> 27452 27453 </tr> 27454 <tr class="entries_header"> 27455 <th class="th_details" colspan="6">Details</th> 27456 </tr> 27457 <tr class="entry_cont"> 27458 <td class="entry_details" colspan="6"> 27459 <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/> 27460A positive value is a shift from top to bottom in pre-correction active array coordinate 27461system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a 27462shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p> 27463<p>The number of shifts must match the number of timestamps in 27464<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p> 27465<p>The OIS samples are not affected by whether lens distortion correction is enabled (on 27466supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/> 27467since the scaling of OIS shifts would depend on the specific spot on the sensor the shift 27468is needed.<wbr/></p> 27469 </td> 27470 </tr> 27471 27472 27473 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27474 <!-- end of entry --> 27475 27476 27477 <tr class="entry" id="dynamic_android.statistics.oisSamples"> 27478 <td class="entry_name 27479 " rowspan="3"> 27480 android.<wbr/>statistics.<wbr/>ois<wbr/>Samples 27481 </td> 27482 <td class="entry_type"> 27483 <span class="entry_type_name">float</span> 27484 <span class="entry_type_container">x</span> 27485 27486 <span class="entry_type_array"> 27487 n 27488 </span> 27489 <span class="entry_type_visibility"> [java_public as oisSample]</span> 27490 27491 <span class="entry_type_synthetic">[synthetic] </span> 27492 27493 27494 27495 27496 27497 </td> <!-- entry_type --> 27498 27499 <td class="entry_description"> 27500 <p>An array of optical stabilization (OIS) position samples.<wbr/></p> 27501 </td> 27502 27503 <td class="entry_units"> 27504 </td> 27505 27506 <td class="entry_range"> 27507 </td> 27508 27509 <td class="entry_hal_version"> 27510 <p>3.<wbr/>3</p> 27511 </td> 27512 27513 <td class="entry_tags"> 27514 </td> 27515 27516 </tr> 27517 <tr class="entries_header"> 27518 <th class="th_details" colspan="6">Details</th> 27519 </tr> 27520 <tr class="entry_cont"> 27521 <td class="entry_details" colspan="6"> 27522 <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/> 27523in pixels,<wbr/> of the OIS sample.<wbr/></p> 27524<p>A positive value for a shift in x direction is a shift from left to right in the 27525pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is 27526(1000,<wbr/> 500) in pre-correction active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new 27527optical center at (1003,<wbr/> 500).<wbr/></p> 27528<p>A positive value for a shift in y direction is a shift from top to bottom in 27529pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is 27530(1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at 27531(1000,<wbr/> 505).<wbr/></p> 27532<p>The OIS samples are not affected by whether lens distortion correction is enabled (on 27533supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/> 27534since the scaling of OIS shifts would depend on the specific spot on the sensor the shift 27535is needed.<wbr/></p> 27536 </td> 27537 </tr> 27538 27539 27540 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27541 <!-- end of entry --> 27542 27543 27544 27545 <!-- end of kind --> 27546 </tbody> 27547 27548 <!-- end of section --> 27549 <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr> 27550 27551 27552 <tr><td colspan="7" class="kind">controls</td></tr> 27553 27554 <thead class="entries_header"> 27555 <tr> 27556 <th class="th_name">Property Name</th> 27557 <th class="th_type">Type</th> 27558 <th class="th_description">Description</th> 27559 <th class="th_units">Units</th> 27560 <th class="th_range">Range</th> 27561 <th class="th_hal_version">Initial HIDL HAL version</th> 27562 <th class="th_tags">Tags</th> 27563 </tr> 27564 </thead> 27565 27566 <tbody> 27567 27568 27569 27570 27571 27572 27573 27574 27575 27576 27577 <tr class="entry" id="controls_android.tonemap.curveBlue"> 27578 <td class="entry_name 27579 " rowspan="3"> 27580 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 27581 </td> 27582 <td class="entry_type"> 27583 <span class="entry_type_name">float</span> 27584 <span class="entry_type_container">x</span> 27585 27586 <span class="entry_type_array"> 27587 n x 2 27588 </span> 27589 <span class="entry_type_visibility"> [ndk_public]</span> 27590 27591 27592 <span class="entry_type_hwlevel">[full] </span> 27593 27594 27595 <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> 27596 27597 27598 </td> <!-- entry_type --> 27599 27600 <td class="entry_description"> 27601 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 27602channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27603CONTRAST_<wbr/>CURVE.<wbr/></p> 27604 </td> 27605 27606 <td class="entry_units"> 27607 </td> 27608 27609 <td class="entry_range"> 27610 </td> 27611 27612 <td class="entry_hal_version"> 27613 <p>3.<wbr/>2</p> 27614 </td> 27615 27616 <td class="entry_tags"> 27617 </td> 27618 27619 </tr> 27620 <tr class="entries_header"> 27621 <th class="th_details" colspan="6">Details</th> 27622 </tr> 27623 <tr class="entry_cont"> 27624 <td class="entry_details" colspan="6"> 27625 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 27626 </td> 27627 </tr> 27628 27629 27630 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27631 <!-- end of entry --> 27632 27633 27634 <tr class="entry" id="controls_android.tonemap.curveGreen"> 27635 <td class="entry_name 27636 " rowspan="3"> 27637 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 27638 </td> 27639 <td class="entry_type"> 27640 <span class="entry_type_name">float</span> 27641 <span class="entry_type_container">x</span> 27642 27643 <span class="entry_type_array"> 27644 n x 2 27645 </span> 27646 <span class="entry_type_visibility"> [ndk_public]</span> 27647 27648 27649 <span class="entry_type_hwlevel">[full] </span> 27650 27651 27652 <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> 27653 27654 27655 </td> <!-- entry_type --> 27656 27657 <td class="entry_description"> 27658 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 27659channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27660CONTRAST_<wbr/>CURVE.<wbr/></p> 27661 </td> 27662 27663 <td class="entry_units"> 27664 </td> 27665 27666 <td class="entry_range"> 27667 </td> 27668 27669 <td class="entry_hal_version"> 27670 <p>3.<wbr/>2</p> 27671 </td> 27672 27673 <td class="entry_tags"> 27674 </td> 27675 27676 </tr> 27677 <tr class="entries_header"> 27678 <th class="th_details" colspan="6">Details</th> 27679 </tr> 27680 <tr class="entry_cont"> 27681 <td class="entry_details" colspan="6"> 27682 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 27683 </td> 27684 </tr> 27685 27686 27687 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27688 <!-- end of entry --> 27689 27690 27691 <tr class="entry" id="controls_android.tonemap.curveRed"> 27692 <td class="entry_name 27693 " rowspan="5"> 27694 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 27695 </td> 27696 <td class="entry_type"> 27697 <span class="entry_type_name">float</span> 27698 <span class="entry_type_container">x</span> 27699 27700 <span class="entry_type_array"> 27701 n x 2 27702 </span> 27703 <span class="entry_type_visibility"> [ndk_public]</span> 27704 27705 27706 <span class="entry_type_hwlevel">[full] </span> 27707 27708 27709 <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> 27710 27711 27712 </td> <!-- entry_type --> 27713 27714 <td class="entry_description"> 27715 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 27716channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27717CONTRAST_<wbr/>CURVE.<wbr/></p> 27718 </td> 27719 27720 <td class="entry_units"> 27721 </td> 27722 27723 <td class="entry_range"> 27724 <p>0-1 on both input and output coordinates,<wbr/> normalized 27725as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 27726 </td> 27727 27728 <td class="entry_hal_version"> 27729 <p>3.<wbr/>2</p> 27730 </td> 27731 27732 <td class="entry_tags"> 27733 </td> 27734 27735 </tr> 27736 <tr class="entries_header"> 27737 <th class="th_details" colspan="6">Details</th> 27738 </tr> 27739 <tr class="entry_cont"> 27740 <td class="entry_details" colspan="6"> 27741 <p>Each channel's curve is defined by an array of control points:</p> 27742<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 27743 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 277442 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 27745<p>These are sorted in order of increasing <code>Pin</code>; it is 27746required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 27747define a complete mapping.<wbr/> For input values between control points,<wbr/> 27748the camera device must linearly interpolate between the control 27749points.<wbr/></p> 27750<p>Each curve can have an independent number of points,<wbr/> and the number 27751of points can be less than max (that is,<wbr/> the request doesn't have to 27752always provide a curve with number of points equivalent to 27753<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 27754<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of 27755control points.<wbr/></p> 27756<p>A few examples,<wbr/> and their corresponding graphical mappings; these 27757only specify the red channel and the precision is limited to 4 27758digits,<wbr/> for conciseness.<wbr/></p> 27759<p>Linear mapping:</p> 27760<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 ] 27761</code></pre> 27762<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 27763<p>Invert mapping:</p> 27764<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 ] 27765</code></pre> 27766<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 27767<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 27768<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 27769 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/> 27770 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/> 27771 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/> 27772 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 ] 27773</code></pre> 27774<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 27775<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 27776<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 27777 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/> 27778 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/> 27779 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/> 27780 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 ] 27781</code></pre> 27782<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 27783 </td> 27784 </tr> 27785 27786 <tr class="entries_header"> 27787 <th class="th_details" colspan="6">HAL Implementation Details</th> 27788 </tr> 27789 <tr class="entry_cont"> 27790 <td class="entry_details" colspan="6"> 27791 <p>For good quality of mapping,<wbr/> at least 128 control points are 27792preferred.<wbr/></p> 27793<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 27794control points used as are available.<wbr/></p> 27795 </td> 27796 </tr> 27797 27798 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27799 <!-- end of entry --> 27800 27801 27802 <tr class="entry" id="controls_android.tonemap.curve"> 27803 <td class="entry_name 27804 " rowspan="5"> 27805 android.<wbr/>tonemap.<wbr/>curve 27806 </td> 27807 <td class="entry_type"> 27808 <span class="entry_type_name">float</span> 27809 27810 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span> 27811 27812 <span class="entry_type_synthetic">[synthetic] </span> 27813 27814 <span class="entry_type_hwlevel">[full] </span> 27815 27816 27817 27818 27819 </td> <!-- entry_type --> 27820 27821 <td class="entry_description"> 27822 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 27823is CONTRAST_<wbr/>CURVE.<wbr/></p> 27824 </td> 27825 27826 <td class="entry_units"> 27827 </td> 27828 27829 <td class="entry_range"> 27830 </td> 27831 27832 <td class="entry_hal_version"> 27833 <p>3.<wbr/>2</p> 27834 </td> 27835 27836 <td class="entry_tags"> 27837 </td> 27838 27839 </tr> 27840 <tr class="entries_header"> 27841 <th class="th_details" colspan="6">Details</th> 27842 </tr> 27843 <tr class="entry_cont"> 27844 <td class="entry_details" colspan="6"> 27845 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 27846channels respectively.<wbr/> The following example uses the red channel as an 27847example.<wbr/> The same logic applies to green and blue channel.<wbr/> 27848Each channel's curve is defined by an array of control points:</p> 27849<pre><code>curveRed = 27850 [ 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) ] 278512 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 27852<p>These are sorted in order of increasing <code>Pin</code>; it is always 27853guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 27854define a complete mapping.<wbr/> For input values between control points,<wbr/> 27855the camera device must linearly interpolate between the control 27856points.<wbr/></p> 27857<p>Each curve can have an independent number of points,<wbr/> and the number 27858of points can be less than max (that is,<wbr/> the request doesn't have to 27859always provide a curve with number of points equivalent to 27860<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 27861<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of 27862control points.<wbr/></p> 27863<p>A few examples,<wbr/> and their corresponding graphical mappings; these 27864only specify the red channel and the precision is limited to 4 27865digits,<wbr/> for conciseness.<wbr/></p> 27866<p>Linear mapping:</p> 27867<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 27868</code></pre> 27869<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 27870<p>Invert mapping:</p> 27871<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 27872</code></pre> 27873<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 27874<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 27875<pre><code>curveRed = [ 27876 (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/> 27877 (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/> 27878 (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/> 27879 (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) ] 27880</code></pre> 27881<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 27882<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 27883<pre><code>curveRed = [ 27884 (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/> 27885 (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/> 27886 (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/> 27887 (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) ] 27888</code></pre> 27889<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 27890 </td> 27891 </tr> 27892 27893 <tr class="entries_header"> 27894 <th class="th_details" colspan="6">HAL Implementation Details</th> 27895 </tr> 27896 <tr class="entry_cont"> 27897 <td class="entry_details" colspan="6"> 27898 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 27899curveBlue entries.<wbr/></p> 27900 </td> 27901 </tr> 27902 27903 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27904 <!-- end of entry --> 27905 27906 27907 <tr class="entry" id="controls_android.tonemap.mode"> 27908 <td class="entry_name 27909 " rowspan="3"> 27910 android.<wbr/>tonemap.<wbr/>mode 27911 </td> 27912 <td class="entry_type"> 27913 <span class="entry_type_name entry_type_name_enum">byte</span> 27914 27915 <span class="entry_type_visibility"> [public]</span> 27916 27917 27918 <span class="entry_type_hwlevel">[full] </span> 27919 27920 27921 27922 <ul class="entry_type_enum"> 27923 <li> 27924 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span> 27925 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 27926the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 27927<p>All color enhancement and tonemapping must be disabled,<wbr/> except 27928for applying the tonemapping curve specified by 27929<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 27930<p>Must not slow down frame rate relative to raw 27931sensor output.<wbr/></p></span> 27932 </li> 27933 <li> 27934 <span class="entry_type_enum_name">FAST (v3.2)</span> 27935 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 27936reducing frame rate compared to raw sensor output.<wbr/></p></span> 27937 </li> 27938 <li> 27939 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 27940 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 27941the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 27942 </li> 27943 <li> 27944 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span> 27945 <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 27946tonemapping.<wbr/></p> 27947<p>All color enhancement and tonemapping must be disabled,<wbr/> except 27948for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 27949<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 27950 </li> 27951 <li> 27952 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span> 27953 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 27954<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 27955<p>All color enhancement and tonemapping must be disabled,<wbr/> except 27956for applying the tonemapping curve specified by 27957<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 27958<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 27959 </li> 27960 </ul> 27961 27962 </td> <!-- entry_type --> 27963 27964 <td class="entry_description"> 27965 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 27966 </td> 27967 27968 <td class="entry_units"> 27969 </td> 27970 27971 <td class="entry_range"> 27972 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 27973 </td> 27974 27975 <td class="entry_hal_version"> 27976 <p>3.<wbr/>2</p> 27977 </td> 27978 27979 <td class="entry_tags"> 27980 </td> 27981 27982 </tr> 27983 <tr class="entries_header"> 27984 <th class="th_details" colspan="6">Details</th> 27985 </tr> 27986 <tr class="entry_cont"> 27987 <td class="entry_details" colspan="6"> 27988 <p>When switching to an application-defined contrast curve by setting 27989<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 27990per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 27991mapping from input high-bit-depth pixel value to the output 27992low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 27993and output may change depending on the camera pipeline,<wbr/> the values 27994are specified by normalized floating-point numbers.<wbr/></p> 27995<p>More-complex color mapping operations such as 3D color look-up 27996tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 27997transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27998CONTRAST_<wbr/>CURVE.<wbr/></p> 27999<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 28000emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 28001These values are always available,<wbr/> and as close as possible to the 28002actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 28003<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 28004provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 28005roughly the same.<wbr/></p> 28006 </td> 28007 </tr> 28008 28009 28010 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28011 <!-- end of entry --> 28012 28013 28014 <tr class="entry" id="controls_android.tonemap.gamma"> 28015 <td class="entry_name 28016 " rowspan="3"> 28017 android.<wbr/>tonemap.<wbr/>gamma 28018 </td> 28019 <td class="entry_type"> 28020 <span class="entry_type_name">float</span> 28021 28022 <span class="entry_type_visibility"> [public]</span> 28023 28024 28025 28026 28027 28028 28029 </td> <!-- entry_type --> 28030 28031 <td class="entry_description"> 28032 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 28033GAMMA_<wbr/>VALUE</p> 28034 </td> 28035 28036 <td class="entry_units"> 28037 </td> 28038 28039 <td class="entry_range"> 28040 </td> 28041 28042 <td class="entry_hal_version"> 28043 <p>3.<wbr/>2</p> 28044 </td> 28045 28046 <td class="entry_tags"> 28047 </td> 28048 28049 </tr> 28050 <tr class="entries_header"> 28051 <th class="th_details" colspan="6">Details</th> 28052 </tr> 28053 <tr class="entry_cont"> 28054 <td class="entry_details" colspan="6"> 28055 <p>The tonemap curve will be defined the following formula: 28056* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 28057where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 28058pow is the power function and gamma is the gamma value specified by this 28059key.<wbr/></p> 28060<p>The same curve will be applied to all color channels.<wbr/> The camera device 28061may clip the input gamma value to its supported range.<wbr/> The actual applied 28062value will be returned in capture result.<wbr/></p> 28063<p>The valid range of gamma value varies on different devices,<wbr/> but values 28064within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 28065 </td> 28066 </tr> 28067 28068 28069 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28070 <!-- end of entry --> 28071 28072 28073 <tr class="entry" id="controls_android.tonemap.presetCurve"> 28074 <td class="entry_name 28075 " rowspan="3"> 28076 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 28077 </td> 28078 <td class="entry_type"> 28079 <span class="entry_type_name entry_type_name_enum">byte</span> 28080 28081 <span class="entry_type_visibility"> [public]</span> 28082 28083 28084 28085 28086 28087 <ul class="entry_type_enum"> 28088 <li> 28089 <span class="entry_type_enum_name">SRGB (v3.2)</span> 28090 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 28091 </li> 28092 <li> 28093 <span class="entry_type_enum_name">REC709 (v3.2)</span> 28094 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 28095 </li> 28096 </ul> 28097 28098 </td> <!-- entry_type --> 28099 28100 <td class="entry_description"> 28101 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 28102PRESET_<wbr/>CURVE</p> 28103 </td> 28104 28105 <td class="entry_units"> 28106 </td> 28107 28108 <td class="entry_range"> 28109 </td> 28110 28111 <td class="entry_hal_version"> 28112 <p>3.<wbr/>2</p> 28113 </td> 28114 28115 <td class="entry_tags"> 28116 </td> 28117 28118 </tr> 28119 <tr class="entries_header"> 28120 <th class="th_details" colspan="6">Details</th> 28121 </tr> 28122 <tr class="entry_cont"> 28123 <td class="entry_details" colspan="6"> 28124 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 28125<p>sRGB (approximated by 16 control points):</p> 28126<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 28127<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 28128<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 28129<p>Note that above figures show a 16 control points approximation of preset 28130curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 28131 </td> 28132 </tr> 28133 28134 28135 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28136 <!-- end of entry --> 28137 28138 28139 28140 <!-- end of kind --> 28141 </tbody> 28142 <tr><td colspan="7" class="kind">static</td></tr> 28143 28144 <thead class="entries_header"> 28145 <tr> 28146 <th class="th_name">Property Name</th> 28147 <th class="th_type">Type</th> 28148 <th class="th_description">Description</th> 28149 <th class="th_units">Units</th> 28150 <th class="th_range">Range</th> 28151 <th class="th_hal_version">Initial HIDL HAL version</th> 28152 <th class="th_tags">Tags</th> 28153 </tr> 28154 </thead> 28155 28156 <tbody> 28157 28158 28159 28160 28161 28162 28163 28164 28165 28166 28167 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 28168 <td class="entry_name 28169 " rowspan="5"> 28170 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 28171 </td> 28172 <td class="entry_type"> 28173 <span class="entry_type_name">int32</span> 28174 28175 <span class="entry_type_visibility"> [public]</span> 28176 28177 28178 <span class="entry_type_hwlevel">[full] </span> 28179 28180 28181 28182 28183 </td> <!-- entry_type --> 28184 28185 <td class="entry_description"> 28186 <p>Maximum number of supported points in the 28187tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 28188 </td> 28189 28190 <td class="entry_units"> 28191 </td> 28192 28193 <td class="entry_range"> 28194 </td> 28195 28196 <td class="entry_hal_version"> 28197 <p>3.<wbr/>2</p> 28198 </td> 28199 28200 <td class="entry_tags"> 28201 </td> 28202 28203 </tr> 28204 <tr class="entries_header"> 28205 <th class="th_details" colspan="6">Details</th> 28206 </tr> 28207 <tr class="entry_cont"> 28208 <td class="entry_details" colspan="6"> 28209 <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 28210less than this maximum,<wbr/> the camera device will resample the curve to its internal 28211representation,<wbr/> using linear interpolation.<wbr/></p> 28212<p>The output curves in the result metadata may have a different number 28213of points than the input curves,<wbr/> and will represent the actual 28214hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 28215 </td> 28216 </tr> 28217 28218 <tr class="entries_header"> 28219 <th class="th_details" colspan="6">HAL Implementation Details</th> 28220 </tr> 28221 <tr class="entry_cont"> 28222 <td class="entry_details" colspan="6"> 28223 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 28224 </td> 28225 </tr> 28226 28227 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28228 <!-- end of entry --> 28229 28230 28231 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 28232 <td class="entry_name 28233 " rowspan="5"> 28234 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 28235 </td> 28236 <td class="entry_type"> 28237 <span class="entry_type_name">byte</span> 28238 <span class="entry_type_container">x</span> 28239 28240 <span class="entry_type_array"> 28241 n 28242 </span> 28243 <span class="entry_type_visibility"> [public as enumList]</span> 28244 28245 28246 <span class="entry_type_hwlevel">[full] </span> 28247 28248 28249 <div class="entry_type_notes">list of enums</div> 28250 28251 28252 </td> <!-- entry_type --> 28253 28254 <td class="entry_description"> 28255 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera 28256device.<wbr/></p> 28257 </td> 28258 28259 <td class="entry_units"> 28260 </td> 28261 28262 <td class="entry_range"> 28263 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p> 28264 </td> 28265 28266 <td class="entry_hal_version"> 28267 <p>3.<wbr/>2</p> 28268 </td> 28269 28270 <td class="entry_tags"> 28271 </td> 28272 28273 </tr> 28274 <tr class="entries_header"> 28275 <th class="th_details" colspan="6">Details</th> 28276 </tr> 28277 <tr class="entry_cont"> 28278 <td class="entry_details" colspan="6"> 28279 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain 28280at least one of below mode combinations:</p> 28281<ul> 28282<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 28283<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 28284</ul> 28285<p>This includes all FULL level devices.<wbr/></p> 28286 </td> 28287 </tr> 28288 28289 <tr class="entries_header"> 28290 <th class="th_details" colspan="6">HAL Implementation Details</th> 28291 </tr> 28292 <tr class="entry_cont"> 28293 <td class="entry_details" colspan="6"> 28294 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available 28295on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 28296That is,<wbr/> if the highest quality implementation on the camera device does not slow down 28297capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 28298 </td> 28299 </tr> 28300 28301 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28302 <!-- end of entry --> 28303 28304 28305 28306 <!-- end of kind --> 28307 </tbody> 28308 <tr><td colspan="7" class="kind">dynamic</td></tr> 28309 28310 <thead class="entries_header"> 28311 <tr> 28312 <th class="th_name">Property Name</th> 28313 <th class="th_type">Type</th> 28314 <th class="th_description">Description</th> 28315 <th class="th_units">Units</th> 28316 <th class="th_range">Range</th> 28317 <th class="th_hal_version">Initial HIDL HAL version</th> 28318 <th class="th_tags">Tags</th> 28319 </tr> 28320 </thead> 28321 28322 <tbody> 28323 28324 28325 28326 28327 28328 28329 28330 28331 28332 28333 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 28334 <td class="entry_name 28335 " rowspan="3"> 28336 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 28337 </td> 28338 <td class="entry_type"> 28339 <span class="entry_type_name">float</span> 28340 <span class="entry_type_container">x</span> 28341 28342 <span class="entry_type_array"> 28343 n x 2 28344 </span> 28345 <span class="entry_type_visibility"> [ndk_public]</span> 28346 28347 28348 <span class="entry_type_hwlevel">[full] </span> 28349 28350 28351 <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> 28352 28353 28354 </td> <!-- entry_type --> 28355 28356 <td class="entry_description"> 28357 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 28358channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 28359CONTRAST_<wbr/>CURVE.<wbr/></p> 28360 </td> 28361 28362 <td class="entry_units"> 28363 </td> 28364 28365 <td class="entry_range"> 28366 </td> 28367 28368 <td class="entry_hal_version"> 28369 <p>3.<wbr/>2</p> 28370 </td> 28371 28372 <td class="entry_tags"> 28373 </td> 28374 28375 </tr> 28376 <tr class="entries_header"> 28377 <th class="th_details" colspan="6">Details</th> 28378 </tr> 28379 <tr class="entry_cont"> 28380 <td class="entry_details" colspan="6"> 28381 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 28382 </td> 28383 </tr> 28384 28385 28386 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28387 <!-- end of entry --> 28388 28389 28390 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 28391 <td class="entry_name 28392 " rowspan="3"> 28393 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 28394 </td> 28395 <td class="entry_type"> 28396 <span class="entry_type_name">float</span> 28397 <span class="entry_type_container">x</span> 28398 28399 <span class="entry_type_array"> 28400 n x 2 28401 </span> 28402 <span class="entry_type_visibility"> [ndk_public]</span> 28403 28404 28405 <span class="entry_type_hwlevel">[full] </span> 28406 28407 28408 <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> 28409 28410 28411 </td> <!-- entry_type --> 28412 28413 <td class="entry_description"> 28414 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 28415channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 28416CONTRAST_<wbr/>CURVE.<wbr/></p> 28417 </td> 28418 28419 <td class="entry_units"> 28420 </td> 28421 28422 <td class="entry_range"> 28423 </td> 28424 28425 <td class="entry_hal_version"> 28426 <p>3.<wbr/>2</p> 28427 </td> 28428 28429 <td class="entry_tags"> 28430 </td> 28431 28432 </tr> 28433 <tr class="entries_header"> 28434 <th class="th_details" colspan="6">Details</th> 28435 </tr> 28436 <tr class="entry_cont"> 28437 <td class="entry_details" colspan="6"> 28438 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 28439 </td> 28440 </tr> 28441 28442 28443 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28444 <!-- end of entry --> 28445 28446 28447 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 28448 <td class="entry_name 28449 " rowspan="5"> 28450 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 28451 </td> 28452 <td class="entry_type"> 28453 <span class="entry_type_name">float</span> 28454 <span class="entry_type_container">x</span> 28455 28456 <span class="entry_type_array"> 28457 n x 2 28458 </span> 28459 <span class="entry_type_visibility"> [ndk_public]</span> 28460 28461 28462 <span class="entry_type_hwlevel">[full] </span> 28463 28464 28465 <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> 28466 28467 28468 </td> <!-- entry_type --> 28469 28470 <td class="entry_description"> 28471 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 28472channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 28473CONTRAST_<wbr/>CURVE.<wbr/></p> 28474 </td> 28475 28476 <td class="entry_units"> 28477 </td> 28478 28479 <td class="entry_range"> 28480 <p>0-1 on both input and output coordinates,<wbr/> normalized 28481as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 28482 </td> 28483 28484 <td class="entry_hal_version"> 28485 <p>3.<wbr/>2</p> 28486 </td> 28487 28488 <td class="entry_tags"> 28489 </td> 28490 28491 </tr> 28492 <tr class="entries_header"> 28493 <th class="th_details" colspan="6">Details</th> 28494 </tr> 28495 <tr class="entry_cont"> 28496 <td class="entry_details" colspan="6"> 28497 <p>Each channel's curve is defined by an array of control points:</p> 28498<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 28499 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 285002 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 28501<p>These are sorted in order of increasing <code>Pin</code>; it is 28502required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 28503define a complete mapping.<wbr/> For input values between control points,<wbr/> 28504the camera device must linearly interpolate between the control 28505points.<wbr/></p> 28506<p>Each curve can have an independent number of points,<wbr/> and the number 28507of points can be less than max (that is,<wbr/> the request doesn't have to 28508always provide a curve with number of points equivalent to 28509<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 28510<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of 28511control points.<wbr/></p> 28512<p>A few examples,<wbr/> and their corresponding graphical mappings; these 28513only specify the red channel and the precision is limited to 4 28514digits,<wbr/> for conciseness.<wbr/></p> 28515<p>Linear mapping:</p> 28516<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 ] 28517</code></pre> 28518<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 28519<p>Invert mapping:</p> 28520<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 ] 28521</code></pre> 28522<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 28523<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 28524<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 28525 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/> 28526 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/> 28527 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/> 28528 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 ] 28529</code></pre> 28530<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 28531<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 28532<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 28533 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/> 28534 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/> 28535 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/> 28536 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 ] 28537</code></pre> 28538<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 28539 </td> 28540 </tr> 28541 28542 <tr class="entries_header"> 28543 <th class="th_details" colspan="6">HAL Implementation Details</th> 28544 </tr> 28545 <tr class="entry_cont"> 28546 <td class="entry_details" colspan="6"> 28547 <p>For good quality of mapping,<wbr/> at least 128 control points are 28548preferred.<wbr/></p> 28549<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 28550control points used as are available.<wbr/></p> 28551 </td> 28552 </tr> 28553 28554 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28555 <!-- end of entry --> 28556 28557 28558 <tr class="entry" id="dynamic_android.tonemap.curve"> 28559 <td class="entry_name 28560 " rowspan="5"> 28561 android.<wbr/>tonemap.<wbr/>curve 28562 </td> 28563 <td class="entry_type"> 28564 <span class="entry_type_name">float</span> 28565 28566 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span> 28567 28568 <span class="entry_type_synthetic">[synthetic] </span> 28569 28570 <span class="entry_type_hwlevel">[full] </span> 28571 28572 28573 28574 28575 </td> <!-- entry_type --> 28576 28577 <td class="entry_description"> 28578 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 28579is CONTRAST_<wbr/>CURVE.<wbr/></p> 28580 </td> 28581 28582 <td class="entry_units"> 28583 </td> 28584 28585 <td class="entry_range"> 28586 </td> 28587 28588 <td class="entry_hal_version"> 28589 <p>3.<wbr/>2</p> 28590 </td> 28591 28592 <td class="entry_tags"> 28593 </td> 28594 28595 </tr> 28596 <tr class="entries_header"> 28597 <th class="th_details" colspan="6">Details</th> 28598 </tr> 28599 <tr class="entry_cont"> 28600 <td class="entry_details" colspan="6"> 28601 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 28602channels respectively.<wbr/> The following example uses the red channel as an 28603example.<wbr/> The same logic applies to green and blue channel.<wbr/> 28604Each channel's curve is defined by an array of control points:</p> 28605<pre><code>curveRed = 28606 [ 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) ] 286072 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 28608<p>These are sorted in order of increasing <code>Pin</code>; it is always 28609guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 28610define a complete mapping.<wbr/> For input values between control points,<wbr/> 28611the camera device must linearly interpolate between the control 28612points.<wbr/></p> 28613<p>Each curve can have an independent number of points,<wbr/> and the number 28614of points can be less than max (that is,<wbr/> the request doesn't have to 28615always provide a curve with number of points equivalent to 28616<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 28617<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of 28618control points.<wbr/></p> 28619<p>A few examples,<wbr/> and their corresponding graphical mappings; these 28620only specify the red channel and the precision is limited to 4 28621digits,<wbr/> for conciseness.<wbr/></p> 28622<p>Linear mapping:</p> 28623<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 28624</code></pre> 28625<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 28626<p>Invert mapping:</p> 28627<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 28628</code></pre> 28629<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 28630<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 28631<pre><code>curveRed = [ 28632 (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/> 28633 (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/> 28634 (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/> 28635 (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) ] 28636</code></pre> 28637<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 28638<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 28639<pre><code>curveRed = [ 28640 (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/> 28641 (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/> 28642 (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/> 28643 (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) ] 28644</code></pre> 28645<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 28646 </td> 28647 </tr> 28648 28649 <tr class="entries_header"> 28650 <th class="th_details" colspan="6">HAL Implementation Details</th> 28651 </tr> 28652 <tr class="entry_cont"> 28653 <td class="entry_details" colspan="6"> 28654 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 28655curveBlue entries.<wbr/></p> 28656 </td> 28657 </tr> 28658 28659 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28660 <!-- end of entry --> 28661 28662 28663 <tr class="entry" id="dynamic_android.tonemap.mode"> 28664 <td class="entry_name 28665 " rowspan="3"> 28666 android.<wbr/>tonemap.<wbr/>mode 28667 </td> 28668 <td class="entry_type"> 28669 <span class="entry_type_name entry_type_name_enum">byte</span> 28670 28671 <span class="entry_type_visibility"> [public]</span> 28672 28673 28674 <span class="entry_type_hwlevel">[full] </span> 28675 28676 28677 28678 <ul class="entry_type_enum"> 28679 <li> 28680 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span> 28681 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 28682the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 28683<p>All color enhancement and tonemapping must be disabled,<wbr/> except 28684for applying the tonemapping curve specified by 28685<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 28686<p>Must not slow down frame rate relative to raw 28687sensor output.<wbr/></p></span> 28688 </li> 28689 <li> 28690 <span class="entry_type_enum_name">FAST (v3.2)</span> 28691 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 28692reducing frame rate compared to raw sensor output.<wbr/></p></span> 28693 </li> 28694 <li> 28695 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 28696 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 28697the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 28698 </li> 28699 <li> 28700 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span> 28701 <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 28702tonemapping.<wbr/></p> 28703<p>All color enhancement and tonemapping must be disabled,<wbr/> except 28704for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 28705<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 28706 </li> 28707 <li> 28708 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span> 28709 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 28710<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 28711<p>All color enhancement and tonemapping must be disabled,<wbr/> except 28712for applying the tonemapping curve specified by 28713<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 28714<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 28715 </li> 28716 </ul> 28717 28718 </td> <!-- entry_type --> 28719 28720 <td class="entry_description"> 28721 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 28722 </td> 28723 28724 <td class="entry_units"> 28725 </td> 28726 28727 <td class="entry_range"> 28728 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 28729 </td> 28730 28731 <td class="entry_hal_version"> 28732 <p>3.<wbr/>2</p> 28733 </td> 28734 28735 <td class="entry_tags"> 28736 </td> 28737 28738 </tr> 28739 <tr class="entries_header"> 28740 <th class="th_details" colspan="6">Details</th> 28741 </tr> 28742 <tr class="entry_cont"> 28743 <td class="entry_details" colspan="6"> 28744 <p>When switching to an application-defined contrast curve by setting 28745<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 28746per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 28747mapping from input high-bit-depth pixel value to the output 28748low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 28749and output may change depending on the camera pipeline,<wbr/> the values 28750are specified by normalized floating-point numbers.<wbr/></p> 28751<p>More-complex color mapping operations such as 3D color look-up 28752tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 28753transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 28754CONTRAST_<wbr/>CURVE.<wbr/></p> 28755<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 28756emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 28757These values are always available,<wbr/> and as close as possible to the 28758actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 28759<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 28760provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 28761roughly the same.<wbr/></p> 28762 </td> 28763 </tr> 28764 28765 28766 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28767 <!-- end of entry --> 28768 28769 28770 <tr class="entry" id="dynamic_android.tonemap.gamma"> 28771 <td class="entry_name 28772 " rowspan="3"> 28773 android.<wbr/>tonemap.<wbr/>gamma 28774 </td> 28775 <td class="entry_type"> 28776 <span class="entry_type_name">float</span> 28777 28778 <span class="entry_type_visibility"> [public]</span> 28779 28780 28781 28782 28783 28784 28785 </td> <!-- entry_type --> 28786 28787 <td class="entry_description"> 28788 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 28789GAMMA_<wbr/>VALUE</p> 28790 </td> 28791 28792 <td class="entry_units"> 28793 </td> 28794 28795 <td class="entry_range"> 28796 </td> 28797 28798 <td class="entry_hal_version"> 28799 <p>3.<wbr/>2</p> 28800 </td> 28801 28802 <td class="entry_tags"> 28803 </td> 28804 28805 </tr> 28806 <tr class="entries_header"> 28807 <th class="th_details" colspan="6">Details</th> 28808 </tr> 28809 <tr class="entry_cont"> 28810 <td class="entry_details" colspan="6"> 28811 <p>The tonemap curve will be defined the following formula: 28812* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 28813where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 28814pow is the power function and gamma is the gamma value specified by this 28815key.<wbr/></p> 28816<p>The same curve will be applied to all color channels.<wbr/> The camera device 28817may clip the input gamma value to its supported range.<wbr/> The actual applied 28818value will be returned in capture result.<wbr/></p> 28819<p>The valid range of gamma value varies on different devices,<wbr/> but values 28820within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 28821 </td> 28822 </tr> 28823 28824 28825 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28826 <!-- end of entry --> 28827 28828 28829 <tr class="entry" id="dynamic_android.tonemap.presetCurve"> 28830 <td class="entry_name 28831 " rowspan="3"> 28832 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 28833 </td> 28834 <td class="entry_type"> 28835 <span class="entry_type_name entry_type_name_enum">byte</span> 28836 28837 <span class="entry_type_visibility"> [public]</span> 28838 28839 28840 28841 28842 28843 <ul class="entry_type_enum"> 28844 <li> 28845 <span class="entry_type_enum_name">SRGB (v3.2)</span> 28846 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 28847 </li> 28848 <li> 28849 <span class="entry_type_enum_name">REC709 (v3.2)</span> 28850 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 28851 </li> 28852 </ul> 28853 28854 </td> <!-- entry_type --> 28855 28856 <td class="entry_description"> 28857 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 28858PRESET_<wbr/>CURVE</p> 28859 </td> 28860 28861 <td class="entry_units"> 28862 </td> 28863 28864 <td class="entry_range"> 28865 </td> 28866 28867 <td class="entry_hal_version"> 28868 <p>3.<wbr/>2</p> 28869 </td> 28870 28871 <td class="entry_tags"> 28872 </td> 28873 28874 </tr> 28875 <tr class="entries_header"> 28876 <th class="th_details" colspan="6">Details</th> 28877 </tr> 28878 <tr class="entry_cont"> 28879 <td class="entry_details" colspan="6"> 28880 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 28881<p>sRGB (approximated by 16 control points):</p> 28882<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 28883<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 28884<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 28885<p>Note that above figures show a 16 control points approximation of preset 28886curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 28887 </td> 28888 </tr> 28889 28890 28891 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28892 <!-- end of entry --> 28893 28894 28895 28896 <!-- end of kind --> 28897 </tbody> 28898 28899 <!-- end of section --> 28900 <tr><td colspan="7" id="section_led" class="section">led</td></tr> 28901 28902 28903 <tr><td colspan="7" class="kind">controls</td></tr> 28904 28905 <thead class="entries_header"> 28906 <tr> 28907 <th class="th_name">Property Name</th> 28908 <th class="th_type">Type</th> 28909 <th class="th_description">Description</th> 28910 <th class="th_units">Units</th> 28911 <th class="th_range">Range</th> 28912 <th class="th_hal_version">Initial HIDL HAL version</th> 28913 <th class="th_tags">Tags</th> 28914 </tr> 28915 </thead> 28916 28917 <tbody> 28918 28919 28920 28921 28922 28923 28924 28925 28926 28927 28928 <tr class="entry" id="controls_android.led.transmit"> 28929 <td class="entry_name 28930 " rowspan="1"> 28931 android.<wbr/>led.<wbr/>transmit 28932 </td> 28933 <td class="entry_type"> 28934 <span class="entry_type_name entry_type_name_enum">byte</span> 28935 28936 <span class="entry_type_visibility"> [hidden as boolean]</span> 28937 28938 28939 28940 28941 28942 <ul class="entry_type_enum"> 28943 <li> 28944 <span class="entry_type_enum_name">OFF (v3.2)</span> 28945 </li> 28946 <li> 28947 <span class="entry_type_enum_name">ON (v3.2)</span> 28948 </li> 28949 </ul> 28950 28951 </td> <!-- entry_type --> 28952 28953 <td class="entry_description"> 28954 <p>This LED is nominally used to indicate to the user 28955that the camera is powered on and may be streaming images back to the 28956Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 28957disable this when video is processed locally and not transmitted to 28958any untrusted applications.<wbr/></p> 28959<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 28960transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 28961data is stored locally on the device.<wbr/></p> 28962<p>The LED <em>may</em> be off if a trusted application is using the data that 28963doesn't violate the above rules.<wbr/></p> 28964 </td> 28965 28966 <td class="entry_units"> 28967 </td> 28968 28969 <td class="entry_range"> 28970 </td> 28971 28972 <td class="entry_hal_version"> 28973 <p>3.<wbr/>2</p> 28974 </td> 28975 28976 <td class="entry_tags"> 28977 </td> 28978 28979 </tr> 28980 28981 28982 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28983 <!-- end of entry --> 28984 28985 28986 28987 <!-- end of kind --> 28988 </tbody> 28989 <tr><td colspan="7" class="kind">dynamic</td></tr> 28990 28991 <thead class="entries_header"> 28992 <tr> 28993 <th class="th_name">Property Name</th> 28994 <th class="th_type">Type</th> 28995 <th class="th_description">Description</th> 28996 <th class="th_units">Units</th> 28997 <th class="th_range">Range</th> 28998 <th class="th_hal_version">Initial HIDL HAL version</th> 28999 <th class="th_tags">Tags</th> 29000 </tr> 29001 </thead> 29002 29003 <tbody> 29004 29005 29006 29007 29008 29009 29010 29011 29012 29013 29014 <tr class="entry" id="dynamic_android.led.transmit"> 29015 <td class="entry_name 29016 " rowspan="1"> 29017 android.<wbr/>led.<wbr/>transmit 29018 </td> 29019 <td class="entry_type"> 29020 <span class="entry_type_name entry_type_name_enum">byte</span> 29021 29022 <span class="entry_type_visibility"> [hidden as boolean]</span> 29023 29024 29025 29026 29027 29028 <ul class="entry_type_enum"> 29029 <li> 29030 <span class="entry_type_enum_name">OFF (v3.2)</span> 29031 </li> 29032 <li> 29033 <span class="entry_type_enum_name">ON (v3.2)</span> 29034 </li> 29035 </ul> 29036 29037 </td> <!-- entry_type --> 29038 29039 <td class="entry_description"> 29040 <p>This LED is nominally used to indicate to the user 29041that the camera is powered on and may be streaming images back to the 29042Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 29043disable this when video is processed locally and not transmitted to 29044any untrusted applications.<wbr/></p> 29045<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 29046transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 29047data is stored locally on the device.<wbr/></p> 29048<p>The LED <em>may</em> be off if a trusted application is using the data that 29049doesn't violate the above rules.<wbr/></p> 29050 </td> 29051 29052 <td class="entry_units"> 29053 </td> 29054 29055 <td class="entry_range"> 29056 </td> 29057 29058 <td class="entry_hal_version"> 29059 <p>3.<wbr/>2</p> 29060 </td> 29061 29062 <td class="entry_tags"> 29063 </td> 29064 29065 </tr> 29066 29067 29068 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29069 <!-- end of entry --> 29070 29071 29072 29073 <!-- end of kind --> 29074 </tbody> 29075 <tr><td colspan="7" class="kind">static</td></tr> 29076 29077 <thead class="entries_header"> 29078 <tr> 29079 <th class="th_name">Property Name</th> 29080 <th class="th_type">Type</th> 29081 <th class="th_description">Description</th> 29082 <th class="th_units">Units</th> 29083 <th class="th_range">Range</th> 29084 <th class="th_hal_version">Initial HIDL HAL version</th> 29085 <th class="th_tags">Tags</th> 29086 </tr> 29087 </thead> 29088 29089 <tbody> 29090 29091 29092 29093 29094 29095 29096 29097 29098 29099 29100 <tr class="entry" id="static_android.led.availableLeds"> 29101 <td class="entry_name 29102 " rowspan="1"> 29103 android.<wbr/>led.<wbr/>available<wbr/>Leds 29104 </td> 29105 <td class="entry_type"> 29106 <span class="entry_type_name entry_type_name_enum">byte</span> 29107 <span class="entry_type_container">x</span> 29108 29109 <span class="entry_type_array"> 29110 n 29111 </span> 29112 <span class="entry_type_visibility"> [hidden]</span> 29113 29114 29115 29116 29117 29118 <ul class="entry_type_enum"> 29119 <li> 29120 <span class="entry_type_enum_name">TRANSMIT (v3.2)</span> 29121 <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> 29122 </li> 29123 </ul> 29124 29125 </td> <!-- entry_type --> 29126 29127 <td class="entry_description"> 29128 <p>A list of camera LEDs that are available on this system.<wbr/></p> 29129 </td> 29130 29131 <td class="entry_units"> 29132 </td> 29133 29134 <td class="entry_range"> 29135 </td> 29136 29137 <td class="entry_hal_version"> 29138 <p>3.<wbr/>2</p> 29139 </td> 29140 29141 <td class="entry_tags"> 29142 </td> 29143 29144 </tr> 29145 29146 29147 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29148 <!-- end of entry --> 29149 29150 29151 29152 <!-- end of kind --> 29153 </tbody> 29154 29155 <!-- end of section --> 29156 <tr><td colspan="7" id="section_info" class="section">info</td></tr> 29157 29158 29159 <tr><td colspan="7" class="kind">static</td></tr> 29160 29161 <thead class="entries_header"> 29162 <tr> 29163 <th class="th_name">Property Name</th> 29164 <th class="th_type">Type</th> 29165 <th class="th_description">Description</th> 29166 <th class="th_units">Units</th> 29167 <th class="th_range">Range</th> 29168 <th class="th_hal_version">Initial HIDL HAL version</th> 29169 <th class="th_tags">Tags</th> 29170 </tr> 29171 </thead> 29172 29173 <tbody> 29174 29175 29176 29177 29178 29179 29180 29181 29182 29183 29184 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 29185 <td class="entry_name 29186 " rowspan="5"> 29187 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 29188 </td> 29189 <td class="entry_type"> 29190 <span class="entry_type_name entry_type_name_enum">byte</span> 29191 29192 <span class="entry_type_visibility"> [public]</span> 29193 29194 29195 <span class="entry_type_hwlevel">[legacy] </span> 29196 29197 29198 29199 <ul class="entry_type_enum"> 29200 <li> 29201 <span class="entry_type_enum_name">LIMITED (v3.2)</span> 29202 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or 29203better.<wbr/></p> 29204<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the 29205<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> 29206<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic 29207support for color image capture.<wbr/> The only exception is that the device may 29208alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth 29209measurements and not color images.<wbr/></p> 29210<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> 29211to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before 29212capturing a high-quality still image.<wbr/></p> 29213<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only 29214required to support full-automatic operation and post-processing (<code>OFF</code> is not 29215supported 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 29216<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p> 29217<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and 29218can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span> 29219 </li> 29220 <li> 29221 <span class="entry_type_enum_name">FULL (v3.2)</span> 29222 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p> 29223<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the 29224<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> 29225<p>A <code>FULL</code> device will support below capabilities:</p> 29226<ul> 29227<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 29228 <code>BURST_<wbr/>CAPTURE</code>)</li> 29229<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> 29230<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> 29231<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 29232 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li> 29233<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> 29234<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> 29235</ul> 29236<p>Note: 29237Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region 29238(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level 2923923,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span> 29240 </li> 29241 <li> 29242 <span class="entry_type_enum_name">LEGACY (v3.2)</span> 29243 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p> 29244<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> documentation are supported.<wbr/></p> 29245<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual 29246post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/> 29247No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a 29248<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 29249<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> 29250devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated 29251as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may 29252fire the flash for flash power metering during precapture,<wbr/> and then fire the flash 29253for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to 29254enable the flash.<wbr/></p> 29255<p>Devices that initially shipped with Android version <a href="https://developer.android.com/reference/android/os/Build/VERSION_CODES.html#Q">Q</a> or newer will not include any LEGACY-level devices.<wbr/></p></span> 29256 </li> 29257 <li> 29258 <span class="entry_type_enum_name">3 (v3.2)</span> 29259 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to 29260FULL-level capabilities.<wbr/></p> 29261<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 29262<code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> 29263<p>The following additional capabilities are guaranteed to be supported:</p> 29264<ul> 29265<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 29266 <code>YUV_<wbr/>REPROCESSING</code>)</li> 29267<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 29268 <code>RAW</code>)</li> 29269</ul></span> 29270 </li> 29271 <li> 29272 <span class="entry_type_enum_name">EXTERNAL (v3.3)</span> 29273 <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p> 29274<p>The device has capability identical to a LIMITED level device,<wbr/> with the following 29275exceptions:</p> 29276<ul> 29277<li>The device may not report lens/<wbr/>sensor related information such as<ul> 29278<li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li> 29279<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li> 29280<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li> 29281<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li> 29282<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li> 29283<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li> 29284<li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li> 29285</ul> 29286</li> 29287<li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li> 29288<li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends 29289 on the external camera being used.<wbr/></li> 29290</ul></span> 29291 </li> 29292 </ul> 29293 29294 </td> <!-- entry_type --> 29295 29296 <td class="entry_description"> 29297 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 29298 </td> 29299 29300 <td class="entry_units"> 29301 </td> 29302 29303 <td class="entry_range"> 29304 </td> 29305 29306 <td class="entry_hal_version"> 29307 <p>3.<wbr/>2</p> 29308 </td> 29309 29310 <td class="entry_tags"> 29311 </td> 29312 29313 </tr> 29314 <tr class="entries_header"> 29315 <th class="th_details" colspan="6">Details</th> 29316 </tr> 29317 <tr class="entry_cont"> 29318 <td class="entry_details" colspan="6"> 29319 <p>The supported hardware level is a high-level description of the camera device's 29320capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional 29321features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/> 29322The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p> 29323<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing 29324numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/> 29325the following code snippet can be used:</p> 29326<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/> 29327boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) { 29328 final int[] sortedHwLevels = { 29329 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY,<wbr/> 29330 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>EXTERNAL,<wbr/> 29331 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LIMITED,<wbr/> 29332 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>FULL,<wbr/> 29333 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>3 29334 }; 29335 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL); 29336 if (requiredLevel == deviceLevel) { 29337 return true; 29338 } 29339 29340 for (int sortedlevel : sortedHwLevels) { 29341 if (sortedlevel == requiredLevel) { 29342 return true; 29343 } else if (sortedlevel == deviceLevel) { 29344 return false; 29345 } 29346 } 29347 return false; //<wbr/> Should never reach here 29348} 29349</code></pre> 29350<p>At a high level,<wbr/> the levels are:</p> 29351<ul> 29352<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older 29353 Android devices,<wbr/> and have very limited capabilities.<wbr/></li> 29354<li><code>LIMITED</code> devices represent the 29355 baseline feature set,<wbr/> and may also include additional capabilities that are 29356 subsets of <code>FULL</code>.<wbr/></li> 29357<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and 29358 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li> 29359<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along 29360 with additional output stream configurations.<wbr/></li> 29361<li><code>EXTERNAL</code> devices are similar to <code>LIMITED</code> devices with exceptions like some sensor or 29362 lens information not reported or less stable framerates.<wbr/></li> 29363</ul> 29364<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The 29365<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a 29366finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or 29367ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 29368<p>Some features are not part of any particular hardware level or capability and must be 29369queried separately.<wbr/> These include:</p> 29370<ul> 29371<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li> 29372<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> 29373<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> 29374<li>Optical or electrical image stabilization 29375 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/> 29376 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li> 29377</ul> 29378 </td> 29379 </tr> 29380 29381 <tr class="entries_header"> 29382 <th class="th_details" colspan="6">HAL Implementation Details</th> 29383 </tr> 29384 <tr class="entry_cont"> 29385 <td class="entry_details" colspan="6"> 29386 <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/> 29387FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p> 29388<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited 29389mode has hardware requirements roughly in line with those for a camera HAL device v1 29390implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict 29391superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p> 29392<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 29393<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in 29394the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is 29395implemented by the camera framework code.<wbr/></p> 29396<p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend 29397on the external camera being used and is not fully controlled by the device manufacturer.<wbr/> 29398The ITS test suite is exempted for the same reason.<wbr/></p> 29399 </td> 29400 </tr> 29401 29402 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29403 <!-- end of entry --> 29404 29405 29406 <tr class="entry" id="static_android.info.version"> 29407 <td class="entry_name 29408 " rowspan="5"> 29409 android.<wbr/>info.<wbr/>version 29410 </td> 29411 <td class="entry_type"> 29412 <span class="entry_type_name">byte</span> 29413 29414 <span class="entry_type_visibility"> [public as string]</span> 29415 29416 29417 29418 29419 29420 29421 </td> <!-- entry_type --> 29422 29423 <td class="entry_description"> 29424 <p>A short string for manufacturer version information about the camera device,<wbr/> such as 29425ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p> 29426 </td> 29427 29428 <td class="entry_units"> 29429 </td> 29430 29431 <td class="entry_range"> 29432 </td> 29433 29434 <td class="entry_hal_version"> 29435 <p>3.<wbr/>3</p> 29436 </td> 29437 29438 <td class="entry_tags"> 29439 </td> 29440 29441 </tr> 29442 <tr class="entries_header"> 29443 <th class="th_details" colspan="6">Details</th> 29444 </tr> 29445 <tr class="entry_cont"> 29446 <td class="entry_details" colspan="6"> 29447 <p>This can be used in <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_IMAGE_DESCRIPTION">TAG_<wbr/>IMAGE_<wbr/>DESCRIPTION</a> 29448in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the 29449device.<wbr/></p> 29450 </td> 29451 </tr> 29452 29453 <tr class="entries_header"> 29454 <th class="th_details" colspan="6">HAL Implementation Details</th> 29455 </tr> 29456 <tr class="entry_cont"> 29457 <td class="entry_details" colspan="6"> 29458 <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and 29459whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/> 29460It must not exceed 256 characters.<wbr/></p> 29461 </td> 29462 </tr> 29463 29464 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29465 <!-- end of entry --> 29466 29467 29468 <tr class="entry" id="static_android.info.supportedBufferManagementVersion"> 29469 <td class="entry_name 29470 " rowspan="3"> 29471 android.<wbr/>info.<wbr/>supported<wbr/>Buffer<wbr/>Management<wbr/>Version 29472 </td> 29473 <td class="entry_type"> 29474 <span class="entry_type_name entry_type_name_enum">byte</span> 29475 29476 <span class="entry_type_visibility"> [system]</span> 29477 29478 29479 29480 29481 29482 <ul class="entry_type_enum"> 29483 <li> 29484 <span class="entry_type_enum_name">HIDL_DEVICE_3_5 (v3.4)</span> 29485 <span class="entry_type_enum_notes"><p>This camera device supports and opts in to the buffer management APIs provided by 29486HIDL ICameraDevice version 3.<wbr/>5.<wbr/></p></span> 29487 </li> 29488 </ul> 29489 29490 </td> <!-- entry_type --> 29491 29492 <td class="entry_description"> 29493 <p>The version of buffer management API this camera device supports and opts into.<wbr/></p> 29494 </td> 29495 29496 <td class="entry_units"> 29497 </td> 29498 29499 <td class="entry_range"> 29500 </td> 29501 29502 <td class="entry_hal_version"> 29503 <p>3.<wbr/>4</p> 29504 </td> 29505 29506 <td class="entry_tags"> 29507 </td> 29508 29509 </tr> 29510 <tr class="entries_header"> 29511 <th class="th_details" colspan="6">Details</th> 29512 </tr> 29513 <tr class="entry_cont"> 29514 <td class="entry_details" colspan="6"> 29515 <p>When this key is not present,<wbr/> camera framework will interact with this camera device 29516without any buffer management HAL API.<wbr/> When this key is present and camera framework 29517supports the buffer management API version,<wbr/> camera framework will interact with camera 29518HAL using such version of buffer management API.<wbr/></p> 29519 </td> 29520 </tr> 29521 29522 29523 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29524 <!-- end of entry --> 29525 29526 29527 29528 <!-- end of kind --> 29529 </tbody> 29530 29531 <!-- end of section --> 29532 <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr> 29533 29534 29535 <tr><td colspan="7" class="kind">controls</td></tr> 29536 29537 <thead class="entries_header"> 29538 <tr> 29539 <th class="th_name">Property Name</th> 29540 <th class="th_type">Type</th> 29541 <th class="th_description">Description</th> 29542 <th class="th_units">Units</th> 29543 <th class="th_range">Range</th> 29544 <th class="th_hal_version">Initial HIDL HAL version</th> 29545 <th class="th_tags">Tags</th> 29546 </tr> 29547 </thead> 29548 29549 <tbody> 29550 29551 29552 29553 29554 29555 29556 29557 29558 29559 29560 <tr class="entry" id="controls_android.blackLevel.lock"> 29561 <td class="entry_name 29562 " rowspan="5"> 29563 android.<wbr/>black<wbr/>Level.<wbr/>lock 29564 </td> 29565 <td class="entry_type"> 29566 <span class="entry_type_name entry_type_name_enum">byte</span> 29567 29568 <span class="entry_type_visibility"> [public as boolean]</span> 29569 29570 29571 <span class="entry_type_hwlevel">[full] </span> 29572 29573 29574 29575 <ul class="entry_type_enum"> 29576 <li> 29577 <span class="entry_type_enum_name">OFF (v3.2)</span> 29578 </li> 29579 <li> 29580 <span class="entry_type_enum_name">ON (v3.2)</span> 29581 </li> 29582 </ul> 29583 29584 </td> <!-- entry_type --> 29585 29586 <td class="entry_description"> 29587 <p>Whether black-level compensation is locked 29588to its current values,<wbr/> or is free to vary.<wbr/></p> 29589 </td> 29590 29591 <td class="entry_units"> 29592 </td> 29593 29594 <td class="entry_range"> 29595 </td> 29596 29597 <td class="entry_hal_version"> 29598 <p>3.<wbr/>2</p> 29599 </td> 29600 29601 <td class="entry_tags"> 29602 <ul class="entry_tags"> 29603 <li><a href="#tag_HAL2">HAL2</a></li> 29604 </ul> 29605 </td> 29606 29607 </tr> 29608 <tr class="entries_header"> 29609 <th class="th_details" colspan="6">Details</th> 29610 </tr> 29611 <tr class="entry_cont"> 29612 <td class="entry_details" colspan="6"> 29613 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level 29614compensation will not change until the lock is set to 29615<code>false</code> (OFF).<wbr/></p> 29616<p>Since changes to certain capture parameters (such as 29617exposure time) may require resetting of black level 29618compensation,<wbr/> the camera device must report whether setting 29619the black level lock was successful in the output result 29620metadata.<wbr/></p> 29621<p>For example,<wbr/> if a sequence of requests is as follows:</p> 29622<ul> 29623<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 29624<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 29625<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 29626<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 29627<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 29628<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 29629</ul> 29630<p>And the exposure change in Request 4 requires the camera 29631device to reset the black level offsets,<wbr/> then the output 29632result metadata is expected to be:</p> 29633<ul> 29634<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 29635<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 29636<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 29637<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 29638<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 29639<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 29640</ul> 29641<p>This indicates to the application that on frame 4,<wbr/> black 29642levels were reset due to exposure value changes,<wbr/> and pixel 29643values may not be consistent across captures.<wbr/></p> 29644<p>The camera device will maintain the lock to the extent 29645possible,<wbr/> only overriding the lock to OFF when changes to 29646other request parameters require a black level recalculation 29647or reset.<wbr/></p> 29648 </td> 29649 </tr> 29650 29651 <tr class="entries_header"> 29652 <th class="th_details" colspan="6">HAL Implementation Details</th> 29653 </tr> 29654 <tr class="entry_cont"> 29655 <td class="entry_details" colspan="6"> 29656 <p>If for some reason black level locking is no longer possible 29657(for example,<wbr/> the analog gain has changed,<wbr/> which forces 29658black level offsets to be recalculated),<wbr/> then the HAL must 29659override this request (and it must report 'OFF' when this 29660does happen) until the next capture for which locking is 29661possible again.<wbr/></p> 29662 </td> 29663 </tr> 29664 29665 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29666 <!-- end of entry --> 29667 29668 29669 29670 <!-- end of kind --> 29671 </tbody> 29672 <tr><td colspan="7" class="kind">dynamic</td></tr> 29673 29674 <thead class="entries_header"> 29675 <tr> 29676 <th class="th_name">Property Name</th> 29677 <th class="th_type">Type</th> 29678 <th class="th_description">Description</th> 29679 <th class="th_units">Units</th> 29680 <th class="th_range">Range</th> 29681 <th class="th_hal_version">Initial HIDL HAL version</th> 29682 <th class="th_tags">Tags</th> 29683 </tr> 29684 </thead> 29685 29686 <tbody> 29687 29688 29689 29690 29691 29692 29693 29694 29695 29696 29697 <tr class="entry" id="dynamic_android.blackLevel.lock"> 29698 <td class="entry_name 29699 " rowspan="5"> 29700 android.<wbr/>black<wbr/>Level.<wbr/>lock 29701 </td> 29702 <td class="entry_type"> 29703 <span class="entry_type_name entry_type_name_enum">byte</span> 29704 29705 <span class="entry_type_visibility"> [public as boolean]</span> 29706 29707 29708 <span class="entry_type_hwlevel">[full] </span> 29709 29710 29711 29712 <ul class="entry_type_enum"> 29713 <li> 29714 <span class="entry_type_enum_name">OFF (v3.2)</span> 29715 </li> 29716 <li> 29717 <span class="entry_type_enum_name">ON (v3.2)</span> 29718 </li> 29719 </ul> 29720 29721 </td> <!-- entry_type --> 29722 29723 <td class="entry_description"> 29724 <p>Whether black-level compensation is locked 29725to its current values,<wbr/> or is free to vary.<wbr/></p> 29726 </td> 29727 29728 <td class="entry_units"> 29729 </td> 29730 29731 <td class="entry_range"> 29732 </td> 29733 29734 <td class="entry_hal_version"> 29735 <p>3.<wbr/>2</p> 29736 </td> 29737 29738 <td class="entry_tags"> 29739 <ul class="entry_tags"> 29740 <li><a href="#tag_HAL2">HAL2</a></li> 29741 </ul> 29742 </td> 29743 29744 </tr> 29745 <tr class="entries_header"> 29746 <th class="th_details" colspan="6">Details</th> 29747 </tr> 29748 <tr class="entry_cont"> 29749 <td class="entry_details" colspan="6"> 29750 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 29751ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 29752a change in other capture settings forced the camera device to 29753perform a black level reset.<wbr/></p> 29754 </td> 29755 </tr> 29756 29757 <tr class="entries_header"> 29758 <th class="th_details" colspan="6">HAL Implementation Details</th> 29759 </tr> 29760 <tr class="entry_cont"> 29761 <td class="entry_details" colspan="6"> 29762 <p>If for some reason black level locking is no longer possible 29763(for example,<wbr/> the analog gain has changed,<wbr/> which forces 29764black level offsets to be recalculated),<wbr/> then the HAL must 29765override this request (and it must report 'OFF' when this 29766does happen) until the next capture for which locking is 29767possible again.<wbr/></p> 29768 </td> 29769 </tr> 29770 29771 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29772 <!-- end of entry --> 29773 29774 29775 29776 <!-- end of kind --> 29777 </tbody> 29778 29779 <!-- end of section --> 29780 <tr><td colspan="7" id="section_sync" class="section">sync</td></tr> 29781 29782 29783 <tr><td colspan="7" class="kind">dynamic</td></tr> 29784 29785 <thead class="entries_header"> 29786 <tr> 29787 <th class="th_name">Property Name</th> 29788 <th class="th_type">Type</th> 29789 <th class="th_description">Description</th> 29790 <th class="th_units">Units</th> 29791 <th class="th_range">Range</th> 29792 <th class="th_hal_version">Initial HIDL HAL version</th> 29793 <th class="th_tags">Tags</th> 29794 </tr> 29795 </thead> 29796 29797 <tbody> 29798 29799 29800 29801 29802 29803 29804 29805 29806 29807 29808 <tr class="entry" id="dynamic_android.sync.frameNumber"> 29809 <td class="entry_name 29810 " rowspan="5"> 29811 android.<wbr/>sync.<wbr/>frame<wbr/>Number 29812 </td> 29813 <td class="entry_type"> 29814 <span class="entry_type_name entry_type_name_enum">int64</span> 29815 29816 <span class="entry_type_visibility"> [ndk_public]</span> 29817 29818 29819 <span class="entry_type_hwlevel">[legacy] </span> 29820 29821 29822 29823 <ul class="entry_type_enum"> 29824 <li> 29825 <span class="entry_type_enum_name">CONVERGING (v3.2)</span> 29826 <span class="entry_type_enum_value">-1</span> 29827 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p> 29828<p>Synchronization is in progress,<wbr/> and reading metadata from this 29829result may include a mix of data that have taken effect since the 29830last synchronization time.<wbr/></p> 29831<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 29832this value will update to the actual frame number frame number 29833the result is guaranteed to be synchronized to (as long as the 29834request settings remain constant).<wbr/></p></span> 29835 </li> 29836 <li> 29837 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span> 29838 <span class="entry_type_enum_value">-2</span> 29839 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p> 29840<p>The result may have already converged,<wbr/> or it may be in 29841progress.<wbr/> Reading from this result may include some mix 29842of settings from past requests.<wbr/></p> 29843<p>After a settings change,<wbr/> the new settings will eventually all 29844take effect for the output buffers and results.<wbr/> However,<wbr/> this 29845value will not change when that happens.<wbr/> Altering settings 29846rapidly may provide outcomes using mixes of settings from recent 29847requests.<wbr/></p> 29848<p>This value is intended primarily for backwards compatibility with 29849the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 29850 </li> 29851 </ul> 29852 29853 </td> <!-- entry_type --> 29854 29855 <td class="entry_description"> 29856 <p>The frame number corresponding to the last request 29857with which the output result (metadata + buffers) has been fully 29858synchronized.<wbr/></p> 29859 </td> 29860 29861 <td class="entry_units"> 29862 </td> 29863 29864 <td class="entry_range"> 29865 <p>Either a non-negative value corresponding to a 29866<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 29867 </td> 29868 29869 <td class="entry_hal_version"> 29870 <p>3.<wbr/>2</p> 29871 </td> 29872 29873 <td class="entry_tags"> 29874 <ul class="entry_tags"> 29875 <li><a href="#tag_V1">V1</a></li> 29876 </ul> 29877 </td> 29878 29879 </tr> 29880 <tr class="entries_header"> 29881 <th class="th_details" colspan="6">Details</th> 29882 </tr> 29883 <tr class="entry_cont"> 29884 <td class="entry_details" colspan="6"> 29885 <p>When a request is submitted to the camera device,<wbr/> there is usually a 29886delay of several frames before the controls get applied.<wbr/> A camera 29887device may either choose to account for this delay by implementing a 29888pipeline and carefully submit well-timed atomic control updates,<wbr/> or 29889it may start streaming control changes that span over several frame 29890boundaries.<wbr/></p> 29891<p>In the latter case,<wbr/> whenever a request's settings change relative to 29892the previous submitted request,<wbr/> the full set of changes may take 29893multiple frame durations to fully take effect.<wbr/> Some settings may 29894take effect sooner (in less frame durations) than others.<wbr/></p> 29895<p>While a set of control changes are being propagated,<wbr/> this value 29896will be CONVERGING.<wbr/></p> 29897<p>Once it is fully known that a set of control changes have been 29898finished propagating,<wbr/> and the resulting updated control settings 29899have been read back by the camera device,<wbr/> this value will be set 29900to a non-negative frame number (corresponding to the request to 29901which the results have synchronized to).<wbr/></p> 29902<p>Older camera device implementations may not have a way to detect 29903when all camera controls have been applied,<wbr/> and will always set this 29904value to UNKNOWN.<wbr/></p> 29905<p>FULL capability devices will always have this value set to the 29906frame number of the request corresponding to this result.<wbr/></p> 29907<p><em>Further details</em>:</p> 29908<ul> 29909<li>Whenever a request differs from the last request,<wbr/> any future 29910results not yet returned may have this value set to CONVERGING (this 29911could include any in-progress captures not yet returned by the camera 29912device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 29913<li>Submitting a series of multiple requests that differ from the 29914previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 29915moves the new synchronization frame to the last non-repeating 29916request (using the smallest frame number from the contiguous list of 29917repeating requests).<wbr/></li> 29918<li>Submitting the same request repeatedly will not change this value 29919to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 29920<li>When this value changes to non-negative,<wbr/> that means that all of the 29921metadata controls from the request have been applied,<wbr/> all of the 29922metadata controls from the camera device have been read to the 29923updated values (into the result),<wbr/> and all of the graphics buffers 29924corresponding to this result are also synchronized to the request.<wbr/></li> 29925</ul> 29926<p><em>Pipeline considerations</em>:</p> 29927<p>Submitting a request with updated controls relative to the previously 29928submitted requests may also invalidate the synchronization state 29929of all the results corresponding to currently in-flight requests.<wbr/></p> 29930<p>In other words,<wbr/> results for this current request and up to 29931<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 29932<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 29933 </td> 29934 </tr> 29935 29936 <tr class="entries_header"> 29937 <th class="th_details" colspan="6">HAL Implementation Details</th> 29938 </tr> 29939 <tr class="entry_cont"> 29940 <td class="entry_details" colspan="6"> 29941 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 29942is also UNKNOWN.<wbr/></p> 29943<p>FULL capability devices should simply set this value to the 29944<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 29945 </td> 29946 </tr> 29947 29948 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29949 <!-- end of entry --> 29950 29951 29952 29953 <!-- end of kind --> 29954 </tbody> 29955 <tr><td colspan="7" class="kind">static</td></tr> 29956 29957 <thead class="entries_header"> 29958 <tr> 29959 <th class="th_name">Property Name</th> 29960 <th class="th_type">Type</th> 29961 <th class="th_description">Description</th> 29962 <th class="th_units">Units</th> 29963 <th class="th_range">Range</th> 29964 <th class="th_hal_version">Initial HIDL HAL version</th> 29965 <th class="th_tags">Tags</th> 29966 </tr> 29967 </thead> 29968 29969 <tbody> 29970 29971 29972 29973 29974 29975 29976 29977 29978 29979 29980 <tr class="entry" id="static_android.sync.maxLatency"> 29981 <td class="entry_name 29982 " rowspan="5"> 29983 android.<wbr/>sync.<wbr/>max<wbr/>Latency 29984 </td> 29985 <td class="entry_type"> 29986 <span class="entry_type_name entry_type_name_enum">int32</span> 29987 29988 <span class="entry_type_visibility"> [public]</span> 29989 29990 29991 <span class="entry_type_hwlevel">[legacy] </span> 29992 29993 29994 29995 <ul class="entry_type_enum"> 29996 <li> 29997 <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span> 29998 <span class="entry_type_enum_value">0</span> 29999 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p> 30000<p>Changing controls over multiple requests one after another will 30001produce results that have those controls applied atomically 30002each frame.<wbr/></p> 30003<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 30004 </li> 30005 <li> 30006 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span> 30007 <span class="entry_type_enum_value">-1</span> 30008 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 30009of the past requests applied to the camera settings.<wbr/></p> 30010<p>By submitting a series of identical requests,<wbr/> the camera device 30011will eventually have the camera settings applied,<wbr/> but it is 30012unknown when that exact point will be.<wbr/></p> 30013<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span> 30014 </li> 30015 </ul> 30016 30017 </td> <!-- entry_type --> 30018 30019 <td class="entry_description"> 30020 <p>The maximum number of frames that can occur after a request 30021(different than the previous) has been submitted,<wbr/> and before the 30022result's state becomes synchronized.<wbr/></p> 30023 </td> 30024 30025 <td class="entry_units"> 30026 Frame counts 30027 </td> 30028 30029 <td class="entry_range"> 30030 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p> 30031 </td> 30032 30033 <td class="entry_hal_version"> 30034 <p>3.<wbr/>2</p> 30035 </td> 30036 30037 <td class="entry_tags"> 30038 <ul class="entry_tags"> 30039 <li><a href="#tag_V1">V1</a></li> 30040 </ul> 30041 </td> 30042 30043 </tr> 30044 <tr class="entries_header"> 30045 <th class="th_details" colspan="6">Details</th> 30046 </tr> 30047 <tr class="entry_cont"> 30048 <td class="entry_details" colspan="6"> 30049 <p>This defines the maximum distance (in number of metadata results),<wbr/> 30050between the frame number of the request that has new controls to apply 30051and the frame number of the result that has all the controls applied.<wbr/></p> 30052<p>In other words this acts as an upper boundary for how many frames 30053must occur before the camera device knows for a fact that the new 30054submitted camera settings have been applied in outgoing frames.<wbr/></p> 30055 </td> 30056 </tr> 30057 30058 <tr class="entries_header"> 30059 <th class="th_details" colspan="6">HAL Implementation Details</th> 30060 </tr> 30061 <tr class="entry_cont"> 30062 <td class="entry_details" colspan="6"> 30063 <p>For example if maxLatency was 2,<wbr/></p> 30064<pre><code>initial request = X (repeating) 30065request1 = X 30066request2 = Y 30067request3 = Y 30068request4 = Y 30069 30070where requestN has frameNumber N,<wbr/> and the first of the repeating 30071initial request's has frameNumber F (and F < 1).<wbr/> 30072 30073initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 30074result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 30075result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 30076result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 30077result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 30078 30079where resultN has frameNumber N.<wbr/> 30080</code></pre> 30081<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 30082<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 30083<code>4 - 2 = 2</code>.<wbr/></p> 30084<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 30085<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or 30086<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p> 30087<p>LIMITED devices are strongly encouraged to use a non-negative 30088value.<wbr/> If UNKNOWN is used here then app developers do not have a way 30089to know when sensor settings have been applied.<wbr/></p> 30090 </td> 30091 </tr> 30092 30093 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30094 <!-- end of entry --> 30095 30096 30097 30098 <!-- end of kind --> 30099 </tbody> 30100 30101 <!-- end of section --> 30102 <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr> 30103 30104 30105 <tr><td colspan="7" class="kind">controls</td></tr> 30106 30107 <thead class="entries_header"> 30108 <tr> 30109 <th class="th_name">Property Name</th> 30110 <th class="th_type">Type</th> 30111 <th class="th_description">Description</th> 30112 <th class="th_units">Units</th> 30113 <th class="th_range">Range</th> 30114 <th class="th_hal_version">Initial HIDL HAL version</th> 30115 <th class="th_tags">Tags</th> 30116 </tr> 30117 </thead> 30118 30119 <tbody> 30120 30121 30122 30123 30124 30125 30126 30127 30128 30129 30130 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor"> 30131 <td class="entry_name 30132 " rowspan="3"> 30133 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 30134 </td> 30135 <td class="entry_type"> 30136 <span class="entry_type_name">float</span> 30137 30138 <span class="entry_type_visibility"> [java_public]</span> 30139 30140 30141 <span class="entry_type_hwlevel">[limited] </span> 30142 30143 30144 30145 30146 </td> <!-- entry_type --> 30147 30148 <td class="entry_description"> 30149 <p>The amount of exposure time increase factor applied to the original output 30150frame by the application processing before sending for reprocessing.<wbr/></p> 30151 </td> 30152 30153 <td class="entry_units"> 30154 Relative exposure time increase factor.<wbr/> 30155 </td> 30156 30157 <td class="entry_range"> 30158 <p>>= 1.<wbr/>0</p> 30159 </td> 30160 30161 <td class="entry_hal_version"> 30162 <p>3.<wbr/>2</p> 30163 </td> 30164 30165 <td class="entry_tags"> 30166 <ul class="entry_tags"> 30167 <li><a href="#tag_REPROC">REPROC</a></li> 30168 </ul> 30169 </td> 30170 30171 </tr> 30172 <tr class="entries_header"> 30173 <th class="th_details" colspan="6">Details</th> 30174 </tr> 30175 <tr class="entry_cont"> 30176 <td class="entry_details" colspan="6"> 30177 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 30178capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 30179<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 30180output frames to effectively reduce the noise to the same level as a frame that was 30181captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 30182images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 30183the camera device is that the amount of noise in the image would be approximately what 30184would be expected if the original capture parameters had been a sensitivity of 30185S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 30186than S and T respectively.<wbr/> If the captured images were processed by the application 30187before being sent for reprocessing,<wbr/> then the application may have used image processing 30188algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 30189application-processed images (input images).<wbr/> By using the effectiveExposureFactor 30190control,<wbr/> the application can communicate to the camera device the actual noise level 30191improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 30192device can select appropriate noise reduction and edge enhancement parameters to avoid 30193excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 30194enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 30195<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 30196multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 30197fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 30198square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 30199adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 30200produce the best quality images.<wbr/></p> 30201<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 30202buffer in a way that affects its effective exposure time.<wbr/></p> 30203<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 30204reduction 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/> 30205Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 30206<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 30207 </td> 30208 </tr> 30209 30210 30211 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30212 <!-- end of entry --> 30213 30214 30215 30216 <!-- end of kind --> 30217 </tbody> 30218 <tr><td colspan="7" class="kind">dynamic</td></tr> 30219 30220 <thead class="entries_header"> 30221 <tr> 30222 <th class="th_name">Property Name</th> 30223 <th class="th_type">Type</th> 30224 <th class="th_description">Description</th> 30225 <th class="th_units">Units</th> 30226 <th class="th_range">Range</th> 30227 <th class="th_hal_version">Initial HIDL HAL version</th> 30228 <th class="th_tags">Tags</th> 30229 </tr> 30230 </thead> 30231 30232 <tbody> 30233 30234 30235 30236 30237 30238 30239 30240 30241 30242 30243 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor"> 30244 <td class="entry_name 30245 " rowspan="3"> 30246 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 30247 </td> 30248 <td class="entry_type"> 30249 <span class="entry_type_name">float</span> 30250 30251 <span class="entry_type_visibility"> [java_public]</span> 30252 30253 30254 <span class="entry_type_hwlevel">[limited] </span> 30255 30256 30257 30258 30259 </td> <!-- entry_type --> 30260 30261 <td class="entry_description"> 30262 <p>The amount of exposure time increase factor applied to the original output 30263frame by the application processing before sending for reprocessing.<wbr/></p> 30264 </td> 30265 30266 <td class="entry_units"> 30267 Relative exposure time increase factor.<wbr/> 30268 </td> 30269 30270 <td class="entry_range"> 30271 <p>>= 1.<wbr/>0</p> 30272 </td> 30273 30274 <td class="entry_hal_version"> 30275 <p>3.<wbr/>2</p> 30276 </td> 30277 30278 <td class="entry_tags"> 30279 <ul class="entry_tags"> 30280 <li><a href="#tag_REPROC">REPROC</a></li> 30281 </ul> 30282 </td> 30283 30284 </tr> 30285 <tr class="entries_header"> 30286 <th class="th_details" colspan="6">Details</th> 30287 </tr> 30288 <tr class="entry_cont"> 30289 <td class="entry_details" colspan="6"> 30290 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 30291capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 30292<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 30293output frames to effectively reduce the noise to the same level as a frame that was 30294captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 30295images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 30296the camera device is that the amount of noise in the image would be approximately what 30297would be expected if the original capture parameters had been a sensitivity of 30298S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 30299than S and T respectively.<wbr/> If the captured images were processed by the application 30300before being sent for reprocessing,<wbr/> then the application may have used image processing 30301algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 30302application-processed images (input images).<wbr/> By using the effectiveExposureFactor 30303control,<wbr/> the application can communicate to the camera device the actual noise level 30304improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 30305device can select appropriate noise reduction and edge enhancement parameters to avoid 30306excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 30307enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 30308<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 30309multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 30310fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 30311square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 30312adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 30313produce the best quality images.<wbr/></p> 30314<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 30315buffer in a way that affects its effective exposure time.<wbr/></p> 30316<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 30317reduction 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/> 30318Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 30319<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 30320 </td> 30321 </tr> 30322 30323 30324 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30325 <!-- end of entry --> 30326 30327 30328 30329 <!-- end of kind --> 30330 </tbody> 30331 <tr><td colspan="7" class="kind">static</td></tr> 30332 30333 <thead class="entries_header"> 30334 <tr> 30335 <th class="th_name">Property Name</th> 30336 <th class="th_type">Type</th> 30337 <th class="th_description">Description</th> 30338 <th class="th_units">Units</th> 30339 <th class="th_range">Range</th> 30340 <th class="th_hal_version">Initial HIDL HAL version</th> 30341 <th class="th_tags">Tags</th> 30342 </tr> 30343 </thead> 30344 30345 <tbody> 30346 30347 30348 30349 30350 30351 30352 30353 30354 30355 30356 <tr class="entry" id="static_android.reprocess.maxCaptureStall"> 30357 <td class="entry_name 30358 " rowspan="3"> 30359 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall 30360 </td> 30361 <td class="entry_type"> 30362 <span class="entry_type_name">int32</span> 30363 30364 <span class="entry_type_visibility"> [java_public]</span> 30365 30366 30367 <span class="entry_type_hwlevel">[limited] </span> 30368 30369 30370 30371 30372 </td> <!-- entry_type --> 30373 30374 <td class="entry_description"> 30375 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a 30376reprocess capture request.<wbr/></p> 30377 </td> 30378 30379 <td class="entry_units"> 30380 Number of frames.<wbr/> 30381 </td> 30382 30383 <td class="entry_range"> 30384 <p><= 4</p> 30385 </td> 30386 30387 <td class="entry_hal_version"> 30388 <p>3.<wbr/>2</p> 30389 </td> 30390 30391 <td class="entry_tags"> 30392 <ul class="entry_tags"> 30393 <li><a href="#tag_REPROC">REPROC</a></li> 30394 </ul> 30395 </td> 30396 30397 </tr> 30398 <tr class="entries_header"> 30399 <th class="th_details" colspan="6">Details</th> 30400 </tr> 30401 <tr class="entry_cont"> 30402 <td class="entry_details" colspan="6"> 30403 <p>The key describes the maximal interference that one reprocess (input) request 30404can introduce to the camera simultaneous streaming of regular (output) capture 30405requests,<wbr/> including repeating requests.<wbr/></p> 30406<p>When a reprocessing capture request is submitted while a camera output repeating request 30407(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture 30408pipeline for at least one frame duration so that the camera device is unable to process 30409the following capture request in time for the next sensor start of exposure boundary.<wbr/> 30410When this happens,<wbr/> the application may observe a capture time gap (longer than one frame 30411duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview 30412glitch if the repeating request output targets include a preview surface.<wbr/> This key gives 30413the worst-case number of frame stall introduced by one reprocess request with any kind of 30414formats/<wbr/>sizes combination.<wbr/></p> 30415<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the 30416ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p> 30417<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing ( 30418i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or 30419YUV_<wbr/>REPROCESSING).<wbr/></p> 30420 </td> 30421 </tr> 30422 30423 30424 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30425 <!-- end of entry --> 30426 30427 30428 30429 <!-- end of kind --> 30430 </tbody> 30431 30432 <!-- end of section --> 30433 <tr><td colspan="7" id="section_depth" class="section">depth</td></tr> 30434 30435 30436 <tr><td colspan="7" class="kind">static</td></tr> 30437 30438 <thead class="entries_header"> 30439 <tr> 30440 <th class="th_name">Property Name</th> 30441 <th class="th_type">Type</th> 30442 <th class="th_description">Description</th> 30443 <th class="th_units">Units</th> 30444 <th class="th_range">Range</th> 30445 <th class="th_hal_version">Initial HIDL HAL version</th> 30446 <th class="th_tags">Tags</th> 30447 </tr> 30448 </thead> 30449 30450 <tbody> 30451 30452 30453 30454 30455 30456 30457 30458 30459 30460 30461 <tr class="entry" id="static_android.depth.maxDepthSamples"> 30462 <td class="entry_name 30463 " rowspan="3"> 30464 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples 30465 </td> 30466 <td class="entry_type"> 30467 <span class="entry_type_name">int32</span> 30468 30469 <span class="entry_type_visibility"> [system]</span> 30470 30471 30472 <span class="entry_type_hwlevel">[limited] </span> 30473 30474 30475 30476 30477 </td> <!-- entry_type --> 30478 30479 <td class="entry_description"> 30480 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p> 30481 </td> 30482 30483 <td class="entry_units"> 30484 </td> 30485 30486 <td class="entry_range"> 30487 </td> 30488 30489 <td class="entry_hal_version"> 30490 <p>3.<wbr/>2</p> 30491 </td> 30492 30493 <td class="entry_tags"> 30494 <ul class="entry_tags"> 30495 <li><a href="#tag_DEPTH">DEPTH</a></li> 30496 </ul> 30497 </td> 30498 30499 </tr> 30500 <tr class="entries_header"> 30501 <th class="th_details" colspan="6">Details</th> 30502 </tr> 30503 <tr class="entry_cont"> 30504 <td class="entry_details" colspan="6"> 30505 <p>If a camera device supports outputting depth range data in the form of a depth point 30506cloud (<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 30507number of points an output buffer may contain.<wbr/></p> 30508<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/> 30509If output in the depth point cloud format is not supported,<wbr/> this entry will 30510not be defined.<wbr/></p> 30511 </td> 30512 </tr> 30513 30514 30515 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30516 <!-- end of entry --> 30517 30518 30519 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations"> 30520 <td class="entry_name 30521 " rowspan="3"> 30522 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations 30523 </td> 30524 <td class="entry_type"> 30525 <span class="entry_type_name entry_type_name_enum">int32</span> 30526 <span class="entry_type_container">x</span> 30527 30528 <span class="entry_type_array"> 30529 n x 4 30530 </span> 30531 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 30532 30533 30534 <span class="entry_type_hwlevel">[limited] </span> 30535 30536 30537 30538 <ul class="entry_type_enum"> 30539 <li> 30540 <span class="entry_type_enum_name">OUTPUT (v3.2)</span> 30541 </li> 30542 <li> 30543 <span class="entry_type_enum_name">INPUT (v3.2)</span> 30544 </li> 30545 </ul> 30546 30547 </td> <!-- entry_type --> 30548 30549 <td class="entry_description"> 30550 <p>The available depth dataspace stream 30551configurations that this camera device supports 30552(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 30553 </td> 30554 30555 <td class="entry_units"> 30556 </td> 30557 30558 <td class="entry_range"> 30559 </td> 30560 30561 <td class="entry_hal_version"> 30562 <p>3.<wbr/>2</p> 30563 </td> 30564 30565 <td class="entry_tags"> 30566 <ul class="entry_tags"> 30567 <li><a href="#tag_DEPTH">DEPTH</a></li> 30568 </ul> 30569 </td> 30570 30571 </tr> 30572 <tr class="entries_header"> 30573 <th class="th_details" colspan="6">Details</th> 30574 </tr> 30575 <tr class="entry_cont"> 30576 <td class="entry_details" colspan="6"> 30577 <p>These are output stream configurations for use with 30578dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are 30579listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 30580<p>Only devices that support depth output for at least 30581the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include 30582this entry.<wbr/></p> 30583<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB 30584sparse depth point cloud must report a single entry for 30585the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/> 30586<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to 30587the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p> 30588 </td> 30589 </tr> 30590 30591 30592 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30593 <!-- end of entry --> 30594 30595 30596 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations"> 30597 <td class="entry_name 30598 " rowspan="3"> 30599 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 30600 </td> 30601 <td class="entry_type"> 30602 <span class="entry_type_name">int64</span> 30603 <span class="entry_type_container">x</span> 30604 30605 <span class="entry_type_array"> 30606 4 x n 30607 </span> 30608 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 30609 30610 30611 <span class="entry_type_hwlevel">[limited] </span> 30612 30613 30614 30615 30616 </td> <!-- entry_type --> 30617 30618 <td class="entry_description"> 30619 <p>This lists the minimum frame duration for each 30620format/<wbr/>size combination for depth output formats.<wbr/></p> 30621 </td> 30622 30623 <td class="entry_units"> 30624 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 30625 </td> 30626 30627 <td class="entry_range"> 30628 </td> 30629 30630 <td class="entry_hal_version"> 30631 <p>3.<wbr/>2</p> 30632 </td> 30633 30634 <td class="entry_tags"> 30635 <ul class="entry_tags"> 30636 <li><a href="#tag_DEPTH">DEPTH</a></li> 30637 </ul> 30638 </td> 30639 30640 </tr> 30641 <tr class="entries_header"> 30642 <th class="th_details" colspan="6">Details</th> 30643 </tr> 30644 <tr class="entry_cont"> 30645 <td class="entry_details" colspan="6"> 30646 <p>This should correspond to the frame duration when only that 30647stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 30648set to either OFF or FAST.<wbr/></p> 30649<p>When multiple streams are used in a request,<wbr/> the minimum frame 30650duration will be max(individual stream min durations).<wbr/></p> 30651<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 30652is the same regardless of whether the stream is input or output.<wbr/></p> 30653<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 30654<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 30655calculating the max frame rate.<wbr/></p> 30656 </td> 30657 </tr> 30658 30659 30660 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30661 <!-- end of entry --> 30662 30663 30664 <tr class="entry" id="static_android.depth.availableDepthStallDurations"> 30665 <td class="entry_name 30666 " rowspan="3"> 30667 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations 30668 </td> 30669 <td class="entry_type"> 30670 <span class="entry_type_name">int64</span> 30671 <span class="entry_type_container">x</span> 30672 30673 <span class="entry_type_array"> 30674 4 x n 30675 </span> 30676 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 30677 30678 30679 <span class="entry_type_hwlevel">[limited] </span> 30680 30681 30682 30683 30684 </td> <!-- entry_type --> 30685 30686 <td class="entry_description"> 30687 <p>This lists the maximum stall duration for each 30688output format/<wbr/>size combination for depth streams.<wbr/></p> 30689 </td> 30690 30691 <td class="entry_units"> 30692 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 30693 </td> 30694 30695 <td class="entry_range"> 30696 </td> 30697 30698 <td class="entry_hal_version"> 30699 <p>3.<wbr/>2</p> 30700 </td> 30701 30702 <td class="entry_tags"> 30703 <ul class="entry_tags"> 30704 <li><a href="#tag_DEPTH">DEPTH</a></li> 30705 </ul> 30706 </td> 30707 30708 </tr> 30709 <tr class="entries_header"> 30710 <th class="th_details" colspan="6">Details</th> 30711 </tr> 30712 <tr class="entry_cont"> 30713 <td class="entry_details" colspan="6"> 30714 <p>A stall duration is how much extra time would get added 30715to the normal minimum frame duration for a repeating request 30716that has streams with non-zero stall.<wbr/></p> 30717<p>This functions similarly to 30718<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth 30719streams.<wbr/></p> 30720<p>All depth output stream formats may have a nonzero stall 30721duration.<wbr/></p> 30722 </td> 30723 </tr> 30724 30725 30726 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30727 <!-- end of entry --> 30728 30729 30730 <tr class="entry" id="static_android.depth.depthIsExclusive"> 30731 <td class="entry_name 30732 " rowspan="3"> 30733 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive 30734 </td> 30735 <td class="entry_type"> 30736 <span class="entry_type_name entry_type_name_enum">byte</span> 30737 30738 <span class="entry_type_visibility"> [public as boolean]</span> 30739 30740 30741 <span class="entry_type_hwlevel">[limited] </span> 30742 30743 30744 30745 <ul class="entry_type_enum"> 30746 <li> 30747 <span class="entry_type_enum_name">FALSE (v3.2)</span> 30748 </li> 30749 <li> 30750 <span class="entry_type_enum_name">TRUE (v3.2)</span> 30751 </li> 30752 </ul> 30753 30754 </td> <!-- entry_type --> 30755 30756 <td class="entry_description"> 30757 <p>Indicates whether a capture request may target both a 30758DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as 30759YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p> 30760 </td> 30761 30762 <td class="entry_units"> 30763 </td> 30764 30765 <td class="entry_range"> 30766 </td> 30767 30768 <td class="entry_hal_version"> 30769 <p>3.<wbr/>2</p> 30770 </td> 30771 30772 <td class="entry_tags"> 30773 </td> 30774 30775 </tr> 30776 <tr class="entries_header"> 30777 <th class="th_details" colspan="6">Details</th> 30778 </tr> 30779 <tr class="entry_cont"> 30780 <td class="entry_details" colspan="6"> 30781 <p>If TRUE,<wbr/> including both depth and color outputs in a single 30782capture request is not supported.<wbr/> An application must interleave color 30783and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types 30784of output.<wbr/></p> 30785<p>Typically,<wbr/> this restriction exists on camera devices that 30786need to emit a specific pattern or wavelength of light to 30787measure depth values,<wbr/> which causes the color image to be 30788corrupted during depth measurement.<wbr/></p> 30789 </td> 30790 </tr> 30791 30792 30793 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30794 <!-- end of entry --> 30795 30796 30797 <tr class="entry" id="static_android.depth.availableRecommendedDepthStreamConfigurations"> 30798 <td class="entry_name 30799 " rowspan="5"> 30800 android.<wbr/>depth.<wbr/>available<wbr/>Recommended<wbr/>Depth<wbr/>Stream<wbr/>Configurations 30801 </td> 30802 <td class="entry_type"> 30803 <span class="entry_type_name">int32</span> 30804 <span class="entry_type_container">x</span> 30805 30806 <span class="entry_type_array"> 30807 n x 5 30808 </span> 30809 <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span> 30810 30811 30812 30813 30814 30815 30816 </td> <!-- entry_type --> 30817 30818 <td class="entry_description"> 30819 <p>Recommended depth stream configurations for common client use cases.<wbr/></p> 30820 </td> 30821 30822 <td class="entry_units"> 30823 </td> 30824 30825 <td class="entry_range"> 30826 </td> 30827 30828 <td class="entry_hal_version"> 30829 <p>3.<wbr/>4</p> 30830 </td> 30831 30832 <td class="entry_tags"> 30833 </td> 30834 30835 </tr> 30836 <tr class="entries_header"> 30837 <th class="th_details" colspan="6">Details</th> 30838 </tr> 30839 <tr class="entry_cont"> 30840 <td class="entry_details" colspan="6"> 30841 <p>Optional subset of the <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a> that 30842contains similar tuples listed as 30843(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/> 30844Camera devices will be able to suggest particular depth stream configurations which are 30845power and performance efficient for specific use cases.<wbr/> For more information about 30846retrieving the suggestions see 30847<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p> 30848 </td> 30849 </tr> 30850 30851 <tr class="entries_header"> 30852 <th class="th_details" colspan="6">HAL Implementation Details</th> 30853 </tr> 30854 <tr class="entry_cont"> 30855 <td class="entry_details" colspan="6"> 30856 <p>Recommended depth configurations are expected to be declared with SNAPSHOT and/<wbr/>or 30857ZSL if supported by the device.<wbr/> 30858For additional details on how to declare recommended stream configurations,<wbr/> check 30859<a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 30860For additional requirements on depth streams please consider 30861<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p> 30862 </td> 30863 </tr> 30864 30865 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30866 <!-- end of entry --> 30867 30868 30869 <tr class="entry" id="static_android.depth.availableDynamicDepthStreamConfigurations"> 30870 <td class="entry_name 30871 " rowspan="5"> 30872 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations 30873 </td> 30874 <td class="entry_type"> 30875 <span class="entry_type_name entry_type_name_enum">int32</span> 30876 <span class="entry_type_container">x</span> 30877 30878 <span class="entry_type_array"> 30879 n x 4 30880 </span> 30881 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 30882 30883 30884 30885 30886 30887 <ul class="entry_type_enum"> 30888 <li> 30889 <span class="entry_type_enum_name">OUTPUT (v3.4)</span> 30890 </li> 30891 <li> 30892 <span class="entry_type_enum_name">INPUT (v3.4)</span> 30893 </li> 30894 </ul> 30895 30896 </td> <!-- entry_type --> 30897 30898 <td class="entry_description"> 30899 <p>The available dynamic depth dataspace stream 30900configurations that this camera device supports 30901(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 30902 </td> 30903 30904 <td class="entry_units"> 30905 </td> 30906 30907 <td class="entry_range"> 30908 </td> 30909 30910 <td class="entry_hal_version"> 30911 <p>3.<wbr/>4</p> 30912 </td> 30913 30914 <td class="entry_tags"> 30915 <ul class="entry_tags"> 30916 <li><a href="#tag_DEPTH">DEPTH</a></li> 30917 </ul> 30918 </td> 30919 30920 </tr> 30921 <tr class="entries_header"> 30922 <th class="th_details" colspan="6">Details</th> 30923 </tr> 30924 <tr class="entry_cont"> 30925 <td class="entry_details" colspan="6"> 30926 <p>These are output stream configurations for use with 30927dataSpace DYNAMIC_<wbr/>DEPTH.<wbr/> The configurations are 30928listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 30929<p>Only devices that support depth output for at least 30930the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map along with 30931HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB with the same size or size with 30932the same aspect ratio can have dynamic depth dataspace 30933stream configuration.<wbr/> <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> also 30934needs to be set to FALSE.<wbr/></p> 30935 </td> 30936 </tr> 30937 30938 <tr class="entries_header"> 30939 <th class="th_details" colspan="6">HAL Implementation Details</th> 30940 </tr> 30941 <tr class="entry_cont"> 30942 <td class="entry_details" colspan="6"> 30943 <p>Do not set this property directly.<wbr/> 30944It is populated by camera framework and must not be set 30945at the HAL layer.<wbr/></p> 30946 </td> 30947 </tr> 30948 30949 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30950 <!-- end of entry --> 30951 30952 30953 <tr class="entry" id="static_android.depth.availableDynamicDepthMinFrameDurations"> 30954 <td class="entry_name 30955 " rowspan="5"> 30956 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 30957 </td> 30958 <td class="entry_type"> 30959 <span class="entry_type_name">int64</span> 30960 <span class="entry_type_container">x</span> 30961 30962 <span class="entry_type_array"> 30963 4 x n 30964 </span> 30965 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 30966 30967 30968 30969 30970 30971 30972 </td> <!-- entry_type --> 30973 30974 <td class="entry_description"> 30975 <p>This lists the minimum frame duration for each 30976format/<wbr/>size combination for dynamic depth output streams.<wbr/></p> 30977 </td> 30978 30979 <td class="entry_units"> 30980 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 30981 </td> 30982 30983 <td class="entry_range"> 30984 </td> 30985 30986 <td class="entry_hal_version"> 30987 <p>3.<wbr/>4</p> 30988 </td> 30989 30990 <td class="entry_tags"> 30991 <ul class="entry_tags"> 30992 <li><a href="#tag_DEPTH">DEPTH</a></li> 30993 </ul> 30994 </td> 30995 30996 </tr> 30997 <tr class="entries_header"> 30998 <th class="th_details" colspan="6">Details</th> 30999 </tr> 31000 <tr class="entry_cont"> 31001 <td class="entry_details" colspan="6"> 31002 <p>This should correspond to the frame duration when only that 31003stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 31004set to either OFF or FAST.<wbr/></p> 31005<p>When multiple streams are used in a request,<wbr/> the minimum frame 31006duration will be max(individual stream min durations).<wbr/></p> 31007<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 31008is the same regardless of whether the stream is input or output.<wbr/></p> 31009 </td> 31010 </tr> 31011 31012 <tr class="entries_header"> 31013 <th class="th_details" colspan="6">HAL Implementation Details</th> 31014 </tr> 31015 <tr class="entry_cont"> 31016 <td class="entry_details" colspan="6"> 31017 <p>Do not set this property directly.<wbr/> 31018It is populated by camera framework and must not be set 31019at the HAL layer.<wbr/></p> 31020 </td> 31021 </tr> 31022 31023 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31024 <!-- end of entry --> 31025 31026 31027 <tr class="entry" id="static_android.depth.availableDynamicDepthStallDurations"> 31028 <td class="entry_name 31029 " rowspan="5"> 31030 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations 31031 </td> 31032 <td class="entry_type"> 31033 <span class="entry_type_name">int64</span> 31034 <span class="entry_type_container">x</span> 31035 31036 <span class="entry_type_array"> 31037 4 x n 31038 </span> 31039 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 31040 31041 31042 31043 31044 31045 31046 </td> <!-- entry_type --> 31047 31048 <td class="entry_description"> 31049 <p>This lists the maximum stall duration for each 31050output format/<wbr/>size combination for dynamic depth streams.<wbr/></p> 31051 </td> 31052 31053 <td class="entry_units"> 31054 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 31055 </td> 31056 31057 <td class="entry_range"> 31058 </td> 31059 31060 <td class="entry_hal_version"> 31061 <p>3.<wbr/>4</p> 31062 </td> 31063 31064 <td class="entry_tags"> 31065 <ul class="entry_tags"> 31066 <li><a href="#tag_DEPTH">DEPTH</a></li> 31067 </ul> 31068 </td> 31069 31070 </tr> 31071 <tr class="entries_header"> 31072 <th class="th_details" colspan="6">Details</th> 31073 </tr> 31074 <tr class="entry_cont"> 31075 <td class="entry_details" colspan="6"> 31076 <p>A stall duration is how much extra time would get added 31077to the normal minimum frame duration for a repeating request 31078that has streams with non-zero stall.<wbr/></p> 31079<p>All dynamic depth output streams may have a nonzero stall 31080duration.<wbr/></p> 31081 </td> 31082 </tr> 31083 31084 <tr class="entries_header"> 31085 <th class="th_details" colspan="6">HAL Implementation Details</th> 31086 </tr> 31087 <tr class="entry_cont"> 31088 <td class="entry_details" colspan="6"> 31089 <p>Do not set this property directly.<wbr/> 31090It is populated by camera framework and must not be set 31091at the HAL layer.<wbr/></p> 31092 </td> 31093 </tr> 31094 31095 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31096 <!-- end of entry --> 31097 31098 31099 31100 <!-- end of kind --> 31101 </tbody> 31102 31103 <!-- end of section --> 31104 <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr> 31105 31106 31107 <tr><td colspan="7" class="kind">static</td></tr> 31108 31109 <thead class="entries_header"> 31110 <tr> 31111 <th class="th_name">Property Name</th> 31112 <th class="th_type">Type</th> 31113 <th class="th_description">Description</th> 31114 <th class="th_units">Units</th> 31115 <th class="th_range">Range</th> 31116 <th class="th_hal_version">Initial HIDL HAL version</th> 31117 <th class="th_tags">Tags</th> 31118 </tr> 31119 </thead> 31120 31121 <tbody> 31122 31123 31124 31125 31126 31127 31128 31129 31130 31131 31132 <tr class="entry" id="static_android.logicalMultiCamera.physicalIds"> 31133 <td class="entry_name 31134 " rowspan="3"> 31135 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids 31136 </td> 31137 <td class="entry_type"> 31138 <span class="entry_type_name">byte</span> 31139 <span class="entry_type_container">x</span> 31140 31141 <span class="entry_type_array"> 31142 n 31143 </span> 31144 <span class="entry_type_visibility"> [ndk_public]</span> 31145 31146 31147 <span class="entry_type_hwlevel">[limited] </span> 31148 31149 31150 31151 31152 </td> <!-- entry_type --> 31153 31154 <td class="entry_description"> 31155 <p>String containing the ids of the underlying physical cameras.<wbr/></p> 31156 </td> 31157 31158 <td class="entry_units"> 31159 UTF-8 null-terminated string 31160 </td> 31161 31162 <td class="entry_range"> 31163 </td> 31164 31165 <td class="entry_hal_version"> 31166 <p>3.<wbr/>3</p> 31167 </td> 31168 31169 <td class="entry_tags"> 31170 <ul class="entry_tags"> 31171 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> 31172 </ul> 31173 </td> 31174 31175 </tr> 31176 <tr class="entries_header"> 31177 <th class="th_details" colspan="6">Details</th> 31178 </tr> 31179 <tr class="entry_cont"> 31180 <td class="entry_details" colspan="6"> 31181 <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera IDs.<wbr/> 31182The null terminator for physical camera ID must be preserved so that the whole string 31183can be tokenized using '\0' to generate list of physical camera IDs.<wbr/></p> 31184<p>For example,<wbr/> if the physical camera IDs of the logical camera are "2" and "3",<wbr/> the 31185value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p> 31186<p>The number of physical camera IDs must be no less than 2.<wbr/></p> 31187 </td> 31188 </tr> 31189 31190 31191 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31192 <!-- end of entry --> 31193 31194 31195 <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType"> 31196 <td class="entry_name 31197 " rowspan="3"> 31198 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type 31199 </td> 31200 <td class="entry_type"> 31201 <span class="entry_type_name entry_type_name_enum">byte</span> 31202 31203 <span class="entry_type_visibility"> [public]</span> 31204 31205 31206 <span class="entry_type_hwlevel">[limited] </span> 31207 31208 31209 31210 <ul class="entry_type_enum"> 31211 <li> 31212 <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span> 31213 <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/> 31214the timestamp of an image from a physical stream is only an approximation of the 31215image sensor start-of-exposure time.<wbr/></p></span> 31216 </li> 31217 <li> 31218 <span class="entry_type_enum_name">CALIBRATED (v3.3)</span> 31219 <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/> 31220and the timestamp of a physical stream image accurately reflects its 31221start-of-exposure time.<wbr/></p></span> 31222 </li> 31223 </ul> 31224 31225 </td> <!-- entry_type --> 31226 31227 <td class="entry_description"> 31228 <p>The accuracy of frame timestamp synchronization between physical cameras</p> 31229 </td> 31230 31231 <td class="entry_units"> 31232 </td> 31233 31234 <td class="entry_range"> 31235 </td> 31236 31237 <td class="entry_hal_version"> 31238 <p>3.<wbr/>3</p> 31239 </td> 31240 31241 <td class="entry_tags"> 31242 <ul class="entry_tags"> 31243 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> 31244 </ul> 31245 </td> 31246 31247 </tr> 31248 <tr class="entries_header"> 31249 <th class="th_details" colspan="6">Details</th> 31250 </tr> 31251 <tr class="entry_cont"> 31252 <td class="entry_details" colspan="6"> 31253 <p>The accuracy of the frame timestamp synchronization determines the physical cameras' 31254ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/> 31255the physical camera sensors usually run in master-slave mode so that their shutter 31256time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in 31257master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p> 31258<p>In both cases,<wbr/> all images generated for a particular capture request still carry the same 31259timestamps,<wbr/> so that they can be used to look up the matching frame number and 31260onCaptureStarted callback.<wbr/></p> 31261<p>This tag is only applicable if the logical camera device supports concurrent physical 31262streams from different physical cameras.<wbr/></p> 31263 </td> 31264 </tr> 31265 31266 31267 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31268 <!-- end of entry --> 31269 31270 31271 31272 <!-- end of kind --> 31273 </tbody> 31274 <tr><td colspan="7" class="kind">dynamic</td></tr> 31275 31276 <thead class="entries_header"> 31277 <tr> 31278 <th class="th_name">Property Name</th> 31279 <th class="th_type">Type</th> 31280 <th class="th_description">Description</th> 31281 <th class="th_units">Units</th> 31282 <th class="th_range">Range</th> 31283 <th class="th_hal_version">Initial HIDL HAL version</th> 31284 <th class="th_tags">Tags</th> 31285 </tr> 31286 </thead> 31287 31288 <tbody> 31289 31290 31291 31292 31293 31294 31295 31296 31297 31298 31299 <tr class="entry" id="dynamic_android.logicalMultiCamera.activePhysicalId"> 31300 <td class="entry_name 31301 " rowspan="5"> 31302 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id 31303 </td> 31304 <td class="entry_type"> 31305 <span class="entry_type_name">byte</span> 31306 31307 <span class="entry_type_visibility"> [public as string]</span> 31308 31309 31310 31311 31312 31313 31314 </td> <!-- entry_type --> 31315 31316 <td class="entry_description"> 31317 <p>String containing the ID of the underlying active physical camera.<wbr/></p> 31318 </td> 31319 31320 <td class="entry_units"> 31321 UTF-8 null-terminated string 31322 </td> 31323 31324 <td class="entry_range"> 31325 </td> 31326 31327 <td class="entry_hal_version"> 31328 <p>3.<wbr/>4</p> 31329 </td> 31330 31331 <td class="entry_tags"> 31332 <ul class="entry_tags"> 31333 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> 31334 </ul> 31335 </td> 31336 31337 </tr> 31338 <tr class="entries_header"> 31339 <th class="th_details" colspan="6">Details</th> 31340 </tr> 31341 <tr class="entry_cont"> 31342 <td class="entry_details" colspan="6"> 31343 <p>The ID of the active physical camera that's backing the logical camera.<wbr/> All camera 31344streams and metadata that are not physical camera specific will be originating from this 31345physical camera.<wbr/></p> 31346<p>For a logical camera made up of physical cameras where each camera's lenses have 31347different characteristics,<wbr/> the camera device may choose to switch between the physical 31348cameras when application changes FOCAL_<wbr/>LENGTH or SCALER_<wbr/>CROP_<wbr/>REGION.<wbr/> 31349At the time of lens switch,<wbr/> this result metadata reflects the new active physical camera 31350ID.<wbr/></p> 31351<p>This key will be available if the camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/> 31352When available,<wbr/> this must be one of valid physical IDs backing this logical multi-camera.<wbr/> 31353If this key is not available for a logical multi-camera,<wbr/> the camera device implementation 31354may still switch between different active physical cameras based on use case,<wbr/> but the 31355current active physical camera information won't be available to the application.<wbr/></p> 31356 </td> 31357 </tr> 31358 31359 <tr class="entries_header"> 31360 <th class="th_details" colspan="6">HAL Implementation Details</th> 31361 </tr> 31362 <tr class="entry_cont"> 31363 <td class="entry_details" colspan="6"> 31364 <p>Staring from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> the tag must be available in the capture 31365result metadata to indicate current active physical camera ID.<wbr/></p> 31366 </td> 31367 </tr> 31368 31369 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31370 <!-- end of entry --> 31371 31372 31373 31374 <!-- end of kind --> 31375 </tbody> 31376 31377 <!-- end of section --> 31378 <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr> 31379 31380 31381 <tr><td colspan="7" class="kind">controls</td></tr> 31382 31383 <thead class="entries_header"> 31384 <tr> 31385 <th class="th_name">Property Name</th> 31386 <th class="th_type">Type</th> 31387 <th class="th_description">Description</th> 31388 <th class="th_units">Units</th> 31389 <th class="th_range">Range</th> 31390 <th class="th_hal_version">Initial HIDL HAL version</th> 31391 <th class="th_tags">Tags</th> 31392 </tr> 31393 </thead> 31394 31395 <tbody> 31396 31397 31398 31399 31400 31401 31402 31403 31404 31405 31406 <tr class="entry" id="controls_android.distortionCorrection.mode"> 31407 <td class="entry_name 31408 " rowspan="3"> 31409 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode 31410 </td> 31411 <td class="entry_type"> 31412 <span class="entry_type_name entry_type_name_enum">byte</span> 31413 31414 <span class="entry_type_visibility"> [public]</span> 31415 31416 31417 31418 31419 31420 <ul class="entry_type_enum"> 31421 <li> 31422 <span class="entry_type_enum_name">OFF (v3.3)</span> 31423 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span> 31424 </li> 31425 <li> 31426 <span class="entry_type_enum_name">FAST (v3.3)</span> 31427 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate 31428relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would 31429reduce frame rate relative to sensor.<wbr/></p></span> 31430 </li> 31431 <li> 31432 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span> 31433 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of 31434possibly reduced frame rate relative to sensor output.<wbr/></p></span> 31435 </li> 31436 </ul> 31437 31438 </td> <!-- entry_type --> 31439 31440 <td class="entry_description"> 31441 <p>Mode of operation for the lens distortion correction block.<wbr/></p> 31442 </td> 31443 31444 <td class="entry_units"> 31445 </td> 31446 31447 <td class="entry_range"> 31448 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p> 31449 </td> 31450 31451 <td class="entry_hal_version"> 31452 <p>3.<wbr/>3</p> 31453 </td> 31454 31455 <td class="entry_tags"> 31456 </td> 31457 31458 </tr> 31459 <tr class="entries_header"> 31460 <th class="th_details" colspan="6">Details</th> 31461 </tr> 31462 <tr class="entry_cont"> 31463 <td class="entry_details" colspan="6"> 31464 <p>The lens distortion correction block attempts to improve image quality by fixing 31465radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If 31466available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p> 31467<p>OFF means no distortion correction is done.<wbr/></p> 31468<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be 31469applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality 31470correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device 31471will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if 31472any correction at all would slow down capture rate.<wbr/> Every output stream will have a 31473similar amount of enhancement applied.<wbr/></p> 31474<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is 31475not applied to any RAW output.<wbr/></p> 31476<p>This control will be on by default on devices that support this control.<wbr/> Applications 31477disabling distortion correction need to pay extra attention with the coordinate system of 31478metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/> 31479metadata coordinates follow the coordinate system of 31480<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/> When distortion is not OFF,<wbr/> metadata 31481coordinates follow the coordinate system of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> The 31482camera device will map these metadata fields to match the corrected image produced by the 31483camera device,<wbr/> for both capture requests and results.<wbr/> However,<wbr/> this mapping is not very 31484precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/> Only linear 31485scaling between the active array and precorrection active array coordinates is 31486performed.<wbr/> Applications that require precise correction of metadata need to undo that 31487linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's 31488own requirements.<wbr/></p> 31489<p>The full list of metadata that is affected in this way by distortion correction is:</p> 31490<ul> 31491<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 31492<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 31493<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 31494<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 31495<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li> 31496</ul> 31497 </td> 31498 </tr> 31499 31500 31501 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31502 <!-- end of entry --> 31503 31504 31505 31506 <!-- end of kind --> 31507 </tbody> 31508 <tr><td colspan="7" class="kind">static</td></tr> 31509 31510 <thead class="entries_header"> 31511 <tr> 31512 <th class="th_name">Property Name</th> 31513 <th class="th_type">Type</th> 31514 <th class="th_description">Description</th> 31515 <th class="th_units">Units</th> 31516 <th class="th_range">Range</th> 31517 <th class="th_hal_version">Initial HIDL HAL version</th> 31518 <th class="th_tags">Tags</th> 31519 </tr> 31520 </thead> 31521 31522 <tbody> 31523 31524 31525 31526 31527 31528 31529 31530 31531 31532 31533 <tr class="entry" id="static_android.distortionCorrection.availableModes"> 31534 <td class="entry_name 31535 " rowspan="5"> 31536 android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes 31537 </td> 31538 <td class="entry_type"> 31539 <span class="entry_type_name">byte</span> 31540 <span class="entry_type_container">x</span> 31541 31542 <span class="entry_type_array"> 31543 n 31544 </span> 31545 <span class="entry_type_visibility"> [public as enumList]</span> 31546 31547 31548 31549 31550 <div class="entry_type_notes">list of enums</div> 31551 31552 31553 </td> <!-- entry_type --> 31554 31555 <td class="entry_description"> 31556 <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are 31557supported by this camera device.<wbr/></p> 31558 </td> 31559 31560 <td class="entry_units"> 31561 </td> 31562 31563 <td class="entry_range"> 31564 <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p> 31565 </td> 31566 31567 <td class="entry_hal_version"> 31568 <p>3.<wbr/>3</p> 31569 </td> 31570 31571 <td class="entry_tags"> 31572 <ul class="entry_tags"> 31573 <li><a href="#tag_V1">V1</a></li> 31574 <li><a href="#tag_REPROC">REPROC</a></li> 31575 </ul> 31576 </td> 31577 31578 </tr> 31579 <tr class="entries_header"> 31580 <th class="th_details" colspan="6">Details</th> 31581 </tr> 31582 <tr class="entry_cont"> 31583 <td class="entry_details" colspan="6"> 31584 <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/> 31585All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p> 31586 </td> 31587 </tr> 31588 31589 <tr class="entries_header"> 31590 <th class="th_details" colspan="6">HAL Implementation Details</th> 31591 </tr> 31592 <tr class="entry_cont"> 31593 <td class="entry_details" colspan="6"> 31594 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available 31595on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 31596That is,<wbr/> if the highest quality implementation on the camera device does not slow down 31597capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 31598 </td> 31599 </tr> 31600 31601 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31602 <!-- end of entry --> 31603 31604 31605 31606 <!-- end of kind --> 31607 </tbody> 31608 <tr><td colspan="7" class="kind">dynamic</td></tr> 31609 31610 <thead class="entries_header"> 31611 <tr> 31612 <th class="th_name">Property Name</th> 31613 <th class="th_type">Type</th> 31614 <th class="th_description">Description</th> 31615 <th class="th_units">Units</th> 31616 <th class="th_range">Range</th> 31617 <th class="th_hal_version">Initial HIDL HAL version</th> 31618 <th class="th_tags">Tags</th> 31619 </tr> 31620 </thead> 31621 31622 <tbody> 31623 31624 31625 31626 31627 31628 31629 31630 31631 31632 31633 <tr class="entry" id="dynamic_android.distortionCorrection.mode"> 31634 <td class="entry_name 31635 " rowspan="3"> 31636 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode 31637 </td> 31638 <td class="entry_type"> 31639 <span class="entry_type_name entry_type_name_enum">byte</span> 31640 31641 <span class="entry_type_visibility"> [public]</span> 31642 31643 31644 31645 31646 31647 <ul class="entry_type_enum"> 31648 <li> 31649 <span class="entry_type_enum_name">OFF (v3.3)</span> 31650 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span> 31651 </li> 31652 <li> 31653 <span class="entry_type_enum_name">FAST (v3.3)</span> 31654 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate 31655relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would 31656reduce frame rate relative to sensor.<wbr/></p></span> 31657 </li> 31658 <li> 31659 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span> 31660 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of 31661possibly reduced frame rate relative to sensor output.<wbr/></p></span> 31662 </li> 31663 </ul> 31664 31665 </td> <!-- entry_type --> 31666 31667 <td class="entry_description"> 31668 <p>Mode of operation for the lens distortion correction block.<wbr/></p> 31669 </td> 31670 31671 <td class="entry_units"> 31672 </td> 31673 31674 <td class="entry_range"> 31675 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p> 31676 </td> 31677 31678 <td class="entry_hal_version"> 31679 <p>3.<wbr/>3</p> 31680 </td> 31681 31682 <td class="entry_tags"> 31683 </td> 31684 31685 </tr> 31686 <tr class="entries_header"> 31687 <th class="th_details" colspan="6">Details</th> 31688 </tr> 31689 <tr class="entry_cont"> 31690 <td class="entry_details" colspan="6"> 31691 <p>The lens distortion correction block attempts to improve image quality by fixing 31692radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If 31693available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p> 31694<p>OFF means no distortion correction is done.<wbr/></p> 31695<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be 31696applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality 31697correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device 31698will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if 31699any correction at all would slow down capture rate.<wbr/> Every output stream will have a 31700similar amount of enhancement applied.<wbr/></p> 31701<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is 31702not applied to any RAW output.<wbr/></p> 31703<p>This control will be on by default on devices that support this control.<wbr/> Applications 31704disabling distortion correction need to pay extra attention with the coordinate system of 31705metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/> 31706metadata coordinates follow the coordinate system of 31707<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/> When distortion is not OFF,<wbr/> metadata 31708coordinates follow the coordinate system of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> The 31709camera device will map these metadata fields to match the corrected image produced by the 31710camera device,<wbr/> for both capture requests and results.<wbr/> However,<wbr/> this mapping is not very 31711precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/> Only linear 31712scaling between the active array and precorrection active array coordinates is 31713performed.<wbr/> Applications that require precise correction of metadata need to undo that 31714linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's 31715own requirements.<wbr/></p> 31716<p>The full list of metadata that is affected in this way by distortion correction is:</p> 31717<ul> 31718<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 31719<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 31720<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 31721<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 31722<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li> 31723</ul> 31724 </td> 31725 </tr> 31726 31727 31728 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31729 <!-- end of entry --> 31730 31731 31732 31733 <!-- end of kind --> 31734 </tbody> 31735 31736 <!-- end of section --> 31737 <tr><td colspan="7" id="section_heic" class="section">heic</td></tr> 31738 31739 31740 <tr><td colspan="7" class="kind">static</td></tr> 31741 31742 <thead class="entries_header"> 31743 <tr> 31744 <th class="th_name">Property Name</th> 31745 <th class="th_type">Type</th> 31746 <th class="th_description">Description</th> 31747 <th class="th_units">Units</th> 31748 <th class="th_range">Range</th> 31749 <th class="th_hal_version">Initial HIDL HAL version</th> 31750 <th class="th_tags">Tags</th> 31751 </tr> 31752 </thead> 31753 31754 <tbody> 31755 31756 31757 31758 31759 31760 31761 31762 31763 31764 31765 31766 31767 <tr class="entry" id="static_android.heic.info.supported"> 31768 <td class="entry_name 31769 " rowspan="3"> 31770 android.<wbr/>heic.<wbr/>info.<wbr/>supported 31771 </td> 31772 <td class="entry_type"> 31773 <span class="entry_type_name entry_type_name_enum">byte</span> 31774 31775 <span class="entry_type_visibility"> [system as boolean]</span> 31776 31777 31778 <span class="entry_type_hwlevel">[limited] </span> 31779 31780 31781 31782 <ul class="entry_type_enum"> 31783 <li> 31784 <span class="entry_type_enum_name">FALSE (v3.4)</span> 31785 </li> 31786 <li> 31787 <span class="entry_type_enum_name">TRUE (v3.4)</span> 31788 </li> 31789 </ul> 31790 31791 </td> <!-- entry_type --> 31792 31793 <td class="entry_description"> 31794 <p>Whether this camera device can support identical set of stream combinations 31795involving HEIC image format,<wbr/> compared to the 31796<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">table of combinations</a> 31797involving JPEG image format required for the device's hardware level and capabilities.<wbr/></p> 31798 </td> 31799 31800 <td class="entry_units"> 31801 </td> 31802 31803 <td class="entry_range"> 31804 </td> 31805 31806 <td class="entry_hal_version"> 31807 <p>3.<wbr/>4</p> 31808 </td> 31809 31810 <td class="entry_tags"> 31811 <ul class="entry_tags"> 31812 <li><a href="#tag_HEIC">HEIC</a></li> 31813 </ul> 31814 </td> 31815 31816 </tr> 31817 <tr class="entries_header"> 31818 <th class="th_details" colspan="6">Details</th> 31819 </tr> 31820 <tr class="entry_cont"> 31821 <td class="entry_details" colspan="6"> 31822 <p>All the static,<wbr/> control and dynamic metadata tags related to JPEG apply to HEIC formats 31823as well.<wbr/> For example,<wbr/> the same <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> and <a href="#controls_android.jpeg.quality">android.<wbr/>jpeg.<wbr/>quality</a> are 31824used to control the orientation and quality of the HEIC image.<wbr/> Configuring JPEG and 31825HEIC streams at the same time is not supported.<wbr/></p> 31826<p>If a camera device supports HEIC format (ISO/<wbr/>IEC 23008-12),<wbr/> not only does it 31827support the existing mandatory stream 31828<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">combinations</a> 31829required for the device's hardware level and capabilities,<wbr/> it also supports swapping 31830each JPEG stream with HEIC stream in all guaranteed combinations.<wbr/></p> 31831<p>For every HEIC stream configured by the application,<wbr/> the camera framework sets up 2 31832internal streams with camera HAL:</p> 31833<ul> 31834<li>A YUV_<wbr/>420_<wbr/>888 or IMPLEMENTATION_<wbr/>DEFINED HAL stream as input to HEIC or HEVC encoder.<wbr/></li> 31835<li>A BLOB stream with JPEG_<wbr/>APPS_<wbr/>SEGMENTS dataspace to extract application markers 31836including EXIF and thumbnail to be saved in HEIF container.<wbr/></li> 31837</ul> 31838<p>A camera device can output HEIC format to the application if and only if:</p> 31839<ul> 31840<li>The system contains a HEIC or HEVC encoder with constant quality mode,<wbr/> and</li> 31841<li>This tag is set to TRUE,<wbr/> meaning that camera HAL supports replacing JPEG streams in 31842all mandatory stream combinations with a [YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED stream + 31843JPEG_<wbr/>APPS_<wbr/>SEGMENT BLOB stream] combo.<wbr/></li> 31844</ul> 31845<p>As an example,<wbr/> if the camera device's hardware level is LIMITED,<wbr/> and it supports HEIC,<wbr/> 31846in addition to the required stream combinations,<wbr/> HAL must support below stream 31847combinations as well:</p> 31848<ul> 31849<li>IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li> 31850<li>PRIV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li> 31851<li>YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li> 31852<li>PRIV PREVIEW + YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + 31853JPEG_<wbr/>SEGMENTS_<wbr/>BLOB</li> 31854</ul> 31855<p>The selection logic between YUV_<wbr/>420_<wbr/>888 and IMPLEMENTATION_<wbr/>DEFINED for HAL internal 31856stream is as follows:</p> 31857<pre><code>if (HEIC encoder exists and supports the size) { 31858 use IMPLEMENTATION_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>IMAGE_<wbr/>ENCODER usage flag; 31859} else { 31860 //<wbr/> HVC encoder exists 31861 if (size is less than framework predefined tile size) { 31862 use IMPLEMENTATINO_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>VIDEO_<wbr/>ENCODER usage flag; 31863 } else { 31864 use YUV_<wbr/>420_<wbr/>888; 31865 } 31866} 31867</code></pre> 31868 </td> 31869 </tr> 31870 31871 31872 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31873 <!-- end of entry --> 31874 31875 31876 <tr class="entry" id="static_android.heic.info.maxJpegAppSegmentsCount"> 31877 <td class="entry_name 31878 " rowspan="3"> 31879 android.<wbr/>heic.<wbr/>info.<wbr/>max<wbr/>Jpeg<wbr/>App<wbr/>Segments<wbr/>Count 31880 </td> 31881 <td class="entry_type"> 31882 <span class="entry_type_name">byte</span> 31883 31884 <span class="entry_type_visibility"> [system]</span> 31885 31886 31887 <span class="entry_type_hwlevel">[limited] </span> 31888 31889 31890 31891 31892 </td> <!-- entry_type --> 31893 31894 <td class="entry_description"> 31895 <p>The maximum number of Jpeg APP segments supported by the camera HAL device.<wbr/></p> 31896 </td> 31897 31898 <td class="entry_units"> 31899 </td> 31900 31901 <td class="entry_range"> 31902 </td> 31903 31904 <td class="entry_hal_version"> 31905 <p>3.<wbr/>4</p> 31906 </td> 31907 31908 <td class="entry_tags"> 31909 <ul class="entry_tags"> 31910 <li><a href="#tag_HEIC">HEIC</a></li> 31911 </ul> 31912 </td> 31913 31914 </tr> 31915 <tr class="entries_header"> 31916 <th class="th_details" colspan="6">Details</th> 31917 </tr> 31918 <tr class="entry_cont"> 31919 <td class="entry_details" colspan="6"> 31920 <p>The camera framework will use this value to derive the size of the BLOB buffer with 31921JPEG_<wbr/>APP_<wbr/>SEGMENTS dataspace,<wbr/> with each APP segment occupying at most 64K bytes.<wbr/> If the 31922value of this tag is n,<wbr/> the size of the framework allocated buffer will be:</p> 31923<pre><code>n * (2 + 0xFFFF) + sizeof(struct CameraBlob) 31924</code></pre> 31925<p>where 2 is number of bytes for APP marker,<wbr/> 0xFFFF is the maximum size per APP segment 31926(including segment size).<wbr/></p> 31927<p>The value of this tag must be at least 1,<wbr/> and APP1 marker (0xFFE1) segment must be the 31928first segment stored in the JPEG_<wbr/>APPS_<wbr/>SEGMENTS BLOB buffer.<wbr/> APP1 segment stores EXIF and 31929thumbnail.<wbr/></p> 31930<p>Since media encoder embeds the orientation in the metadata of the output image,<wbr/> to be 31931consistent between main image and thumbnail,<wbr/> camera HAL must not rotate the thumbnail 31932image data based on <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a>.<wbr/> The framework will write the orientation 31933into EXIF and HEIC container.<wbr/></p> 31934<p>APP1 segment is followed immediately by one or multiple APP2 segments,<wbr/> and APPn 31935segments.<wbr/> After the HAL fills and returns the JPEG_<wbr/>APP_<wbr/>SEGMENTS buffer,<wbr/> the camera 31936framework modifies the APP1 segment by filling in the EXIF tags that are related to 31937main image bitstream and the tags that can be derived from capture result metadata,<wbr/> 31938before saving them into the HEIC container.<wbr/></p> 31939<p>The value of this tag must not be more than 16.<wbr/></p> 31940 </td> 31941 </tr> 31942 31943 31944 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31945 <!-- end of entry --> 31946 31947 31948 31949 31950 31951 <tr class="entry" id="static_android.heic.availableHeicStreamConfigurations"> 31952 <td class="entry_name 31953 " rowspan="5"> 31954 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations 31955 </td> 31956 <td class="entry_type"> 31957 <span class="entry_type_name entry_type_name_enum">int32</span> 31958 <span class="entry_type_container">x</span> 31959 31960 <span class="entry_type_array"> 31961 n x 4 31962 </span> 31963 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 31964 31965 31966 <span class="entry_type_hwlevel">[limited] </span> 31967 31968 31969 31970 <ul class="entry_type_enum"> 31971 <li> 31972 <span class="entry_type_enum_name">OUTPUT (v3.4)</span> 31973 </li> 31974 <li> 31975 <span class="entry_type_enum_name">INPUT (v3.4)</span> 31976 </li> 31977 </ul> 31978 31979 </td> <!-- entry_type --> 31980 31981 <td class="entry_description"> 31982 <p>The available HEIC (ISO/<wbr/>IEC 23008-12) stream 31983configurations that this camera device supports 31984(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 31985 </td> 31986 31987 <td class="entry_units"> 31988 </td> 31989 31990 <td class="entry_range"> 31991 </td> 31992 31993 <td class="entry_hal_version"> 31994 <p>3.<wbr/>4</p> 31995 </td> 31996 31997 <td class="entry_tags"> 31998 <ul class="entry_tags"> 31999 <li><a href="#tag_HEIC">HEIC</a></li> 32000 </ul> 32001 </td> 32002 32003 </tr> 32004 <tr class="entries_header"> 32005 <th class="th_details" colspan="6">Details</th> 32006 </tr> 32007 <tr class="entry_cont"> 32008 <td class="entry_details" colspan="6"> 32009 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 32010<p>If the camera device supports HEIC image format,<wbr/> it will support identical set of stream 32011combinations involving HEIC image format,<wbr/> compared to the combinations involving JPEG 32012image format as required by the device's hardware level and capabilities.<wbr/></p> 32013<p>All the static,<wbr/> control,<wbr/> and dynamic metadata tags related to JPEG apply to HEIC formats.<wbr/> 32014Configuring JPEG and HEIC streams at the same time is not supported.<wbr/></p> 32015 </td> 32016 </tr> 32017 32018 <tr class="entries_header"> 32019 <th class="th_details" colspan="6">HAL Implementation Details</th> 32020 </tr> 32021 <tr class="entry_cont"> 32022 <td class="entry_details" colspan="6"> 32023 <p>These are output stream configurations for use with dataSpace HAL_<wbr/>DATASPACE_<wbr/>HEIF.<wbr/></p> 32024<p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 32025set by the HAL layer.<wbr/></p> 32026 </td> 32027 </tr> 32028 32029 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32030 <!-- end of entry --> 32031 32032 32033 <tr class="entry" id="static_android.heic.availableHeicMinFrameDurations"> 32034 <td class="entry_name 32035 " rowspan="5"> 32036 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations 32037 </td> 32038 <td class="entry_type"> 32039 <span class="entry_type_name">int64</span> 32040 <span class="entry_type_container">x</span> 32041 32042 <span class="entry_type_array"> 32043 4 x n 32044 </span> 32045 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 32046 32047 32048 <span class="entry_type_hwlevel">[limited] </span> 32049 32050 32051 32052 32053 </td> <!-- entry_type --> 32054 32055 <td class="entry_description"> 32056 <p>This lists the minimum frame duration for each 32057format/<wbr/>size combination for HEIC output formats.<wbr/></p> 32058 </td> 32059 32060 <td class="entry_units"> 32061 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 32062 </td> 32063 32064 <td class="entry_range"> 32065 </td> 32066 32067 <td class="entry_hal_version"> 32068 <p>3.<wbr/>4</p> 32069 </td> 32070 32071 <td class="entry_tags"> 32072 <ul class="entry_tags"> 32073 <li><a href="#tag_HEIC">HEIC</a></li> 32074 </ul> 32075 </td> 32076 32077 </tr> 32078 <tr class="entries_header"> 32079 <th class="th_details" colspan="6">Details</th> 32080 </tr> 32081 <tr class="entry_cont"> 32082 <td class="entry_details" colspan="6"> 32083 <p>This should correspond to the frame duration when only that 32084stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 32085set to either OFF or FAST.<wbr/></p> 32086<p>When multiple streams are used in a request,<wbr/> the minimum frame 32087duration will be max(individual stream min durations).<wbr/></p> 32088<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 32089<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 32090calculating the max frame rate.<wbr/></p> 32091 </td> 32092 </tr> 32093 32094 <tr class="entries_header"> 32095 <th class="th_details" colspan="6">HAL Implementation Details</th> 32096 </tr> 32097 <tr class="entry_cont"> 32098 <td class="entry_details" colspan="6"> 32099 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 32100set by the HAL layer.<wbr/></p> 32101 </td> 32102 </tr> 32103 32104 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32105 <!-- end of entry --> 32106 32107 32108 <tr class="entry" id="static_android.heic.availableHeicStallDurations"> 32109 <td class="entry_name 32110 " rowspan="5"> 32111 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations 32112 </td> 32113 <td class="entry_type"> 32114 <span class="entry_type_name">int64</span> 32115 <span class="entry_type_container">x</span> 32116 32117 <span class="entry_type_array"> 32118 4 x n 32119 </span> 32120 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 32121 32122 32123 <span class="entry_type_hwlevel">[limited] </span> 32124 32125 32126 32127 32128 </td> <!-- entry_type --> 32129 32130 <td class="entry_description"> 32131 <p>This lists the maximum stall duration for each 32132output format/<wbr/>size combination for HEIC streams.<wbr/></p> 32133 </td> 32134 32135 <td class="entry_units"> 32136 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 32137 </td> 32138 32139 <td class="entry_range"> 32140 </td> 32141 32142 <td class="entry_hal_version"> 32143 <p>3.<wbr/>4</p> 32144 </td> 32145 32146 <td class="entry_tags"> 32147 <ul class="entry_tags"> 32148 <li><a href="#tag_HEIC">HEIC</a></li> 32149 </ul> 32150 </td> 32151 32152 </tr> 32153 <tr class="entries_header"> 32154 <th class="th_details" colspan="6">Details</th> 32155 </tr> 32156 <tr class="entry_cont"> 32157 <td class="entry_details" colspan="6"> 32158 <p>A stall duration is how much extra time would get added 32159to the normal minimum frame duration for a repeating request 32160that has streams with non-zero stall.<wbr/></p> 32161<p>This functions similarly to 32162<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for HEIC 32163streams.<wbr/></p> 32164<p>All HEIC output stream formats may have a nonzero stall 32165duration.<wbr/></p> 32166 </td> 32167 </tr> 32168 32169 <tr class="entries_header"> 32170 <th class="th_details" colspan="6">HAL Implementation Details</th> 32171 </tr> 32172 <tr class="entry_cont"> 32173 <td class="entry_details" colspan="6"> 32174 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 32175set by the HAL layer.<wbr/></p> 32176 </td> 32177 </tr> 32178 32179 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32180 <!-- end of entry --> 32181 32182 32183 32184 <!-- end of kind --> 32185 </tbody> 32186 32187 <!-- end of section --> 32188<!-- </namespace> --> 32189 </table> 32190 32191 <div class="tags" id="tag_index"> 32192 <h2>Tags</h2> 32193 <ul> 32194 <li id="tag_BC">BC - 32195 Needed for backwards compatibility with old Java API 32196 32197 <ul class="tags_entries"> 32198 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 32199 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 32200 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 32201 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 32202 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 32203 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 32204 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 32205 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 32206 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 32207 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 32208 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 32209 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 32210 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 32211 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 32212 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 32213 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 32214 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 32215 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 32216 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> 32217 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 32218 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> 32219 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 32220 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 32221 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 32222 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 32223 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 32224 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 32225 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 32226 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 32227 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 32228 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li> 32229 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li> 32230 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 32231 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 32232 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 32233 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 32234 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 32235 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 32236 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 32237 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 32238 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 32239 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 32240 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 32241 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 32242 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 32243 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 32244 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 32245 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 32246 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 32247 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 32248 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 32249 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 32250 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 32251 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 32252 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 32253 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 32254 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 32255 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 32256 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 32257 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 32258 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> 32259 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 32260 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 32261 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 32262 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 32263 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 32264 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 32265 </ul> 32266 </li> <!-- tag_BC --> 32267 <li id="tag_V1">V1 - 32268 New features for first camera 2 release (API1) 32269 32270 <ul class="tags_entries"> 32271 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li> 32272 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li> 32273 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 32274 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 32275 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 32276 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 32277 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 32278 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 32279 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 32280 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 32281 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 32282 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 32283 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 32284 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 32285 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 32286 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 32287 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 32288 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 32289 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 32290 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 32291 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 32292 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 32293 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 32294 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 32295 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 32296 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 32297 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 32298 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 32299 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 32300 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 32301 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 32302 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li> 32303 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 32304 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li> 32305 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 32306 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 32307 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 32308 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 32309 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 32310 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li> 32311 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 32312 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 32313 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 32314 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 32315 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 32316 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 32317 </ul> 32318 </li> <!-- tag_V1 --> 32319 <li id="tag_RAW">RAW - 32320 Needed for useful RAW image processing and DNG file support 32321 32322 <ul class="tags_entries"> 32323 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 32324 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 32325 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 32326 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 32327 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 32328 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 32329 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li> 32330 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 32331 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> 32332 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 32333 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 32334 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 32335 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 32336 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 32337 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 32338 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 32339 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 32340 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 32341 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li> 32342 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 32343 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 32344 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 32345 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li> 32346 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li> 32347 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 32348 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 32349 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 32350 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li> 32351 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 32352 </ul> 32353 </li> <!-- tag_RAW --> 32354 <li id="tag_HAL2">HAL2 - 32355 Entry is only used by camera device legacy HAL 2.x 32356 32357 <ul class="tags_entries"> 32358 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 32359 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 32360 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 32361 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 32362 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 32363 </ul> 32364 </li> <!-- tag_HAL2 --> 32365 <li id="tag_FULL">FULL - 32366 Entry is required for full hardware level devices, and optional for other hardware levels 32367 32368 <ul class="tags_entries"> 32369 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 32370 </ul> 32371 </li> <!-- tag_FULL --> 32372 <li id="tag_DEPTH">DEPTH - 32373 Entry is required for the depth capability. 32374 32375 <ul class="tags_entries"> 32376 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li> 32377 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li> 32378 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li> 32379 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li> 32380 <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li> 32381 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li> 32382 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li> 32383 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li> 32384 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li> 32385 <li><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a> (static)</li> 32386 <li><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a> (static)</li> 32387 <li><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a> (static)</li> 32388 </ul> 32389 </li> <!-- tag_DEPTH --> 32390 <li id="tag_REPROC">REPROC - 32391 Entry is required for the YUV or PRIVATE reprocessing capability. 32392 32393 <ul class="tags_entries"> 32394 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 32395 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 32396 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 32397 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 32398 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li> 32399 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li> 32400 <li><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a> (static)</li> 32401 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li> 32402 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li> 32403 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li> 32404 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 32405 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 32406 </ul> 32407 </li> <!-- tag_REPROC --> 32408 <li id="tag_LOGICALCAMERA">LOGICALCAMERA - 32409 Entry is required for logical multi-camera capability. 32410 32411 <ul class="tags_entries"> 32412 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li> 32413 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li> 32414 <li><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a> (dynamic)</li> 32415 </ul> 32416 </li> <!-- tag_LOGICALCAMERA --> 32417 <li id="tag_HEIC">HEIC - 32418 Entry is required for devices with HEIC (High Efficiency Image Format) support. 32419 32420 <ul class="tags_entries"> 32421 <li><a href="#static_android.heic.info.supported">android.heic.info.supported</a> (static)</li> 32422 <li><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a> (static)</li> 32423 <li><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a> (static)</li> 32424 <li><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a> (static)</li> 32425 <li><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a> (static)</li> 32426 </ul> 32427 </li> <!-- tag_HEIC --> 32428 <li id="tag_FUTURE">FUTURE - 32429 Entry is under-specified and is not required for now. This is for book-keeping purpose, 32430 do not implement or use it, it may be revised for future. 32431 32432 <ul class="tags_entries"> 32433 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 32434 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 32435 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 32436 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 32437 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 32438 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 32439 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 32440 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> 32441 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> 32442 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> 32443 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 32444 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 32445 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 32446 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 32447 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 32448 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> 32449 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> 32450 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> 32451 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> 32452 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 32453 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 32454 </ul> 32455 </li> <!-- tag_FUTURE --> 32456 </ul> 32457 </div> 32458 32459 [ <a href="#">top</a> ] 32460 32461</body> 32462</html> 32463