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 <li 127 ><a href="#controls_android.colorCorrection.colorTemperature">android.colorCorrection.colorTemperature</a></li> 128 <li 129 ><a href="#controls_android.colorCorrection.colorTint">android.colorCorrection.colorTint</a></li> 130 </ul> 131 </li> 132 <li> 133 <span class="toc_kind_header">dynamic</span> 134 <ul class="toc_section"> 135 <li 136 ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 137 <li 138 ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 139 <li 140 ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 141 <li 142 ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li> 143 <li 144 ><a href="#dynamic_android.colorCorrection.colorTemperature">android.colorCorrection.colorTemperature</a></li> 145 <li 146 ><a href="#dynamic_android.colorCorrection.colorTint">android.colorCorrection.colorTint</a></li> 147 </ul> 148 </li> 149 <li> 150 <span class="toc_kind_header">static</span> 151 <ul class="toc_section"> 152 <li 153 ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li> 154 <li 155 ><a href="#static_android.colorCorrection.colorTemperatureRange">android.colorCorrection.colorTemperatureRange</a></li> 156 <li 157 ><a href="#static_android.colorCorrection.availableModes">android.colorCorrection.availableModes</a></li> 158 </ul> 159 </li> 160 </ul> <!-- toc_section --> 161 </li> 162 <li> 163 <span class="toc_section_header"><a href="#section_control">control</a></span> 164 <ul class="toc_section"> 165 <li> 166 <span class="toc_kind_header">controls</span> 167 <ul class="toc_section"> 168 <li 169 ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 170 <li 171 ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 172 <li 173 ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li> 174 <li 175 ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li> 176 <li 177 ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li> 178 <li 179 ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 180 <li 181 ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 182 <li 183 ><a href="#controls_android.control.afMode">android.control.afMode</a></li> 184 <li 185 ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li> 186 <li 187 ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li> 188 <li 189 ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li> 190 <li 191 ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li> 192 <li 193 ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li> 194 <li 195 ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li> 196 <li 197 ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li> 198 <li 199 ><a href="#controls_android.control.mode">android.control.mode</a></li> 200 <li 201 ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li> 202 <li 203 ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 204 <li 205 ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li> 206 <li 207 ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li> 208 <li 209 ><a href="#controls_android.control.extendedSceneMode">android.control.extendedSceneMode</a></li> 210 <li 211 ><a href="#controls_android.control.zoomRatio">android.control.zoomRatio</a></li> 212 <li 213 ><a href="#controls_android.control.afRegionsSet">android.control.afRegionsSet</a></li> 214 <li 215 ><a href="#controls_android.control.aeRegionsSet">android.control.aeRegionsSet</a></li> 216 <li 217 ><a href="#controls_android.control.awbRegionsSet">android.control.awbRegionsSet</a></li> 218 <li 219 ><a href="#controls_android.control.settingsOverride">android.control.settingsOverride</a></li> 220 <li 221 ><a href="#controls_android.control.autoframing">android.control.autoframing</a></li> 222 <li 223 ><a href="#controls_android.control.zoomMethod">android.control.zoomMethod</a></li> 224 <li 225 ><a href="#controls_android.control.aePriorityMode">android.control.aePriorityMode</a></li> 226 </ul> 227 </li> 228 <li> 229 <span class="toc_kind_header">static</span> 230 <ul class="toc_section"> 231 <li 232 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li> 233 <li 234 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li> 235 <li 236 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li> 237 <li 238 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li> 239 <li 240 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li> 241 <li 242 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li> 243 <li 244 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li> 245 <li 246 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li> 247 <li 248 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li> 249 <li 250 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li> 251 <li 252 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li> 253 <li 254 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li> 255 <li 256 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li> 257 <li 258 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li> 259 <li 260 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li> 261 <li 262 ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li> 263 <li 264 ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li> 265 <li 266 ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li> 267 <li 268 ><a href="#static_android.control.availableModes">android.control.availableModes</a></li> 269 <li 270 ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li> 271 <li 272 ><a href="#static_android.control.availableExtendedSceneModeMaxSizes">android.control.availableExtendedSceneModeMaxSizes</a></li> 273 <li 274 ><a href="#static_android.control.availableExtendedSceneModeZoomRatioRanges">android.control.availableExtendedSceneModeZoomRatioRanges</a></li> 275 <li 276 ><a href="#static_android.control.availableExtendedSceneModeCapabilities">android.control.availableExtendedSceneModeCapabilities</a></li> 277 <li 278 ><a href="#static_android.control.zoomRatioRange">android.control.zoomRatioRange</a></li> 279 <li 280 ><a href="#static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">android.control.availableHighSpeedVideoConfigurationsMaximumResolution</a></li> 281 <li 282 ><a href="#static_android.control.availableSettingsOverrides">android.control.availableSettingsOverrides</a></li> 283 <li 284 ><a href="#static_android.control.autoframingAvailable">android.control.autoframingAvailable</a></li> 285 <li 286 ><a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.control.lowLightBoostInfoLuminanceRange</a></li> 287 <li 288 ><a href="#static_android.control.aeAvailablePriorityModes">android.control.aeAvailablePriorityModes</a></li> 289 </ul> 290 </li> 291 <li> 292 <span class="toc_kind_header">dynamic</span> 293 <ul class="toc_section"> 294 <li 295 class="toc_deprecated" 296 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li> 297 <li 298 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 299 <li 300 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 301 <li 302 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li> 303 <li 304 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li> 305 <li 306 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li> 307 <li 308 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 309 <li 310 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 311 <li 312 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li> 313 <li 314 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li> 315 <li 316 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li> 317 <li 318 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li> 319 <li 320 ><a href="#dynamic_android.control.afState">android.control.afState</a></li> 321 <li 322 class="toc_deprecated" 323 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li> 324 <li 325 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li> 326 <li 327 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li> 328 <li 329 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li> 330 <li 331 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li> 332 <li 333 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li> 334 <li 335 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li> 336 <li 337 ><a href="#dynamic_android.control.mode">android.control.mode</a></li> 338 <li 339 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li> 340 <li 341 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 342 <li 343 ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li> 344 <li 345 ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li> 346 <li 347 ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li> 348 <li 349 ><a href="#dynamic_android.control.extendedSceneMode">android.control.extendedSceneMode</a></li> 350 <li 351 ><a href="#dynamic_android.control.zoomRatio">android.control.zoomRatio</a></li> 352 <li 353 ><a href="#dynamic_android.control.settingsOverride">android.control.settingsOverride</a></li> 354 <li 355 ><a href="#dynamic_android.control.settingsOverridingFrameNumber">android.control.settingsOverridingFrameNumber</a></li> 356 <li 357 ><a href="#dynamic_android.control.autoframing">android.control.autoframing</a></li> 358 <li 359 ><a href="#dynamic_android.control.autoframingState">android.control.autoframingState</a></li> 360 <li 361 ><a href="#dynamic_android.control.lowLightBoostState">android.control.lowLightBoostState</a></li> 362 <li 363 ><a href="#dynamic_android.control.zoomMethod">android.control.zoomMethod</a></li> 364 <li 365 ><a href="#dynamic_android.control.aePriorityMode">android.control.aePriorityMode</a></li> 366 </ul> 367 </li> 368 </ul> <!-- toc_section --> 369 </li> 370 <li> 371 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span> 372 <ul class="toc_section"> 373 <li> 374 <span class="toc_kind_header">controls</span> 375 <ul class="toc_section"> 376 <li 377 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li> 378 </ul> 379 </li> 380 </ul> <!-- toc_section --> 381 </li> 382 <li> 383 <span class="toc_section_header"><a href="#section_edge">edge</a></span> 384 <ul class="toc_section"> 385 <li> 386 <span class="toc_kind_header">controls</span> 387 <ul class="toc_section"> 388 <li 389 ><a href="#controls_android.edge.mode">android.edge.mode</a></li> 390 <li 391 ><a href="#controls_android.edge.strength">android.edge.strength</a></li> 392 </ul> 393 </li> 394 <li> 395 <span class="toc_kind_header">static</span> 396 <ul class="toc_section"> 397 <li 398 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li> 399 </ul> 400 </li> 401 <li> 402 <span class="toc_kind_header">dynamic</span> 403 <ul class="toc_section"> 404 <li 405 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> 406 </ul> 407 </li> 408 </ul> <!-- toc_section --> 409 </li> 410 <li> 411 <span class="toc_section_header"><a href="#section_flash">flash</a></span> 412 <ul class="toc_section"> 413 <li> 414 <span class="toc_kind_header">controls</span> 415 <ul class="toc_section"> 416 <li 417 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> 418 <li 419 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> 420 <li 421 ><a href="#controls_android.flash.mode">android.flash.mode</a></li> 422 <li 423 ><a href="#controls_android.flash.strengthLevel">android.flash.strengthLevel</a></li> 424 </ul> 425 </li> 426 <li> 427 <span class="toc_kind_header">static</span> 428 <ul class="toc_section"> 429 430 <li 431 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li> 432 <li 433 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> 434 <li 435 ><a href="#static_android.flash.info.strengthMaximumLevel">android.flash.info.strengthMaximumLevel</a></li> 436 <li 437 ><a href="#static_android.flash.info.strengthDefaultLevel">android.flash.info.strengthDefaultLevel</a></li> 438 439 <li 440 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> 441 <li 442 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> 443 <li 444 ><a href="#static_android.flash.singleStrengthMaxLevel">android.flash.singleStrengthMaxLevel</a></li> 445 <li 446 ><a href="#static_android.flash.singleStrengthDefaultLevel">android.flash.singleStrengthDefaultLevel</a></li> 447 <li 448 ><a href="#static_android.flash.torchStrengthMaxLevel">android.flash.torchStrengthMaxLevel</a></li> 449 <li 450 ><a href="#static_android.flash.torchStrengthDefaultLevel">android.flash.torchStrengthDefaultLevel</a></li> 451 </ul> 452 </li> 453 <li> 454 <span class="toc_kind_header">dynamic</span> 455 <ul class="toc_section"> 456 <li 457 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> 458 <li 459 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> 460 <li 461 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> 462 <li 463 ><a href="#dynamic_android.flash.state">android.flash.state</a></li> 464 <li 465 ><a href="#dynamic_android.flash.strengthLevel">android.flash.strengthLevel</a></li> 466 </ul> 467 </li> 468 </ul> <!-- toc_section --> 469 </li> 470 <li> 471 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span> 472 <ul class="toc_section"> 473 <li> 474 <span class="toc_kind_header">controls</span> 475 <ul class="toc_section"> 476 <li 477 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li> 478 </ul> 479 </li> 480 <li> 481 <span class="toc_kind_header">static</span> 482 <ul class="toc_section"> 483 <li 484 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li> 485 </ul> 486 </li> 487 <li> 488 <span class="toc_kind_header">dynamic</span> 489 <ul class="toc_section"> 490 <li 491 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li> 492 </ul> 493 </li> 494 </ul> <!-- toc_section --> 495 </li> 496 <li> 497 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span> 498 <ul class="toc_section"> 499 <li> 500 <span class="toc_kind_header">controls</span> 501 <ul class="toc_section"> 502 <li 503 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 504 <li 505 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 506 <li 507 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 508 <li 509 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 510 <li 511 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li> 512 <li 513 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li> 514 <li 515 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 516 <li 517 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 518 </ul> 519 </li> 520 <li> 521 <span class="toc_kind_header">static</span> 522 <ul class="toc_section"> 523 <li 524 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li> 525 <li 526 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li> 527 </ul> 528 </li> 529 <li> 530 <span class="toc_kind_header">dynamic</span> 531 <ul class="toc_section"> 532 <li 533 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 534 <li 535 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 536 <li 537 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 538 <li 539 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 540 <li 541 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li> 542 <li 543 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li> 544 <li 545 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li> 546 <li 547 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 548 <li 549 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 550 </ul> 551 </li> 552 </ul> <!-- toc_section --> 553 </li> 554 <li> 555 <span class="toc_section_header"><a href="#section_lens">lens</a></span> 556 <ul class="toc_section"> 557 <li> 558 <span class="toc_kind_header">controls</span> 559 <ul class="toc_section"> 560 <li 561 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li> 562 <li 563 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li> 564 <li 565 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li> 566 <li 567 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li> 568 <li 569 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 570 </ul> 571 </li> 572 <li> 573 <span class="toc_kind_header">static</span> 574 <ul class="toc_section"> 575 576 <li 577 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li> 578 <li 579 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li> 580 <li 581 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li> 582 <li 583 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li> 584 <li 585 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li> 586 <li 587 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li> 588 <li 589 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li> 590 <li 591 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li> 592 593 <li 594 ><a href="#static_android.lens.facing">android.lens.facing</a></li> 595 <li 596 ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li> 597 <li 598 ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 599 <li 600 ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 601 <li 602 class="toc_deprecated" 603 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 604 <li 605 ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li> 606 <li 607 ><a href="#static_android.lens.distortion">android.lens.distortion</a></li> 608 <li 609 ><a href="#static_android.lens.distortionMaximumResolution">android.lens.distortionMaximumResolution</a></li> 610 <li 611 ><a href="#static_android.lens.intrinsicCalibrationMaximumResolution">android.lens.intrinsicCalibrationMaximumResolution</a></li> 612 </ul> 613 </li> 614 <li> 615 <span class="toc_kind_header">dynamic</span> 616 <ul class="toc_section"> 617 <li 618 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li> 619 <li 620 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li> 621 <li 622 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li> 623 <li 624 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li> 625 <li 626 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li> 627 <li 628 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 629 <li 630 ><a href="#dynamic_android.lens.state">android.lens.state</a></li> 631 <li 632 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li> 633 <li 634 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 635 <li 636 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 637 <li 638 class="toc_deprecated" 639 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 640 <li 641 ><a href="#dynamic_android.lens.distortion">android.lens.distortion</a></li> 642 </ul> 643 </li> 644 </ul> <!-- toc_section --> 645 </li> 646 <li> 647 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span> 648 <ul class="toc_section"> 649 <li> 650 <span class="toc_kind_header">controls</span> 651 <ul class="toc_section"> 652 <li 653 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 654 <li 655 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li> 656 </ul> 657 </li> 658 <li> 659 <span class="toc_kind_header">static</span> 660 <ul class="toc_section"> 661 <li 662 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li> 663 </ul> 664 </li> 665 <li> 666 <span class="toc_kind_header">dynamic</span> 667 <ul class="toc_section"> 668 <li 669 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 670 </ul> 671 </li> 672 </ul> <!-- toc_section --> 673 </li> 674 <li> 675 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span> 676 <ul class="toc_section"> 677 <li> 678 <span class="toc_kind_header">static</span> 679 <ul class="toc_section"> 680 <li 681 class="toc_deprecated" 682 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> 683 <li 684 class="toc_deprecated" 685 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> 686 <li 687 class="toc_deprecated" 688 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> 689 <li 690 class="toc_deprecated" 691 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li> 692 </ul> 693 </li> 694 <li> 695 <span class="toc_kind_header">dynamic</span> 696 <ul class="toc_section"> 697 <li 698 class="toc_deprecated" 699 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li> 700 </ul> 701 </li> 702 </ul> <!-- toc_section --> 703 </li> 704 <li> 705 <span class="toc_section_header"><a href="#section_request">request</a></span> 706 <ul class="toc_section"> 707 <li> 708 <span class="toc_kind_header">controls</span> 709 <ul class="toc_section"> 710 <li 711 class="toc_deprecated" 712 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> 713 <li 714 ><a href="#controls_android.request.id">android.request.id</a></li> 715 <li 716 class="toc_deprecated" 717 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> 718 <li 719 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> 720 <li 721 class="toc_deprecated" 722 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> 723 <li 724 class="toc_deprecated" 725 ><a href="#controls_android.request.type">android.request.type</a></li> 726 </ul> 727 </li> 728 <li> 729 <span class="toc_kind_header">static</span> 730 <ul class="toc_section"> 731 <li 732 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li> 733 <li 734 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li> 735 <li 736 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li> 737 <li 738 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li> 739 <li 740 class="toc_deprecated" 741 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li> 742 <li 743 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li> 744 <li 745 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li> 746 <li 747 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li> 748 <li 749 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li> 750 <li 751 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li> 752 <li 753 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li> 754 <li 755 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li> 756 <li 757 ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li> 758 <li 759 ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li> 760 <li 761 ><a href="#static_android.request.characteristicKeysNeedingPermission">android.request.characteristicKeysNeedingPermission</a></li> 762 <li 763 ><a href="#static_android.request.availableDynamicRangeProfiles">android.request.availableDynamicRangeProfiles</a></li> 764 <li 765 ><a href="#static_android.request.availableDynamicRangeProfilesMap">android.request.availableDynamicRangeProfilesMap</a></li> 766 <li 767 ><a href="#static_android.request.recommendedTenBitDynamicRangeProfile">android.request.recommendedTenBitDynamicRangeProfile</a></li> 768 <li 769 ><a href="#static_android.request.availableColorSpaceProfiles">android.request.availableColorSpaceProfiles</a></li> 770 <li 771 ><a href="#static_android.request.availableColorSpaceProfilesMap">android.request.availableColorSpaceProfilesMap</a></li> 772 </ul> 773 </li> 774 <li> 775 <span class="toc_kind_header">dynamic</span> 776 <ul class="toc_section"> 777 <li 778 class="toc_deprecated" 779 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li> 780 <li 781 ><a href="#dynamic_android.request.id">android.request.id</a></li> 782 <li 783 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li> 784 <li 785 class="toc_deprecated" 786 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li> 787 <li 788 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li> 789 </ul> 790 </li> 791 </ul> <!-- toc_section --> 792 </li> 793 <li> 794 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span> 795 <ul class="toc_section"> 796 <li> 797 <span class="toc_kind_header">controls</span> 798 <ul class="toc_section"> 799 <li 800 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 801 <li 802 ><a href="#controls_android.scaler.rotateAndCrop">android.scaler.rotateAndCrop</a></li> 803 <li 804 ><a href="#controls_android.scaler.cropRegionSet">android.scaler.cropRegionSet</a></li> 805 </ul> 806 </li> 807 <li> 808 <span class="toc_kind_header">static</span> 809 <ul class="toc_section"> 810 <li 811 class="toc_deprecated" 812 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li> 813 <li 814 class="toc_deprecated" 815 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li> 816 <li 817 class="toc_deprecated" 818 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li> 819 <li 820 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li> 821 <li 822 class="toc_deprecated" 823 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li> 824 <li 825 class="toc_deprecated" 826 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li> 827 <li 828 class="toc_deprecated" 829 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li> 830 <li 831 class="toc_deprecated" 832 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li> 833 <li 834 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li> 835 <li 836 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li> 837 <li 838 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li> 839 <li 840 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li> 841 <li 842 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li> 843 <li 844 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li> 845 <li 846 ><a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.scaler.availableRecommendedStreamConfigurations</a></li> 847 <li 848 ><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a></li> 849 <li 850 ><a href="#static_android.scaler.mandatoryStreamCombinations">android.scaler.mandatoryStreamCombinations</a></li> 851 <li 852 ><a href="#static_android.scaler.mandatoryConcurrentStreamCombinations">android.scaler.mandatoryConcurrentStreamCombinations</a></li> 853 <li 854 ><a href="#static_android.scaler.availableRotateAndCropModes">android.scaler.availableRotateAndCropModes</a></li> 855 <li 856 ><a href="#static_android.scaler.defaultSecureImageSize">android.scaler.defaultSecureImageSize</a></li> 857 <li 858 ><a href="#static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">android.scaler.physicalCameraMultiResolutionStreamConfigurations</a></li> 859 <li 860 ><a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.scaler.multiResolutionStreamConfigurationMap</a></li> 861 <li 862 ><a href="#static_android.scaler.availableStreamConfigurationsMaximumResolution">android.scaler.availableStreamConfigurationsMaximumResolution</a></li> 863 <li 864 ><a href="#static_android.scaler.availableMinFrameDurationsMaximumResolution">android.scaler.availableMinFrameDurationsMaximumResolution</a></li> 865 <li 866 ><a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.scaler.availableStallDurationsMaximumResolution</a></li> 867 <li 868 ><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.scaler.streamConfigurationMapMaximumResolution</a></li> 869 <li 870 ><a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.scaler.availableInputOutputFormatsMapMaximumResolution</a></li> 871 <li 872 ><a href="#static_android.scaler.mandatoryMaximumResolutionStreamCombinations">android.scaler.mandatoryMaximumResolutionStreamCombinations</a></li> 873 <li 874 ><a href="#static_android.scaler.mandatoryTenBitOutputStreamCombinations">android.scaler.mandatoryTenBitOutputStreamCombinations</a></li> 875 <li 876 ><a href="#static_android.scaler.mandatoryPreviewStabilizationOutputStreamCombinations">android.scaler.mandatoryPreviewStabilizationOutputStreamCombinations</a></li> 877 <li 878 ><a href="#static_android.scaler.multiResolutionStreamSupported">android.scaler.multiResolutionStreamSupported</a></li> 879 <li 880 ><a href="#static_android.scaler.availableStreamUseCases">android.scaler.availableStreamUseCases</a></li> 881 <li 882 ><a href="#static_android.scaler.mandatoryUseCaseStreamCombinations">android.scaler.mandatoryUseCaseStreamCombinations</a></li> 883 </ul> 884 </li> 885 <li> 886 <span class="toc_kind_header">dynamic</span> 887 <ul class="toc_section"> 888 <li 889 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 890 <li 891 ><a href="#dynamic_android.scaler.rotateAndCrop">android.scaler.rotateAndCrop</a></li> 892 <li 893 ><a href="#dynamic_android.scaler.rawCropRegion">android.scaler.rawCropRegion</a></li> 894 </ul> 895 </li> 896 </ul> <!-- toc_section --> 897 </li> 898 <li> 899 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> 900 <ul class="toc_section"> 901 <li> 902 <span class="toc_kind_header">controls</span> 903 <ul class="toc_section"> 904 <li 905 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 906 <li 907 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 908 <li 909 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 910 <li 911 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 912 <li 913 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 914 <li 915 ><a href="#controls_android.sensor.pixelMode">android.sensor.pixelMode</a></li> 916 </ul> 917 </li> 918 <li> 919 <span class="toc_kind_header">static</span> 920 <ul class="toc_section"> 921 922 <li 923 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> 924 <li 925 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> 926 <li 927 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> 928 <li 929 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> 930 <li 931 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> 932 <li 933 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> 934 <li 935 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> 936 <li 937 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> 938 <li 939 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li> 940 <li 941 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li> 942 <li 943 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li> 944 <li 945 ><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.sensor.info.activeArraySizeMaximumResolution</a></li> 946 <li 947 ><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.sensor.info.pixelArraySizeMaximumResolution</a></li> 948 <li 949 ><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.sensor.info.preCorrectionActiveArraySizeMaximumResolution</a></li> 950 <li 951 ><a href="#static_android.sensor.info.binningFactor">android.sensor.info.binningFactor</a></li> 952 953 <li 954 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li> 955 <li 956 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li> 957 <li 958 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li> 959 <li 960 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li> 961 <li 962 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li> 963 <li 964 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li> 965 <li 966 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li> 967 <li 968 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li> 969 <li 970 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> 971 <li 972 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> 973 <li 974 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> 975 <li 976 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> 977 <li 978 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li> 979 <li 980 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> 981 <li 982 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li> 983 <li 984 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li> 985 <li 986 ><a href="#static_android.sensor.opaqueRawSizeMaximumResolution">android.sensor.opaqueRawSizeMaximumResolution</a></li> 987 <li 988 ><a href="#static_android.sensor.readoutTimestamp">android.sensor.readoutTimestamp</a></li> 989 </ul> 990 </li> 991 <li> 992 <span class="toc_kind_header">dynamic</span> 993 <ul class="toc_section"> 994 <li 995 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 996 <li 997 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 998 <li 999 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 1000 <li 1001 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 1002 <li 1003 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 1004 <li 1005 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> 1006 <li 1007 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li> 1008 <li 1009 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> 1010 <li 1011 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> 1012 <li 1013 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> 1014 <li 1015 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 1016 <li 1017 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 1018 <li 1019 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li> 1020 <li 1021 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li> 1022 <li 1023 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li> 1024 <li 1025 ><a href="#dynamic_android.sensor.pixelMode">android.sensor.pixelMode</a></li> 1026 <li 1027 ><a href="#dynamic_android.sensor.rawBinningFactorUsed">android.sensor.rawBinningFactorUsed</a></li> 1028 </ul> 1029 </li> 1030 </ul> <!-- toc_section --> 1031 </li> 1032 <li> 1033 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 1034 <ul class="toc_section"> 1035 <li> 1036 <span class="toc_kind_header">controls</span> 1037 <ul class="toc_section"> 1038 <li 1039 ><a href="#controls_android.shading.mode">android.shading.mode</a></li> 1040 <li 1041 ><a href="#controls_android.shading.strength">android.shading.strength</a></li> 1042 </ul> 1043 </li> 1044 <li> 1045 <span class="toc_kind_header">dynamic</span> 1046 <ul class="toc_section"> 1047 <li 1048 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 1049 </ul> 1050 </li> 1051 <li> 1052 <span class="toc_kind_header">static</span> 1053 <ul class="toc_section"> 1054 <li 1055 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li> 1056 </ul> 1057 </li> 1058 </ul> <!-- toc_section --> 1059 </li> 1060 <li> 1061 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> 1062 <ul class="toc_section"> 1063 <li> 1064 <span class="toc_kind_header">controls</span> 1065 <ul class="toc_section"> 1066 <li 1067 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 1068 <li 1069 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 1070 <li 1071 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 1072 <li 1073 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 1074 <li 1075 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 1076 <li 1077 ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li> 1078 </ul> 1079 </li> 1080 <li> 1081 <span class="toc_kind_header">static</span> 1082 <ul class="toc_section"> 1083 1084 <li 1085 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 1086 <li 1087 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 1088 <li 1089 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 1090 <li 1091 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 1092 <li 1093 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 1094 <li 1095 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 1096 <li 1097 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> 1098 <li 1099 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li> 1100 <li 1101 ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li> 1102 1103 </ul> 1104 </li> 1105 <li> 1106 <span class="toc_kind_header">dynamic</span> 1107 <ul class="toc_section"> 1108 <li 1109 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 1110 <li 1111 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 1112 <li 1113 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 1114 <li 1115 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 1116 <li 1117 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 1118 <li 1119 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li> 1120 <li 1121 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 1122 <li 1123 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 1124 <li 1125 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 1126 <li 1127 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 1128 <li 1129 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li> 1130 <li 1131 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 1132 <li 1133 class="toc_deprecated" 1134 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 1135 <li 1136 class="toc_deprecated" 1137 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 1138 <li 1139 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 1140 <li 1141 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 1142 <li 1143 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> 1144 <li 1145 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 1146 <li 1147 ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li> 1148 <li 1149 ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li> 1150 <li 1151 ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li> 1152 <li 1153 ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li> 1154 <li 1155 ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li> 1156 <li 1157 ><a href="#dynamic_android.statistics.lensIntrinsicsSamples">android.statistics.lensIntrinsicsSamples</a></li> 1158 <li 1159 ><a href="#dynamic_android.statistics.lensIntrinsicTimestamps">android.statistics.lensIntrinsicTimestamps</a></li> 1160 <li 1161 ><a href="#dynamic_android.statistics.lensIntrinsicSamples">android.statistics.lensIntrinsicSamples</a></li> 1162 </ul> 1163 </li> 1164 </ul> <!-- toc_section --> 1165 </li> 1166 <li> 1167 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 1168 <ul class="toc_section"> 1169 <li> 1170 <span class="toc_kind_header">controls</span> 1171 <ul class="toc_section"> 1172 <li 1173 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 1174 <li 1175 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 1176 <li 1177 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 1178 <li 1179 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li> 1180 <li 1181 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 1182 <li 1183 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li> 1184 <li 1185 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 1186 </ul> 1187 </li> 1188 <li> 1189 <span class="toc_kind_header">static</span> 1190 <ul class="toc_section"> 1191 <li 1192 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 1193 <li 1194 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> 1195 </ul> 1196 </li> 1197 <li> 1198 <span class="toc_kind_header">dynamic</span> 1199 <ul class="toc_section"> 1200 <li 1201 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 1202 <li 1203 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 1204 <li 1205 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 1206 <li 1207 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li> 1208 <li 1209 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 1210 <li 1211 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li> 1212 <li 1213 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 1214 </ul> 1215 </li> 1216 </ul> <!-- toc_section --> 1217 </li> 1218 <li> 1219 <span class="toc_section_header"><a href="#section_led">led</a></span> 1220 <ul class="toc_section"> 1221 <li> 1222 <span class="toc_kind_header">controls</span> 1223 <ul class="toc_section"> 1224 <li 1225 ><a href="#controls_android.led.transmit">android.led.transmit</a></li> 1226 </ul> 1227 </li> 1228 <li> 1229 <span class="toc_kind_header">dynamic</span> 1230 <ul class="toc_section"> 1231 <li 1232 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 1233 </ul> 1234 </li> 1235 <li> 1236 <span class="toc_kind_header">static</span> 1237 <ul class="toc_section"> 1238 <li 1239 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 1240 </ul> 1241 </li> 1242 </ul> <!-- toc_section --> 1243 </li> 1244 <li> 1245 <span class="toc_section_header"><a href="#section_info">info</a></span> 1246 <ul class="toc_section"> 1247 <li> 1248 <span class="toc_kind_header">static</span> 1249 <ul class="toc_section"> 1250 <li 1251 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 1252 <li 1253 ><a href="#static_android.info.version">android.info.version</a></li> 1254 <li 1255 ><a href="#static_android.info.supportedBufferManagementVersion">android.info.supportedBufferManagementVersion</a></li> 1256 <li 1257 ><a href="#static_android.info.deviceStateSensorOrientationMap">android.info.deviceStateSensorOrientationMap</a></li> 1258 <li 1259 ><a href="#static_android.info.deviceStateOrientations">android.info.deviceStateOrientations</a></li> 1260 <li 1261 ><a href="#static_android.info.sessionConfigurationQueryVersion">android.info.sessionConfigurationQueryVersion</a></li> 1262 <li 1263 ><a href="#static_android.info.deviceId">android.info.deviceId</a></li> 1264 </ul> 1265 </li> 1266 </ul> <!-- toc_section --> 1267 </li> 1268 <li> 1269 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 1270 <ul class="toc_section"> 1271 <li> 1272 <span class="toc_kind_header">controls</span> 1273 <ul class="toc_section"> 1274 <li 1275 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 1276 </ul> 1277 </li> 1278 <li> 1279 <span class="toc_kind_header">dynamic</span> 1280 <ul class="toc_section"> 1281 <li 1282 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 1283 </ul> 1284 </li> 1285 </ul> <!-- toc_section --> 1286 </li> 1287 <li> 1288 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 1289 <ul class="toc_section"> 1290 <li> 1291 <span class="toc_kind_header">dynamic</span> 1292 <ul class="toc_section"> 1293 <li 1294 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 1295 </ul> 1296 </li> 1297 <li> 1298 <span class="toc_kind_header">static</span> 1299 <ul class="toc_section"> 1300 <li 1301 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 1302 </ul> 1303 </li> 1304 </ul> <!-- toc_section --> 1305 </li> 1306 <li> 1307 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span> 1308 <ul class="toc_section"> 1309 <li> 1310 <span class="toc_kind_header">controls</span> 1311 <ul class="toc_section"> 1312 <li 1313 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1314 </ul> 1315 </li> 1316 <li> 1317 <span class="toc_kind_header">dynamic</span> 1318 <ul class="toc_section"> 1319 <li 1320 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1321 </ul> 1322 </li> 1323 <li> 1324 <span class="toc_kind_header">static</span> 1325 <ul class="toc_section"> 1326 <li 1327 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li> 1328 </ul> 1329 </li> 1330 </ul> <!-- toc_section --> 1331 </li> 1332 <li> 1333 <span class="toc_section_header"><a href="#section_depth">depth</a></span> 1334 <ul class="toc_section"> 1335 <li> 1336 <span class="toc_kind_header">static</span> 1337 <ul class="toc_section"> 1338 <li 1339 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li> 1340 <li 1341 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li> 1342 <li 1343 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li> 1344 <li 1345 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li> 1346 <li 1347 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li> 1348 <li 1349 ><a href="#static_android.depth.availableRecommendedDepthStreamConfigurations">android.depth.availableRecommendedDepthStreamConfigurations</a></li> 1350 <li 1351 ><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a></li> 1352 <li 1353 ><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a></li> 1354 <li 1355 ><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a></li> 1356 <li 1357 ><a href="#static_android.depth.availableDepthStreamConfigurationsMaximumResolution">android.depth.availableDepthStreamConfigurationsMaximumResolution</a></li> 1358 <li 1359 ><a href="#static_android.depth.availableDepthMinFrameDurationsMaximumResolution">android.depth.availableDepthMinFrameDurationsMaximumResolution</a></li> 1360 <li 1361 ><a href="#static_android.depth.availableDepthStallDurationsMaximumResolution">android.depth.availableDepthStallDurationsMaximumResolution</a></li> 1362 <li 1363 ><a href="#static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution</a></li> 1364 <li 1365 ><a href="#static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution</a></li> 1366 <li 1367 ><a href="#static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">android.depth.availableDynamicDepthStallDurationsMaximumResolution</a></li> 1368 </ul> 1369 </li> 1370 </ul> <!-- toc_section --> 1371 </li> 1372 <li> 1373 <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span> 1374 <ul class="toc_section"> 1375 <li> 1376 <span class="toc_kind_header">static</span> 1377 <ul class="toc_section"> 1378 <li 1379 ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li> 1380 <li 1381 ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li> 1382 </ul> 1383 </li> 1384 <li> 1385 <span class="toc_kind_header">dynamic</span> 1386 <ul class="toc_section"> 1387 <li 1388 ><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a></li> 1389 <li 1390 ><a href="#dynamic_android.logicalMultiCamera.activePhysicalSensorCropRegion">android.logicalMultiCamera.activePhysicalSensorCropRegion</a></li> 1391 </ul> 1392 </li> 1393 </ul> <!-- toc_section --> 1394 </li> 1395 <li> 1396 <span class="toc_section_header"><a href="#section_distortionCorrection">distortionCorrection</a></span> 1397 <ul class="toc_section"> 1398 <li> 1399 <span class="toc_kind_header">controls</span> 1400 <ul class="toc_section"> 1401 <li 1402 ><a href="#controls_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li> 1403 </ul> 1404 </li> 1405 <li> 1406 <span class="toc_kind_header">static</span> 1407 <ul class="toc_section"> 1408 <li 1409 ><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a></li> 1410 </ul> 1411 </li> 1412 <li> 1413 <span class="toc_kind_header">dynamic</span> 1414 <ul class="toc_section"> 1415 <li 1416 ><a href="#dynamic_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li> 1417 </ul> 1418 </li> 1419 </ul> <!-- toc_section --> 1420 </li> 1421 <li> 1422 <span class="toc_section_header"><a href="#section_heic">heic</a></span> 1423 <ul class="toc_section"> 1424 <li> 1425 <span class="toc_kind_header">static</span> 1426 <ul class="toc_section"> 1427 1428 <li 1429 ><a href="#static_android.heic.info.supported">android.heic.info.supported</a></li> 1430 <li 1431 ><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a></li> 1432 1433 <li 1434 ><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a></li> 1435 <li 1436 ><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a></li> 1437 <li 1438 ><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a></li> 1439 <li 1440 ><a href="#static_android.heic.availableHeicStreamConfigurationsMaximumResolution">android.heic.availableHeicStreamConfigurationsMaximumResolution</a></li> 1441 <li 1442 ><a href="#static_android.heic.availableHeicMinFrameDurationsMaximumResolution">android.heic.availableHeicMinFrameDurationsMaximumResolution</a></li> 1443 <li 1444 ><a href="#static_android.heic.availableHeicStallDurationsMaximumResolution">android.heic.availableHeicStallDurationsMaximumResolution</a></li> 1445 <li 1446 ><a href="#static_android.heic.availableHeicUltraHdrStreamConfigurations">android.heic.availableHeicUltraHdrStreamConfigurations</a></li> 1447 <li 1448 ><a href="#static_android.heic.availableHeicUltraHdrMinFrameDurations">android.heic.availableHeicUltraHdrMinFrameDurations</a></li> 1449 <li 1450 ><a href="#static_android.heic.availableHeicUltraHdrStallDurations">android.heic.availableHeicUltraHdrStallDurations</a></li> 1451 <li 1452 ><a href="#static_android.heic.availableHeicUltraHdrStreamConfigurationsMaximumResolution">android.heic.availableHeicUltraHdrStreamConfigurationsMaximumResolution</a></li> 1453 <li 1454 ><a href="#static_android.heic.availableHeicUltraHdrMinFrameDurationsMaximumResolution">android.heic.availableHeicUltraHdrMinFrameDurationsMaximumResolution</a></li> 1455 <li 1456 ><a href="#static_android.heic.availableHeicUltraHdrStallDurationsMaximumResolution">android.heic.availableHeicUltraHdrStallDurationsMaximumResolution</a></li> 1457 </ul> 1458 </li> 1459 </ul> <!-- toc_section --> 1460 </li> 1461 <li> 1462 <span class="toc_section_header"><a href="#section_automotive">automotive</a></span> 1463 <ul class="toc_section"> 1464 <li> 1465 <span class="toc_kind_header">static</span> 1466 <ul class="toc_section"> 1467 1468 <li 1469 ><a href="#static_android.automotive.lens.facing">android.automotive.lens.facing</a></li> 1470 1471 <li 1472 ><a href="#static_android.automotive.location">android.automotive.location</a></li> 1473 </ul> 1474 </li> 1475 </ul> <!-- toc_section --> 1476 </li> 1477 <li> 1478 <span class="toc_section_header"><a href="#section_extension">extension</a></span> 1479 <ul class="toc_section"> 1480 <li> 1481 <span class="toc_kind_header">controls</span> 1482 <ul class="toc_section"> 1483 <li 1484 ><a href="#controls_android.extension.strength">android.extension.strength</a></li> 1485 </ul> 1486 </li> 1487 <li> 1488 <span class="toc_kind_header">dynamic</span> 1489 <ul class="toc_section"> 1490 <li 1491 ><a href="#dynamic_android.extension.currentType">android.extension.currentType</a></li> 1492 <li 1493 ><a href="#dynamic_android.extension.strength">android.extension.strength</a></li> 1494 <li 1495 ><a href="#dynamic_android.extension.nightModeIndicator">android.extension.nightModeIndicator</a></li> 1496 </ul> 1497 </li> 1498 </ul> <!-- toc_section --> 1499 </li> 1500 <li> 1501 <span class="toc_section_header"><a href="#section_jpegr">jpegr</a></span> 1502 <ul class="toc_section"> 1503 <li> 1504 <span class="toc_kind_header">static</span> 1505 <ul class="toc_section"> 1506 <li 1507 ><a href="#static_android.jpegr.availableJpegRStreamConfigurations">android.jpegr.availableJpegRStreamConfigurations</a></li> 1508 <li 1509 ><a href="#static_android.jpegr.availableJpegRMinFrameDurations">android.jpegr.availableJpegRMinFrameDurations</a></li> 1510 <li 1511 ><a href="#static_android.jpegr.availableJpegRStallDurations">android.jpegr.availableJpegRStallDurations</a></li> 1512 <li 1513 ><a href="#static_android.jpegr.availableJpegRStreamConfigurationsMaximumResolution">android.jpegr.availableJpegRStreamConfigurationsMaximumResolution</a></li> 1514 <li 1515 ><a href="#static_android.jpegr.availableJpegRMinFrameDurationsMaximumResolution">android.jpegr.availableJpegRMinFrameDurationsMaximumResolution</a></li> 1516 <li 1517 ><a href="#static_android.jpegr.availableJpegRStallDurationsMaximumResolution">android.jpegr.availableJpegRStallDurationsMaximumResolution</a></li> 1518 </ul> 1519 </li> 1520 </ul> <!-- toc_section --> 1521 </li> 1522 <li> 1523 <span class="toc_section_header"><a href="#section_sharedSession">sharedSession</a></span> 1524 <ul class="toc_section"> 1525 <li> 1526 <span class="toc_kind_header">static</span> 1527 <ul class="toc_section"> 1528 <li 1529 ><a href="#static_android.sharedSession.colorSpace">android.sharedSession.colorSpace</a></li> 1530 <li 1531 ><a href="#static_android.sharedSession.outputConfigurations">android.sharedSession.outputConfigurations</a></li> 1532 <li 1533 ><a href="#static_android.sharedSession.configuration">android.sharedSession.configuration</a></li> 1534 </ul> 1535 </li> 1536 </ul> <!-- toc_section --> 1537 </li> 1538 <li> 1539 <span class="toc_section_header"><a href="#section_desktopEffects">desktopEffects</a></span> 1540 <ul class="toc_section"> 1541 <li> 1542 <span class="toc_kind_header">static</span> 1543 <ul class="toc_section"> 1544 <li 1545 ><a href="#static_android.desktopEffects.capabilities">android.desktopEffects.capabilities</a></li> 1546 <li 1547 ><a href="#static_android.desktopEffects.backgroundBlurModes">android.desktopEffects.backgroundBlurModes</a></li> 1548 </ul> 1549 </li> 1550 <li> 1551 <span class="toc_kind_header">controls</span> 1552 <ul class="toc_section"> 1553 <li 1554 ><a href="#controls_android.desktopEffects.backgroundBlurMode">android.desktopEffects.backgroundBlurMode</a></li> 1555 <li 1556 ><a href="#controls_android.desktopEffects.faceRetouchMode">android.desktopEffects.faceRetouchMode</a></li> 1557 <li 1558 ><a href="#controls_android.desktopEffects.faceRetouchStrength">android.desktopEffects.faceRetouchStrength</a></li> 1559 <li 1560 ><a href="#controls_android.desktopEffects.portraitRelightMode">android.desktopEffects.portraitRelightMode</a></li> 1561 </ul> 1562 </li> 1563 </ul> <!-- toc_section --> 1564 </li> 1565 </ul> 1566 1567 1568 <h1>Properties</h1> 1569 <table class="properties"> 1570 1571 <thead class="thead_dummy"> 1572 <tr> 1573 <th class="th_name">Property Name</th> 1574 <th class="th_type">Type</th> 1575 <th class="th_description">Description</th> 1576 <th class="th_units">Units</th> 1577 <th class="th_range">Range</th> 1578 <th class="th_hal_version">HIDL HAL version</th> 1579 <th class="th_tags">Tags</th> 1580 </tr> 1581 </thead> <!-- so that the first occurrence of thead is not 1582 above the first occurrence of tr --> 1583<!-- <namespace name="android"> --> 1584 <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr> 1585 1586 1587 <tr><td colspan="7" class="kind">controls</td></tr> 1588 1589 <thead class="entries_header"> 1590 <tr> 1591 <th class="th_name">Property Name</th> 1592 <th class="th_type">Type</th> 1593 <th class="th_description">Description</th> 1594 <th class="th_units">Units</th> 1595 <th class="th_range">Range</th> 1596 <th class="th_hal_version">Initial HIDL HAL version</th> 1597 <th class="th_tags">Tags</th> 1598 </tr> 1599 </thead> 1600 1601 <tbody> 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 <tr class="entry" id="controls_android.colorCorrection.mode"> 1613 <td class="entry_name 1614 " rowspan="5"> 1615 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1616 </td> 1617 <td class="entry_type"> 1618 <span class="entry_type_name entry_type_name_enum">byte</span> 1619 1620 <span class="entry_type_visibility"> [public]</span> 1621 1622 1623 <span class="entry_type_hwlevel">[full] </span> 1624 1625 1626 1627 <ul class="entry_type_enum"> 1628 <li> 1629 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span> 1630 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1631and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1632<p>All advanced white balance adjustments (not specified 1633by our white balance pipeline) must be disabled.<wbr/></p> 1634<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 1635TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1636this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1637 </li> 1638 <li> 1639 <span class="entry_type_enum_name">FAST (v3.2)</span> 1640 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1641capture rate relative to sensor raw output.<wbr/></p> 1642<p>Advanced white balance adjustments above and beyond 1643the specified white balance pipeline may be applied.<wbr/></p> 1644<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 1645the camera device uses the last frame's AWB values 1646(or defaults if AWB has never been run).<wbr/></p></span> 1647 </li> 1648 <li> 1649 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 1650 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1651quality but the capture rate might be reduced (relative to sensor 1652raw output rate)</p> 1653<p>Advanced white balance adjustments above and beyond 1654the specified white balance pipeline may be applied.<wbr/></p> 1655<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 1656the camera device uses the last frame's AWB values 1657(or defaults if AWB has never been run).<wbr/></p></span> 1658 </li> 1659 <li> 1660 <span class="entry_type_enum_name">CCT (v3.11)</span> 1661 <span class="entry_type_enum_notes"><p>Use 1662<a href="#controls_android.colorCorrection.colorTemperature">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature</a> and 1663<a href="#controls_android.colorCorrection.colorTint">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint</a> to adjust the white balance based 1664on correlated color temperature.<wbr/></p> 1665<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 1666CCT is ignored.<wbr/></p></span> 1667 </li> 1668 </ul> 1669 1670 </td> <!-- entry_type --> 1671 1672 <td class="entry_description"> 1673 <p>The mode control selects how the image data is converted from the 1674sensor's native color into linear sRGB color.<wbr/></p> 1675 </td> 1676 1677 <td class="entry_units"> 1678 </td> 1679 1680 <td class="entry_range"> 1681 <p>Starting from API level 36,<wbr/> <a href="#static_android.colorCorrection.availableModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Modes</a> 1682can be used to check the list of supported values.<wbr/> Prior to API level 36,<wbr/> 1683TRANSFORM_<wbr/>MATRIX,<wbr/> HIGH_<wbr/>QUALITY,<wbr/> and FAST are guaranteed to be available 1684as valid modes on devices that support this key.<wbr/></p> 1685 </td> 1686 1687 <td class="entry_hal_version"> 1688 <p>3.<wbr/>2</p> 1689 </td> 1690 1691 <td class="entry_tags"> 1692 </td> 1693 1694 </tr> 1695 <tr class="entries_header"> 1696 <th class="th_details" colspan="6">Details</th> 1697 </tr> 1698 <tr class="entry_cont"> 1699 <td class="entry_details" colspan="6"> 1700 <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 1701control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1702application controls how the color mapping is performed.<wbr/></p> 1703<p>We define the expected processing pipeline below.<wbr/> For consistency 1704across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1705<p>When either FAST or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1706do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1707<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1708camera device (in the results) and be roughly correct.<wbr/></p> 1709<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1710FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1711as what was produced by the camera device in the earlier frame.<wbr/></p> 1712<p>The expected processing pipeline is as follows:</p> 1713<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1714<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1715gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1716matrix (applied after demosaic).<wbr/></p> 1717<p>The 4-channel white-balance gains are defined as:</p> 1718<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1719</code></pre> 1720<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1721output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1722These may be identical for a given camera device implementation; if 1723the camera device does not support a separate gain for even/<wbr/>odd green 1724channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1725<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1726<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1727<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 ] 1728</code></pre> 1729<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1730to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1731<p>with colors as follows:</p> 1732<pre><code>r' = I0r + I1g + I2b 1733g' = I3r + I4g + I5b 1734b' = I6r + I7g + I8b 1735</code></pre> 1736<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1737values are clipped to fit within the range.<wbr/></p> 1738 </td> 1739 </tr> 1740 1741 <tr class="entries_header"> 1742 <th class="th_details" colspan="6">HAL Implementation Details</th> 1743 </tr> 1744 <tr class="entry_cont"> 1745 <td class="entry_details" colspan="6"> 1746 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1747on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1748That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1749capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1750 </td> 1751 </tr> 1752 1753 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1754 <!-- end of entry --> 1755 1756 1757 <tr class="entry" id="controls_android.colorCorrection.transform"> 1758 <td class="entry_name 1759 " rowspan="3"> 1760 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1761 </td> 1762 <td class="entry_type"> 1763 <span class="entry_type_name">rational</span> 1764 <span class="entry_type_container">x</span> 1765 1766 <span class="entry_type_array"> 1767 3 x 3 1768 </span> 1769 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1770 1771 1772 <span class="entry_type_hwlevel">[full] </span> 1773 1774 1775 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1776 1777 1778 </td> <!-- entry_type --> 1779 1780 <td class="entry_description"> 1781 <p>A color transform matrix to use to transform 1782from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1783 </td> 1784 1785 <td class="entry_units"> 1786 Unitless scale factors 1787 </td> 1788 1789 <td class="entry_range"> 1790 </td> 1791 1792 <td class="entry_hal_version"> 1793 <p>3.<wbr/>2</p> 1794 </td> 1795 1796 <td class="entry_tags"> 1797 </td> 1798 1799 </tr> 1800 <tr class="entries_header"> 1801 <th class="th_details" colspan="6">Details</th> 1802 </tr> 1803 <tr class="entry_cont"> 1804 <td class="entry_details" colspan="6"> 1805 <p>This matrix is either set by the camera device when the request 1806<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1807directly by the application in the request when the 1808<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1809<p>In the latter case,<wbr/> the camera device may round the matrix to account 1810for precision issues; the final rounded matrix should be reported back 1811in this matrix result metadata.<wbr/> The transform should keep the magnitude 1812of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1813values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1814<p>The valid range of each matrix element varies on different devices,<wbr/> but 1815values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1816 </td> 1817 </tr> 1818 1819 1820 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1821 <!-- end of entry --> 1822 1823 1824 <tr class="entry" id="controls_android.colorCorrection.gains"> 1825 <td class="entry_name 1826 " rowspan="5"> 1827 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1828 </td> 1829 <td class="entry_type"> 1830 <span class="entry_type_name">float</span> 1831 <span class="entry_type_container">x</span> 1832 1833 <span class="entry_type_array"> 1834 4 1835 </span> 1836 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1837 1838 1839 <span class="entry_type_hwlevel">[full] </span> 1840 1841 1842 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1843 1844 1845 </td> <!-- entry_type --> 1846 1847 <td class="entry_description"> 1848 <p>Gains applying to Bayer raw color channels for 1849white-balance.<wbr/></p> 1850 </td> 1851 1852 <td class="entry_units"> 1853 Unitless gain factors 1854 </td> 1855 1856 <td class="entry_range"> 1857 </td> 1858 1859 <td class="entry_hal_version"> 1860 <p>3.<wbr/>2</p> 1861 </td> 1862 1863 <td class="entry_tags"> 1864 </td> 1865 1866 </tr> 1867 <tr class="entries_header"> 1868 <th class="th_details" colspan="6">Details</th> 1869 </tr> 1870 <tr class="entry_cont"> 1871 <td class="entry_details" colspan="6"> 1872 <p>These per-channel gains are either set by the camera device 1873when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1874TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1875request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1876TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1877<p>The gains in the result metadata are the gains actually 1878applied by the camera device to the current frame.<wbr/></p> 1879<p>The valid range of gains varies on different devices,<wbr/> but gains 1880between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1881device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1882this can create color artifacts.<wbr/></p> 1883 </td> 1884 </tr> 1885 1886 <tr class="entries_header"> 1887 <th class="th_details" colspan="6">HAL Implementation Details</th> 1888 </tr> 1889 <tr class="entry_cont"> 1890 <td class="entry_details" colspan="6"> 1891 <p>The 4-channel white-balance gains are defined in 1892the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1893for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1894is the gain for green pixels on the odd rows.<wbr/></p> 1895<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1896channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1897<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1898 </td> 1899 </tr> 1900 1901 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1902 <!-- end of entry --> 1903 1904 1905 <tr class="entry" id="controls_android.colorCorrection.aberrationMode"> 1906 <td class="entry_name 1907 " rowspan="3"> 1908 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1909 </td> 1910 <td class="entry_type"> 1911 <span class="entry_type_name entry_type_name_enum">byte</span> 1912 1913 <span class="entry_type_visibility"> [public]</span> 1914 1915 1916 <span class="entry_type_hwlevel">[legacy] </span> 1917 1918 1919 1920 <ul class="entry_type_enum"> 1921 <li> 1922 <span class="entry_type_enum_name">OFF (v3.2)</span> 1923 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1924 </li> 1925 <li> 1926 <span class="entry_type_enum_name">FAST (v3.2)</span> 1927 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1928relative to sensor raw output.<wbr/></p></span> 1929 </li> 1930 <li> 1931 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 1932 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1933reduced (relative to sensor raw output rate)</p></span> 1934 </li> 1935 </ul> 1936 1937 </td> <!-- entry_type --> 1938 1939 <td class="entry_description"> 1940 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1941 </td> 1942 1943 <td class="entry_units"> 1944 </td> 1945 1946 <td class="entry_range"> 1947 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1948 </td> 1949 1950 <td class="entry_hal_version"> 1951 <p>3.<wbr/>2</p> 1952 </td> 1953 1954 <td class="entry_tags"> 1955 </td> 1956 1957 </tr> 1958 <tr class="entries_header"> 1959 <th class="th_details" colspan="6">Details</th> 1960 </tr> 1961 <tr class="entry_cont"> 1962 <td class="entry_details" colspan="6"> 1963 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1964can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1965the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1966minimize the chromatic artifacts that may occur along the object boundaries in an 1967image.<wbr/></p> 1968<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1969correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1970use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1971capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1972applying aberration correction.<wbr/></p> 1973<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1974 </td> 1975 </tr> 1976 1977 1978 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1979 <!-- end of entry --> 1980 1981 1982 <tr class="entry" id="controls_android.colorCorrection.colorTemperature"> 1983 <td class="entry_name 1984 " rowspan="3"> 1985 android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature 1986 </td> 1987 <td class="entry_type"> 1988 <span class="entry_type_name">int32</span> 1989 1990 <span class="entry_type_visibility"> [public]</span> 1991 1992 1993 1994 1995 1996 1997 </td> <!-- entry_type --> 1998 1999 <td class="entry_description"> 2000 <p>Specifies the color temperature for CCT mode in Kelvin 2001to adjust the white balance of the image.<wbr/></p> 2002 </td> 2003 2004 <td class="entry_units"> 2005 Kelvin 2006 </td> 2007 2008 <td class="entry_range"> 2009 <p><a href="#static_android.colorCorrection.colorTemperatureRange">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range</a></p> 2010 </td> 2011 2012 <td class="entry_hal_version"> 2013 <p>3.<wbr/>11</p> 2014 </td> 2015 2016 <td class="entry_tags"> 2017 </td> 2018 2019 </tr> 2020 <tr class="entries_header"> 2021 <th class="th_details" colspan="6">Details</th> 2022 </tr> 2023 <tr class="entry_cont"> 2024 <td class="entry_details" colspan="6"> 2025 <p>Sets the color temperature in Kelvin units for when 2026<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is CCT to adjust the 2027white balance of the image.<wbr/></p> 2028<p>If CCT mode is enabled without a requested color temperature,<wbr/> 2029a default value will be set by the camera device.<wbr/> The default value can be 2030retrieved by checking the corresponding capture result.<wbr/> Color temperatures 2031requested outside the advertised <a href="#static_android.colorCorrection.colorTemperatureRange">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range</a> 2032will be clamped.<wbr/></p> 2033 </td> 2034 </tr> 2035 2036 2037 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2038 <!-- end of entry --> 2039 2040 2041 <tr class="entry" id="controls_android.colorCorrection.colorTint"> 2042 <td class="entry_name 2043 " rowspan="3"> 2044 android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint 2045 </td> 2046 <td class="entry_type"> 2047 <span class="entry_type_name">int32</span> 2048 2049 <span class="entry_type_visibility"> [public]</span> 2050 2051 2052 2053 2054 2055 2056 </td> <!-- entry_type --> 2057 2058 <td class="entry_description"> 2059 <p>Specifies the color tint for CCT mode to adjust the white 2060balance of the image.<wbr/></p> 2061 </td> 2062 2063 <td class="entry_units"> 2064 D_<wbr/>uv defined as the distance from the Planckian locus on the CIE 1931 xy 2065 chromaticity diagram,<wbr/> with the range ±50 mapping to ±0.<wbr/>01 D_<wbr/>uv 2066 </td> 2067 2068 <td class="entry_range"> 2069 <p>The supported range,<wbr/> -50 to +50,<wbr/> corresponds to a D_<wbr/>uv distance 2070of ±0.<wbr/>01 below and above the Planckian locus.<wbr/> Some camera devices may have 2071limitations to achieving the full ±0.<wbr/>01 D_<wbr/>uv range at some color temperatures 2072(e.<wbr/>g.,<wbr/> below 1500K).<wbr/> In these cases,<wbr/> the applied D_<wbr/>uv value may be clamped and 2073the actual color tint will be reported in the <a href="#controls_android.colorCorrection.colorTint">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint</a> 2074result.<wbr/></p> 2075 </td> 2076 2077 <td class="entry_hal_version"> 2078 <p>3.<wbr/>11</p> 2079 </td> 2080 2081 <td class="entry_tags"> 2082 </td> 2083 2084 </tr> 2085 <tr class="entries_header"> 2086 <th class="th_details" colspan="6">Details</th> 2087 </tr> 2088 <tr class="entry_cont"> 2089 <td class="entry_details" colspan="6"> 2090 <p>Sets the color tint for when <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> 2091is CCT to adjust the white balance of the image.<wbr/></p> 2092<p>If CCT mode is enabled without a requested color tint,<wbr/> 2093a default value will be set by the camera device.<wbr/> The default value can be 2094retrieved by checking the corresponding capture result.<wbr/> Color tints requested 2095outside the supported range will be clamped to the nearest limit (-50 or +50).<wbr/></p> 2096 </td> 2097 </tr> 2098 2099 2100 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2101 <!-- end of entry --> 2102 2103 2104 2105 <!-- end of kind --> 2106 </tbody> 2107 <tr><td colspan="7" class="kind">dynamic</td></tr> 2108 2109 <thead class="entries_header"> 2110 <tr> 2111 <th class="th_name">Property Name</th> 2112 <th class="th_type">Type</th> 2113 <th class="th_description">Description</th> 2114 <th class="th_units">Units</th> 2115 <th class="th_range">Range</th> 2116 <th class="th_hal_version">Initial HIDL HAL version</th> 2117 <th class="th_tags">Tags</th> 2118 </tr> 2119 </thead> 2120 2121 <tbody> 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 <tr class="entry" id="dynamic_android.colorCorrection.mode"> 2133 <td class="entry_name 2134 " rowspan="5"> 2135 android.<wbr/>color<wbr/>Correction.<wbr/>mode 2136 </td> 2137 <td class="entry_type"> 2138 <span class="entry_type_name entry_type_name_enum">byte</span> 2139 2140 <span class="entry_type_visibility"> [public]</span> 2141 2142 2143 <span class="entry_type_hwlevel">[full] </span> 2144 2145 2146 2147 <ul class="entry_type_enum"> 2148 <li> 2149 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span> 2150 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 2151and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 2152<p>All advanced white balance adjustments (not specified 2153by our white balance pipeline) must be disabled.<wbr/></p> 2154<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 2155TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 2156this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 2157 </li> 2158 <li> 2159 <span class="entry_type_enum_name">FAST (v3.2)</span> 2160 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 2161capture rate relative to sensor raw output.<wbr/></p> 2162<p>Advanced white balance adjustments above and beyond 2163the specified white balance pipeline may be applied.<wbr/></p> 2164<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 2165the camera device uses the last frame's AWB values 2166(or defaults if AWB has never been run).<wbr/></p></span> 2167 </li> 2168 <li> 2169 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 2170 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 2171quality but the capture rate might be reduced (relative to sensor 2172raw output rate)</p> 2173<p>Advanced white balance adjustments above and beyond 2174the specified white balance pipeline may be applied.<wbr/></p> 2175<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 2176the camera device uses the last frame's AWB values 2177(or defaults if AWB has never been run).<wbr/></p></span> 2178 </li> 2179 <li> 2180 <span class="entry_type_enum_name">CCT (v3.11)</span> 2181 <span class="entry_type_enum_notes"><p>Use 2182<a href="#controls_android.colorCorrection.colorTemperature">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature</a> and 2183<a href="#controls_android.colorCorrection.colorTint">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint</a> to adjust the white balance based 2184on correlated color temperature.<wbr/></p> 2185<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 2186CCT is ignored.<wbr/></p></span> 2187 </li> 2188 </ul> 2189 2190 </td> <!-- entry_type --> 2191 2192 <td class="entry_description"> 2193 <p>The mode control selects how the image data is converted from the 2194sensor's native color into linear sRGB color.<wbr/></p> 2195 </td> 2196 2197 <td class="entry_units"> 2198 </td> 2199 2200 <td class="entry_range"> 2201 <p>Starting from API level 36,<wbr/> <a href="#static_android.colorCorrection.availableModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Modes</a> 2202can be used to check the list of supported values.<wbr/> Prior to API level 36,<wbr/> 2203TRANSFORM_<wbr/>MATRIX,<wbr/> HIGH_<wbr/>QUALITY,<wbr/> and FAST are guaranteed to be available 2204as valid modes on devices that support this key.<wbr/></p> 2205 </td> 2206 2207 <td class="entry_hal_version"> 2208 <p>3.<wbr/>2</p> 2209 </td> 2210 2211 <td class="entry_tags"> 2212 </td> 2213 2214 </tr> 2215 <tr class="entries_header"> 2216 <th class="th_details" colspan="6">Details</th> 2217 </tr> 2218 <tr class="entry_cont"> 2219 <td class="entry_details" colspan="6"> 2220 <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 2221control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 2222application controls how the color mapping is performed.<wbr/></p> 2223<p>We define the expected processing pipeline below.<wbr/> For consistency 2224across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 2225<p>When either FAST or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 2226do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 2227<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 2228camera device (in the results) and be roughly correct.<wbr/></p> 2229<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 2230FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 2231as what was produced by the camera device in the earlier frame.<wbr/></p> 2232<p>The expected processing pipeline is as follows:</p> 2233<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 2234<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 2235gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 2236matrix (applied after demosaic).<wbr/></p> 2237<p>The 4-channel white-balance gains are defined as:</p> 2238<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 2239</code></pre> 2240<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 2241output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 2242These may be identical for a given camera device implementation; if 2243the camera device does not support a separate gain for even/<wbr/>odd green 2244channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 2245<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 2246<p>The matrices for color transforms are defined as a 9-entry vector:</p> 2247<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 ] 2248</code></pre> 2249<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 2250to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 2251<p>with colors as follows:</p> 2252<pre><code>r' = I0r + I1g + I2b 2253g' = I3r + I4g + I5b 2254b' = I6r + I7g + I8b 2255</code></pre> 2256<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 2257values are clipped to fit within the range.<wbr/></p> 2258 </td> 2259 </tr> 2260 2261 <tr class="entries_header"> 2262 <th class="th_details" colspan="6">HAL Implementation Details</th> 2263 </tr> 2264 <tr class="entry_cont"> 2265 <td class="entry_details" colspan="6"> 2266 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 2267on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 2268That is,<wbr/> if the highest quality implementation on the camera device does not slow down 2269capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 2270 </td> 2271 </tr> 2272 2273 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2274 <!-- end of entry --> 2275 2276 2277 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 2278 <td class="entry_name 2279 " rowspan="3"> 2280 android.<wbr/>color<wbr/>Correction.<wbr/>transform 2281 </td> 2282 <td class="entry_type"> 2283 <span class="entry_type_name">rational</span> 2284 <span class="entry_type_container">x</span> 2285 2286 <span class="entry_type_array"> 2287 3 x 3 2288 </span> 2289 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 2290 2291 2292 <span class="entry_type_hwlevel">[full] </span> 2293 2294 2295 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 2296 2297 2298 </td> <!-- entry_type --> 2299 2300 <td class="entry_description"> 2301 <p>A color transform matrix to use to transform 2302from sensor RGB color space to output linear sRGB color space.<wbr/></p> 2303 </td> 2304 2305 <td class="entry_units"> 2306 Unitless scale factors 2307 </td> 2308 2309 <td class="entry_range"> 2310 </td> 2311 2312 <td class="entry_hal_version"> 2313 <p>3.<wbr/>2</p> 2314 </td> 2315 2316 <td class="entry_tags"> 2317 </td> 2318 2319 </tr> 2320 <tr class="entries_header"> 2321 <th class="th_details" colspan="6">Details</th> 2322 </tr> 2323 <tr class="entry_cont"> 2324 <td class="entry_details" colspan="6"> 2325 <p>This matrix is either set by the camera device when the request 2326<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 2327directly by the application in the request when the 2328<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 2329<p>In the latter case,<wbr/> the camera device may round the matrix to account 2330for precision issues; the final rounded matrix should be reported back 2331in this matrix result metadata.<wbr/> The transform should keep the magnitude 2332of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 2333values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 2334<p>The valid range of each matrix element varies on different devices,<wbr/> but 2335values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 2336 </td> 2337 </tr> 2338 2339 2340 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2341 <!-- end of entry --> 2342 2343 2344 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 2345 <td class="entry_name 2346 " rowspan="5"> 2347 android.<wbr/>color<wbr/>Correction.<wbr/>gains 2348 </td> 2349 <td class="entry_type"> 2350 <span class="entry_type_name">float</span> 2351 <span class="entry_type_container">x</span> 2352 2353 <span class="entry_type_array"> 2354 4 2355 </span> 2356 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 2357 2358 2359 <span class="entry_type_hwlevel">[full] </span> 2360 2361 2362 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 2363 2364 2365 </td> <!-- entry_type --> 2366 2367 <td class="entry_description"> 2368 <p>Gains applying to Bayer raw color channels for 2369white-balance.<wbr/></p> 2370 </td> 2371 2372 <td class="entry_units"> 2373 Unitless gain factors 2374 </td> 2375 2376 <td class="entry_range"> 2377 </td> 2378 2379 <td class="entry_hal_version"> 2380 <p>3.<wbr/>2</p> 2381 </td> 2382 2383 <td class="entry_tags"> 2384 </td> 2385 2386 </tr> 2387 <tr class="entries_header"> 2388 <th class="th_details" colspan="6">Details</th> 2389 </tr> 2390 <tr class="entry_cont"> 2391 <td class="entry_details" colspan="6"> 2392 <p>These per-channel gains are either set by the camera device 2393when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 2394TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 2395request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 2396TRANSFORM_<wbr/>MATRIX.<wbr/></p> 2397<p>The gains in the result metadata are the gains actually 2398applied by the camera device to the current frame.<wbr/></p> 2399<p>The valid range of gains varies on different devices,<wbr/> but gains 2400between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 2401device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 2402this can create color artifacts.<wbr/></p> 2403 </td> 2404 </tr> 2405 2406 <tr class="entries_header"> 2407 <th class="th_details" colspan="6">HAL Implementation Details</th> 2408 </tr> 2409 <tr class="entry_cont"> 2410 <td class="entry_details" colspan="6"> 2411 <p>The 4-channel white-balance gains are defined in 2412the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 2413for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 2414is the gain for green pixels on the odd rows.<wbr/></p> 2415<p>If a HAL does not support a separate gain for even/<wbr/>odd green 2416channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 2417<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 2418 </td> 2419 </tr> 2420 2421 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2422 <!-- end of entry --> 2423 2424 2425 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode"> 2426 <td class="entry_name 2427 " rowspan="3"> 2428 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 2429 </td> 2430 <td class="entry_type"> 2431 <span class="entry_type_name entry_type_name_enum">byte</span> 2432 2433 <span class="entry_type_visibility"> [public]</span> 2434 2435 2436 <span class="entry_type_hwlevel">[legacy] </span> 2437 2438 2439 2440 <ul class="entry_type_enum"> 2441 <li> 2442 <span class="entry_type_enum_name">OFF (v3.2)</span> 2443 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 2444 </li> 2445 <li> 2446 <span class="entry_type_enum_name">FAST (v3.2)</span> 2447 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 2448relative to sensor raw output.<wbr/></p></span> 2449 </li> 2450 <li> 2451 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 2452 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 2453reduced (relative to sensor raw output rate)</p></span> 2454 </li> 2455 </ul> 2456 2457 </td> <!-- entry_type --> 2458 2459 <td class="entry_description"> 2460 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 2461 </td> 2462 2463 <td class="entry_units"> 2464 </td> 2465 2466 <td class="entry_range"> 2467 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 2468 </td> 2469 2470 <td class="entry_hal_version"> 2471 <p>3.<wbr/>2</p> 2472 </td> 2473 2474 <td class="entry_tags"> 2475 </td> 2476 2477 </tr> 2478 <tr class="entries_header"> 2479 <th class="th_details" colspan="6">Details</th> 2480 </tr> 2481 <tr class="entry_cont"> 2482 <td class="entry_details" colspan="6"> 2483 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 2484can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 2485the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 2486minimize the chromatic artifacts that may occur along the object boundaries in an 2487image.<wbr/></p> 2488<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 2489correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 2490use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 2491capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 2492applying aberration correction.<wbr/></p> 2493<p>LEGACY devices will always be in FAST mode.<wbr/></p> 2494 </td> 2495 </tr> 2496 2497 2498 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2499 <!-- end of entry --> 2500 2501 2502 <tr class="entry" id="dynamic_android.colorCorrection.colorTemperature"> 2503 <td class="entry_name 2504 " rowspan="3"> 2505 android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature 2506 </td> 2507 <td class="entry_type"> 2508 <span class="entry_type_name">int32</span> 2509 2510 <span class="entry_type_visibility"> [public]</span> 2511 2512 2513 2514 2515 2516 2517 </td> <!-- entry_type --> 2518 2519 <td class="entry_description"> 2520 <p>Specifies the color temperature for CCT mode in Kelvin 2521to adjust the white balance of the image.<wbr/></p> 2522 </td> 2523 2524 <td class="entry_units"> 2525 Kelvin 2526 </td> 2527 2528 <td class="entry_range"> 2529 <p><a href="#static_android.colorCorrection.colorTemperatureRange">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range</a></p> 2530 </td> 2531 2532 <td class="entry_hal_version"> 2533 <p>3.<wbr/>11</p> 2534 </td> 2535 2536 <td class="entry_tags"> 2537 </td> 2538 2539 </tr> 2540 <tr class="entries_header"> 2541 <th class="th_details" colspan="6">Details</th> 2542 </tr> 2543 <tr class="entry_cont"> 2544 <td class="entry_details" colspan="6"> 2545 <p>Sets the color temperature in Kelvin units for when 2546<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is CCT to adjust the 2547white balance of the image.<wbr/></p> 2548<p>If CCT mode is enabled without a requested color temperature,<wbr/> 2549a default value will be set by the camera device.<wbr/> The default value can be 2550retrieved by checking the corresponding capture result.<wbr/> Color temperatures 2551requested outside the advertised <a href="#static_android.colorCorrection.colorTemperatureRange">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range</a> 2552will be clamped.<wbr/></p> 2553 </td> 2554 </tr> 2555 2556 2557 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2558 <!-- end of entry --> 2559 2560 2561 <tr class="entry" id="dynamic_android.colorCorrection.colorTint"> 2562 <td class="entry_name 2563 " rowspan="3"> 2564 android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint 2565 </td> 2566 <td class="entry_type"> 2567 <span class="entry_type_name">int32</span> 2568 2569 <span class="entry_type_visibility"> [public]</span> 2570 2571 2572 2573 2574 2575 2576 </td> <!-- entry_type --> 2577 2578 <td class="entry_description"> 2579 <p>Specifies the color tint for CCT mode to adjust the white 2580balance of the image.<wbr/></p> 2581 </td> 2582 2583 <td class="entry_units"> 2584 D_<wbr/>uv defined as the distance from the Planckian locus on the CIE 1931 xy 2585 chromaticity diagram,<wbr/> with the range ±50 mapping to ±0.<wbr/>01 D_<wbr/>uv 2586 </td> 2587 2588 <td class="entry_range"> 2589 <p>The supported range,<wbr/> -50 to +50,<wbr/> corresponds to a D_<wbr/>uv distance 2590of ±0.<wbr/>01 below and above the Planckian locus.<wbr/> Some camera devices may have 2591limitations to achieving the full ±0.<wbr/>01 D_<wbr/>uv range at some color temperatures 2592(e.<wbr/>g.,<wbr/> below 1500K).<wbr/> In these cases,<wbr/> the applied D_<wbr/>uv value may be clamped and 2593the actual color tint will be reported in the <a href="#controls_android.colorCorrection.colorTint">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint</a> 2594result.<wbr/></p> 2595 </td> 2596 2597 <td class="entry_hal_version"> 2598 <p>3.<wbr/>11</p> 2599 </td> 2600 2601 <td class="entry_tags"> 2602 </td> 2603 2604 </tr> 2605 <tr class="entries_header"> 2606 <th class="th_details" colspan="6">Details</th> 2607 </tr> 2608 <tr class="entry_cont"> 2609 <td class="entry_details" colspan="6"> 2610 <p>Sets the color tint for when <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> 2611is CCT to adjust the white balance of the image.<wbr/></p> 2612<p>If CCT mode is enabled without a requested color tint,<wbr/> 2613a default value will be set by the camera device.<wbr/> The default value can be 2614retrieved by checking the corresponding capture result.<wbr/> Color tints requested 2615outside the supported range will be clamped to the nearest limit (-50 or +50).<wbr/></p> 2616 </td> 2617 </tr> 2618 2619 2620 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2621 <!-- end of entry --> 2622 2623 2624 2625 <!-- end of kind --> 2626 </tbody> 2627 <tr><td colspan="7" class="kind">static</td></tr> 2628 2629 <thead class="entries_header"> 2630 <tr> 2631 <th class="th_name">Property Name</th> 2632 <th class="th_type">Type</th> 2633 <th class="th_description">Description</th> 2634 <th class="th_units">Units</th> 2635 <th class="th_range">Range</th> 2636 <th class="th_hal_version">Initial HIDL HAL version</th> 2637 <th class="th_tags">Tags</th> 2638 </tr> 2639 </thead> 2640 2641 <tbody> 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes"> 2653 <td class="entry_name 2654 " rowspan="5"> 2655 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes 2656 </td> 2657 <td class="entry_type"> 2658 <span class="entry_type_name">byte</span> 2659 <span class="entry_type_container">x</span> 2660 2661 <span class="entry_type_array"> 2662 n 2663 </span> 2664 <span class="entry_type_visibility"> [public as enumList]</span> 2665 2666 2667 <span class="entry_type_hwlevel">[legacy] </span> 2668 2669 2670 <div class="entry_type_notes">list of enums</div> 2671 2672 2673 </td> <!-- entry_type --> 2674 2675 <td class="entry_description"> 2676 <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 2677supported by this camera device.<wbr/></p> 2678 </td> 2679 2680 <td class="entry_units"> 2681 </td> 2682 2683 <td class="entry_range"> 2684 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p> 2685 </td> 2686 2687 <td class="entry_hal_version"> 2688 <p>3.<wbr/>2</p> 2689 </td> 2690 2691 <td class="entry_tags"> 2692 <ul class="entry_tags"> 2693 <li><a href="#tag_V1">V1</a></li> 2694 </ul> 2695 </td> 2696 2697 </tr> 2698 <tr class="entries_header"> 2699 <th class="th_details" colspan="6">Details</th> 2700 </tr> 2701 <tr class="entry_cont"> 2702 <td class="entry_details" colspan="6"> 2703 <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 2704aberration correction modes are available for a device,<wbr/> this list will solely include 2705OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p> 2706<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list 2707OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p> 2708<p>LEGACY devices will always only support FAST mode.<wbr/></p> 2709 </td> 2710 </tr> 2711 2712 <tr class="entries_header"> 2713 <th class="th_details" colspan="6">HAL Implementation Details</th> 2714 </tr> 2715 <tr class="entry_cont"> 2716 <td class="entry_details" colspan="6"> 2717 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available 2718on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 2719That is,<wbr/> if the highest quality implementation on the camera device does not slow down 2720capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 2721 </td> 2722 </tr> 2723 2724 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2725 <!-- end of entry --> 2726 2727 2728 <tr class="entry" id="static_android.colorCorrection.colorTemperatureRange"> 2729 <td class="entry_name 2730 " rowspan="3"> 2731 android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range 2732 </td> 2733 <td class="entry_type"> 2734 <span class="entry_type_name">int32</span> 2735 <span class="entry_type_container">x</span> 2736 2737 <span class="entry_type_array"> 2738 2 2739 </span> 2740 <span class="entry_type_visibility"> [public as rangeInt]</span> 2741 2742 2743 2744 2745 2746 2747 </td> <!-- entry_type --> 2748 2749 <td class="entry_description"> 2750 <p>The range of supported color temperature values for 2751<a href="#controls_android.colorCorrection.colorTemperature">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature</a>.<wbr/></p> 2752 </td> 2753 2754 <td class="entry_units"> 2755 </td> 2756 2757 <td class="entry_range"> 2758 <p>The minimum supported range will be [2856K,<wbr/>6500K].<wbr/> The maximum supported 2759range will be [1000K,<wbr/>40000K].<wbr/></p> 2760 </td> 2761 2762 <td class="entry_hal_version"> 2763 <p>3.<wbr/>11</p> 2764 </td> 2765 2766 <td class="entry_tags"> 2767 </td> 2768 2769 </tr> 2770 <tr class="entries_header"> 2771 <th class="th_details" colspan="6">Details</th> 2772 </tr> 2773 <tr class="entry_cont"> 2774 <td class="entry_details" colspan="6"> 2775 <p>This key lists the valid range of color temperature values for 2776<a href="#controls_android.colorCorrection.colorTemperature">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature</a> supported by this camera device.<wbr/></p> 2777<p>This key will be null on devices that do not support CCT mode for 2778<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 2779 </td> 2780 </tr> 2781 2782 2783 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2784 <!-- end of entry --> 2785 2786 2787 <tr class="entry" id="static_android.colorCorrection.availableModes"> 2788 <td class="entry_name 2789 " rowspan="3"> 2790 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Modes 2791 </td> 2792 <td class="entry_type"> 2793 <span class="entry_type_name">byte</span> 2794 <span class="entry_type_container">x</span> 2795 2796 <span class="entry_type_array"> 2797 n 2798 </span> 2799 <span class="entry_type_visibility"> [public as enumList]</span> 2800 2801 2802 2803 2804 <div class="entry_type_notes">list of enums</div> 2805 2806 2807 </td> <!-- entry_type --> 2808 2809 <td class="entry_description"> 2810 <p>List of color correction modes for <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> that are 2811supported by this camera device.<wbr/></p> 2812 </td> 2813 2814 <td class="entry_units"> 2815 </td> 2816 2817 <td class="entry_range"> 2818 <p>Any value listed in <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a></p> 2819 </td> 2820 2821 <td class="entry_hal_version"> 2822 <p>3.<wbr/>11</p> 2823 </td> 2824 2825 <td class="entry_tags"> 2826 </td> 2827 2828 </tr> 2829 <tr class="entries_header"> 2830 <th class="th_details" colspan="6">Details</th> 2831 </tr> 2832 <tr class="entry_cont"> 2833 <td class="entry_details" colspan="6"> 2834 <p>This key lists the valid modes for <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> If no 2835color correction modes are available for a device,<wbr/> this key will be null.<wbr/></p> 2836<p>Camera devices that have a FULL hardware level will always include at least 2837FAST,<wbr/> HIGH_<wbr/>QUALITY,<wbr/> and TRANSFORM_<wbr/>MATRIX modes.<wbr/></p> 2838 </td> 2839 </tr> 2840 2841 2842 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2843 <!-- end of entry --> 2844 2845 2846 2847 <!-- end of kind --> 2848 </tbody> 2849 2850 <!-- end of section --> 2851 <tr><td colspan="7" id="section_control" class="section">control</td></tr> 2852 2853 2854 <tr><td colspan="7" class="kind">controls</td></tr> 2855 2856 <thead class="entries_header"> 2857 <tr> 2858 <th class="th_name">Property Name</th> 2859 <th class="th_type">Type</th> 2860 <th class="th_description">Description</th> 2861 <th class="th_units">Units</th> 2862 <th class="th_range">Range</th> 2863 <th class="th_hal_version">Initial HIDL HAL version</th> 2864 <th class="th_tags">Tags</th> 2865 </tr> 2866 </thead> 2867 2868 <tbody> 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 2880 <td class="entry_name 2881 " rowspan="5"> 2882 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 2883 </td> 2884 <td class="entry_type"> 2885 <span class="entry_type_name entry_type_name_enum">byte</span> 2886 2887 <span class="entry_type_visibility"> [public]</span> 2888 2889 2890 <span class="entry_type_hwlevel">[legacy] </span> 2891 2892 2893 2894 <ul class="entry_type_enum"> 2895 <li> 2896 <span class="entry_type_enum_name">OFF (v3.2)</span> 2897 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 2898avoid banding problems.<wbr/></p></span> 2899 </li> 2900 <li> 2901 <span class="entry_type_enum_name">50HZ (v3.2)</span> 2902 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2903avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 2904 </li> 2905 <li> 2906 <span class="entry_type_enum_name">60HZ (v3.2)</span> 2907 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2908avoid banding problems with 60Hz illumination 2909sources.<wbr/></p></span> 2910 </li> 2911 <li> 2912 <span class="entry_type_enum_name">AUTO (v3.2)</span> 2913 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 2914antibanding routine to the current illumination 2915condition.<wbr/> This is the default mode if AUTO is 2916available on given camera device.<wbr/></p></span> 2917 </li> 2918 </ul> 2919 2920 </td> <!-- entry_type --> 2921 2922 <td class="entry_description"> 2923 <p>The desired setting for the camera device's auto-exposure 2924algorithm's antibanding compensation.<wbr/></p> 2925 </td> 2926 2927 <td class="entry_units"> 2928 </td> 2929 2930 <td class="entry_range"> 2931 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 2932 </td> 2933 2934 <td class="entry_hal_version"> 2935 <p>3.<wbr/>2</p> 2936 </td> 2937 2938 <td class="entry_tags"> 2939 <ul class="entry_tags"> 2940 <li><a href="#tag_BC">BC</a></li> 2941 </ul> 2942 </td> 2943 2944 </tr> 2945 <tr class="entries_header"> 2946 <th class="th_details" colspan="6">Details</th> 2947 </tr> 2948 <tr class="entry_cont"> 2949 <td class="entry_details" colspan="6"> 2950 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 2951lights,<wbr/> flicker at the rate of the power supply frequency 2952(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 2953typically not noticeable to a person,<wbr/> it can be visible to 2954a camera device.<wbr/> If a camera sets its exposure time to the 2955wrong value,<wbr/> the flicker may become visible in the 2956viewfinder as flicker or in a final captured image,<wbr/> as a 2957set of variable-brightness bands across the image.<wbr/></p> 2958<p>Therefore,<wbr/> the auto-exposure routines of camera devices 2959include antibanding routines that ensure that the chosen 2960exposure value will not cause such banding.<wbr/> The choice of 2961exposure time depends on the rate of flicker,<wbr/> which the 2962camera device can detect automatically,<wbr/> or the expected 2963rate can be selected by the application using this 2964control.<wbr/></p> 2965<p>A given camera device may not support all of the possible 2966options for the antibanding mode.<wbr/> The 2967<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 2968the available modes for a given camera device.<wbr/></p> 2969<p>AUTO mode is the default if it is available on given 2970camera device.<wbr/> When AUTO mode is not available,<wbr/> the 2971default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 2972and 60HZ will be available.<wbr/></p> 2973<p>If manual exposure control is enabled (by setting 2974<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/> 2975then this setting has no effect,<wbr/> and the application must 2976ensure it selects exposure times that do not cause banding 2977issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 2978the application in this.<wbr/></p> 2979 </td> 2980 </tr> 2981 2982 <tr class="entries_header"> 2983 <th class="th_details" colspan="6">HAL Implementation Details</th> 2984 </tr> 2985 <tr class="entry_cont"> 2986 <td class="entry_details" colspan="6"> 2987 <p>For all capture request templates,<wbr/> this field must be set 2988to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 2989the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 299060HZ must be available.<wbr/></p> 2991<p>If manual exposure control is enabled (by setting 2992<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/> 2993then the exposure values provided by the application must not be 2994adjusted for antibanding.<wbr/></p> 2995 </td> 2996 </tr> 2997 2998 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2999 <!-- end of entry --> 3000 3001 3002 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 3003 <td class="entry_name 3004 " rowspan="3"> 3005 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 3006 </td> 3007 <td class="entry_type"> 3008 <span class="entry_type_name">int32</span> 3009 3010 <span class="entry_type_visibility"> [public]</span> 3011 3012 3013 <span class="entry_type_hwlevel">[legacy] </span> 3014 3015 3016 3017 3018 </td> <!-- entry_type --> 3019 3020 <td class="entry_description"> 3021 <p>Adjustment to auto-exposure (AE) target image 3022brightness.<wbr/></p> 3023 </td> 3024 3025 <td class="entry_units"> 3026 Compensation steps 3027 </td> 3028 3029 <td class="entry_range"> 3030 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 3031 </td> 3032 3033 <td class="entry_hal_version"> 3034 <p>3.<wbr/>2</p> 3035 </td> 3036 3037 <td class="entry_tags"> 3038 <ul class="entry_tags"> 3039 <li><a href="#tag_BC">BC</a></li> 3040 </ul> 3041 </td> 3042 3043 </tr> 3044 <tr class="entries_header"> 3045 <th class="th_details" colspan="6">Details</th> 3046 </tr> 3047 <tr class="entry_cont"> 3048 <td class="entry_details" colspan="6"> 3049 <p>The adjustment is measured as a count of steps,<wbr/> with the 3050step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 3051allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 3052<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 3053will mean an exposure compensation of +2 EV; -3 will mean an 3054exposure compensation of -1 EV.<wbr/> One EV represents a doubling 3055of image brightness.<wbr/> Note that this control will only be 3056effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 3057will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 3058<p>In the event of exposure compensation value being changed,<wbr/> camera device 3059may take several frames to reach the newly requested exposure target.<wbr/> 3060During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 3061state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 3062change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 3063FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 3064 </td> 3065 </tr> 3066 3067 3068 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3069 <!-- end of entry --> 3070 3071 3072 <tr class="entry" id="controls_android.control.aeLock"> 3073 <td class="entry_name 3074 " rowspan="3"> 3075 android.<wbr/>control.<wbr/>ae<wbr/>Lock 3076 </td> 3077 <td class="entry_type"> 3078 <span class="entry_type_name entry_type_name_enum">byte</span> 3079 3080 <span class="entry_type_visibility"> [public as boolean]</span> 3081 3082 3083 <span class="entry_type_hwlevel">[legacy] </span> 3084 3085 3086 3087 <ul class="entry_type_enum"> 3088 <li> 3089 <span class="entry_type_enum_name">OFF (v3.2)</span> 3090 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 3091is free to update its parameters.<wbr/></p></span> 3092 </li> 3093 <li> 3094 <span class="entry_type_enum_name">ON (v3.2)</span> 3095 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 3096must not update the exposure and sensitivity parameters 3097while the lock is active.<wbr/></p> 3098<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 3099will still take effect while auto-exposure is locked.<wbr/></p> 3100<p>Some rare LEGACY devices may not support 3101this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 3102 </li> 3103 </ul> 3104 3105 </td> <!-- entry_type --> 3106 3107 <td class="entry_description"> 3108 <p>Whether auto-exposure (AE) is currently locked to its latest 3109calculated values.<wbr/></p> 3110 </td> 3111 3112 <td class="entry_units"> 3113 </td> 3114 3115 <td class="entry_range"> 3116 </td> 3117 3118 <td class="entry_hal_version"> 3119 <p>3.<wbr/>2</p> 3120 </td> 3121 3122 <td class="entry_tags"> 3123 <ul class="entry_tags"> 3124 <li><a href="#tag_BC">BC</a></li> 3125 </ul> 3126 </td> 3127 3128 </tr> 3129 <tr class="entries_header"> 3130 <th class="th_details" colspan="6">Details</th> 3131 </tr> 3132 <tr class="entry_cont"> 3133 <td class="entry_details" colspan="6"> 3134 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 3135and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 3136<p>Note that even when AE is locked,<wbr/> the flash may be fired if 3137the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 3138ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 3139<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 3140is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 3141<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 3142when AE is already locked,<wbr/> the camera device will not change the exposure time 3143(<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>) 3144parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 3145is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 3146<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/> 3147Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 3148<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 3149the AE if AE is locked by the camera device internally during precapture metering 3150sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 3151ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 3152will never succeed in a sequence of preview requests where AE lock is always set 3153to <code>false</code>.<wbr/></p> 3154<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 3155get locked do not necessarily correspond to the settings that were present in the 3156latest capture result received from the camera device,<wbr/> since additional captures 3157and AE updates may have occurred even before the result was sent out.<wbr/> If an 3158application is switching between automatic and manual control and wishes to eliminate 3159any flicker during the switch,<wbr/> the following procedure is recommended:</p> 3160<ol> 3161<li>Starting in auto-AE mode:</li> 3162<li>Lock AE</li> 3163<li>Wait for the first result to be output that has the AE locked</li> 3164<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 3165<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 3166</ol> 3167<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> 3168 </td> 3169 </tr> 3170 3171 3172 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3173 <!-- end of entry --> 3174 3175 3176 <tr class="entry" id="controls_android.control.aeMode"> 3177 <td class="entry_name 3178 " rowspan="3"> 3179 android.<wbr/>control.<wbr/>ae<wbr/>Mode 3180 </td> 3181 <td class="entry_type"> 3182 <span class="entry_type_name entry_type_name_enum">byte</span> 3183 3184 <span class="entry_type_visibility"> [public]</span> 3185 3186 3187 <span class="entry_type_hwlevel">[legacy] </span> 3188 3189 3190 3191 <ul class="entry_type_enum"> 3192 <li> 3193 <span class="entry_type_enum_name">OFF (v3.2)</span> 3194 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 3195<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 3196<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 3197<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 3198device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 3199a flash unit for this camera device.<wbr/></p> 3200<p>Note that auto-white balance (AWB) and auto-focus (AF) 3201behavior is device dependent when AE is in OFF mode.<wbr/> 3202To have consistent behavior across different devices,<wbr/> 3203it is recommended to either set AWB and AF to OFF mode 3204or lock AWB and AF before setting AE to OFF.<wbr/> 3205See <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/> 3206<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> 3207for more details.<wbr/></p> 3208<p>LEGACY devices do not support the OFF mode and will 3209override attempts to use this value to ON.<wbr/></p></span> 3210 </li> 3211 <li> 3212 <span class="entry_type_enum_name">ON (v3.2)</span> 3213 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 3214with no flash control.<wbr/></p> 3215<p>The application's values for 3216<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 3217<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 3218<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 3219application has control over the various 3220android.<wbr/>flash.<wbr/>* fields.<wbr/></p> 3221<p>If the device supports manual flash strength control,<wbr/> i.<wbr/>e.,<wbr/> 3222if <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and 3223<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> then 3224the auto-exposure (AE) precapture metering sequence should be 3225triggered for the configured flash mode and strength to avoid 3226the image being incorrectly exposed at different 3227<a href="#controls_android.flash.strengthLevel">android.<wbr/>flash.<wbr/>strength<wbr/>Level</a>.<wbr/></p></span> 3228 </li> 3229 <li> 3230 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span> 3231 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 3232the camera's flash unit,<wbr/> firing it in low-light 3233conditions.<wbr/></p> 3234<p>The flash may be fired during a precapture sequence 3235(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 3236may be fired for captures for which the 3237<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 3238STILL_<wbr/>CAPTURE</p></span> 3239 </li> 3240 <li> 3241 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span> 3242 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 3243the camera's flash unit,<wbr/> always firing it for still 3244captures.<wbr/></p> 3245<p>The flash may be fired during a precapture sequence 3246(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 3247will always be fired for captures for which the 3248<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 3249STILL_<wbr/>CAPTURE</p></span> 3250 </li> 3251 <li> 3252 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span> 3253 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 3254reduction.<wbr/></p> 3255<p>If deemed necessary by the camera device,<wbr/> a red eye 3256reduction flash will fire during the precapture 3257sequence.<wbr/></p></span> 3258 </li> 3259 <li> 3260 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span> 3261 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p> 3262<p>It informs the camera device that an external flash has been turned on,<wbr/> and that 3263metering (and continuous focus if active) should be quickly recalculated to account 3264for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p> 3265<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the 3266other available AE modes.<wbr/></p> 3267<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 3268be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without 3269flash.<wbr/></p></span> 3270 </li> 3271 <li> 3272 <span class="entry_type_enum_name">ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY (v3.10)</span> 3273 <span class="entry_type_enum_optional">[optional]</span> 3274 <span class="entry_type_enum_notes"><p>Like 'ON' but applies additional brightness boost in low light scenes.<wbr/></p> 3275<p>When the scene lighting conditions are within the range defined by 3276<a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a> this mode will apply additional 3277brightness boost.<wbr/></p> 3278<p>This mode will automatically adjust the intensity of low light boost applied 3279according to the scene lighting conditions.<wbr/> A darker scene will receive more boost 3280while a brighter scene will receive less boost.<wbr/></p> 3281<p>This mode can ignore the set target frame rate to allow more light to be captured 3282which can result in choppier motion.<wbr/> The frame rate can extend to lower than the 3283<a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> but will not go below 10 FPS.<wbr/> This mode 3284can also increase the sensor sensitivity gain which can result in increased luma 3285and chroma noise.<wbr/> The sensor sensitivity gain can extend to higher values beyond 3286<a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>.<wbr/> This mode may also apply additional 3287processing to recover details in dark and bright areas of the image,<wbr/>and noise 3288reduction at high sensitivity gain settings to manage the trade-off between light 3289sensitivity and capture noise.<wbr/></p> 3290<p>This mode is restricted to two output surfaces.<wbr/> One output surface type can either 3291be SurfaceView or TextureView.<wbr/> Another output surface type can either be MediaCodec 3292or MediaRecorder.<wbr/> This mode cannot be used with a target FPS range higher than 30 3293FPS.<wbr/></p> 3294<p>If the session configuration is not supported,<wbr/> the AE mode reported in the 3295CaptureResult will be 'ON' instead of 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY'.<wbr/></p> 3296<p>When this AE mode is enabled,<wbr/> the CaptureResult field 3297<a href="#dynamic_android.control.lowLightBoostState">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State</a> will indicate when low light boost is 'ACTIVE' 3298or 'INACTIVE'.<wbr/> By default <a href="#dynamic_android.control.lowLightBoostState">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State</a> will be 'INACTIVE'.<wbr/></p> 3299<p>The low light boost is 'ACTIVE' once the scene lighting condition is less than the 3300upper bound lux value defined by <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a>.<wbr/> 3301This mode will be 'INACTIVE' once the scene lighting condition is greater than the 3302upper bound lux value defined by <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a>.<wbr/></p></span> 3303 </li> 3304 </ul> 3305 3306 </td> <!-- entry_type --> 3307 3308 <td class="entry_description"> 3309 <p>The desired mode for the camera device's 3310auto-exposure routine.<wbr/></p> 3311 </td> 3312 3313 <td class="entry_units"> 3314 </td> 3315 3316 <td class="entry_range"> 3317 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 3318 </td> 3319 3320 <td class="entry_hal_version"> 3321 <p>3.<wbr/>2</p> 3322 </td> 3323 3324 <td class="entry_tags"> 3325 <ul class="entry_tags"> 3326 <li><a href="#tag_BC">BC</a></li> 3327 </ul> 3328 </td> 3329 3330 </tr> 3331 <tr class="entries_header"> 3332 <th class="th_details" colspan="6">Details</th> 3333 </tr> 3334 <tr class="entry_cont"> 3335 <td class="entry_details" colspan="6"> 3336 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 3337AUTO.<wbr/></p> 3338<p>When set to any of the ON modes,<wbr/> the camera device's 3339auto-exposure routine is enabled,<wbr/> overriding the 3340application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 3341and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 3342<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 3343<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is 3344enabled,<wbr/> the relevant priority CaptureRequest settings will not be overridden.<wbr/> 3345See <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> for more details.<wbr/> If one of the FLASH modes 3346is selected,<wbr/> the camera device's flash unit controls are 3347also overridden.<wbr/></p> 3348<p>The FLASH modes are only available if the camera device 3349has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 3350<p>If flash TORCH mode is desired,<wbr/> this field must be set to 3351ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 3352<p>When set to any of the ON modes,<wbr/> the values chosen by the 3353camera device auto-exposure routine for the overridden 3354fields for a given capture will be available in its 3355CaptureResult.<wbr/></p> 3356<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON and if the device 3357supports manual flash strength control,<wbr/> i.<wbr/>e.,<wbr/> 3358if <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and 3359<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> then 3360the auto-exposure (AE) precapture metering sequence should be 3361triggered to avoid the image being incorrectly exposed at 3362different <a href="#controls_android.flash.strengthLevel">android.<wbr/>flash.<wbr/>strength<wbr/>Level</a>.<wbr/></p> 3363 </td> 3364 </tr> 3365 3366 3367 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3368 <!-- end of entry --> 3369 3370 3371 <tr class="entry" id="controls_android.control.aeRegions"> 3372 <td class="entry_name 3373 " rowspan="5"> 3374 android.<wbr/>control.<wbr/>ae<wbr/>Regions 3375 </td> 3376 <td class="entry_type"> 3377 <span class="entry_type_name">int32</span> 3378 <span class="entry_type_container">x</span> 3379 3380 <span class="entry_type_array"> 3381 5 x area_count 3382 </span> 3383 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3384 3385 3386 3387 3388 3389 3390 </td> <!-- entry_type --> 3391 3392 <td class="entry_description"> 3393 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 3394 </td> 3395 3396 <td class="entry_units"> 3397 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 3398 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 3399 distortion correction capability and mode 3400 </td> 3401 3402 <td class="entry_range"> 3403 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3404<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> 3405depending on distortion correction capability and mode</p> 3406 </td> 3407 3408 <td class="entry_hal_version"> 3409 <p>3.<wbr/>2</p> 3410 </td> 3411 3412 <td class="entry_tags"> 3413 <ul class="entry_tags"> 3414 <li><a href="#tag_BC">BC</a></li> 3415 </ul> 3416 </td> 3417 3418 </tr> 3419 <tr class="entries_header"> 3420 <th class="th_details" colspan="6">Details</th> 3421 </tr> 3422 <tr class="entry_cont"> 3423 <td class="entry_details" colspan="6"> 3424 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 3425Otherwise will always be present.<wbr/></p> 3426<p>The maximum number of regions supported by the device is determined by the value 3427of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 3428<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 3429system 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 3430the top-left pixel in the active pixel array,<wbr/> and 3431(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3432<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 3433active pixel array.<wbr/></p> 3434<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 3435system depends on the mode being set.<wbr/> 3436When the distortion correction mode is OFF,<wbr/> the coordinate system follows 3437<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 3438<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 3439(<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/> 3440<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 3441pixel in the pre-correction active pixel array.<wbr/> 3442When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 3443<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 3444<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 3445(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3446<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 3447active pixel array.<wbr/></p> 3448<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 3449for every pixel in the area.<wbr/> This means that a large metering area 3450with the same weight as a smaller area will have more effect in 3451the metering result.<wbr/> Metering areas can partially overlap and the 3452camera device will add the weights in the overlap region.<wbr/></p> 3453<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 3454region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 3455weight is ignored.<wbr/></p> 3456<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3457camera device.<wbr/></p> 3458<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 3459capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3460region and output only the intersection rectangle as the metering region in the result 3461metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3462not reported in the result metadata.<wbr/></p> 3463<p>When setting the AE metering regions,<wbr/> the application must consider the additional 3464crop resulted from the aspect ratio differences between the preview stream and 3465<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full 3466active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/> 3467the boundary of AE regions will be [0,<wbr/> y_<wbr/>crop] and 3468[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and 3469[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio 3470mismatch.<wbr/></p> 3471<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 3472preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 3473pre-zoom field of view.<wbr/> This means that the same aeRegions values at different 3474<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The aeRegions 3475coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the 3476zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same 3477aeRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the 3478scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use 3479activeArraySize or preCorrectionActiveArraySize still depends on distortion correction 3480mode.<wbr/></p> 3481<p>For camera devices with the 3482<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 3483capability or devices where 3484<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 3485lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> 3486<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 3487<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the 3488coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 3489<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 3490 </td> 3491 </tr> 3492 3493 <tr class="entries_header"> 3494 <th class="th_details" colspan="6">HAL Implementation Details</th> 3495 </tr> 3496 <tr class="entry_cont"> 3497 <td class="entry_details" colspan="6"> 3498 <p>The HAL level representation of MeteringRectangle[] is a 3499int[5 * area_<wbr/>count].<wbr/> 3500Every five elements represent a metering region of 3501(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3502The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3503exclusive on xmax and ymax.<wbr/> 3504HAL must always report metering regions in the coordinate system of pre-correction 3505active array.<wbr/></p> 3506 </td> 3507 </tr> 3508 3509 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3510 <!-- end of entry --> 3511 3512 3513 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 3514 <td class="entry_name 3515 " rowspan="3"> 3516 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 3517 </td> 3518 <td class="entry_type"> 3519 <span class="entry_type_name">int32</span> 3520 <span class="entry_type_container">x</span> 3521 3522 <span class="entry_type_array"> 3523 2 3524 </span> 3525 <span class="entry_type_visibility"> [public as rangeInt]</span> 3526 3527 3528 <span class="entry_type_hwlevel">[legacy] </span> 3529 3530 3531 3532 3533 </td> <!-- entry_type --> 3534 3535 <td class="entry_description"> 3536 <p>Range over which the auto-exposure routine can 3537adjust the capture frame rate to maintain good 3538exposure.<wbr/></p> 3539 </td> 3540 3541 <td class="entry_units"> 3542 Frames per second (FPS) 3543 </td> 3544 3545 <td class="entry_range"> 3546 <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> 3547 </td> 3548 3549 <td class="entry_hal_version"> 3550 <p>3.<wbr/>2</p> 3551 </td> 3552 3553 <td class="entry_tags"> 3554 <ul class="entry_tags"> 3555 <li><a href="#tag_BC">BC</a></li> 3556 </ul> 3557 </td> 3558 3559 </tr> 3560 <tr class="entries_header"> 3561 <th class="th_details" colspan="6">Details</th> 3562 </tr> 3563 <tr class="entry_cont"> 3564 <td class="entry_details" colspan="6"> 3565 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 3566manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 3567<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 3568<p>Note that the actual achievable max framerate also depends on the minimum frame 3569duration of the output streams.<wbr/> The max frame rate will be 3570<code>min(aeTargetFpsRange.<wbr/>maxFps,<wbr/> 1 /<wbr/> max(individual stream min durations))</code>.<wbr/> For example,<wbr/> 3571if the application sets this key to <code>{60,<wbr/> 60}</code>,<wbr/> but the maximum minFrameDuration among 3572all configured streams is 33ms,<wbr/> the maximum framerate won't be 60fps,<wbr/> but will be 357330fps.<wbr/></p> 3574<p>To start a CaptureSession with a target FPS range different from the 3575capture request template's default value,<wbr/> the application 3576is strongly recommended to call 3577<a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a> 3578with the target fps range before creating the capture session.<wbr/> The aeTargetFpsRange is 3579typically a session parameter.<wbr/> Specifying it at session creation time helps avoid 3580session reconfiguration delays in cases like 60fps or high speed recording.<wbr/></p> 3581 </td> 3582 </tr> 3583 3584 3585 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3586 <!-- end of entry --> 3587 3588 3589 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 3590 <td class="entry_name 3591 " rowspan="5"> 3592 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 3593 </td> 3594 <td class="entry_type"> 3595 <span class="entry_type_name entry_type_name_enum">byte</span> 3596 3597 <span class="entry_type_visibility"> [public]</span> 3598 3599 3600 <span class="entry_type_hwlevel">[limited] </span> 3601 3602 3603 3604 <ul class="entry_type_enum"> 3605 <li> 3606 <span class="entry_type_enum_name">IDLE (v3.2)</span> 3607 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 3608 </li> 3609 <li> 3610 <span class="entry_type_enum_name">START (v3.2)</span> 3611 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 3612by the camera device.<wbr/></p> 3613<p>The exact effect of the precapture trigger depends on 3614the current AE mode and state.<wbr/></p></span> 3615 </li> 3616 <li> 3617 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 3618 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 3619precapture metering sequence,<wbr/> the auto-exposure routine will return to its 3620initial state.<wbr/></p></span> 3621 </li> 3622 </ul> 3623 3624 </td> <!-- entry_type --> 3625 3626 <td class="entry_description"> 3627 <p>Whether the camera device will trigger a precapture 3628metering sequence when it processes this request.<wbr/></p> 3629 </td> 3630 3631 <td class="entry_units"> 3632 </td> 3633 3634 <td class="entry_range"> 3635 </td> 3636 3637 <td class="entry_hal_version"> 3638 <p>3.<wbr/>2</p> 3639 </td> 3640 3641 <td class="entry_tags"> 3642 <ul class="entry_tags"> 3643 <li><a href="#tag_BC">BC</a></li> 3644 </ul> 3645 </td> 3646 3647 </tr> 3648 <tr class="entries_header"> 3649 <th class="th_details" colspan="6">Details</th> 3650 </tr> 3651 <tr class="entry_cont"> 3652 <td class="entry_details" colspan="6"> 3653 <p>This entry is normally set to IDLE,<wbr/> or is not 3654included at all in the request settings.<wbr/> When included and 3655set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 3656precapture metering sequence.<wbr/></p> 3657<p>When set to CANCEL,<wbr/> the camera device will cancel any active 3658precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 3659If a precapture metering sequence is already completed,<wbr/> and the camera 3660device has implicitly locked the AE for subsequent still capture,<wbr/> the 3661CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 3662<p>The precapture sequence should be triggered before starting a 3663high-quality still capture for final metering decisions to 3664be made,<wbr/> and for firing pre-capture flash pulses to estimate 3665scene brightness and required final capture flash power,<wbr/> when 3666the flash is enabled.<wbr/></p> 3667<p>Flash is enabled during precapture sequence when:</p> 3668<ul> 3669<li>AE mode is ON_<wbr/>ALWAYS_<wbr/>FLASH</li> 3670<li>AE mode is ON_<wbr/>AUTO_<wbr/>FLASH and the scene is deemed too dark without flash,<wbr/> or</li> 3671<li>AE mode is ON and flash mode is TORCH or SINGLE</li> 3672</ul> 3673<p>Normally,<wbr/> this entry should be set to START for only single request,<wbr/> and the 3674application should wait until the sequence completes before starting a new one.<wbr/></p> 3675<p>When a precapture metering sequence is finished,<wbr/> the camera device 3676may lock the auto-exposure routine internally to be able to accurately expose the 3677subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 3678For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 3679submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 3680submit 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 3681with <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 3682still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 3683API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 3684internally locked AE if the application doesn't submit a still capture request after 3685the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 3686be used in devices that have earlier API levels.<wbr/></p> 3687<p>The exact effect of auto-exposure (AE) precapture trigger 3688depends on the current AE mode and state; see 3689<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 3690details.<wbr/></p> 3691<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 3692capturing a high-resolution JPEG image will automatically trigger a 3693precapture sequence before the high-resolution capture,<wbr/> including 3694potentially firing a pre-capture flash.<wbr/></p> 3695<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 3696simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 3697the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 3698focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 3699trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 3700changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 3701example.<wbr/></p> 3702<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 3703the camera device will complete them in the optimal order for that device.<wbr/></p> 3704 </td> 3705 </tr> 3706 3707 <tr class="entries_header"> 3708 <th class="th_details" colspan="6">HAL Implementation Details</th> 3709 </tr> 3710 <tr class="entry_cont"> 3711 <td class="entry_details" colspan="6"> 3712 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 3713(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 3714treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 3715AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 3716to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 3717 </td> 3718 </tr> 3719 3720 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3721 <!-- end of entry --> 3722 3723 3724 <tr class="entry" id="controls_android.control.afMode"> 3725 <td class="entry_name 3726 " rowspan="5"> 3727 android.<wbr/>control.<wbr/>af<wbr/>Mode 3728 </td> 3729 <td class="entry_type"> 3730 <span class="entry_type_name entry_type_name_enum">byte</span> 3731 3732 <span class="entry_type_visibility"> [public]</span> 3733 3734 3735 <span class="entry_type_hwlevel">[legacy] </span> 3736 3737 3738 3739 <ul class="entry_type_enum"> 3740 <li> 3741 <span class="entry_type_enum_name">OFF (v3.2)</span> 3742 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 3743<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 3744application.<wbr/></p></span> 3745 </li> 3746 <li> 3747 <span class="entry_type_enum_name">AUTO (v3.2)</span> 3748 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 3749<p>In this mode,<wbr/> the lens does not move unless 3750the autofocus trigger action is called.<wbr/> When that trigger 3751is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 3752the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 3753<p>Always supported if lens is not fixed focus.<wbr/></p> 3754<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 3755is fixed-focus.<wbr/></p> 3756<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 3757and sets the AF state to INACTIVE.<wbr/></p></span> 3758 </li> 3759 <li> 3760 <span class="entry_type_enum_name">MACRO (v3.2)</span> 3761 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 3762<p>In this mode,<wbr/> the lens does not move unless the 3763autofocus trigger action is called.<wbr/> When that trigger is 3764activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 3765the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 3766mode is optimized for focusing on objects very close to 3767the camera.<wbr/></p> 3768<p>When that trigger is activated,<wbr/> AF will transition to 3769ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 3770NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 3771position to default,<wbr/> and sets the AF state to 3772INACTIVE.<wbr/></p></span> 3773 </li> 3774 <li> 3775 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span> 3776 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 3777position continually to attempt to provide a 3778constantly-in-focus image stream.<wbr/></p> 3779<p>The focusing behavior should be suitable for good quality 3780video recording; typically this means slower focus 3781movement and no overshoots.<wbr/> When the AF trigger is not 3782involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 3783and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 3784states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 3785the algorithm should immediately transition into 3786AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 3787lens position until a cancel AF trigger is received.<wbr/></p> 3788<p>Once cancel is received,<wbr/> the algorithm should transition 3789back to INACTIVE and resume passive scan.<wbr/> Note that this 3790behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 3791ongoing PASSIVE_<wbr/>SCAN must immediately be 3792canceled.<wbr/></p></span> 3793 </li> 3794 <li> 3795 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span> 3796 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 3797position continually to attempt to provide a 3798constantly-in-focus image stream.<wbr/></p> 3799<p>The focusing behavior should be suitable for still image 3800capture; typically this means focusing as fast as 3801possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 3802algorithm should start in INACTIVE state,<wbr/> and then 3803transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 3804appropriate as it attempts to maintain focus.<wbr/> When the AF 3805trigger is activated,<wbr/> the algorithm should finish its 3806PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 3807AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 3808lens position until a cancel AF trigger is received.<wbr/></p> 3809<p>When the AF cancel trigger is activated,<wbr/> the algorithm 3810should transition back to INACTIVE and then act as if it 3811has just been started.<wbr/></p></span> 3812 </li> 3813 <li> 3814 <span class="entry_type_enum_name">EDOF (v3.2)</span> 3815 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 3816<p>The camera device will produce images with an extended 3817depth of field automatically; no special focusing 3818operations need to be done before taking a picture.<wbr/></p> 3819<p>AF triggers are ignored,<wbr/> and the AF state will always be 3820INACTIVE.<wbr/></p></span> 3821 </li> 3822 </ul> 3823 3824 </td> <!-- entry_type --> 3825 3826 <td class="entry_description"> 3827 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 3828mode it is set to.<wbr/></p> 3829 </td> 3830 3831 <td class="entry_units"> 3832 </td> 3833 3834 <td class="entry_range"> 3835 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 3836 </td> 3837 3838 <td class="entry_hal_version"> 3839 <p>3.<wbr/>2</p> 3840 </td> 3841 3842 <td class="entry_tags"> 3843 <ul class="entry_tags"> 3844 <li><a href="#tag_BC">BC</a></li> 3845 </ul> 3846 </td> 3847 3848 </tr> 3849 <tr class="entries_header"> 3850 <th class="th_details" colspan="6">Details</th> 3851 </tr> 3852 <tr class="entry_cont"> 3853 <td class="entry_details" colspan="6"> 3854 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 3855(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 3856when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 3857dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 3858setting <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> 3859<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 3860the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 3861in result metadata.<wbr/></p> 3862 </td> 3863 </tr> 3864 3865 <tr class="entries_header"> 3866 <th class="th_details" colspan="6">HAL Implementation Details</th> 3867 </tr> 3868 <tr class="entry_cont"> 3869 <td class="entry_details" colspan="6"> 3870 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 3871request (<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 3872up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 3873<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 3874locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 3875after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 3876the same focal plane remains in focus.<wbr/></p> 3877<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 3878scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 3879(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 3880same lock behavior as above.<wbr/></p> 3881<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 3882focus 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/> 3883However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 3884manual control.<wbr/></p> 3885<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 3886camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 3887remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 3888by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 3889that will arise on camera modules with open-loop VCMs.<wbr/></p> 3890 </td> 3891 </tr> 3892 3893 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3894 <!-- end of entry --> 3895 3896 3897 <tr class="entry" id="controls_android.control.afRegions"> 3898 <td class="entry_name 3899 " rowspan="5"> 3900 android.<wbr/>control.<wbr/>af<wbr/>Regions 3901 </td> 3902 <td class="entry_type"> 3903 <span class="entry_type_name">int32</span> 3904 <span class="entry_type_container">x</span> 3905 3906 <span class="entry_type_array"> 3907 5 x area_count 3908 </span> 3909 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3910 3911 3912 3913 3914 3915 3916 </td> <!-- entry_type --> 3917 3918 <td class="entry_description"> 3919 <p>List of metering areas to use for auto-focus.<wbr/></p> 3920 </td> 3921 3922 <td class="entry_units"> 3923 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 3924 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 3925 distortion correction capability and mode 3926 </td> 3927 3928 <td class="entry_range"> 3929 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3930<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> 3931depending on distortion correction capability and mode</p> 3932 </td> 3933 3934 <td class="entry_hal_version"> 3935 <p>3.<wbr/>2</p> 3936 </td> 3937 3938 <td class="entry_tags"> 3939 <ul class="entry_tags"> 3940 <li><a href="#tag_BC">BC</a></li> 3941 </ul> 3942 </td> 3943 3944 </tr> 3945 <tr class="entries_header"> 3946 <th class="th_details" colspan="6">Details</th> 3947 </tr> 3948 <tr class="entry_cont"> 3949 <td class="entry_details" colspan="6"> 3950 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 3951Otherwise will always be present.<wbr/></p> 3952<p>The maximum number of focus areas supported by the device is determined by the value 3953of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 3954<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 3955system 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 3956the top-left pixel in the active pixel array,<wbr/> and 3957(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3958<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 3959active pixel array.<wbr/></p> 3960<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 3961system depends on the mode being set.<wbr/> 3962When the distortion correction mode is OFF,<wbr/> the coordinate system follows 3963<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 3964<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 3965(<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/> 3966<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 3967pixel in the pre-correction active pixel array.<wbr/> 3968When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 3969<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 3970<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 3971(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3972<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 3973active pixel array.<wbr/></p> 3974<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 3975for every pixel in the area.<wbr/> This means that a large metering area 3976with the same weight as a smaller area will have more effect in 3977the metering result.<wbr/> Metering areas can partially overlap and the 3978camera device will add the weights in the overlap region.<wbr/></p> 3979<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 3980is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 3981ignored.<wbr/></p> 3982<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3983camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or 3984the region selected by the camera device as the focus area of interest.<wbr/></p> 3985<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 3986capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3987region and output only the intersection rectangle as the metering region in the result 3988metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3989not reported in the result metadata.<wbr/></p> 3990<p>When setting the AF metering regions,<wbr/> the application must consider the additional 3991crop resulted from the aspect ratio differences between the preview stream and 3992<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full 3993active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/> 3994the boundary of AF regions will be [0,<wbr/> y_<wbr/>crop] and 3995[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and 3996[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio 3997mismatch.<wbr/></p> 3998<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 3999preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 4000pre-zoom field of view.<wbr/> This means that the same afRegions values at different 4001<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The afRegions 4002coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the 4003zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same 4004afRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the 4005scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use 4006activeArraySize or preCorrectionActiveArraySize still depends on distortion correction 4007mode.<wbr/></p> 4008<p>For camera devices with the 4009<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 4010capability or devices where 4011<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 4012lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> 4013<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 4014<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the 4015coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 4016<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 4017 </td> 4018 </tr> 4019 4020 <tr class="entries_header"> 4021 <th class="th_details" colspan="6">HAL Implementation Details</th> 4022 </tr> 4023 <tr class="entry_cont"> 4024 <td class="entry_details" colspan="6"> 4025 <p>The HAL level representation of MeteringRectangle[] is a 4026int[5 * area_<wbr/>count].<wbr/> 4027Every five elements represent a metering region of 4028(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 4029The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 4030exclusive on xmax and ymax.<wbr/> 4031HAL must always report metering regions in the coordinate system of pre-correction 4032active array.<wbr/></p> 4033 </td> 4034 </tr> 4035 4036 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4037 <!-- end of entry --> 4038 4039 4040 <tr class="entry" id="controls_android.control.afTrigger"> 4041 <td class="entry_name 4042 " rowspan="5"> 4043 android.<wbr/>control.<wbr/>af<wbr/>Trigger 4044 </td> 4045 <td class="entry_type"> 4046 <span class="entry_type_name entry_type_name_enum">byte</span> 4047 4048 <span class="entry_type_visibility"> [public]</span> 4049 4050 4051 <span class="entry_type_hwlevel">[legacy] </span> 4052 4053 4054 4055 <ul class="entry_type_enum"> 4056 <li> 4057 <span class="entry_type_enum_name">IDLE (v3.2)</span> 4058 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 4059 </li> 4060 <li> 4061 <span class="entry_type_enum_name">START (v3.2)</span> 4062 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 4063 </li> 4064 <li> 4065 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 4066 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 4067state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 4068 </li> 4069 </ul> 4070 4071 </td> <!-- entry_type --> 4072 4073 <td class="entry_description"> 4074 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 4075 </td> 4076 4077 <td class="entry_units"> 4078 </td> 4079 4080 <td class="entry_range"> 4081 </td> 4082 4083 <td class="entry_hal_version"> 4084 <p>3.<wbr/>2</p> 4085 </td> 4086 4087 <td class="entry_tags"> 4088 <ul class="entry_tags"> 4089 <li><a href="#tag_BC">BC</a></li> 4090 </ul> 4091 </td> 4092 4093 </tr> 4094 <tr class="entries_header"> 4095 <th class="th_details" colspan="6">Details</th> 4096 </tr> 4097 <tr class="entry_cont"> 4098 <td class="entry_details" colspan="6"> 4099 <p>This entry is normally set to IDLE,<wbr/> or is not 4100included at all in the request settings.<wbr/></p> 4101<p>When included and set to START,<wbr/> the camera device will trigger the 4102autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 4103<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 4104and return to its initial AF state.<wbr/></p> 4105<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 4106single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 4107START for multiple captures in a row means restarting the AF operation over 4108and over again.<wbr/></p> 4109<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> 4110<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> 4111simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 4112the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 4113focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 4114trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 4115changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 4116 </td> 4117 </tr> 4118 4119 <tr class="entries_header"> 4120 <th class="th_details" colspan="6">HAL Implementation Details</th> 4121 </tr> 4122 <tr class="entry_cont"> 4123 <td class="entry_details" colspan="6"> 4124 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 4125(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 4126treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 4127AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 4128to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 4129 </td> 4130 </tr> 4131 4132 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4133 <!-- end of entry --> 4134 4135 4136 <tr class="entry" id="controls_android.control.awbLock"> 4137 <td class="entry_name 4138 " rowspan="3"> 4139 android.<wbr/>control.<wbr/>awb<wbr/>Lock 4140 </td> 4141 <td class="entry_type"> 4142 <span class="entry_type_name entry_type_name_enum">byte</span> 4143 4144 <span class="entry_type_visibility"> [public as boolean]</span> 4145 4146 4147 <span class="entry_type_hwlevel">[legacy] </span> 4148 4149 4150 4151 <ul class="entry_type_enum"> 4152 <li> 4153 <span class="entry_type_enum_name">OFF (v3.2)</span> 4154 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 4155algorithm is free to update its parameters if in AUTO 4156mode.<wbr/></p></span> 4157 </li> 4158 <li> 4159 <span class="entry_type_enum_name">ON (v3.2)</span> 4160 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 4161algorithm will not update its parameters while the lock 4162is active.<wbr/></p></span> 4163 </li> 4164 </ul> 4165 4166 </td> <!-- entry_type --> 4167 4168 <td class="entry_description"> 4169 <p>Whether auto-white balance (AWB) is currently locked to its 4170latest calculated values.<wbr/></p> 4171 </td> 4172 4173 <td class="entry_units"> 4174 </td> 4175 4176 <td class="entry_range"> 4177 </td> 4178 4179 <td class="entry_hal_version"> 4180 <p>3.<wbr/>2</p> 4181 </td> 4182 4183 <td class="entry_tags"> 4184 <ul class="entry_tags"> 4185 <li><a href="#tag_BC">BC</a></li> 4186 </ul> 4187 </td> 4188 4189 </tr> 4190 <tr class="entries_header"> 4191 <th class="th_details" colspan="6">Details</th> 4192 </tr> 4193 <tr class="entry_cont"> 4194 <td class="entry_details" colspan="6"> 4195 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 4196and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 4197<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 4198get locked do not necessarily correspond to the settings that were present in the 4199latest capture result received from the camera device,<wbr/> since additional captures 4200and AWB updates may have occurred even before the result was sent out.<wbr/> If an 4201application is switching between automatic and manual control and wishes to eliminate 4202any flicker during the switch,<wbr/> the following procedure is recommended:</p> 4203<ol> 4204<li>Starting in auto-AWB mode:</li> 4205<li>Lock AWB</li> 4206<li>Wait for the first result to be output that has the AWB locked</li> 4207<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 4208<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 4209</ol> 4210<p>Note that AWB lock is only meaningful when 4211<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 4212AWB is already fixed to a specific setting.<wbr/></p> 4213<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 4214 </td> 4215 </tr> 4216 4217 4218 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4219 <!-- end of entry --> 4220 4221 4222 <tr class="entry" id="controls_android.control.awbMode"> 4223 <td class="entry_name 4224 " rowspan="3"> 4225 android.<wbr/>control.<wbr/>awb<wbr/>Mode 4226 </td> 4227 <td class="entry_type"> 4228 <span class="entry_type_name entry_type_name_enum">byte</span> 4229 4230 <span class="entry_type_visibility"> [public]</span> 4231 4232 4233 <span class="entry_type_hwlevel">[legacy] </span> 4234 4235 4236 4237 <ul class="entry_type_enum"> 4238 <li> 4239 <span class="entry_type_enum_name">OFF (v3.2)</span> 4240 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 4241<p>The application-selected color transform matrix 4242(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 4243(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 4244device for manual white balance control.<wbr/></p></span> 4245 </li> 4246 <li> 4247 <span class="entry_type_enum_name">AUTO (v3.2)</span> 4248 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 4249<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 4250and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 4251For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 4252values used by the camera device for the transform and gains 4253will be available in the capture result for this request.<wbr/></p></span> 4254 </li> 4255 <li> 4256 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span> 4257 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 4258the camera device uses incandescent light as the assumed scene 4259illumination for white balance.<wbr/></p> 4260<p>While the exact white balance transforms are up to the 4261camera device,<wbr/> they will approximately match the CIE 4262standard illuminant A.<wbr/></p> 4263<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 4264and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 4265For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 4266values used by the camera device for the transform and gains 4267will be available in the capture result for this request.<wbr/></p></span> 4268 </li> 4269 <li> 4270 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> 4271 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 4272the camera device uses fluorescent light as the assumed scene 4273illumination for white balance.<wbr/></p> 4274<p>While the exact white balance transforms are up to the 4275camera device,<wbr/> they will approximately match the CIE 4276standard illuminant F2.<wbr/></p> 4277<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 4278and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 4279For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 4280values used by the camera device for the transform and gains 4281will be available in the capture result for this request.<wbr/></p></span> 4282 </li> 4283 <li> 4284 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span> 4285 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 4286the camera device uses warm fluorescent light as the assumed scene 4287illumination for white balance.<wbr/></p> 4288<p>While the exact white balance transforms are up to the 4289camera device,<wbr/> they will approximately match the CIE 4290standard illuminant F4.<wbr/></p> 4291<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 4292and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 4293For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 4294values used by the camera device for the transform and gains 4295will be available in the capture result for this request.<wbr/></p></span> 4296 </li> 4297 <li> 4298 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> 4299 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 4300the camera device uses daylight light as the assumed scene 4301illumination for white balance.<wbr/></p> 4302<p>While the exact white balance transforms are up to the 4303camera device,<wbr/> they will approximately match the CIE 4304standard illuminant D65.<wbr/></p> 4305<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 4306and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 4307For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 4308values used by the camera device for the transform and gains 4309will be available in the capture result for this request.<wbr/></p></span> 4310 </li> 4311 <li> 4312 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span> 4313 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 4314the camera device uses cloudy daylight light as the assumed scene 4315illumination for white balance.<wbr/></p> 4316<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 4317and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 4318For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 4319values used by the camera device for the transform and gains 4320will be available in the capture result for this request.<wbr/></p></span> 4321 </li> 4322 <li> 4323 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span> 4324 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 4325the camera device uses twilight light as the assumed scene 4326illumination for white balance.<wbr/></p> 4327<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 4328and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 4329For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 4330values used by the camera device for the transform and gains 4331will be available in the capture result for this request.<wbr/></p></span> 4332 </li> 4333 <li> 4334 <span class="entry_type_enum_name">SHADE (v3.2)</span> 4335 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 4336the camera device uses shade light as the assumed scene 4337illumination for white balance.<wbr/></p> 4338<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 4339and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 4340For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 4341values used by the camera device for the transform and gains 4342will be available in the capture result for this request.<wbr/></p></span> 4343 </li> 4344 </ul> 4345 4346 </td> <!-- entry_type --> 4347 4348 <td class="entry_description"> 4349 <p>Whether auto-white balance (AWB) is currently setting the color 4350transform fields,<wbr/> and what its illumination target 4351is.<wbr/></p> 4352 </td> 4353 4354 <td class="entry_units"> 4355 </td> 4356 4357 <td class="entry_range"> 4358 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 4359 </td> 4360 4361 <td class="entry_hal_version"> 4362 <p>3.<wbr/>2</p> 4363 </td> 4364 4365 <td class="entry_tags"> 4366 <ul class="entry_tags"> 4367 <li><a href="#tag_BC">BC</a></li> 4368 </ul> 4369 </td> 4370 4371 </tr> 4372 <tr class="entries_header"> 4373 <th class="th_details" colspan="6">Details</th> 4374 </tr> 4375 <tr class="entry_cont"> 4376 <td class="entry_details" colspan="6"> 4377 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 4378<p>When set to the AUTO mode,<wbr/> the camera device's auto-white balance 4379routine is enabled,<wbr/> overriding the application's selected 4380<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 4381<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> 4382is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommended to 4383also 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 4384setting AE mode to OFF.<wbr/></p> 4385<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 4386routine is disabled.<wbr/> The application manually controls the white 4387balance 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> 4388and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 4389<p>When set to any other modes,<wbr/> the camera device's auto-white 4390balance routine is disabled.<wbr/> The camera device uses each 4391particular illumination target for white balance 4392adjustment.<wbr/> The application's values for 4393<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 4394<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 4395<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 4396 </td> 4397 </tr> 4398 4399 4400 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4401 <!-- end of entry --> 4402 4403 4404 <tr class="entry" id="controls_android.control.awbRegions"> 4405 <td class="entry_name 4406 " rowspan="5"> 4407 android.<wbr/>control.<wbr/>awb<wbr/>Regions 4408 </td> 4409 <td class="entry_type"> 4410 <span class="entry_type_name">int32</span> 4411 <span class="entry_type_container">x</span> 4412 4413 <span class="entry_type_array"> 4414 5 x area_count 4415 </span> 4416 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 4417 4418 4419 4420 4421 4422 4423 </td> <!-- entry_type --> 4424 4425 <td class="entry_description"> 4426 <p>List of metering areas to use for auto-white-balance illuminant 4427estimation.<wbr/></p> 4428 </td> 4429 4430 <td class="entry_units"> 4431 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 4432 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 4433 distortion correction capability and mode 4434 </td> 4435 4436 <td class="entry_range"> 4437 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 4438<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> 4439depending on distortion correction capability and mode</p> 4440 </td> 4441 4442 <td class="entry_hal_version"> 4443 <p>3.<wbr/>2</p> 4444 </td> 4445 4446 <td class="entry_tags"> 4447 <ul class="entry_tags"> 4448 <li><a href="#tag_BC">BC</a></li> 4449 </ul> 4450 </td> 4451 4452 </tr> 4453 <tr class="entries_header"> 4454 <th class="th_details" colspan="6">Details</th> 4455 </tr> 4456 <tr class="entry_cont"> 4457 <td class="entry_details" colspan="6"> 4458 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 4459Otherwise will always be present.<wbr/></p> 4460<p>The maximum number of regions supported by the device is determined by the value 4461of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 4462<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 4463system 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 4464the top-left pixel in the active pixel array,<wbr/> and 4465(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 4466<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 4467active pixel array.<wbr/></p> 4468<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 4469system depends on the mode being set.<wbr/> 4470When the distortion correction mode is OFF,<wbr/> the coordinate system follows 4471<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 4472<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 4473(<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/> 4474<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 4475pixel in the pre-correction active pixel array.<wbr/> 4476When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 4477<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 4478<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 4479(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 4480<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 4481active pixel array.<wbr/></p> 4482<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 4483for every pixel in the area.<wbr/> This means that a large metering area 4484with the same weight as a smaller area will have more effect in 4485the metering result.<wbr/> Metering areas can partially overlap and the 4486camera device will add the weights in the overlap region.<wbr/></p> 4487<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 4488only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 44890 weight is ignored.<wbr/></p> 4490<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 4491camera device.<wbr/></p> 4492<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 4493capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 4494region and output only the intersection rectangle as the metering region in the result 4495metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 4496not reported in the result metadata.<wbr/></p> 4497<p>When setting the AWB metering regions,<wbr/> the application must consider the additional 4498crop resulted from the aspect ratio differences between the preview stream and 4499<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full 4500active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/> 4501the boundary of AWB regions will be [0,<wbr/> y_<wbr/>crop] and 4502[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and 4503[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio 4504mismatch.<wbr/></p> 4505<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 4506preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 4507pre-zoom field of view.<wbr/> This means that the same awbRegions values at different 4508<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The awbRegions 4509coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the 4510zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same 4511awbRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of 4512the scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use 4513activeArraySize or preCorrectionActiveArraySize still depends on distortion correction 4514mode.<wbr/></p> 4515<p>For camera devices with the 4516<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 4517capability or devices where 4518<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 4519lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> 4520<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 4521<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the 4522coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 4523<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 4524 </td> 4525 </tr> 4526 4527 <tr class="entries_header"> 4528 <th class="th_details" colspan="6">HAL Implementation Details</th> 4529 </tr> 4530 <tr class="entry_cont"> 4531 <td class="entry_details" colspan="6"> 4532 <p>The HAL level representation of MeteringRectangle[] is a 4533int[5 * area_<wbr/>count].<wbr/> 4534Every five elements represent a metering region of 4535(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 4536The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 4537exclusive on xmax and ymax.<wbr/> 4538HAL must always report metering regions in the coordinate system of pre-correction 4539active array.<wbr/></p> 4540 </td> 4541 </tr> 4542 4543 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4544 <!-- end of entry --> 4545 4546 4547 <tr class="entry" id="controls_android.control.captureIntent"> 4548 <td class="entry_name 4549 " rowspan="3"> 4550 android.<wbr/>control.<wbr/>capture<wbr/>Intent 4551 </td> 4552 <td class="entry_type"> 4553 <span class="entry_type_name entry_type_name_enum">byte</span> 4554 4555 <span class="entry_type_visibility"> [public]</span> 4556 4557 4558 <span class="entry_type_hwlevel">[legacy] </span> 4559 4560 4561 4562 <ul class="entry_type_enum"> 4563 <li> 4564 <span class="entry_type_enum_name">CUSTOM (v3.2)</span> 4565 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 4566categories.<wbr/> The camera device will default to preview-like 4567behavior.<wbr/></p></span> 4568 </li> 4569 <li> 4570 <span class="entry_type_enum_name">PREVIEW (v3.2)</span> 4571 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 4572<p>The precapture trigger may be used to start off a metering 4573w/<wbr/>flash sequence.<wbr/></p></span> 4574 </li> 4575 <li> 4576 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span> 4577 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 4578use case.<wbr/></p> 4579<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 4580 </li> 4581 <li> 4582 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span> 4583 <span class="entry_type_enum_notes"><p>This request is for a video recording 4584use case.<wbr/></p></span> 4585 </li> 4586 <li> 4587 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span> 4588 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 4589image while recording video) use case.<wbr/></p> 4590<p>The camera device should take the highest-quality image 4591possible (given the other settings) without disrupting the 4592frame rate of video recording.<wbr/> </p></span> 4593 </li> 4594 <li> 4595 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 4596 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 4597application will stream full-resolution images and 4598reprocess one or several later for a final 4599capture.<wbr/></p></span> 4600 </li> 4601 <li> 4602 <span class="entry_type_enum_name">MANUAL (v3.2)</span> 4603 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 4604the applications want to directly control the capture parameters.<wbr/></p> 4605<p>For example,<wbr/> the application may wish to manually control 4606<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> 4607 </li> 4608 <li> 4609 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> 4610 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where 4611the application will use camera and inertial sensor data to 4612locate and track objects in the world.<wbr/></p> 4613<p>The camera device auto-exposure routine will limit the exposure time 4614of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span> 4615 </li> 4616 </ul> 4617 4618 </td> <!-- entry_type --> 4619 4620 <td class="entry_description"> 4621 <p>Information to the camera device 3A (auto-exposure,<wbr/> 4622auto-focus,<wbr/> auto-white balance) routines about the purpose 4623of this capture,<wbr/> to help the camera device to decide optimal 3A 4624strategy.<wbr/></p> 4625 </td> 4626 4627 <td class="entry_units"> 4628 </td> 4629 4630 <td class="entry_range"> 4631 </td> 4632 4633 <td class="entry_hal_version"> 4634 <p>3.<wbr/>2</p> 4635 </td> 4636 4637 <td class="entry_tags"> 4638 <ul class="entry_tags"> 4639 <li><a href="#tag_BC">BC</a></li> 4640 </ul> 4641 </td> 4642 4643 </tr> 4644 <tr class="entries_header"> 4645 <th class="th_details" colspan="6">Details</th> 4646 </tr> 4647 <tr class="entry_cont"> 4648 <td class="entry_details" colspan="6"> 4649 <p>This control (except for MANUAL) is only effective if 4650<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 4651<p>All intents are supported by all devices,<wbr/> except that:</p> 4652<ul> 4653<li>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 4654PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/></li> 4655<li>MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 4656MANUAL_<wbr/>SENSOR.<wbr/></li> 4657<li>MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 4658MOTION_<wbr/>TRACKING.<wbr/></li> 4659</ul> 4660 </td> 4661 </tr> 4662 4663 4664 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4665 <!-- end of entry --> 4666 4667 4668 <tr class="entry" id="controls_android.control.effectMode"> 4669 <td class="entry_name 4670 " rowspan="3"> 4671 android.<wbr/>control.<wbr/>effect<wbr/>Mode 4672 </td> 4673 <td class="entry_type"> 4674 <span class="entry_type_name entry_type_name_enum">byte</span> 4675 4676 <span class="entry_type_visibility"> [public]</span> 4677 4678 4679 <span class="entry_type_hwlevel">[legacy] </span> 4680 4681 4682 4683 <ul class="entry_type_enum"> 4684 <li> 4685 <span class="entry_type_enum_name">OFF (v3.2)</span> 4686 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 4687 </li> 4688 <li> 4689 <span class="entry_type_enum_name">MONO (v3.2)</span> 4690 <span class="entry_type_enum_optional">[optional]</span> 4691 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 4692a single color.<wbr/></p> 4693<p>This will typically be grayscale.<wbr/></p></span> 4694 </li> 4695 <li> 4696 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span> 4697 <span class="entry_type_enum_optional">[optional]</span> 4698 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 4699are inverted.<wbr/></p></span> 4700 </li> 4701 <li> 4702 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span> 4703 <span class="entry_type_enum_optional">[optional]</span> 4704 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 4705image is wholly or partially reversed in 4706tone.<wbr/></p></span> 4707 </li> 4708 <li> 4709 <span class="entry_type_enum_name">SEPIA (v3.2)</span> 4710 <span class="entry_type_enum_optional">[optional]</span> 4711 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 4712gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 4713 </li> 4714 <li> 4715 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span> 4716 <span class="entry_type_enum_optional">[optional]</span> 4717 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 4718discrete regions of tone rather than a continuous 4719gradient of tones.<wbr/></p></span> 4720 </li> 4721 <li> 4722 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span> 4723 <span class="entry_type_enum_optional">[optional]</span> 4724 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 4725as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 4726 </li> 4727 <li> 4728 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span> 4729 <span class="entry_type_enum_optional">[optional]</span> 4730 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 4731as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 4732 </li> 4733 <li> 4734 <span class="entry_type_enum_name">AQUA (v3.2)</span> 4735 <span class="entry_type_enum_optional">[optional]</span> 4736 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 4737 </li> 4738 </ul> 4739 4740 </td> <!-- entry_type --> 4741 4742 <td class="entry_description"> 4743 <p>A special color effect to apply.<wbr/></p> 4744 </td> 4745 4746 <td class="entry_units"> 4747 </td> 4748 4749 <td class="entry_range"> 4750 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 4751 </td> 4752 4753 <td class="entry_hal_version"> 4754 <p>3.<wbr/>2</p> 4755 </td> 4756 4757 <td class="entry_tags"> 4758 <ul class="entry_tags"> 4759 <li><a href="#tag_BC">BC</a></li> 4760 </ul> 4761 </td> 4762 4763 </tr> 4764 <tr class="entries_header"> 4765 <th class="th_details" colspan="6">Details</th> 4766 </tr> 4767 <tr class="entry_cont"> 4768 <td class="entry_details" colspan="6"> 4769 <p>When this mode is set,<wbr/> a color effect will be applied 4770to images produced by the camera device.<wbr/> The interpretation 4771and implementation of these color effects is left to the 4772implementor of the camera device,<wbr/> and should not be 4773depended on to be consistent (or present) across all 4774devices.<wbr/></p> 4775 </td> 4776 </tr> 4777 4778 4779 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4780 <!-- end of entry --> 4781 4782 4783 <tr class="entry" id="controls_android.control.mode"> 4784 <td class="entry_name 4785 " rowspan="3"> 4786 android.<wbr/>control.<wbr/>mode 4787 </td> 4788 <td class="entry_type"> 4789 <span class="entry_type_name entry_type_name_enum">byte</span> 4790 4791 <span class="entry_type_visibility"> [public]</span> 4792 4793 4794 <span class="entry_type_hwlevel">[legacy] </span> 4795 4796 4797 4798 <ul class="entry_type_enum"> 4799 <li> 4800 <span class="entry_type_enum_name">OFF (v3.2)</span> 4801 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 4802<p>All control by the device's metering and focusing (3A) 4803routines is disabled,<wbr/> and no other settings in 4804android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 4805<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 4806device to select post-processing values for processing 4807blocks that do not allow for manual control,<wbr/> or are not 4808exposed by the camera API.<wbr/></p> 4809<p>However,<wbr/> the camera device's 3A routines may continue to 4810collect statistics and update their internal state so that 4811when control is switched to AUTO mode,<wbr/> good control values 4812can be immediately applied.<wbr/></p></span> 4813 </li> 4814 <li> 4815 <span class="entry_type_enum_name">AUTO (v3.2)</span> 4816 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 4817<p>Manual control of capture parameters is disabled.<wbr/> All 4818controls in android.<wbr/>control.<wbr/>* besides sceneMode take 4819effect.<wbr/></p></span> 4820 </li> 4821 <li> 4822 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span> 4823 <span class="entry_type_enum_optional">[optional]</span> 4824 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 4825<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 4826control.<wbr/>afMode controls; the camera device will ignore 4827those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 4828FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 4829This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 4830<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 4831contain some modes other than DISABLED).<wbr/></p> 4832<p>For extended scene modes such as BOKEH,<wbr/> please use USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE instead.<wbr/></p></span> 4833 </li> 4834 <li> 4835 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span> 4836 <span class="entry_type_enum_optional">[optional]</span> 4837 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 4838used by camera device background auto-exposure,<wbr/> auto-white balance and 4839auto-focus algorithms (3A) to update their statistics.<wbr/></p> 4840<p>Specifically,<wbr/> the 3A routines are locked to the last 4841values set from a request with AUTO,<wbr/> OFF,<wbr/> or 4842USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 4843collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 4844discarded by the camera device.<wbr/></p></span> 4845 </li> 4846 <li> 4847 <span class="entry_type_enum_name">USE_EXTENDED_SCENE_MODE (v3.5)</span> 4848 <span class="entry_type_enum_optional">[optional]</span> 4849 <span class="entry_type_enum_notes"><p>Use a specific extended scene mode.<wbr/></p> 4850<p>When extended scene mode is on,<wbr/> the camera device may override certain control 4851parameters,<wbr/> such as targetFpsRange,<wbr/> AE,<wbr/> AWB,<wbr/> and AF modes,<wbr/> to achieve best power and 4852quality tradeoffs.<wbr/> Only the mandatory stream combinations of LIMITED hardware level 4853are guaranteed.<wbr/></p> 4854<p>This setting can only be used if extended scene mode is supported (i.<wbr/>e.<wbr/> 4855android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Modes 4856contains some modes other than DISABLED).<wbr/></p></span> 4857 </li> 4858 </ul> 4859 4860 </td> <!-- entry_type --> 4861 4862 <td class="entry_description"> 4863 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 4864routines.<wbr/></p> 4865 </td> 4866 4867 <td class="entry_units"> 4868 </td> 4869 4870 <td class="entry_range"> 4871 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 4872 </td> 4873 4874 <td class="entry_hal_version"> 4875 <p>3.<wbr/>2</p> 4876 </td> 4877 4878 <td class="entry_tags"> 4879 <ul class="entry_tags"> 4880 <li><a href="#tag_BC">BC</a></li> 4881 </ul> 4882 </td> 4883 4884 </tr> 4885 <tr class="entries_header"> 4886 <th class="th_details" colspan="6">Details</th> 4887 </tr> 4888 <tr class="entry_cont"> 4889 <td class="entry_details" colspan="6"> 4890 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 4891by the camera device is disabled.<wbr/> The application must set the fields for 4892capture parameters itself.<wbr/></p> 4893<p>When set to AUTO,<wbr/> the individual algorithm controls in 4894android.<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> 4895<p>When set to USE_<wbr/>SCENE_<wbr/>MODE or USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 4896android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device 4897implements one of the scene mode or extended scene mode settings (such as ACTION,<wbr/> 4898SUNSET,<wbr/> PARTY,<wbr/> or BOKEH) as it wishes.<wbr/> The camera device scene mode 48993A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 4900<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 4901is that this frame will not be used by camera device background 3A statistics 4902update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 4903where the application doesn't want a 3A manual control capture to affect 4904the subsequent auto 3A capture results.<wbr/></p> 4905 </td> 4906 </tr> 4907 4908 4909 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4910 <!-- end of entry --> 4911 4912 4913 <tr class="entry" id="controls_android.control.sceneMode"> 4914 <td class="entry_name 4915 " rowspan="5"> 4916 android.<wbr/>control.<wbr/>scene<wbr/>Mode 4917 </td> 4918 <td class="entry_type"> 4919 <span class="entry_type_name entry_type_name_enum">byte</span> 4920 4921 <span class="entry_type_visibility"> [public]</span> 4922 4923 4924 <span class="entry_type_hwlevel">[legacy] </span> 4925 4926 4927 4928 <ul class="entry_type_enum"> 4929 <li> 4930 <span class="entry_type_enum_name">DISABLED (v3.2)</span> 4931 <span class="entry_type_enum_value">0</span> 4932 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 4933 </li> 4934 <li> 4935 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span> 4936 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 4937detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 4938auto-exposure routines.<wbr/></p> 4939<p>If face detection statistics are disabled 4940(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/> 4941this should still operate correctly (but will not return 4942face detection statistics to the framework).<wbr/></p> 4943<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4944<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> 4945remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 4946 </li> 4947 <li> 4948 <span class="entry_type_enum_name">ACTION (v3.2)</span> 4949 <span class="entry_type_enum_optional">[optional]</span> 4950 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 4951<p>Similar to SPORTS.<wbr/></p></span> 4952 </li> 4953 <li> 4954 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span> 4955 <span class="entry_type_enum_optional">[optional]</span> 4956 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 4957 </li> 4958 <li> 4959 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span> 4960 <span class="entry_type_enum_optional">[optional]</span> 4961 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 4962 </li> 4963 <li> 4964 <span class="entry_type_enum_name">NIGHT (v3.2)</span> 4965 <span class="entry_type_enum_optional">[optional]</span> 4966 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 4967 </li> 4968 <li> 4969 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span> 4970 <span class="entry_type_enum_optional">[optional]</span> 4971 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 4972settings.<wbr/></p></span> 4973 </li> 4974 <li> 4975 <span class="entry_type_enum_name">THEATRE (v3.2)</span> 4976 <span class="entry_type_enum_optional">[optional]</span> 4977 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 4978remain off.<wbr/></p></span> 4979 </li> 4980 <li> 4981 <span class="entry_type_enum_name">BEACH (v3.2)</span> 4982 <span class="entry_type_enum_optional">[optional]</span> 4983 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 4984 </li> 4985 <li> 4986 <span class="entry_type_enum_name">SNOW (v3.2)</span> 4987 <span class="entry_type_enum_optional">[optional]</span> 4988 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 4989 </li> 4990 <li> 4991 <span class="entry_type_enum_name">SUNSET (v3.2)</span> 4992 <span class="entry_type_enum_optional">[optional]</span> 4993 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 4994 </li> 4995 <li> 4996 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span> 4997 <span class="entry_type_enum_optional">[optional]</span> 4998 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 4999device motion (for example: due to hand shake).<wbr/></p></span> 5000 </li> 5001 <li> 5002 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span> 5003 <span class="entry_type_enum_optional">[optional]</span> 5004 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 5005 </li> 5006 <li> 5007 <span class="entry_type_enum_name">SPORTS (v3.2)</span> 5008 <span class="entry_type_enum_optional">[optional]</span> 5009 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 5010<p>Similar to ACTION.<wbr/></p></span> 5011 </li> 5012 <li> 5013 <span class="entry_type_enum_name">PARTY (v3.2)</span> 5014 <span class="entry_type_enum_optional">[optional]</span> 5015 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 5016people.<wbr/></p></span> 5017 </li> 5018 <li> 5019 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span> 5020 <span class="entry_type_enum_optional">[optional]</span> 5021 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 5022is a candle.<wbr/></p></span> 5023 </li> 5024 <li> 5025 <span class="entry_type_enum_name">BARCODE (v3.2)</span> 5026 <span class="entry_type_enum_optional">[optional]</span> 5027 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 5028for use by camera applications that wish to read the 5029barcode value.<wbr/></p></span> 5030 </li> 5031 <li> 5032 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span> 5033 <span class="entry_type_enum_deprecated">[deprecated]</span> 5034 <span class="entry_type_enum_optional">[optional]</span> 5035 <span class="entry_type_enum_hidden">[java_public]</span> 5036 <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> 5037and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 5038for high speed video recording.<wbr/></p> 5039<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 5040<p>The supported high speed video sizes and fps ranges are specified in 5041<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 5042output frame rates,<wbr/> the application is only allowed to select video size 5043and fps range combinations listed in this static metadata.<wbr/> The fps range 5044can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 5045<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 5046ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 5047controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 5048and post-processing parameters is possible.<wbr/> All other controls operate the 5049same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 5050android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 5051<ul> 5052<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 5053<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 5054<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 5055<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 5056<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 5057<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 5058<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 5059<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 5060<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 5061<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 5062<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li> 5063</ul> 5064<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 5065<ul> 5066<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> 5067<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 5068<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 5069<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 5070</ul> 5071<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 5072be lower than what camera can output,<wbr/> depending on the destination Surfaces for 5073the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 5074the application need check if the video encoder is capable of supporting the 5075high frame rate for a given video size,<wbr/> or it will end up with lower recording 5076frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 5077rate will be bounded by the screen refresh rate.<wbr/></p> 5078<p>The camera device will only support up to 2 output high speed streams 5079(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 5080in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 5081<ul> 5082<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 5083format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 5084min(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> 5085<li>The stream sizes are selected from the sizes reported by 5086<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 5087<li>No processed non-stalling or raw streams are configured.<wbr/></li> 5088</ul> 5089<p>When above conditions are NOT satisfied,<wbr/> the controls of this mode and 5090<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/> 5091the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 5092and the returned capture result metadata will give the fps range chosen 5093by the camera device.<wbr/></p> 5094<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 5095reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 5096the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 5097 </li> 5098 <li> 5099 <span class="entry_type_enum_name">HDR (v3.2)</span> 5100 <span class="entry_type_enum_optional">[optional]</span> 5101 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 5102<p>In this scene mode,<wbr/> the camera device captures images 5103that keep a larger range of scene illumination levels 5104visible in the final image.<wbr/> For example,<wbr/> when taking a 5105picture of a object in front of a bright window,<wbr/> both 5106the object and the scene through the window may be 5107visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 5108one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 5109HDR mode generally takes much longer to capture a single 5110image,<wbr/> has no user control,<wbr/> and may have other artifacts 5111depending on the HDR method used.<wbr/></p> 5112<p>Therefore,<wbr/> HDR captures operate at a much slower rate 5113than regular captures.<wbr/></p> 5114<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 5115is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 5116STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 5117using a high dynamic range capture technique.<wbr/> On LEGACY 5118devices,<wbr/> captures that target a JPEG-format output will 5119be captured with HDR,<wbr/> and the capture intent is not 5120relevant.<wbr/></p> 5121<p>The HDR capture may involve the device capturing a burst 5122of images internally and combining them into one,<wbr/> or it 5123may involve the device using specialized high dynamic 5124range capture hardware.<wbr/> In all cases,<wbr/> a single image is 5125produced in response to a capture request submitted 5126while in HDR mode.<wbr/></p> 5127<p>Since substantial post-processing is generally needed to 5128produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG 5129outputs are supported for LIMITED/<wbr/>FULL device HDR 5130captures,<wbr/> and only JPEG outputs are supported for LEGACY 5131HDR captures.<wbr/> Using a RAW output for HDR capture is not 5132supported.<wbr/></p> 5133<p>Some devices may also support always-on HDR,<wbr/> which 5134applies HDR processing at full frame rate.<wbr/> For these 5135devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also 5136produce an HDR output with no frame rate impact compared 5137to normal operation,<wbr/> though the quality may be lower 5138than for STILL_<wbr/>CAPTURE intents.<wbr/></p> 5139<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types 5140or capture intents,<wbr/> the images captured will be as if 5141the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> 5142 </li> 5143 <li> 5144 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span> 5145 <span class="entry_type_enum_optional">[optional]</span> 5146 <span class="entry_type_enum_hidden">[hidden]</span> 5147 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 5148device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 5149under low light conditions.<wbr/></p> 5150<p>The camera device may be tuned to expose the images in a reduced 5151sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 5152if 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/> 5153the camera device auto-exposure routine tuning process may limit the actual 5154exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 5155excessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 5156low light may be under-exposed when the sensor max exposure time (bounded by the 5157<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 5158ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 5159camera device auto-exposure routine to increase the sensitivity up to the max 5160sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 5161dark and the max exposure time is reached.<wbr/> The captured images may be noisier 5162compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 5163recommended that the application only use this scene mode when it is capable of 5164reducing the noise level of the captured images.<wbr/></p> 5165<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5166<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> 5167remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 5168 </li> 5169 <li> 5170 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span> 5171 <span class="entry_type_enum_optional">[optional]</span> 5172 <span class="entry_type_enum_hidden">[hidden]</span> 5173 <span class="entry_type_enum_value">100</span> 5174 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 5175<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 5176customized scene modes.<wbr/></p></span> 5177 </li> 5178 <li> 5179 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span> 5180 <span class="entry_type_enum_optional">[optional]</span> 5181 <span class="entry_type_enum_hidden">[hidden]</span> 5182 <span class="entry_type_enum_value">127</span> 5183 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 5184<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 5185customized scene modes.<wbr/></p></span> 5186 </li> 5187 </ul> 5188 5189 </td> <!-- entry_type --> 5190 5191 <td class="entry_description"> 5192 <p>Control for which scene mode is currently active.<wbr/></p> 5193 </td> 5194 5195 <td class="entry_units"> 5196 </td> 5197 5198 <td class="entry_range"> 5199 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 5200 </td> 5201 5202 <td class="entry_hal_version"> 5203 <p>3.<wbr/>2</p> 5204 </td> 5205 5206 <td class="entry_tags"> 5207 <ul class="entry_tags"> 5208 <li><a href="#tag_BC">BC</a></li> 5209 </ul> 5210 </td> 5211 5212 </tr> 5213 <tr class="entries_header"> 5214 <th class="th_details" colspan="6">Details</th> 5215 </tr> 5216 <tr class="entry_cont"> 5217 <td class="entry_details" colspan="6"> 5218 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 5219capture settings.<wbr/></p> 5220<p>This is the mode that that is active when 5221<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 5222disable <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> 5223while in use.<wbr/></p> 5224<p>The interpretation and implementation of these scene modes is left 5225to the implementor of the camera device.<wbr/> Their behavior will not be 5226consistent across all devices,<wbr/> and any given device may only implement 5227a subset of these modes.<wbr/></p> 5228 </td> 5229 </tr> 5230 5231 <tr class="entries_header"> 5232 <th class="th_details" colspan="6">HAL Implementation Details</th> 5233 </tr> 5234 <tr class="entry_cont"> 5235 <td class="entry_details" colspan="6"> 5236 <p>HAL implementations that include scene modes are expected to provide 5237the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5238<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 5239<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 5240<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 5241HAL must list supported video size and fps range in 5242<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/> 5243if the HAL has two different sensor configurations for normal streaming mode and high 5244speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the 5245HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy 5246HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 5247<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 5248capability defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 5249 </td> 5250 </tr> 5251 5252 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5253 <!-- end of entry --> 5254 5255 5256 <tr class="entry" id="controls_android.control.videoStabilizationMode"> 5257 <td class="entry_name 5258 " rowspan="5"> 5259 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 5260 </td> 5261 <td class="entry_type"> 5262 <span class="entry_type_name entry_type_name_enum">byte</span> 5263 5264 <span class="entry_type_visibility"> [public]</span> 5265 5266 5267 <span class="entry_type_hwlevel">[legacy] </span> 5268 5269 5270 5271 <ul class="entry_type_enum"> 5272 <li> 5273 <span class="entry_type_enum_name">OFF (v3.2)</span> 5274 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 5275 </li> 5276 <li> 5277 <span class="entry_type_enum_name">ON (v3.2)</span> 5278 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 5279 </li> 5280 <li> 5281 <span class="entry_type_enum_name">PREVIEW_STABILIZATION (v3.8)</span> 5282 <span class="entry_type_enum_optional">[optional]</span> 5283 <span class="entry_type_enum_notes"><p>Preview stabilization,<wbr/> where the preview in addition to all other non-RAW streams are 5284stabilized with the same quality of stabilization,<wbr/> is enabled.<wbr/> This mode aims to give 5285clients a 'what you see is what you get' effect.<wbr/> In this mode,<wbr/> the FoV reduction will 5286be a maximum of 20 % both horizontally and vertically 5287(10% from left,<wbr/> right,<wbr/> top,<wbr/> bottom) for the given zoom ratio /<wbr/> crop region.<wbr/> 5288The resultant FoV will also be the same across all processed streams 5289(that have the same aspect ratio).<wbr/></p></span> 5290 </li> 5291 </ul> 5292 5293 </td> <!-- entry_type --> 5294 5295 <td class="entry_description"> 5296 <p>Whether video stabilization is 5297active.<wbr/></p> 5298 </td> 5299 5300 <td class="entry_units"> 5301 </td> 5302 5303 <td class="entry_range"> 5304 </td> 5305 5306 <td class="entry_hal_version"> 5307 <p>3.<wbr/>2</p> 5308 </td> 5309 5310 <td class="entry_tags"> 5311 <ul class="entry_tags"> 5312 <li><a href="#tag_BC">BC</a></li> 5313 </ul> 5314 </td> 5315 5316 </tr> 5317 <tr class="entries_header"> 5318 <th class="th_details" colspan="6">Details</th> 5319 </tr> 5320 <tr class="entry_cont"> 5321 <td class="entry_details" colspan="6"> 5322 <p>Video stabilization automatically warps images from 5323the camera in order to stabilize motion between consecutive frames.<wbr/></p> 5324<p>If enabled,<wbr/> video stabilization can modify the 5325<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 5326<p>Switching between different video stabilization modes may take several 5327frames to initialize,<wbr/> the camera device will report the current mode 5328in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 5329the video stabilization modes in the first several capture results may 5330still be "OFF",<wbr/> and it will become "ON" when the initialization is 5331done.<wbr/></p> 5332<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 5333stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 5334that an output targeting a MediaRecorder or MediaCodec will be stabilized if 5335the recording resolution is less than or equal to 1920 x 1080 (width less than 5336or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 5337frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 5338<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 5339OFF if the recording output is not stabilized,<wbr/> or if there are no output 5340Surface types that can be stabilized.<wbr/></p> 5341<p>The application is strongly recommended to call 5342<a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a> 5343with the desired video stabilization mode before creating the capture session.<wbr/> 5344Video stabilization mode is a session parameter on many devices.<wbr/> Specifying 5345it at session creation time helps avoid reconfiguration delay caused by difference 5346between the default value and the first CaptureRequest.<wbr/></p> 5347<p>If a camera device supports both this mode and OIS 5348(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 5349produce undesirable interaction,<wbr/> so it is recommended not to enable 5350both at the same time.<wbr/></p> 5351<p>If video stabilization is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/> 5352<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose 5353to turn on hardware based image stabilization in addition to software based stabilization 5354if it deems that appropriate.<wbr/> 5355This key may be a part of the available session keys,<wbr/> which camera clients may 5356query via 5357<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/> 5358If this is the case,<wbr/> changing this key over the life-time of a capture session may 5359cause delays /<wbr/> glitches.<wbr/></p> 5360 </td> 5361 </tr> 5362 5363 <tr class="entries_header"> 5364 <th class="th_details" colspan="6">HAL Implementation Details</th> 5365 </tr> 5366 <tr class="entry_cont"> 5367 <td class="entry_details" colspan="6"> 5368 <p>When this key is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/> 5369for non-stalling buffers returned without errors,<wbr/> the time interval between notify readout 5370timestamp and when buffers are returned to the camera framework,<wbr/> must be no more than 1 5371extra frame interval,<wbr/> relative to the case where this key is set to "OFF".<wbr/></p> 5372<p>This is in order for look-ahead time period to be short enough 5373for preview to match video recording for real-time usage.<wbr/></p> 5374 </td> 5375 </tr> 5376 5377 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5378 <!-- end of entry --> 5379 5380 5381 <tr class="entry" id="controls_android.control.postRawSensitivityBoost"> 5382 <td class="entry_name 5383 " rowspan="3"> 5384 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost 5385 </td> 5386 <td class="entry_type"> 5387 <span class="entry_type_name">int32</span> 5388 5389 <span class="entry_type_visibility"> [public]</span> 5390 5391 5392 5393 5394 5395 5396 </td> <!-- entry_type --> 5397 5398 <td class="entry_description"> 5399 <p>The amount of additional sensitivity boost applied to output images 5400after RAW sensor data is captured.<wbr/></p> 5401 </td> 5402 5403 <td class="entry_units"> 5404 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 5405 </td> 5406 5407 <td class="entry_range"> 5408 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p> 5409 </td> 5410 5411 <td class="entry_hal_version"> 5412 <p>3.<wbr/>2</p> 5413 </td> 5414 5415 <td class="entry_tags"> 5416 </td> 5417 5418 </tr> 5419 <tr class="entries_header"> 5420 <th class="th_details" colspan="6">Details</th> 5421 </tr> 5422 <tr class="entry_cont"> 5423 <td class="entry_details" colspan="6"> 5424 <p>Some camera devices support additional digital sensitivity boosting in the 5425camera processing pipeline after sensor RAW image is captured.<wbr/> 5426Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not 5427have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> 5428<p>This key will be <code>null</code> for devices that do not support any RAW format 5429outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 5430present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 5431list <code>100</code> in this key.<wbr/></p> 5432<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the 5433boost to the nearest supported value.<wbr/> 5434The final boost value used will be available in the output capture result.<wbr/></p> 5435<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images 5436of such device will have the total sensitivity of 5437<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> 5438The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> 5439<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 5440OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 5441 </td> 5442 </tr> 5443 5444 5445 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5446 <!-- end of entry --> 5447 5448 5449 <tr class="entry" id="controls_android.control.enableZsl"> 5450 <td class="entry_name 5451 " rowspan="5"> 5452 android.<wbr/>control.<wbr/>enable<wbr/>Zsl 5453 </td> 5454 <td class="entry_type"> 5455 <span class="entry_type_name entry_type_name_enum">byte</span> 5456 5457 <span class="entry_type_visibility"> [public as boolean]</span> 5458 5459 5460 5461 5462 5463 <ul class="entry_type_enum"> 5464 <li> 5465 <span class="entry_type_enum_name">FALSE (v3.2)</span> 5466 <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 5467after previous requests.<wbr/></p></span> 5468 </li> 5469 <li> 5470 <span class="entry_type_enum_name">TRUE (v3.2)</span> 5471 <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 5472captured before previous requests.<wbr/></p></span> 5473 </li> 5474 </ul> 5475 5476 </td> <!-- entry_type --> 5477 5478 <td class="entry_description"> 5479 <p>Allow camera device to enable zero-shutter-lag mode for requests with 5480<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p> 5481 </td> 5482 5483 <td class="entry_units"> 5484 </td> 5485 5486 <td class="entry_range"> 5487 </td> 5488 5489 <td class="entry_hal_version"> 5490 <p>3.<wbr/>2</p> 5491 </td> 5492 5493 <td class="entry_tags"> 5494 </td> 5495 5496 </tr> 5497 <tr class="entries_header"> 5498 <th class="th_details" colspan="6">Details</th> 5499 </tr> 5500 <tr class="entry_cont"> 5501 <td class="entry_details" colspan="6"> 5502 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with 5503STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to 5504produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the 5505<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/> 5506Therefore,<wbr/> the contents of the output images and the result metadata may be out of order 5507compared to previous regular requests.<wbr/> enableZsl does not affect requests with other 5508capture intents.<wbr/></p> 5509<p>For example,<wbr/> when requests are submitted in the following order: 5510 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW 5511 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> 5512<p>The output images for request B may have contents captured before the output images for 5513request A,<wbr/> and the result metadata for request B may be older than the result metadata for 5514request A.<wbr/></p> 5515<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in 5516the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p> 5517<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in 5518TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always 5519<code>false</code> if present.<wbr/></p> 5520<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all 5521capture templates is always <code>false</code> if present.<wbr/></p> 5522<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p> 5523 </td> 5524 </tr> 5525 5526 <tr class="entries_header"> 5527 <th class="th_details" colspan="6">HAL Implementation Details</th> 5528 </tr> 5529 <tr class="entry_cont"> 5530 <td class="entry_details" colspan="6"> 5531 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE 5532capture intent.<wbr/></p> 5533 </td> 5534 </tr> 5535 5536 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5537 <!-- end of entry --> 5538 5539 5540 <tr class="entry" id="controls_android.control.extendedSceneMode"> 5541 <td class="entry_name 5542 " rowspan="3"> 5543 android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode 5544 </td> 5545 <td class="entry_type"> 5546 <span class="entry_type_name entry_type_name_enum">byte</span> 5547 5548 <span class="entry_type_visibility"> [public]</span> 5549 5550 5551 5552 5553 5554 <ul class="entry_type_enum"> 5555 <li> 5556 <span class="entry_type_enum_name">DISABLED (v3.5)</span> 5557 <span class="entry_type_enum_value">0</span> 5558 <span class="entry_type_enum_notes"><p>Extended scene mode is disabled.<wbr/></p></span> 5559 </li> 5560 <li> 5561 <span class="entry_type_enum_name">BOKEH_STILL_CAPTURE (v3.5)</span> 5562 <span class="entry_type_enum_notes"><p>High quality bokeh mode is enabled for all non-raw streams (including YUV,<wbr/> 5563JPEG,<wbr/> and IMPLEMENTATION_<wbr/>DEFINED) when capture intent is STILL_<wbr/>CAPTURE.<wbr/> Due to the 5564extra image processing,<wbr/> this mode may introduce additional stall to non-raw streams.<wbr/> 5565This mode should be used in high quality still capture use case.<wbr/></p></span> 5566 </li> 5567 <li> 5568 <span class="entry_type_enum_name">BOKEH_CONTINUOUS (v3.5)</span> 5569 <span class="entry_type_enum_notes"><p>Bokeh effect must not slow down capture rate relative to sensor raw output,<wbr/> 5570and the effect is applied to all processed streams no larger than the maximum 5571streaming dimension.<wbr/> This mode should be used if performance and power are a 5572priority,<wbr/> such as video recording.<wbr/></p></span> 5573 </li> 5574 <li> 5575 <span class="entry_type_enum_name">VENDOR_START (v3.5)</span> 5576 <span class="entry_type_enum_hidden">[hidden]</span> 5577 <span class="entry_type_enum_value">0x40</span> 5578 <span class="entry_type_enum_notes"><p>Vendor defined extended scene modes.<wbr/> These depend on vendor implementation.<wbr/></p></span> 5579 </li> 5580 </ul> 5581 5582 </td> <!-- entry_type --> 5583 5584 <td class="entry_description"> 5585 <p>Whether extended scene mode is enabled for a particular capture request.<wbr/></p> 5586 </td> 5587 5588 <td class="entry_units"> 5589 </td> 5590 5591 <td class="entry_range"> 5592 </td> 5593 5594 <td class="entry_hal_version"> 5595 <p>3.<wbr/>5</p> 5596 </td> 5597 5598 <td class="entry_tags"> 5599 </td> 5600 5601 </tr> 5602 <tr class="entries_header"> 5603 <th class="th_details" colspan="6">Details</th> 5604 </tr> 5605 <tr class="entry_cont"> 5606 <td class="entry_details" colspan="6"> 5607 <p>With bokeh mode,<wbr/> the camera device may blur out the parts of scene that are not in 5608focus,<wbr/> creating a bokeh (or shallow depth of field) effect for people or objects.<wbr/></p> 5609<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with STILL_<wbr/>CAPTURE capture intent,<wbr/> due to the extra 5610processing needed for high quality bokeh effect,<wbr/> the stall may be longer than when 5611capture intent is not STILL_<wbr/>CAPTURE.<wbr/></p> 5612<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with PREVIEW capture intent,<wbr/></p> 5613<ul> 5614<li>If the camera device has BURST_<wbr/>CAPTURE capability,<wbr/> the frame rate requirement of 5615BURST_<wbr/>CAPTURE must still be met.<wbr/></li> 5616<li>All streams not larger than the maximum streaming dimension for BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode 5617(queried via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_CAPABILITIES">Camera<wbr/>Characteristics#CONTROL_<wbr/>AVAILABLE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE_<wbr/>CAPABILITIES</a>) 5618will have preview bokeh effect applied.<wbr/></li> 5619</ul> 5620<p>When set to BOKEH_<wbr/>CONTINUOUS mode,<wbr/> configured streams dimension should not exceed this mode's 5621maximum streaming dimension in order to have bokeh effect applied.<wbr/> Bokeh effect may not 5622be available for streams larger than the maximum streaming dimension.<wbr/></p> 5623<p>Switching between different extended scene modes may involve reconfiguration of the camera 5624pipeline,<wbr/> resulting in long latency.<wbr/> The application should check this key against the 5625available session keys queried via 5626<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p> 5627<p>For a logical multi-camera,<wbr/> bokeh may be implemented by stereo vision from sub-cameras 5628with different field of view.<wbr/> As a result,<wbr/> when bokeh mode is enabled,<wbr/> the camera device 5629may override <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the field of 5630view may be smaller than when bokeh mode is off.<wbr/></p> 5631 </td> 5632 </tr> 5633 5634 5635 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5636 <!-- end of entry --> 5637 5638 5639 <tr class="entry" id="controls_android.control.zoomRatio"> 5640 <td class="entry_name 5641 " rowspan="5"> 5642 android.<wbr/>control.<wbr/>zoom<wbr/>Ratio 5643 </td> 5644 <td class="entry_type"> 5645 <span class="entry_type_name">float</span> 5646 5647 <span class="entry_type_visibility"> [public]</span> 5648 5649 5650 <span class="entry_type_hwlevel">[limited] </span> 5651 5652 5653 5654 5655 </td> <!-- entry_type --> 5656 5657 <td class="entry_description"> 5658 <p>The desired zoom ratio</p> 5659 </td> 5660 5661 <td class="entry_units"> 5662 </td> 5663 5664 <td class="entry_range"> 5665 <p><a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a></p> 5666 </td> 5667 5668 <td class="entry_hal_version"> 5669 <p>3.<wbr/>5</p> 5670 </td> 5671 5672 <td class="entry_tags"> 5673 </td> 5674 5675 </tr> 5676 <tr class="entries_header"> 5677 <th class="th_details" colspan="6">Details</th> 5678 </tr> 5679 <tr class="entry_cont"> 5680 <td class="entry_details" colspan="6"> 5681 <p>Instead of using <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> for zoom,<wbr/> the application can now choose to 5682use this tag to specify the desired zoom level.<wbr/></p> 5683<p>By using this control,<wbr/> the application gains a simpler way to control zoom,<wbr/> which can 5684be a combination of optical and digital zoom.<wbr/> For example,<wbr/> a multi-camera system may 5685contain more than one lens with different focal lengths,<wbr/> and the user can use optical 5686zoom by switching between lenses.<wbr/> Using zoomRatio has benefits in the scenarios below:</p> 5687<ul> 5688<li>Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides 5689 better precision compared to an integer value of <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li> 5690<li>Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas 5691 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> doesn't.<wbr/></li> 5692</ul> 5693<p>To illustrate,<wbr/> here are several scenarios of different zoom ratios,<wbr/> crop regions,<wbr/> 5694and output streams,<wbr/> for a hypothetical camera device with an active array of size 5695<code>(2000,<wbr/>1500)</code>.<wbr/></p> 5696<ul> 5697<li>Camera Configuration:<ul> 5698<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li> 5699<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li> 5700<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li> 5701</ul> 5702</li> 5703<li>Case #1: 4:3 crop region with 2.<wbr/>0x zoom ratio<ul> 5704<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li> 5705<li>Crop region: <code>Rect(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code> (post zoom)</li> 5706</ul> 5707</li> 5708<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-43.png"/><ul> 5709<li><code>640x480</code> stream source area: <code>(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</code> (equal to crop region)</li> 5710<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (letterboxed)</li> 5711</ul> 5712</li> 5713<li>Case #2: 16:9 crop region with 2.<wbr/>0x zoom.<wbr/><ul> 5714<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li> 5715<li>Crop region: <code>Rect(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code></li> 5716<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-169.png"/></li> 5717<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (pillarboxed)</li> 5718<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (equal to crop region)</li> 5719</ul> 5720</li> 5721<li>Case #3: 1:1 crop region with 0.<wbr/>5x zoom out to ultrawide lens.<wbr/><ul> 5722<li>Zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)</li> 5723<li>Crop region: <code>Rect(250,<wbr/> 0,<wbr/> 1750,<wbr/> 1500)</code></li> 5724<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png"/></li> 5725<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (letterboxed)</li> 5726<li><code>1280x720</code> stream source area: <code>(250,<wbr/> 328,<wbr/> 1750,<wbr/> 1172)</code> (letterboxed)</li> 5727</ul> 5728</li> 5729</ul> 5730<p>As seen from the graphs above,<wbr/> the coordinate system of cropRegion now changes to the 5731effective after-zoom field-of-view,<wbr/> and is represented by the rectangle of (0,<wbr/> 0,<wbr/> 5732activeArrayWith,<wbr/> activeArrayHeight).<wbr/> The same applies to AE/<wbr/>AWB/<wbr/>AF regions,<wbr/> and faces.<wbr/> 5733This coordinate system change isn't applicable to RAW capture and its related 5734metadata such as intrinsicCalibration and lensShadingMap.<wbr/></p> 5735<p>Using the same hypothetical example above,<wbr/> and assuming output stream #1 (640x480) is 5736the viewfinder stream,<wbr/> the application can achieve 2.<wbr/>0x zoom in one of two ways:</p> 5737<ul> 5738<li>zoomRatio = 2.<wbr/>0,<wbr/> scaler.<wbr/>cropRegion = (0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</li> 5739<li>zoomRatio = 1.<wbr/>0 (default),<wbr/> scaler.<wbr/>cropRegion = (500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</li> 5740</ul> 5741<p>If the application intends to set aeRegions to be top-left quarter of the viewfinder 5742field-of-view,<wbr/> the <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a> should be set to (0,<wbr/> 0,<wbr/> 1000,<wbr/> 750) with 5743zoomRatio set to 2.<wbr/>0.<wbr/> Alternatively,<wbr/> the application can set aeRegions to the equivalent 5744region of (500,<wbr/> 375,<wbr/> 1000,<wbr/> 750) for zoomRatio of 1.<wbr/>0.<wbr/> If the application doesn't 5745explicitly set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> its value defaults to 1.<wbr/>0.<wbr/></p> 5746<p>One limitation of controlling zoom using zoomRatio is that the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> 5747must only be used for letterboxing or pillarboxing of the sensor active array,<wbr/> and no 5748FREEFORM cropping can be used with <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> other than 1.<wbr/>0.<wbr/> If 5749<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is not 1.<wbr/>0,<wbr/> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is set to be 5750windowboxing,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be 5751the active array.<wbr/></p> 5752<p>In the capture request,<wbr/> if the application sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to a 5753value != 1.<wbr/>0,<wbr/> the <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the capture result reflects the 5754effective zoom ratio achieved by the camera device,<wbr/> and the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> 5755adjusts for additional crops that are not zoom related.<wbr/> Otherwise,<wbr/> if the application 5756sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0,<wbr/> or does not set it at all,<wbr/> the 5757<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the result metadata will also be 1.<wbr/>0.<wbr/></p> 5758<p>When the application requests a physical stream for a logical multi-camera,<wbr/> the 5759<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in the physical camera result metadata will be 1.<wbr/>0,<wbr/> and 5760the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> tag reflects the amount of zoom and crop done by the 5761physical camera device.<wbr/></p> 5762 </td> 5763 </tr> 5764 5765 <tr class="entries_header"> 5766 <th class="th_details" colspan="6">HAL Implementation Details</th> 5767 </tr> 5768 <tr class="entry_cont"> 5769 <td class="entry_details" colspan="6"> 5770 <p>For all capture request templates,<wbr/> this field must be set to 1.<wbr/>0 in order to have 5771consistent field of views between different modes.<wbr/></p> 5772 </td> 5773 </tr> 5774 5775 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5776 <!-- end of entry --> 5777 5778 5779 <tr class="entry" id="controls_android.control.afRegionsSet"> 5780 <td class="entry_name 5781 " rowspan="3"> 5782 android.<wbr/>control.<wbr/>af<wbr/>Regions<wbr/>Set 5783 </td> 5784 <td class="entry_type"> 5785 <span class="entry_type_name entry_type_name_enum">byte</span> 5786 5787 <span class="entry_type_visibility"> [fwk_only as boolean]</span> 5788 5789 5790 5791 5792 5793 <ul class="entry_type_enum"> 5794 <li> 5795 <span class="entry_type_enum_name">FALSE (v3.2)</span> 5796 <span class="entry_type_enum_notes"><p>AF regions (<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>) have not been set by the camera client.<wbr/></p></span> 5797 </li> 5798 <li> 5799 <span class="entry_type_enum_name">TRUE (v3.2)</span> 5800 <span class="entry_type_enum_notes"><p>AF regions (<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>) have been set by the camera client.<wbr/></p></span> 5801 </li> 5802 </ul> 5803 5804 </td> <!-- entry_type --> 5805 5806 <td class="entry_description"> 5807 <p>Framework-only private key which informs camera fwk that the AF regions has been set 5808by the client and those regions need not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is 5809set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p> 5810 </td> 5811 5812 <td class="entry_units"> 5813 </td> 5814 5815 <td class="entry_range"> 5816 </td> 5817 5818 <td class="entry_hal_version"> 5819 <p>3.<wbr/>2</p> 5820 </td> 5821 5822 <td class="entry_tags"> 5823 </td> 5824 5825 </tr> 5826 <tr class="entries_header"> 5827 <th class="th_details" colspan="6">Details</th> 5828 </tr> 5829 <tr class="entry_cont"> 5830 <td class="entry_details" colspan="6"> 5831 <p>This must be set to TRUE by the camera2 java fwk when the camera client sets 5832<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 5833 </td> 5834 </tr> 5835 5836 5837 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5838 <!-- end of entry --> 5839 5840 5841 <tr class="entry" id="controls_android.control.aeRegionsSet"> 5842 <td class="entry_name 5843 " rowspan="3"> 5844 android.<wbr/>control.<wbr/>ae<wbr/>Regions<wbr/>Set 5845 </td> 5846 <td class="entry_type"> 5847 <span class="entry_type_name entry_type_name_enum">byte</span> 5848 5849 <span class="entry_type_visibility"> [fwk_only as boolean]</span> 5850 5851 5852 5853 5854 5855 <ul class="entry_type_enum"> 5856 <li> 5857 <span class="entry_type_enum_name">FALSE (v3.2)</span> 5858 <span class="entry_type_enum_notes"><p>AE regions (<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>) have not been set by the camera client.<wbr/></p></span> 5859 </li> 5860 <li> 5861 <span class="entry_type_enum_name">TRUE (v3.2)</span> 5862 <span class="entry_type_enum_notes"><p>AE regions (<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>) have been set by the camera client.<wbr/></p></span> 5863 </li> 5864 </ul> 5865 5866 </td> <!-- entry_type --> 5867 5868 <td class="entry_description"> 5869 <p>Framework-only private key which informs camera fwk that the AE regions has been set 5870by the client and those regions need not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is 5871set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p> 5872 </td> 5873 5874 <td class="entry_units"> 5875 </td> 5876 5877 <td class="entry_range"> 5878 </td> 5879 5880 <td class="entry_hal_version"> 5881 <p>3.<wbr/>2</p> 5882 </td> 5883 5884 <td class="entry_tags"> 5885 </td> 5886 5887 </tr> 5888 <tr class="entries_header"> 5889 <th class="th_details" colspan="6">Details</th> 5890 </tr> 5891 <tr class="entry_cont"> 5892 <td class="entry_details" colspan="6"> 5893 <p>This must be set to TRUE by the camera2 java fwk when the camera client sets 5894<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 5895 </td> 5896 </tr> 5897 5898 5899 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5900 <!-- end of entry --> 5901 5902 5903 <tr class="entry" id="controls_android.control.awbRegionsSet"> 5904 <td class="entry_name 5905 " rowspan="3"> 5906 android.<wbr/>control.<wbr/>awb<wbr/>Regions<wbr/>Set 5907 </td> 5908 <td class="entry_type"> 5909 <span class="entry_type_name entry_type_name_enum">byte</span> 5910 5911 <span class="entry_type_visibility"> [fwk_only as boolean]</span> 5912 5913 5914 5915 5916 5917 <ul class="entry_type_enum"> 5918 <li> 5919 <span class="entry_type_enum_name">FALSE (v3.2)</span> 5920 <span class="entry_type_enum_notes"><p>AWB regions (<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>) have not been set by the camera client.<wbr/></p></span> 5921 </li> 5922 <li> 5923 <span class="entry_type_enum_name">TRUE (v3.2)</span> 5924 <span class="entry_type_enum_notes"><p>AWB regions (<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>) have been set by the camera client.<wbr/></p></span> 5925 </li> 5926 </ul> 5927 5928 </td> <!-- entry_type --> 5929 5930 <td class="entry_description"> 5931 <p>Framework-only private key which informs camera fwk that the AF regions has been set 5932by the client and those regions need not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is 5933set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p> 5934 </td> 5935 5936 <td class="entry_units"> 5937 </td> 5938 5939 <td class="entry_range"> 5940 </td> 5941 5942 <td class="entry_hal_version"> 5943 <p>3.<wbr/>2</p> 5944 </td> 5945 5946 <td class="entry_tags"> 5947 </td> 5948 5949 </tr> 5950 <tr class="entries_header"> 5951 <th class="th_details" colspan="6">Details</th> 5952 </tr> 5953 <tr class="entry_cont"> 5954 <td class="entry_details" colspan="6"> 5955 <p>This must be set to TRUE by the camera2 java fwk when the camera client sets 5956<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 5957 </td> 5958 </tr> 5959 5960 5961 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5962 <!-- end of entry --> 5963 5964 5965 <tr class="entry" id="controls_android.control.settingsOverride"> 5966 <td class="entry_name 5967 " rowspan="5"> 5968 android.<wbr/>control.<wbr/>settings<wbr/>Override 5969 </td> 5970 <td class="entry_type"> 5971 <span class="entry_type_name entry_type_name_enum">int32</span> 5972 5973 <span class="entry_type_visibility"> [public]</span> 5974 5975 5976 5977 5978 5979 <ul class="entry_type_enum"> 5980 <li> 5981 <span class="entry_type_enum_name">OFF (v3.9)</span> 5982 <span class="entry_type_enum_notes"><p>No keys are applied sooner than the other keys when applying CaptureRequest 5983settings to the camera device.<wbr/> This is the default value.<wbr/></p></span> 5984 </li> 5985 <li> 5986 <span class="entry_type_enum_name">ZOOM (v3.9)</span> 5987 <span class="entry_type_enum_notes"><p>Zoom related keys are applied sooner than the other keys in the CaptureRequest.<wbr/> The 5988zoom related keys are:</p> 5989<ul> 5990<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li> 5991<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 5992<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 5993<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 5994<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 5995</ul> 5996<p>Even though <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/> 5997and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a> are not directly zoom related,<wbr/> applications 5998typically scale these regions together with <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to have a 5999consistent mapping within the current field of view.<wbr/> In this aspect,<wbr/> they are 6000related to <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/></p></span> 6001 </li> 6002 <li> 6003 <span class="entry_type_enum_name">VENDOR_START (v3.9)</span> 6004 <span class="entry_type_enum_hidden">[hidden]</span> 6005 <span class="entry_type_enum_value">0x4000</span> 6006 <span class="entry_type_enum_notes"><p>Vendor defined settingsOverride.<wbr/> These depend on vendor implementation.<wbr/></p></span> 6007 </li> 6008 </ul> 6009 6010 </td> <!-- entry_type --> 6011 6012 <td class="entry_description"> 6013 <p>The desired CaptureRequest settings override with which certain keys are 6014applied earlier so that they can take effect sooner.<wbr/></p> 6015 </td> 6016 6017 <td class="entry_units"> 6018 </td> 6019 6020 <td class="entry_range"> 6021 <p><a href="#static_android.control.availableSettingsOverrides">android.<wbr/>control.<wbr/>available<wbr/>Settings<wbr/>Overrides</a></p> 6022 </td> 6023 6024 <td class="entry_hal_version"> 6025 <p>3.<wbr/>9</p> 6026 </td> 6027 6028 <td class="entry_tags"> 6029 </td> 6030 6031 </tr> 6032 <tr class="entries_header"> 6033 <th class="th_details" colspan="6">Details</th> 6034 </tr> 6035 <tr class="entry_cont"> 6036 <td class="entry_details" colspan="6"> 6037 <p>There are some CaptureRequest keys which can be applied earlier than others 6038when controls within a CaptureRequest aren't required to take effect at the same time.<wbr/> 6039One such example is zoom.<wbr/> Zoom can be applied at a later stage of the camera pipeline.<wbr/> 6040As soon as the camera device receives the CaptureRequest,<wbr/> it can apply the requested 6041zoom value onto an earlier request that's already in the pipeline,<wbr/> thus improves zoom 6042latency.<wbr/></p> 6043<p>This key's value in the capture result reflects whether the controls for this capture 6044are overridden "by" a newer request.<wbr/> This means that if a capture request turns on 6045settings override,<wbr/> the capture result of an earlier request will contain the key value 6046of ZOOM.<wbr/> On the other hand,<wbr/> if a capture request has settings override turned on,<wbr/> 6047but all newer requests have it turned off,<wbr/> the key's value in the capture result will 6048be OFF because this capture isn't overridden by a newer capture.<wbr/> In the two examples 6049below,<wbr/> the capture results columns illustrate the settingsOverride values in different 6050scenarios.<wbr/></p> 6051<p>Assuming the zoom settings override can speed up by 1 frame,<wbr/> below example illustrates 6052the speed-up at the start of capture session:</p> 6053<pre><code>Camera session created 6054Request 1 (zoom=1.<wbr/>0x,<wbr/> override=ZOOM) -> 6055Request 2 (zoom=1.<wbr/>2x,<wbr/> override=ZOOM) -> 6056Request 3 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) -> Result 1 (zoom=1.<wbr/>2x,<wbr/> override=ZOOM) 6057Request 4 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) -> Result 2 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) 6058Request 5 (zoom=1.<wbr/>8x,<wbr/> override=ZOOM) -> Result 3 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) 6059 -> Result 4 (zoom=1.<wbr/>8x,<wbr/> override=ZOOM) 6060 -> Result 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF) 6061</code></pre> 6062<p>The application can turn on settings override and use zoom as normal.<wbr/> The example 6063shows that the later zoom values (1.<wbr/>2x,<wbr/> 1.<wbr/>4x,<wbr/> 1.<wbr/>6x,<wbr/> and 1.<wbr/>8x) overwrite the zoom 6064values (1.<wbr/>0x,<wbr/> 1.<wbr/>2x,<wbr/> 1.<wbr/>4x,<wbr/> and 1.<wbr/>8x) of earlier requests (#1,<wbr/> #2,<wbr/> #3,<wbr/> and #4).<wbr/></p> 6065<p>The application must make sure the settings override doesn't interfere with user 6066journeys requiring simultaneous application of all controls in CaptureRequest on the 6067requested output targets.<wbr/> For example,<wbr/> if the application takes a still capture using 6068CameraCaptureSession#capture,<wbr/> and the repeating request immediately sets a different 6069zoom value using override,<wbr/> the inflight still capture could have its zoom value 6070overwritten unexpectedly.<wbr/></p> 6071<p>So the application is strongly recommended to turn off settingsOverride when taking 6072still/<wbr/>burst captures,<wbr/> and turn it back on when there is only repeating viewfinder 6073request and no inflight still/<wbr/>burst captures.<wbr/></p> 6074<p>Below is the example demonstrating the transitions in and out of the 6075settings override:</p> 6076<pre><code>Request 1 (zoom=1.<wbr/>0x,<wbr/> override=OFF) 6077Request 2 (zoom=1.<wbr/>2x,<wbr/> override=OFF) 6078Request 3 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) -> Result 1 (zoom=1.<wbr/>0x,<wbr/> override=OFF) 6079Request 4 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) -> Result 2 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) 6080Request 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF) -> Result 3 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) 6081 -> Result 4 (zoom=1.<wbr/>6x,<wbr/> override=OFF) 6082 -> Result 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF) 6083</code></pre> 6084<p>This example shows that:</p> 6085<ul> 6086<li>The application "ramps in" settings override by setting the control to ZOOM.<wbr/> 6087In the example,<wbr/> request #3 enables zoom settings override.<wbr/> Because the camera device 6088can speed up applying zoom by 1 frame,<wbr/> the outputs of request #2 has 1.<wbr/>4x zoom,<wbr/> the 6089value specified in request #3.<wbr/></li> 6090<li>The application "ramps out" of settings override by setting the control to OFF.<wbr/> In 6091the example,<wbr/> request #5 changes the override to OFF.<wbr/> Because request #4's zoom 6092takes effect in result #3,<wbr/> result #4's zoom remains the same until new value takes 6093effect in result #5.<wbr/></li> 6094</ul> 6095 </td> 6096 </tr> 6097 6098 <tr class="entries_header"> 6099 <th class="th_details" colspan="6">HAL Implementation Details</th> 6100 </tr> 6101 <tr class="entry_cont"> 6102 <td class="entry_details" colspan="6"> 6103 <p>The HAL must set this value to OFF in all of the Capture templates.<wbr/></p> 6104<p>Typically the HAL unblocks processCaptureRequest at the same rate as the sensor capture,<wbr/> 6105and the HAL queues the capture settings in its pipeline when processCaptureRequest 6106returns.<wbr/> However,<wbr/> when the settings override is enabled,<wbr/> the HAL can optimize the 6107overridden controls' latency by applying them as soon as processCaptureRequest is 6108called,<wbr/> rather than when it's unblocked.<wbr/></p> 6109<p>For devices launching with API level 35 or newer,<wbr/> to avoid regression on zoom 6110smoothness,<wbr/> when zoom settings override is on during pinch zoom (zoom value gradually 6111changes),<wbr/> the zoom effect in the camera output must not become more jittery.<wbr/> More 6112specifically,<wbr/> the variation of zoom pipeline latency must not increase.<wbr/> The latency 6113improvement must be at least 1 frame regardless of zoom in or zoom out.<wbr/></p> 6114<p>For devices launched before API level 35,<wbr/> if zoom settings override is on,<wbr/> when 6115zooming in,<wbr/> the HAL must be able to apply the zoom related settings at least 1 6116frame ahead.<wbr/></p> 6117 </td> 6118 </tr> 6119 6120 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6121 <!-- end of entry --> 6122 6123 6124 <tr class="entry" id="controls_android.control.autoframing"> 6125 <td class="entry_name 6126 " rowspan="5"> 6127 android.<wbr/>control.<wbr/>autoframing 6128 </td> 6129 <td class="entry_type"> 6130 <span class="entry_type_name entry_type_name_enum">byte</span> 6131 6132 <span class="entry_type_visibility"> [public]</span> 6133 6134 6135 <span class="entry_type_hwlevel">[limited] </span> 6136 6137 6138 6139 <ul class="entry_type_enum"> 6140 <li> 6141 <span class="entry_type_enum_name">OFF (v3.9)</span> 6142 <span class="entry_type_enum_notes"><p>Disable autoframing.<wbr/></p></span> 6143 </li> 6144 <li> 6145 <span class="entry_type_enum_name">ON (v3.9)</span> 6146 <span class="entry_type_enum_notes"><p>Enable autoframing to keep people in the frame's field of view.<wbr/></p></span> 6147 </li> 6148 <li> 6149 <span class="entry_type_enum_name">AUTO (v3.9)</span> 6150 <span class="entry_type_enum_hidden">[hidden]</span> 6151 <span class="entry_type_enum_notes"><p>Automatically select ON or OFF based on the system level preferences.<wbr/></p></span> 6152 </li> 6153 </ul> 6154 6155 </td> <!-- entry_type --> 6156 6157 <td class="entry_description"> 6158 <p>Automatic crop,<wbr/> pan and zoom to keep objects in the center of the frame.<wbr/></p> 6159 </td> 6160 6161 <td class="entry_units"> 6162 </td> 6163 6164 <td class="entry_range"> 6165 </td> 6166 6167 <td class="entry_hal_version"> 6168 <p>3.<wbr/>9</p> 6169 </td> 6170 6171 <td class="entry_tags"> 6172 </td> 6173 6174 </tr> 6175 <tr class="entries_header"> 6176 <th class="th_details" colspan="6">Details</th> 6177 </tr> 6178 <tr class="entry_cont"> 6179 <td class="entry_details" colspan="6"> 6180 <p>Auto-framing is a special mode provided by the camera device to dynamically crop,<wbr/> zoom 6181or pan the camera feed to try to ensure that the people in a scene occupy a reasonable 6182portion of the viewport.<wbr/> It is primarily designed to support video calling in 6183situations where the user isn't directly in front of the device,<wbr/> especially for 6184wide-angle cameras.<wbr/> 6185<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in CaptureResult will be used 6186to denote the coordinates of the auto-framed region.<wbr/> 6187Zoom and video stabilization controls are disabled when auto-framing is enabled.<wbr/> The 3A 6188regions must map the screen coordinates into the scaler crop returned from the capture 6189result instead of using the active array sensor.<wbr/></p> 6190 </td> 6191 </tr> 6192 6193 <tr class="entries_header"> 6194 <th class="th_details" colspan="6">HAL Implementation Details</th> 6195 </tr> 6196 <tr class="entry_cont"> 6197 <td class="entry_details" colspan="6"> 6198 <p>While auto-framing is ON,<wbr/> the aspect ratio of the auto-framed region must match the 6199aspect ratio of the configured output stream.<wbr/> 6200When reporting CaptureResult,<wbr/> SCALER_<wbr/>CROP_<wbr/>REGION might not adequately describe the 6201actual sensor pixels.<wbr/> In this case,<wbr/> it is acceptable for the returned parameters to only 6202be an approximation of the image sensor region that is actually used.<wbr/> 6203When auto-framing is turned off,<wbr/> the transition should be immediate,<wbr/> with no panning or 6204zooming to transition to the settings requested by the app.<wbr/> When it is turned on,<wbr/> the 6205transition can be immediate or smooth.<wbr/></p> 6206 </td> 6207 </tr> 6208 6209 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6210 <!-- end of entry --> 6211 6212 6213 <tr class="entry" id="controls_android.control.zoomMethod"> 6214 <td class="entry_name 6215 " rowspan="5"> 6216 android.<wbr/>control.<wbr/>zoom<wbr/>Method 6217 </td> 6218 <td class="entry_type"> 6219 <span class="entry_type_name entry_type_name_enum">byte</span> 6220 6221 <span class="entry_type_visibility"> [fwk_public]</span> 6222 6223 6224 <span class="entry_type_hwlevel">[limited] </span> 6225 6226 6227 6228 <ul class="entry_type_enum"> 6229 <li> 6230 <span class="entry_type_enum_name">AUTO (v3.11)</span> 6231 <span class="entry_type_enum_value">0</span> 6232 <span class="entry_type_enum_notes"><p>The camera device automatically detects whether the application does zoom with 6233<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and in turn decides which 6234metadata tag reflects the effective zoom level.<wbr/></p></span> 6235 </li> 6236 <li> 6237 <span class="entry_type_enum_name">ZOOM_RATIO (v3.11)</span> 6238 <span class="entry_type_enum_value">1</span> 6239 <span class="entry_type_enum_notes"><p>The application intends to control zoom via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and 6240the effective zoom level is reflected by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in capture results.<wbr/></p></span> 6241 </li> 6242 </ul> 6243 6244 </td> <!-- entry_type --> 6245 6246 <td class="entry_description"> 6247 <p>Whether the application uses <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> 6248to control zoom levels.<wbr/></p> 6249 </td> 6250 6251 <td class="entry_units"> 6252 </td> 6253 6254 <td class="entry_range"> 6255 </td> 6256 6257 <td class="entry_hal_version"> 6258 <p>3.<wbr/>11</p> 6259 </td> 6260 6261 <td class="entry_tags"> 6262 </td> 6263 6264 </tr> 6265 <tr class="entries_header"> 6266 <th class="th_details" colspan="6">Details</th> 6267 </tr> 6268 <tr class="entry_cont"> 6269 <td class="entry_details" colspan="6"> 6270 <p>If set to AUTO,<wbr/> the camera device detects which capture request key the application uses 6271to do zoom,<wbr/> <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> If 6272the application doesn't set android.<wbr/>scaler.<wbr/>zoom<wbr/>Ratio or sets it to 1.<wbr/>0 in the capture 6273request,<wbr/> the effective zoom level is reflected in <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> in capture 6274results.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to values other than 1.<wbr/>0,<wbr/> the effective 6275zoom level is reflected in <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> AUTO is the default value 6276for this control,<wbr/> and also the behavior of the OS before Android version 6277<a href="https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#BAKLAVA">BAKLAVA</a>.<wbr/></p> 6278<p>If set to ZOOM_<wbr/>RATIO,<wbr/> the application explicitly specifies zoom level be controlled 6279by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the effective zoom level is reflected in 6280<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in capture results.<wbr/> This addresses an ambiguity with AUTO,<wbr/> 6281with which the camera device cannot know if the application is using cropRegion or 6282zoomRatio at 1.<wbr/>0x.<wbr/></p> 6283 </td> 6284 </tr> 6285 6286 <tr class="entries_header"> 6287 <th class="th_details" colspan="6">HAL Implementation Details</th> 6288 </tr> 6289 <tr class="entry_cont"> 6290 <td class="entry_details" colspan="6"> 6291 <p>Do not use this key directly.<wbr/> It's for camera framework usage,<wbr/> 6292and not for HAL consumption.<wbr/></p> 6293 </td> 6294 </tr> 6295 6296 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6297 <!-- end of entry --> 6298 6299 6300 <tr class="entry" id="controls_android.control.aePriorityMode"> 6301 <td class="entry_name 6302 " rowspan="5"> 6303 android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode 6304 </td> 6305 <td class="entry_type"> 6306 <span class="entry_type_name entry_type_name_enum">byte</span> 6307 6308 <span class="entry_type_visibility"> [public]</span> 6309 6310 6311 6312 6313 6314 <ul class="entry_type_enum"> 6315 <li> 6316 <span class="entry_type_enum_name">OFF (v3.11)</span> 6317 <span class="entry_type_enum_notes"><p>Disable AE priority mode.<wbr/> This is the default value.<wbr/></p></span> 6318 </li> 6319 <li> 6320 <span class="entry_type_enum_name">SENSOR_SENSITIVITY_PRIORITY (v3.11)</span> 6321 <span class="entry_type_enum_notes"><p>The camera device's auto-exposure routine is active and 6322prioritizes the application-selected ISO (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/></p> 6323<p>The application has control over <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> while 6324the application's values for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 6325<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/></p></span> 6326 </li> 6327 <li> 6328 <span class="entry_type_enum_name">SENSOR_EXPOSURE_TIME_PRIORITY (v3.11)</span> 6329 <span class="entry_type_enum_notes"><p>The camera device's auto-exposure routine is active and 6330prioritizes the application-selected exposure time 6331(<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>).<wbr/></p> 6332<p>The application has control over <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> while 6333the application's values for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 6334<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/></p></span> 6335 </li> 6336 </ul> 6337 6338 </td> <!-- entry_type --> 6339 6340 <td class="entry_description"> 6341 <p>Turn on AE priority mode.<wbr/></p> 6342 </td> 6343 6344 <td class="entry_units"> 6345 </td> 6346 6347 <td class="entry_range"> 6348 </td> 6349 6350 <td class="entry_hal_version"> 6351 <p>3.<wbr/>11</p> 6352 </td> 6353 6354 <td class="entry_tags"> 6355 </td> 6356 6357 </tr> 6358 <tr class="entries_header"> 6359 <th class="th_details" colspan="6">Details</th> 6360 </tr> 6361 <tr class="entry_cont"> 6362 <td class="entry_details" colspan="6"> 6363 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 6364AUTO and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is set to one of its 6365ON modes,<wbr/> with the exception of ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY.<wbr/></p> 6366<p>When a priority mode is enabled,<wbr/> the camera device's 6367auto-exposure routine will maintain the application's 6368selected parameters relevant to the priority mode while overriding 6369the remaining exposure parameters 6370(<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/> and 6371<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> For example,<wbr/> if 6372SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY mode is enabled,<wbr/> the camera device will 6373maintain the application-selected <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> 6374while adjusting <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> 6375and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/> The overridden fields for a 6376given capture will be available in its CaptureResult.<wbr/></p> 6377 </td> 6378 </tr> 6379 6380 <tr class="entries_header"> 6381 <th class="th_details" colspan="6">HAL Implementation Details</th> 6382 </tr> 6383 <tr class="entry_cont"> 6384 <td class="entry_details" colspan="6"> 6385 <p>The total sensitivity applied for SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY should not be 6386adjusted by any HAL applied <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a>.<wbr/></p> 6387 </td> 6388 </tr> 6389 6390 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6391 <!-- end of entry --> 6392 6393 6394 6395 <!-- end of kind --> 6396 </tbody> 6397 <tr><td colspan="7" class="kind">static</td></tr> 6398 6399 <thead class="entries_header"> 6400 <tr> 6401 <th class="th_name">Property Name</th> 6402 <th class="th_type">Type</th> 6403 <th class="th_description">Description</th> 6404 <th class="th_units">Units</th> 6405 <th class="th_range">Range</th> 6406 <th class="th_hal_version">Initial HIDL HAL version</th> 6407 <th class="th_tags">Tags</th> 6408 </tr> 6409 </thead> 6410 6411 <tbody> 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 6423 <td class="entry_name 6424 " rowspan="3"> 6425 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 6426 </td> 6427 <td class="entry_type"> 6428 <span class="entry_type_name">byte</span> 6429 <span class="entry_type_container">x</span> 6430 6431 <span class="entry_type_array"> 6432 n 6433 </span> 6434 <span class="entry_type_visibility"> [public as enumList]</span> 6435 6436 6437 <span class="entry_type_hwlevel">[legacy] </span> 6438 6439 6440 <div class="entry_type_notes">list of enums</div> 6441 6442 6443 </td> <!-- entry_type --> 6444 6445 <td class="entry_description"> 6446 <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 6447supported by this camera device.<wbr/></p> 6448 </td> 6449 6450 <td class="entry_units"> 6451 </td> 6452 6453 <td class="entry_range"> 6454 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p> 6455 </td> 6456 6457 <td class="entry_hal_version"> 6458 <p>3.<wbr/>2</p> 6459 </td> 6460 6461 <td class="entry_tags"> 6462 <ul class="entry_tags"> 6463 <li><a href="#tag_BC">BC</a></li> 6464 </ul> 6465 </td> 6466 6467 </tr> 6468 <tr class="entries_header"> 6469 <th class="th_details" colspan="6">Details</th> 6470 </tr> 6471 <tr class="entry_cont"> 6472 <td class="entry_details" colspan="6"> 6473 <p>Not all of the auto-exposure anti-banding modes may be 6474supported by a given camera device.<wbr/> This field lists the 6475valid anti-banding modes that the application may request 6476for this camera device with the 6477<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p> 6478 </td> 6479 </tr> 6480 6481 6482 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6483 <!-- end of entry --> 6484 6485 6486 <tr class="entry" id="static_android.control.aeAvailableModes"> 6487 <td class="entry_name 6488 " rowspan="3"> 6489 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 6490 </td> 6491 <td class="entry_type"> 6492 <span class="entry_type_name">byte</span> 6493 <span class="entry_type_container">x</span> 6494 6495 <span class="entry_type_array"> 6496 n 6497 </span> 6498 <span class="entry_type_visibility"> [public as enumList]</span> 6499 6500 6501 <span class="entry_type_hwlevel">[legacy] </span> 6502 6503 6504 <div class="entry_type_notes">list of enums</div> 6505 6506 6507 </td> <!-- entry_type --> 6508 6509 <td class="entry_description"> 6510 <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 6511device.<wbr/></p> 6512 </td> 6513 6514 <td class="entry_units"> 6515 </td> 6516 6517 <td class="entry_range"> 6518 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p> 6519 </td> 6520 6521 <td class="entry_hal_version"> 6522 <p>3.<wbr/>2</p> 6523 </td> 6524 6525 <td class="entry_tags"> 6526 <ul class="entry_tags"> 6527 <li><a href="#tag_BC">BC</a></li> 6528 </ul> 6529 </td> 6530 6531 </tr> 6532 <tr class="entries_header"> 6533 <th class="th_details" colspan="6">Details</th> 6534 </tr> 6535 <tr class="entry_cont"> 6536 <td class="entry_details" colspan="6"> 6537 <p>Not all the auto-exposure modes may be supported by a 6538given camera device,<wbr/> especially if no flash unit is 6539available.<wbr/> This entry lists the valid modes for 6540<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 6541<p>All camera devices support ON,<wbr/> and all camera devices with flash 6542units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 6543<p>FULL mode camera devices always support OFF mode,<wbr/> 6544which enables application control of camera exposure time,<wbr/> 6545sensitivity,<wbr/> and frame duration.<wbr/></p> 6546<p>LEGACY mode camera devices never support OFF mode.<wbr/> 6547LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR 6548capability.<wbr/></p> 6549 </td> 6550 </tr> 6551 6552 6553 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6554 <!-- end of entry --> 6555 6556 6557 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 6558 <td class="entry_name 6559 " rowspan="5"> 6560 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 6561 </td> 6562 <td class="entry_type"> 6563 <span class="entry_type_name">int32</span> 6564 <span class="entry_type_container">x</span> 6565 6566 <span class="entry_type_array"> 6567 2 x n 6568 </span> 6569 <span class="entry_type_visibility"> [public as rangeInt]</span> 6570 6571 6572 <span class="entry_type_hwlevel">[legacy] </span> 6573 6574 6575 <div class="entry_type_notes">list of pairs of frame rates</div> 6576 6577 6578 </td> <!-- entry_type --> 6579 6580 <td class="entry_description"> 6581 <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 6582this camera device.<wbr/></p> 6583 </td> 6584 6585 <td class="entry_units"> 6586 Frames per second (FPS) 6587 </td> 6588 6589 <td class="entry_range"> 6590 </td> 6591 6592 <td class="entry_hal_version"> 6593 <p>3.<wbr/>2</p> 6594 </td> 6595 6596 <td class="entry_tags"> 6597 <ul class="entry_tags"> 6598 <li><a href="#tag_BC">BC</a></li> 6599 </ul> 6600 </td> 6601 6602 </tr> 6603 <tr class="entries_header"> 6604 <th class="th_details" colspan="6">Details</th> 6605 </tr> 6606 <tr class="entry_cont"> 6607 <td class="entry_details" colspan="6"> 6608 <p>For devices at the LEGACY level or above:</p> 6609<ul> 6610<li> 6611<p>For constant-framerate recording,<wbr/> for each normal 6612<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a 6613<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 6614<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in 6615the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/> 6616<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is 6617supported by the device and has 6618<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will 6619always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p> 6620</li> 6621<li> 6622<p>Also,<wbr/> a camera device must either not support any 6623<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> 6624or support at least one 6625normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 6626<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p> 6627</li> 6628</ul> 6629<p>For devices at the LIMITED level or above:</p> 6630<ul> 6631<li>For devices that advertise NIR color filter arrangement in 6632<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>,<wbr/> this list will always include 6633(<code>max</code>,<wbr/> <code>max</code>) where <code>max</code> = the maximum output frame rate of the maximum YUV_<wbr/>420_<wbr/>888 6634output size.<wbr/></li> 6635<li>For devices advertising any color filter arrangement other than NIR,<wbr/> or devices not 6636advertising color filter arrangement,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) and 6637(<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the 6638maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li> 6639</ul> 6640 </td> 6641 </tr> 6642 6643 <tr class="entries_header"> 6644 <th class="th_details" colspan="6">HAL Implementation Details</th> 6645 </tr> 6646 <tr class="entry_cont"> 6647 <td class="entry_details" colspan="6"> 6648 <p>HAL must make sure the lower bound and upper bound of each supported targetFpsRange can 6649be reached.<wbr/> For example,<wbr/> if HAL supports an aeTargetFpsRange of (15,<wbr/> 30),<wbr/> when set by the 6650application,<wbr/> the camera must be able to reach 15fps in sufficient dark scenes.<wbr/> This way 6651the application knows the exact range of frame rate it can expect.<wbr/></p> 6652 </td> 6653 </tr> 6654 6655 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6656 <!-- end of entry --> 6657 6658 6659 <tr class="entry" id="static_android.control.aeCompensationRange"> 6660 <td class="entry_name 6661 " rowspan="1"> 6662 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 6663 </td> 6664 <td class="entry_type"> 6665 <span class="entry_type_name">int32</span> 6666 <span class="entry_type_container">x</span> 6667 6668 <span class="entry_type_array"> 6669 2 6670 </span> 6671 <span class="entry_type_visibility"> [public as rangeInt]</span> 6672 6673 6674 <span class="entry_type_hwlevel">[legacy] </span> 6675 6676 6677 6678 6679 </td> <!-- entry_type --> 6680 6681 <td class="entry_description"> 6682 <p>Maximum and minimum exposure compensation values for 6683<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/> 6684that are supported by this camera device.<wbr/></p> 6685 </td> 6686 6687 <td class="entry_units"> 6688 </td> 6689 6690 <td class="entry_range"> 6691 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> 6692<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure 6693compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> 6694<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> 6695<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> 6696<p>LEGACY devices may support a smaller range than this.<wbr/></p> 6697 </td> 6698 6699 <td class="entry_hal_version"> 6700 <p>3.<wbr/>2</p> 6701 </td> 6702 6703 <td class="entry_tags"> 6704 <ul class="entry_tags"> 6705 <li><a href="#tag_BC">BC</a></li> 6706 </ul> 6707 </td> 6708 6709 </tr> 6710 6711 6712 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6713 <!-- end of entry --> 6714 6715 6716 <tr class="entry" id="static_android.control.aeCompensationStep"> 6717 <td class="entry_name 6718 " rowspan="5"> 6719 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 6720 </td> 6721 <td class="entry_type"> 6722 <span class="entry_type_name">rational</span> 6723 6724 <span class="entry_type_visibility"> [public]</span> 6725 6726 6727 <span class="entry_type_hwlevel">[legacy] </span> 6728 6729 6730 6731 6732 </td> <!-- entry_type --> 6733 6734 <td class="entry_description"> 6735 <p>Smallest step by which the exposure compensation 6736can be changed.<wbr/></p> 6737 </td> 6738 6739 <td class="entry_units"> 6740 Exposure Value (EV) 6741 </td> 6742 6743 <td class="entry_range"> 6744 </td> 6745 6746 <td class="entry_hal_version"> 6747 <p>3.<wbr/>2</p> 6748 </td> 6749 6750 <td class="entry_tags"> 6751 <ul class="entry_tags"> 6752 <li><a href="#tag_BC">BC</a></li> 6753 </ul> 6754 </td> 6755 6756 </tr> 6757 <tr class="entries_header"> 6758 <th class="th_details" colspan="6">Details</th> 6759 </tr> 6760 <tr class="entry_cont"> 6761 <td class="entry_details" colspan="6"> 6762 <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 6763a 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 6764that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> 6765<p>One unit of EV compensation changes the brightness of the captured image by a factor 6766of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p> 6767 </td> 6768 </tr> 6769 6770 <tr class="entries_header"> 6771 <th class="th_details" colspan="6">HAL Implementation Details</th> 6772 </tr> 6773 <tr class="entry_cont"> 6774 <td class="entry_details" colspan="6"> 6775 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p> 6776 </td> 6777 </tr> 6778 6779 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6780 <!-- end of entry --> 6781 6782 6783 <tr class="entry" id="static_android.control.afAvailableModes"> 6784 <td class="entry_name 6785 " rowspan="3"> 6786 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 6787 </td> 6788 <td class="entry_type"> 6789 <span class="entry_type_name">byte</span> 6790 <span class="entry_type_container">x</span> 6791 6792 <span class="entry_type_array"> 6793 n 6794 </span> 6795 <span class="entry_type_visibility"> [public as enumList]</span> 6796 6797 6798 <span class="entry_type_hwlevel">[legacy] </span> 6799 6800 6801 <div class="entry_type_notes">List of enums</div> 6802 6803 6804 </td> <!-- entry_type --> 6805 6806 <td class="entry_description"> 6807 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are 6808supported by this camera device.<wbr/></p> 6809 </td> 6810 6811 <td class="entry_units"> 6812 </td> 6813 6814 <td class="entry_range"> 6815 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p> 6816 </td> 6817 6818 <td class="entry_hal_version"> 6819 <p>3.<wbr/>2</p> 6820 </td> 6821 6822 <td class="entry_tags"> 6823 <ul class="entry_tags"> 6824 <li><a href="#tag_BC">BC</a></li> 6825 </ul> 6826 </td> 6827 6828 </tr> 6829 <tr class="entries_header"> 6830 <th class="th_details" colspan="6">Details</th> 6831 </tr> 6832 <tr class="entry_cont"> 6833 <td class="entry_details" colspan="6"> 6834 <p>Not all the auto-focus modes may be supported by a 6835given camera device.<wbr/> This entry lists the valid modes for 6836<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 6837<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all 6838camera devices with adjustable focuser units 6839(<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> 6840<p>LEGACY devices will support OFF mode only if they support 6841focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to 6842<code>0.<wbr/>0f</code>).<wbr/></p> 6843 </td> 6844 </tr> 6845 6846 6847 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6848 <!-- end of entry --> 6849 6850 6851 <tr class="entry" id="static_android.control.availableEffects"> 6852 <td class="entry_name 6853 " rowspan="3"> 6854 android.<wbr/>control.<wbr/>available<wbr/>Effects 6855 </td> 6856 <td class="entry_type"> 6857 <span class="entry_type_name">byte</span> 6858 <span class="entry_type_container">x</span> 6859 6860 <span class="entry_type_array"> 6861 n 6862 </span> 6863 <span class="entry_type_visibility"> [public as enumList]</span> 6864 6865 6866 <span class="entry_type_hwlevel">[legacy] </span> 6867 6868 6869 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 6870 6871 6872 </td> <!-- entry_type --> 6873 6874 <td class="entry_description"> 6875 <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 6876device.<wbr/></p> 6877 </td> 6878 6879 <td class="entry_units"> 6880 </td> 6881 6882 <td class="entry_range"> 6883 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p> 6884 </td> 6885 6886 <td class="entry_hal_version"> 6887 <p>3.<wbr/>2</p> 6888 </td> 6889 6890 <td class="entry_tags"> 6891 <ul class="entry_tags"> 6892 <li><a href="#tag_BC">BC</a></li> 6893 </ul> 6894 </td> 6895 6896 </tr> 6897 <tr class="entries_header"> 6898 <th class="th_details" colspan="6">Details</th> 6899 </tr> 6900 <tr class="entry_cont"> 6901 <td class="entry_details" colspan="6"> 6902 <p>This list contains the color effect modes that can be applied to 6903images produced by the camera device.<wbr/> 6904Implementations are not expected to be consistent across all devices.<wbr/> 6905If no color effect modes are available for a device,<wbr/> this will only list 6906OFF.<wbr/></p> 6907<p>A color effect will only be applied if 6908<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> 6909<p>This control has no effect on the operation of other control routines such 6910as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> 6911 </td> 6912 </tr> 6913 6914 6915 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6916 <!-- end of entry --> 6917 6918 6919 <tr class="entry" id="static_android.control.availableSceneModes"> 6920 <td class="entry_name 6921 " rowspan="3"> 6922 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 6923 </td> 6924 <td class="entry_type"> 6925 <span class="entry_type_name">byte</span> 6926 <span class="entry_type_container">x</span> 6927 6928 <span class="entry_type_array"> 6929 n 6930 </span> 6931 <span class="entry_type_visibility"> [public as enumList]</span> 6932 6933 6934 <span class="entry_type_hwlevel">[legacy] </span> 6935 6936 6937 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 6938 6939 6940 </td> <!-- entry_type --> 6941 6942 <td class="entry_description"> 6943 <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 6944device.<wbr/></p> 6945 </td> 6946 6947 <td class="entry_units"> 6948 </td> 6949 6950 <td class="entry_range"> 6951 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p> 6952 </td> 6953 6954 <td class="entry_hal_version"> 6955 <p>3.<wbr/>2</p> 6956 </td> 6957 6958 <td class="entry_tags"> 6959 <ul class="entry_tags"> 6960 <li><a href="#tag_BC">BC</a></li> 6961 </ul> 6962 </td> 6963 6964 </tr> 6965 <tr class="entries_header"> 6966 <th class="th_details" colspan="6">Details</th> 6967 </tr> 6968 <tr class="entry_cont"> 6969 <td class="entry_details" colspan="6"> 6970 <p>This list contains scene modes that can be set for the camera device.<wbr/> 6971Only scene modes that have been fully implemented for the 6972camera device may be included here.<wbr/> Implementations are not expected 6973to be consistent across all devices.<wbr/></p> 6974<p>If no scene modes are supported by the camera device,<wbr/> this 6975will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> 6976<p>FACE_<wbr/>PRIORITY is always listed if face detection is 6977supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> > 69780</code>).<wbr/></p> 6979 </td> 6980 </tr> 6981 6982 6983 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6984 <!-- end of entry --> 6985 6986 6987 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 6988 <td class="entry_name 6989 " rowspan="3"> 6990 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 6991 </td> 6992 <td class="entry_type"> 6993 <span class="entry_type_name">byte</span> 6994 <span class="entry_type_container">x</span> 6995 6996 <span class="entry_type_array"> 6997 n 6998 </span> 6999 <span class="entry_type_visibility"> [public as enumList]</span> 7000 7001 7002 <span class="entry_type_hwlevel">[legacy] </span> 7003 7004 7005 <div class="entry_type_notes">List of enums.<wbr/></div> 7006 7007 7008 </td> <!-- entry_type --> 7009 7010 <td class="entry_description"> 7011 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> 7012that are supported by this camera device.<wbr/></p> 7013 </td> 7014 7015 <td class="entry_units"> 7016 </td> 7017 7018 <td class="entry_range"> 7019 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p> 7020 </td> 7021 7022 <td class="entry_hal_version"> 7023 <p>3.<wbr/>2</p> 7024 </td> 7025 7026 <td class="entry_tags"> 7027 <ul class="entry_tags"> 7028 <li><a href="#tag_BC">BC</a></li> 7029 </ul> 7030 </td> 7031 7032 </tr> 7033 <tr class="entries_header"> 7034 <th class="th_details" colspan="6">Details</th> 7035 </tr> 7036 <tr class="entry_cont"> 7037 <td class="entry_details" colspan="6"> 7038 <p>OFF will always be listed.<wbr/></p> 7039 </td> 7040 </tr> 7041 7042 7043 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7044 <!-- end of entry --> 7045 7046 7047 <tr class="entry" id="static_android.control.awbAvailableModes"> 7048 <td class="entry_name 7049 " rowspan="3"> 7050 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 7051 </td> 7052 <td class="entry_type"> 7053 <span class="entry_type_name">byte</span> 7054 <span class="entry_type_container">x</span> 7055 7056 <span class="entry_type_array"> 7057 n 7058 </span> 7059 <span class="entry_type_visibility"> [public as enumList]</span> 7060 7061 7062 <span class="entry_type_hwlevel">[legacy] </span> 7063 7064 7065 <div class="entry_type_notes">List of enums</div> 7066 7067 7068 </td> <!-- entry_type --> 7069 7070 <td class="entry_description"> 7071 <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 7072camera device.<wbr/></p> 7073 </td> 7074 7075 <td class="entry_units"> 7076 </td> 7077 7078 <td class="entry_range"> 7079 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p> 7080 </td> 7081 7082 <td class="entry_hal_version"> 7083 <p>3.<wbr/>2</p> 7084 </td> 7085 7086 <td class="entry_tags"> 7087 <ul class="entry_tags"> 7088 <li><a href="#tag_BC">BC</a></li> 7089 </ul> 7090 </td> 7091 7092 </tr> 7093 <tr class="entries_header"> 7094 <th class="th_details" colspan="6">Details</th> 7095 </tr> 7096 <tr class="entry_cont"> 7097 <td class="entry_details" colspan="6"> 7098 <p>Not all the auto-white-balance modes may be supported by a 7099given camera device.<wbr/> This entry lists the valid modes for 7100<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 7101<p>All camera devices will support ON mode.<wbr/></p> 7102<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF 7103mode,<wbr/> which enables application control of white balance,<wbr/> by using 7104<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 7105mode camera devices.<wbr/></p> 7106 </td> 7107 </tr> 7108 7109 7110 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7111 <!-- end of entry --> 7112 7113 7114 <tr class="entry" id="static_android.control.maxRegions"> 7115 <td class="entry_name 7116 " rowspan="1"> 7117 android.<wbr/>control.<wbr/>max<wbr/>Regions 7118 </td> 7119 <td class="entry_type"> 7120 <span class="entry_type_name">int32</span> 7121 <span class="entry_type_container">x</span> 7122 7123 <span class="entry_type_array"> 7124 3 7125 </span> 7126 <span class="entry_type_visibility"> [ndk_public]</span> 7127 7128 7129 <span class="entry_type_hwlevel">[legacy] </span> 7130 7131 7132 7133 7134 </td> <!-- entry_type --> 7135 7136 <td class="entry_description"> 7137 <p>List of the maximum number of regions that can be used for metering in 7138auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 7139this corresponds to the maximum number of elements in 7140<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/> 7141and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 7142 </td> 7143 7144 <td class="entry_units"> 7145 </td> 7146 7147 <td class="entry_range"> 7148 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 7149this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 7150<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 7151 </td> 7152 7153 <td class="entry_hal_version"> 7154 <p>3.<wbr/>2</p> 7155 </td> 7156 7157 <td class="entry_tags"> 7158 <ul class="entry_tags"> 7159 <li><a href="#tag_BC">BC</a></li> 7160 </ul> 7161 </td> 7162 7163 </tr> 7164 7165 7166 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7167 <!-- end of entry --> 7168 7169 7170 <tr class="entry" id="static_android.control.maxRegionsAe"> 7171 <td class="entry_name 7172 " rowspan="5"> 7173 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae 7174 </td> 7175 <td class="entry_type"> 7176 <span class="entry_type_name">int32</span> 7177 7178 <span class="entry_type_visibility"> [java_public]</span> 7179 7180 <span class="entry_type_synthetic">[synthetic] </span> 7181 7182 <span class="entry_type_hwlevel">[legacy] </span> 7183 7184 7185 7186 7187 </td> <!-- entry_type --> 7188 7189 <td class="entry_description"> 7190 <p>The maximum number of metering regions that can be used by the auto-exposure (AE) 7191routine.<wbr/></p> 7192 </td> 7193 7194 <td class="entry_units"> 7195 </td> 7196 7197 <td class="entry_range"> 7198 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 7199value will be >= 1.<wbr/></p> 7200 </td> 7201 7202 <td class="entry_hal_version"> 7203 <p>3.<wbr/>2</p> 7204 </td> 7205 7206 <td class="entry_tags"> 7207 </td> 7208 7209 </tr> 7210 <tr class="entries_header"> 7211 <th class="th_details" colspan="6">Details</th> 7212 </tr> 7213 <tr class="entry_cont"> 7214 <td class="entry_details" colspan="6"> 7215 <p>This corresponds to the maximum allowed number of elements in 7216<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 7217 </td> 7218 </tr> 7219 7220 <tr class="entries_header"> 7221 <th class="th_details" colspan="6">HAL Implementation Details</th> 7222 </tr> 7223 <tr class="entry_cont"> 7224 <td class="entry_details" colspan="6"> 7225 <p>This entry is private to the framework.<wbr/> Fill in 7226maxRegions to have this entry be automatically populated.<wbr/></p> 7227 </td> 7228 </tr> 7229 7230 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7231 <!-- end of entry --> 7232 7233 7234 <tr class="entry" id="static_android.control.maxRegionsAwb"> 7235 <td class="entry_name 7236 " rowspan="5"> 7237 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb 7238 </td> 7239 <td class="entry_type"> 7240 <span class="entry_type_name">int32</span> 7241 7242 <span class="entry_type_visibility"> [java_public]</span> 7243 7244 <span class="entry_type_synthetic">[synthetic] </span> 7245 7246 <span class="entry_type_hwlevel">[legacy] </span> 7247 7248 7249 7250 7251 </td> <!-- entry_type --> 7252 7253 <td class="entry_description"> 7254 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) 7255routine.<wbr/></p> 7256 </td> 7257 7258 <td class="entry_units"> 7259 </td> 7260 7261 <td class="entry_range"> 7262 <p>Value will be >= 0.<wbr/></p> 7263 </td> 7264 7265 <td class="entry_hal_version"> 7266 <p>3.<wbr/>2</p> 7267 </td> 7268 7269 <td class="entry_tags"> 7270 </td> 7271 7272 </tr> 7273 <tr class="entries_header"> 7274 <th class="th_details" colspan="6">Details</th> 7275 </tr> 7276 <tr class="entry_cont"> 7277 <td class="entry_details" colspan="6"> 7278 <p>This corresponds to the maximum allowed number of elements in 7279<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 7280 </td> 7281 </tr> 7282 7283 <tr class="entries_header"> 7284 <th class="th_details" colspan="6">HAL Implementation Details</th> 7285 </tr> 7286 <tr class="entry_cont"> 7287 <td class="entry_details" colspan="6"> 7288 <p>This entry is private to the framework.<wbr/> Fill in 7289maxRegions to have this entry be automatically populated.<wbr/></p> 7290 </td> 7291 </tr> 7292 7293 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7294 <!-- end of entry --> 7295 7296 7297 <tr class="entry" id="static_android.control.maxRegionsAf"> 7298 <td class="entry_name 7299 " rowspan="5"> 7300 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af 7301 </td> 7302 <td class="entry_type"> 7303 <span class="entry_type_name">int32</span> 7304 7305 <span class="entry_type_visibility"> [java_public]</span> 7306 7307 <span class="entry_type_synthetic">[synthetic] </span> 7308 7309 <span class="entry_type_hwlevel">[legacy] </span> 7310 7311 7312 7313 7314 </td> <!-- entry_type --> 7315 7316 <td class="entry_description"> 7317 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> 7318 </td> 7319 7320 <td class="entry_units"> 7321 </td> 7322 7323 <td class="entry_range"> 7324 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 7325value will be >= 1.<wbr/></p> 7326 </td> 7327 7328 <td class="entry_hal_version"> 7329 <p>3.<wbr/>2</p> 7330 </td> 7331 7332 <td class="entry_tags"> 7333 </td> 7334 7335 </tr> 7336 <tr class="entries_header"> 7337 <th class="th_details" colspan="6">Details</th> 7338 </tr> 7339 <tr class="entry_cont"> 7340 <td class="entry_details" colspan="6"> 7341 <p>This corresponds to the maximum allowed number of elements in 7342<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 7343 </td> 7344 </tr> 7345 7346 <tr class="entries_header"> 7347 <th class="th_details" colspan="6">HAL Implementation Details</th> 7348 </tr> 7349 <tr class="entry_cont"> 7350 <td class="entry_details" colspan="6"> 7351 <p>This entry is private to the framework.<wbr/> Fill in 7352maxRegions to have this entry be automatically populated.<wbr/></p> 7353 </td> 7354 </tr> 7355 7356 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7357 <!-- end of entry --> 7358 7359 7360 <tr class="entry" id="static_android.control.sceneModeOverrides"> 7361 <td class="entry_name 7362 " rowspan="5"> 7363 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 7364 </td> 7365 <td class="entry_type"> 7366 <span class="entry_type_name">byte</span> 7367 <span class="entry_type_container">x</span> 7368 7369 <span class="entry_type_array"> 7370 3 x length(availableSceneModes) 7371 </span> 7372 <span class="entry_type_visibility"> [system]</span> 7373 7374 7375 <span class="entry_type_hwlevel">[limited] </span> 7376 7377 7378 7379 7380 </td> <!-- entry_type --> 7381 7382 <td class="entry_description"> 7383 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 7384settings to use with each available scene mode.<wbr/></p> 7385 </td> 7386 7387 <td class="entry_units"> 7388 </td> 7389 7390 <td class="entry_range"> 7391 <p>For each available scene mode,<wbr/> the list must contain three 7392entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 7393<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 7394by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 7395where aeMode has the lowest index position.<wbr/></p> 7396 </td> 7397 7398 <td class="entry_hal_version"> 7399 <p>3.<wbr/>2</p> 7400 </td> 7401 7402 <td class="entry_tags"> 7403 <ul class="entry_tags"> 7404 <li><a href="#tag_BC">BC</a></li> 7405 </ul> 7406 </td> 7407 7408 </tr> 7409 <tr class="entries_header"> 7410 <th class="th_details" colspan="6">Details</th> 7411 </tr> 7412 <tr class="entry_cont"> 7413 <td class="entry_details" colspan="6"> 7414 <p>When a scene mode is enabled,<wbr/> the camera device is expected 7415to 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/> 7416and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 7417that scene mode.<wbr/></p> 7418<p>The order of this list matches that of availableSceneModes,<wbr/> 7419with 3 entries for each mode.<wbr/> The overrides listed 7420for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/> 7421since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 7422<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 7423used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 7424is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and 7425FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p> 7426<p>For example,<wbr/> if availableSceneModes contains 7427<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 7428expects sceneModeOverrides to have 9 entries formatted like: 7429<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 7430ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 7431 </td> 7432 </tr> 7433 7434 <tr class="entries_header"> 7435 <th class="th_details" colspan="6">HAL Implementation Details</th> 7436 </tr> 7437 <tr class="entry_cont"> 7438 <td class="entry_details" colspan="6"> 7439 <p>To maintain backward compatibility,<wbr/> this list will be made available 7440in the static metadata of the camera service.<wbr/> The camera service will 7441use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 7442<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 7443mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p> 7444 </td> 7445 </tr> 7446 7447 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7448 <!-- end of entry --> 7449 7450 7451 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> 7452 <td class="entry_name 7453 " rowspan="5"> 7454 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations 7455 </td> 7456 <td class="entry_type"> 7457 <span class="entry_type_name">int32</span> 7458 <span class="entry_type_container">x</span> 7459 7460 <span class="entry_type_array"> 7461 5 x n 7462 </span> 7463 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 7464 7465 7466 <span class="entry_type_hwlevel">[limited] </span> 7467 7468 7469 7470 7471 </td> <!-- entry_type --> 7472 7473 <td class="entry_description"> 7474 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations 7475supported 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> 7476 </td> 7477 7478 <td class="entry_units"> 7479 </td> 7480 7481 <td class="entry_range"> 7482 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> 7483 </td> 7484 7485 <td class="entry_hal_version"> 7486 <p>3.<wbr/>2</p> 7487 </td> 7488 7489 <td class="entry_tags"> 7490 <ul class="entry_tags"> 7491 <li><a href="#tag_V1">V1</a></li> 7492 </ul> 7493 </td> 7494 7495 </tr> 7496 <tr class="entries_header"> 7497 <th class="th_details" colspan="6">Details</th> 7498 </tr> 7499 <tr class="entry_cont"> 7500 <td class="entry_details" colspan="6"> 7501 <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/> 7502this metadata will list the supported high speed video size,<wbr/> fps range and max batch size 7503configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes 7504reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> 7505for processed non-stalling formats.<wbr/></p> 7506<p>For the high speed video use case,<wbr/> the application must 7507select the video size and fps range from this metadata to configure the recording and 7508preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends 7509to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to 7510configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata 7511by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the 7512recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application 7513must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams 7514must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p> 7515<p>The min and max fps will be multiple times of 30fps.<wbr/></p> 7516<p>High speed video streaming extends significant performance pressure to camera hardware,<wbr/> 7517to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate 7518multiple frames together and send to camera device for processing where the request 7519controls are same for all the frames in this batch.<wbr/> Max batch size indicates 7520the max possible number of frames the camera device will group together for this high 7521speed stream configuration.<wbr/> This max batch size will be used to generate a high speed 7522recording request list by 7523<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/> 7524The max batch size for each configuration will satisfy below conditions:</p> 7525<ul> 7526<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/> 7527if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li> 7528<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but 7529the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch 7530size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li> 7531<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li> 7532</ul> 7533<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/> 7534in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p> 7535<p>This fps ranges in this configuration list can only be used to create requests 7536that are submitted to a high speed camera capture session created by 7537<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 7538The fps ranges reported in this metadata must not be used to setup capture requests for 7539normal capture session,<wbr/> or it will cause request error.<wbr/></p> 7540 </td> 7541 </tr> 7542 7543 <tr class="entries_header"> 7544 <th class="th_details" colspan="6">HAL Implementation Details</th> 7545 </tr> 7546 <tr class="entry_cont"> 7547 <td class="entry_details" colspan="6"> 7548 <p>All the sizes listed in this configuration will be a subset of the sizes reported by 7549<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> 7550Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum 7551of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> 7552<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps 7553sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application 7554usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused 7555stutter when starting recording as much as possible,<wbr/> the application may want to ensure 7556the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise 7557the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/> 7558For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise 7559[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to 7560do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start 7561recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps 7562values that are suitable for smooth preview streaming.<wbr/> 7563If the HAL sees different max_<wbr/>fps values that fall into different sensor modes in a 7564sequence of requests,<wbr/> the HAL must switch the sensor mode as quick as possible to minimize 7565the mode switch caused stutter.<wbr/></p> 7566<p>HAL can also support 60fps preview during high speed recording session by advertising 7567[60,<wbr/> max_<wbr/>fps] for preview and [max_<wbr/>fps,<wbr/> max_<wbr/>fps] for recording.<wbr/> However,<wbr/> HAL must not 7568advertise both 30fps preview and 60fps preview for the same recording frame rate.<wbr/></p> 7569<p>Starting from AIDL ICameraDevice V2,<wbr/> camera HAL must report the valid batch_<wbr/>size_<wbr/>max.<wbr/> The 7570field will actually be used to generate a high speed recording request list.<wbr/></p> 7571 </td> 7572 </tr> 7573 7574 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7575 <!-- end of entry --> 7576 7577 7578 <tr class="entry" id="static_android.control.aeLockAvailable"> 7579 <td class="entry_name 7580 " rowspan="3"> 7581 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available 7582 </td> 7583 <td class="entry_type"> 7584 <span class="entry_type_name entry_type_name_enum">byte</span> 7585 7586 <span class="entry_type_visibility"> [public as boolean]</span> 7587 7588 7589 <span class="entry_type_hwlevel">[legacy] </span> 7590 7591 7592 7593 <ul class="entry_type_enum"> 7594 <li> 7595 <span class="entry_type_enum_name">FALSE (v3.2)</span> 7596 </li> 7597 <li> 7598 <span class="entry_type_enum_name">TRUE (v3.2)</span> 7599 </li> 7600 </ul> 7601 7602 </td> <!-- entry_type --> 7603 7604 <td class="entry_description"> 7605 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p> 7606 </td> 7607 7608 <td class="entry_units"> 7609 </td> 7610 7611 <td class="entry_range"> 7612 </td> 7613 7614 <td class="entry_hal_version"> 7615 <p>3.<wbr/>2</p> 7616 </td> 7617 7618 <td class="entry_tags"> 7619 <ul class="entry_tags"> 7620 <li><a href="#tag_BC">BC</a></li> 7621 </ul> 7622 </td> 7623 7624 </tr> 7625 <tr class="entries_header"> 7626 <th class="th_details" colspan="6">Details</th> 7627 </tr> 7628 <tr class="entry_cont"> 7629 <td class="entry_details" colspan="6"> 7630 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always 7631list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 7632 </td> 7633 </tr> 7634 7635 7636 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7637 <!-- end of entry --> 7638 7639 7640 <tr class="entry" id="static_android.control.awbLockAvailable"> 7641 <td class="entry_name 7642 " rowspan="3"> 7643 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available 7644 </td> 7645 <td class="entry_type"> 7646 <span class="entry_type_name entry_type_name_enum">byte</span> 7647 7648 <span class="entry_type_visibility"> [public as boolean]</span> 7649 7650 7651 <span class="entry_type_hwlevel">[legacy] </span> 7652 7653 7654 7655 <ul class="entry_type_enum"> 7656 <li> 7657 <span class="entry_type_enum_name">FALSE (v3.2)</span> 7658 </li> 7659 <li> 7660 <span class="entry_type_enum_name">TRUE (v3.2)</span> 7661 </li> 7662 </ul> 7663 7664 </td> <!-- entry_type --> 7665 7666 <td class="entry_description"> 7667 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p> 7668 </td> 7669 7670 <td class="entry_units"> 7671 </td> 7672 7673 <td class="entry_range"> 7674 </td> 7675 7676 <td class="entry_hal_version"> 7677 <p>3.<wbr/>2</p> 7678 </td> 7679 7680 <td class="entry_tags"> 7681 <ul class="entry_tags"> 7682 <li><a href="#tag_BC">BC</a></li> 7683 </ul> 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>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will 7693always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 7694 </td> 7695 </tr> 7696 7697 7698 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7699 <!-- end of entry --> 7700 7701 7702 <tr class="entry" id="static_android.control.availableModes"> 7703 <td class="entry_name 7704 " rowspan="3"> 7705 android.<wbr/>control.<wbr/>available<wbr/>Modes 7706 </td> 7707 <td class="entry_type"> 7708 <span class="entry_type_name">byte</span> 7709 <span class="entry_type_container">x</span> 7710 7711 <span class="entry_type_array"> 7712 n 7713 </span> 7714 <span class="entry_type_visibility"> [public as enumList]</span> 7715 7716 7717 <span class="entry_type_hwlevel">[legacy] </span> 7718 7719 7720 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div> 7721 7722 7723 </td> <!-- entry_type --> 7724 7725 <td class="entry_description"> 7726 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera 7727device.<wbr/></p> 7728 </td> 7729 7730 <td class="entry_units"> 7731 </td> 7732 7733 <td class="entry_range"> 7734 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p> 7735 </td> 7736 7737 <td class="entry_hal_version"> 7738 <p>3.<wbr/>2</p> 7739 </td> 7740 7741 <td class="entry_tags"> 7742 </td> 7743 7744 </tr> 7745 <tr class="entries_header"> 7746 <th class="th_details" colspan="6">Details</th> 7747 </tr> 7748 <tr class="entry_cont"> 7749 <td class="entry_details" colspan="6"> 7750 <p>This list contains control modes that can be set for the camera device.<wbr/> 7751LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL 7752devices will always support OFF,<wbr/> AUTO modes.<wbr/></p> 7753 </td> 7754 </tr> 7755 7756 7757 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7758 <!-- end of entry --> 7759 7760 7761 <tr class="entry" id="static_android.control.postRawSensitivityBoostRange"> 7762 <td class="entry_name 7763 " rowspan="5"> 7764 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range 7765 </td> 7766 <td class="entry_type"> 7767 <span class="entry_type_name">int32</span> 7768 <span class="entry_type_container">x</span> 7769 7770 <span class="entry_type_array"> 7771 2 7772 </span> 7773 <span class="entry_type_visibility"> [public as rangeInt]</span> 7774 7775 7776 7777 7778 <div class="entry_type_notes">Range of supported post RAW sensitivity boosts</div> 7779 7780 7781 </td> <!-- entry_type --> 7782 7783 <td class="entry_description"> 7784 <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported 7785by this camera device.<wbr/></p> 7786 </td> 7787 7788 <td class="entry_units"> 7789 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 7790 </td> 7791 7792 <td class="entry_range"> 7793 </td> 7794 7795 <td class="entry_hal_version"> 7796 <p>3.<wbr/>2</p> 7797 </td> 7798 7799 <td class="entry_tags"> 7800 </td> 7801 7802 </tr> 7803 <tr class="entries_header"> 7804 <th class="th_details" colspan="6">Details</th> 7805 </tr> 7806 <tr class="entry_cont"> 7807 <td class="entry_details" colspan="6"> 7808 <p>Devices support post RAW sensitivity boost will advertise 7809<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controlling 7810post RAW sensitivity boost.<wbr/></p> 7811<p>This key will be <code>null</code> for devices that do not support any RAW format 7812outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 7813present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 7814list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p> 7815 </td> 7816 </tr> 7817 7818 <tr class="entries_header"> 7819 <th class="th_details" colspan="6">HAL Implementation Details</th> 7820 </tr> 7821 <tr class="entry_cont"> 7822 <td class="entry_details" colspan="6"> 7823 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera 7824framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output 7825formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports 7826any of RAW output formats.<wbr/></p> 7827 </td> 7828 </tr> 7829 7830 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7831 <!-- end of entry --> 7832 7833 7834 <tr class="entry" id="static_android.control.availableExtendedSceneModeMaxSizes"> 7835 <td class="entry_name 7836 " rowspan="5"> 7837 android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Max<wbr/>Sizes 7838 </td> 7839 <td class="entry_type"> 7840 <span class="entry_type_name">int32</span> 7841 <span class="entry_type_container">x</span> 7842 7843 <span class="entry_type_array"> 7844 3 x n 7845 </span> 7846 <span class="entry_type_visibility"> [ndk_public]</span> 7847 7848 7849 <span class="entry_type_hwlevel">[limited] </span> 7850 7851 7852 <div class="entry_type_notes">List of extended scene modes and the corresponding max streaming sizes.<wbr/></div> 7853 7854 7855 </td> <!-- entry_type --> 7856 7857 <td class="entry_description"> 7858 <p>The list of extended scene modes for <a href="#controls_android.control.extendedSceneMode">android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode</a> that are supported 7859by this camera device,<wbr/> and each extended scene mode's maximum streaming (non-stall) size 7860with effect.<wbr/></p> 7861 </td> 7862 7863 <td class="entry_units"> 7864 (mode,<wbr/> width,<wbr/> height) 7865 </td> 7866 7867 <td class="entry_range"> 7868 </td> 7869 7870 <td class="entry_hal_version"> 7871 <p>3.<wbr/>5</p> 7872 </td> 7873 7874 <td class="entry_tags"> 7875 </td> 7876 7877 </tr> 7878 <tr class="entries_header"> 7879 <th class="th_details" colspan="6">Details</th> 7880 </tr> 7881 <tr class="entry_cont"> 7882 <td class="entry_details" colspan="6"> 7883 <p>For DISABLED mode,<wbr/> the camera behaves normally with no extended scene mode enabled.<wbr/></p> 7884<p>For BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode,<wbr/> the maximum streaming dimension specifies the limit 7885under which bokeh is effective when capture intent is PREVIEW.<wbr/> Note that when capture 7886intent is PREVIEW,<wbr/> the bokeh effect may not be as high in quality compared to 7887STILL_<wbr/>CAPTURE intent in order to maintain reasonable frame rate.<wbr/> The maximum streaming 7888dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE resolutions in 7889availableStreamConfigurations,<wbr/> or (0,<wbr/> 0) if preview bokeh is not supported.<wbr/> If the 7890application configures a stream larger than the maximum streaming dimension,<wbr/> bokeh 7891effect may not be applied for this stream for PREVIEW intent.<wbr/></p> 7892<p>For BOKEH_<wbr/>CONTINUOUS mode,<wbr/> the maximum streaming dimension specifies the limit under 7893which bokeh is effective.<wbr/> This dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE 7894resolutions in availableStreamConfigurations,<wbr/> and if the sensor maximum resolution is 7895larger than or equal to 1080p,<wbr/> the maximum streaming dimension must be at least 1080p.<wbr/> 7896If the application configures a stream with larger dimension,<wbr/> the stream may not have 7897bokeh effect applied.<wbr/></p> 7898 </td> 7899 </tr> 7900 7901 <tr class="entries_header"> 7902 <th class="th_details" colspan="6">HAL Implementation Details</th> 7903 </tr> 7904 <tr class="entry_cont"> 7905 <td class="entry_details" colspan="6"> 7906 <p>For available extended scene modes,<wbr/> DISABLED will always be listed.<wbr/></p> 7907<p>HAL must support at list one non-OFF extended scene mode if extendedSceneMode control is 7908available on the camera device.<wbr/> For DISABLED mode,<wbr/> the maximum streaming resolution must 7909be set to (0,<wbr/> 0).<wbr/></p> 7910 </td> 7911 </tr> 7912 7913 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7914 <!-- end of entry --> 7915 7916 7917 <tr class="entry" id="static_android.control.availableExtendedSceneModeZoomRatioRanges"> 7918 <td class="entry_name 7919 " rowspan="3"> 7920 android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Zoom<wbr/>Ratio<wbr/>Ranges 7921 </td> 7922 <td class="entry_type"> 7923 <span class="entry_type_name">float</span> 7924 <span class="entry_type_container">x</span> 7925 7926 <span class="entry_type_array"> 7927 2 x n 7928 </span> 7929 <span class="entry_type_visibility"> [ndk_public]</span> 7930 7931 7932 <span class="entry_type_hwlevel">[limited] </span> 7933 7934 7935 <div class="entry_type_notes">Zoom ranges for all supported non-OFF extended scene modes.<wbr/></div> 7936 7937 7938 </td> <!-- entry_type --> 7939 7940 <td class="entry_description"> 7941 <p>The ranges of supported zoom ratio for non-DISABLED <a href="#controls_android.control.extendedSceneMode">android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode</a>.<wbr/></p> 7942 </td> 7943 7944 <td class="entry_units"> 7945 (minZoom,<wbr/> maxZoom) 7946 </td> 7947 7948 <td class="entry_range"> 7949 </td> 7950 7951 <td class="entry_hal_version"> 7952 <p>3.<wbr/>5</p> 7953 </td> 7954 7955 <td class="entry_tags"> 7956 </td> 7957 7958 </tr> 7959 <tr class="entries_header"> 7960 <th class="th_details" colspan="6">Details</th> 7961 </tr> 7962 <tr class="entry_cont"> 7963 <td class="entry_details" colspan="6"> 7964 <p>When extended scene mode is set,<wbr/> the camera device may have limited range of zoom ratios 7965compared to when extended scene mode is DISABLED.<wbr/> This tag lists the zoom ratio ranges 7966for all supported non-DISABLED extended scene modes,<wbr/> in the same order as in 7967android.<wbr/>control.<wbr/>available<wbr/>Extended.<wbr/></p> 7968<p>Range [1.<wbr/>0,<wbr/> 1.<wbr/>0] means that no zoom (optical or digital) is supported.<wbr/></p> 7969 </td> 7970 </tr> 7971 7972 7973 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7974 <!-- end of entry --> 7975 7976 7977 <tr class="entry" id="static_android.control.availableExtendedSceneModeCapabilities"> 7978 <td class="entry_name 7979 " rowspan="3"> 7980 android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Capabilities 7981 </td> 7982 <td class="entry_type"> 7983 <span class="entry_type_name">int32</span> 7984 <span class="entry_type_container">x</span> 7985 7986 <span class="entry_type_array"> 7987 n 7988 </span> 7989 <span class="entry_type_visibility"> [public as capability]</span> 7990 7991 <span class="entry_type_synthetic">[synthetic] </span> 7992 7993 7994 7995 7996 7997 </td> <!-- entry_type --> 7998 7999 <td class="entry_description"> 8000 <p>The list of extended scene modes for <a href="#controls_android.control.extendedSceneMode">android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode</a> that 8001are supported by this camera device,<wbr/> and each extended scene mode's capabilities such 8002as maximum streaming size,<wbr/> and supported zoom ratio ranges.<wbr/></p> 8003 </td> 8004 8005 <td class="entry_units"> 8006 </td> 8007 8008 <td class="entry_range"> 8009 </td> 8010 8011 <td class="entry_hal_version"> 8012 <p>3.<wbr/>5</p> 8013 </td> 8014 8015 <td class="entry_tags"> 8016 </td> 8017 8018 </tr> 8019 <tr class="entries_header"> 8020 <th class="th_details" colspan="6">Details</th> 8021 </tr> 8022 <tr class="entry_cont"> 8023 <td class="entry_details" colspan="6"> 8024 <p>For DISABLED mode,<wbr/> the camera behaves normally with no extended scene mode enabled.<wbr/></p> 8025<p>For BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode,<wbr/> the maximum streaming dimension specifies the limit 8026under which bokeh is effective when capture intent is PREVIEW.<wbr/> Note that when capture 8027intent is PREVIEW,<wbr/> the bokeh effect may not be as high quality compared to STILL_<wbr/>CAPTURE 8028intent in order to maintain reasonable frame rate.<wbr/> The maximum streaming dimension must 8029be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE resolutions in availableStreamConfigurations,<wbr/> or 8030(0,<wbr/> 0) if preview bokeh is not supported.<wbr/> If the application configures a stream 8031larger than the maximum streaming dimension,<wbr/> bokeh effect may not be applied for this 8032stream for PREVIEW intent.<wbr/></p> 8033<p>For BOKEH_<wbr/>CONTINUOUS mode,<wbr/> the maximum streaming dimension specifies the limit under 8034which bokeh is effective.<wbr/> This dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE 8035resolutions in availableStreamConfigurations,<wbr/> and if the sensor maximum resolution is 8036larger than or equal to 1080p,<wbr/> the maximum streaming dimension must be at least 1080p.<wbr/> 8037If the application configures a stream with larger dimension,<wbr/> the stream may not have 8038bokeh effect applied.<wbr/></p> 8039<p>When extended scene mode is set,<wbr/> the camera device may have limited range of zoom ratios 8040compared to when the mode is DISABLED.<wbr/> availableExtendedSceneModeCapabilities lists the 8041zoom ranges for all supported extended modes.<wbr/> A range of (1.<wbr/>0,<wbr/> 1.<wbr/>0) means that no zoom 8042(optical or digital) is supported.<wbr/></p> 8043 </td> 8044 </tr> 8045 8046 8047 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8048 <!-- end of entry --> 8049 8050 8051 <tr class="entry" id="static_android.control.zoomRatioRange"> 8052 <td class="entry_name 8053 " rowspan="5"> 8054 android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range 8055 </td> 8056 <td class="entry_type"> 8057 <span class="entry_type_name">float</span> 8058 <span class="entry_type_container">x</span> 8059 8060 <span class="entry_type_array"> 8061 2 8062 </span> 8063 <span class="entry_type_visibility"> [public as rangeFloat]</span> 8064 8065 8066 <span class="entry_type_hwlevel">[limited] </span> 8067 8068 8069 <div class="entry_type_notes">The range of zoom ratios that this camera device supports.<wbr/></div> 8070 8071 8072 </td> <!-- entry_type --> 8073 8074 <td class="entry_description"> 8075 <p>Minimum and maximum zoom ratios supported by this camera device.<wbr/></p> 8076 </td> 8077 8078 <td class="entry_units"> 8079 A pair of zoom ratio in floating-points: (minZoom,<wbr/> maxZoom) 8080 </td> 8081 8082 <td class="entry_range"> 8083 <p>maxZoom >= 1.<wbr/>0 >= minZoom</p> 8084 </td> 8085 8086 <td class="entry_hal_version"> 8087 <p>3.<wbr/>5</p> 8088 </td> 8089 8090 <td class="entry_tags"> 8091 </td> 8092 8093 </tr> 8094 <tr class="entries_header"> 8095 <th class="th_details" colspan="6">Details</th> 8096 </tr> 8097 <tr class="entry_cont"> 8098 <td class="entry_details" colspan="6"> 8099 <p>If the camera device supports zoom-out from 1x zoom,<wbr/> minZoom will be less than 1.<wbr/>0,<wbr/> and 8100setting <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to values less than 1.<wbr/>0 increases the camera's field 8101of view.<wbr/></p> 8102 </td> 8103 </tr> 8104 8105 <tr class="entries_header"> 8106 <th class="th_details" colspan="6">HAL Implementation Details</th> 8107 </tr> 8108 <tr class="entry_cont"> 8109 <td class="entry_details" colspan="6"> 8110 <p>When the key is reported,<wbr/> the camera device's <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> 8111must be less than or equal to maxZoom.<wbr/> The camera framework makes sure to always 8112control zoom via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> The <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> tag is only 8113used to do horizontal or vertical cropping (but not both) to achieve aspect ratio 8114different than the camera sensor's native aspect ratio.<wbr/></p> 8115<p>For a logical multi-camera device,<wbr/> this key must either be reported for both the logical 8116camera device and all its physical sub-cameras,<wbr/> or none of them.<wbr/></p> 8117<p>When the key is not reported,<wbr/> camera framework derives the application-facing 8118zoomRatioRange to be (1,<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>).<wbr/></p> 8119 </td> 8120 </tr> 8121 8122 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8123 <!-- end of entry --> 8124 8125 8126 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution"> 8127 <td class="entry_name 8128 " rowspan="5"> 8129 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution 8130 </td> 8131 <td class="entry_type"> 8132 <span class="entry_type_name">int32</span> 8133 <span class="entry_type_container">x</span> 8134 8135 <span class="entry_type_array"> 8136 5 x n 8137 </span> 8138 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 8139 8140 8141 8142 8143 8144 8145 </td> <!-- entry_type --> 8146 8147 <td class="entry_description"> 8148 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations 8149supported by the camera device,<wbr/> in the format of 8150(width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max),<wbr/> 8151when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 8152<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 8153 </td> 8154 8155 <td class="entry_units"> 8156 </td> 8157 8158 <td class="entry_range"> 8159 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> 8160 </td> 8161 8162 <td class="entry_hal_version"> 8163 <p>3.<wbr/>6</p> 8164 </td> 8165 8166 <td class="entry_tags"> 8167 <ul class="entry_tags"> 8168 <li><a href="#tag_V1">V1</a></li> 8169 </ul> 8170 </td> 8171 8172 </tr> 8173 <tr class="entries_header"> 8174 <th class="th_details" colspan="6">Details</th> 8175 </tr> 8176 <tr class="entry_cont"> 8177 <td class="entry_details" colspan="6"> 8178 <p>Analogous to <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>,<wbr/> for configurations 8179which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 8180<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 8181 </td> 8182 </tr> 8183 8184 <tr class="entries_header"> 8185 <th class="th_details" colspan="6">HAL Implementation Details</th> 8186 </tr> 8187 <tr class="entry_cont"> 8188 <td class="entry_details" colspan="6"> 8189 <p>Refer to hal details for <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></p> 8190 </td> 8191 </tr> 8192 8193 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8194 <!-- end of entry --> 8195 8196 8197 <tr class="entry" id="static_android.control.availableSettingsOverrides"> 8198 <td class="entry_name 8199 " rowspan="3"> 8200 android.<wbr/>control.<wbr/>available<wbr/>Settings<wbr/>Overrides 8201 </td> 8202 <td class="entry_type"> 8203 <span class="entry_type_name">int32</span> 8204 <span class="entry_type_container">x</span> 8205 8206 <span class="entry_type_array"> 8207 n 8208 </span> 8209 <span class="entry_type_visibility"> [public as enumList]</span> 8210 8211 8212 8213 8214 <div class="entry_type_notes">list of enums</div> 8215 8216 8217 </td> <!-- entry_type --> 8218 8219 <td class="entry_description"> 8220 <p>List of available settings overrides supported by the camera device that can 8221be used to speed up certain controls.<wbr/></p> 8222 </td> 8223 8224 <td class="entry_units"> 8225 </td> 8226 8227 <td class="entry_range"> 8228 <p>Any value listed in <a href="#controls_android.control.settingsOverride">android.<wbr/>control.<wbr/>settings<wbr/>Override</a></p> 8229 </td> 8230 8231 <td class="entry_hal_version"> 8232 <p>3.<wbr/>9</p> 8233 </td> 8234 8235 <td class="entry_tags"> 8236 </td> 8237 8238 </tr> 8239 <tr class="entries_header"> 8240 <th class="th_details" colspan="6">Details</th> 8241 </tr> 8242 <tr class="entry_cont"> 8243 <td class="entry_details" colspan="6"> 8244 <p>When not all controls within a CaptureRequest are required to take effect 8245at the same time on the outputs,<wbr/> the camera device may apply certain request keys sooner 8246to improve latency.<wbr/> This list contains such supported settings overrides.<wbr/> Each settings 8247override corresponds to a set of CaptureRequest keys that can be sped up when applying.<wbr/></p> 8248<p>A supported settings override can be passed in via 8249<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html#CONTROL_SETTINGS_OVERRIDE">Capture<wbr/>Request#CONTROL_<wbr/>SETTINGS_<wbr/>OVERRIDE</a>,<wbr/> and the 8250CaptureRequest keys corresponding to the override are applied as soon as possible,<wbr/> not 8251bound by per-frame synchronization.<wbr/> See <a href="#controls_android.control.settingsOverride">android.<wbr/>control.<wbr/>settings<wbr/>Override</a> for the 8252CaptureRequest keys for each override.<wbr/></p> 8253<p>OFF is always included in this list.<wbr/></p> 8254 </td> 8255 </tr> 8256 8257 8258 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8259 <!-- end of entry --> 8260 8261 8262 <tr class="entry" id="static_android.control.autoframingAvailable"> 8263 <td class="entry_name 8264 " rowspan="3"> 8265 android.<wbr/>control.<wbr/>autoframing<wbr/>Available 8266 </td> 8267 <td class="entry_type"> 8268 <span class="entry_type_name entry_type_name_enum">byte</span> 8269 8270 <span class="entry_type_visibility"> [public as boolean]</span> 8271 8272 8273 <span class="entry_type_hwlevel">[limited] </span> 8274 8275 8276 8277 <ul class="entry_type_enum"> 8278 <li> 8279 <span class="entry_type_enum_name">FALSE (v3.9)</span> 8280 </li> 8281 <li> 8282 <span class="entry_type_enum_name">TRUE (v3.9)</span> 8283 </li> 8284 </ul> 8285 8286 </td> <!-- entry_type --> 8287 8288 <td class="entry_description"> 8289 <p>Whether the camera device supports <a href="#controls_android.control.autoframing">android.<wbr/>control.<wbr/>autoframing</a>.<wbr/></p> 8290 </td> 8291 8292 <td class="entry_units"> 8293 </td> 8294 8295 <td class="entry_range"> 8296 </td> 8297 8298 <td class="entry_hal_version"> 8299 <p>3.<wbr/>9</p> 8300 </td> 8301 8302 <td class="entry_tags"> 8303 </td> 8304 8305 </tr> 8306 <tr class="entries_header"> 8307 <th class="th_details" colspan="6">Details</th> 8308 </tr> 8309 <tr class="entry_cont"> 8310 <td class="entry_details" colspan="6"> 8311 <p>Will be <code>false</code> if auto-framing is not available.<wbr/></p> 8312 </td> 8313 </tr> 8314 8315 8316 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8317 <!-- end of entry --> 8318 8319 8320 <tr class="entry" id="static_android.control.lowLightBoostInfoLuminanceRange"> 8321 <td class="entry_name 8322 " rowspan="1"> 8323 android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range 8324 </td> 8325 <td class="entry_type"> 8326 <span class="entry_type_name">float</span> 8327 <span class="entry_type_container">x</span> 8328 8329 <span class="entry_type_array"> 8330 2 8331 </span> 8332 <span class="entry_type_visibility"> [public as rangeFloat]</span> 8333 8334 8335 8336 8337 8338 8339 </td> <!-- entry_type --> 8340 8341 <td class="entry_description"> 8342 <p>The operating luminance range of low light boost measured in lux (lx).<wbr/></p> 8343 </td> 8344 8345 <td class="entry_units"> 8346 </td> 8347 8348 <td class="entry_range"> 8349 <p>The lower bound indicates the lowest scene luminance value the AE mode 8350'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY' can operate within.<wbr/> Scenes of lower luminance 8351than this may receive less brightening,<wbr/> increased noise,<wbr/> or artifacts.<wbr/></p> 8352<p>The upper bound indicates the luminance threshold at the point when the mode is enabled.<wbr/> 8353For example,<wbr/> 'Range[0.<wbr/>3,<wbr/> 30.<wbr/>0]' defines 0.<wbr/>3 lux being the lowest scene luminance the 8354mode can reliably support.<wbr/> 30.<wbr/>0 lux represents the threshold when this mode is 8355activated.<wbr/> Scenes measured at less than or equal to 30 lux will activate low light 8356boost.<wbr/></p> 8357<p>If this key is defined,<wbr/> then the AE mode 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY' will 8358also be present.<wbr/></p> 8359 </td> 8360 8361 <td class="entry_hal_version"> 8362 <p>3.<wbr/>10</p> 8363 </td> 8364 8365 <td class="entry_tags"> 8366 </td> 8367 8368 </tr> 8369 8370 8371 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8372 <!-- end of entry --> 8373 8374 8375 <tr class="entry" id="static_android.control.aeAvailablePriorityModes"> 8376 <td class="entry_name 8377 " rowspan="3"> 8378 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Priority<wbr/>Modes 8379 </td> 8380 <td class="entry_type"> 8381 <span class="entry_type_name">byte</span> 8382 <span class="entry_type_container">x</span> 8383 8384 <span class="entry_type_array"> 8385 n 8386 </span> 8387 <span class="entry_type_visibility"> [public as enumList]</span> 8388 8389 8390 8391 8392 <div class="entry_type_notes">list of enums</div> 8393 8394 8395 </td> <!-- entry_type --> 8396 8397 <td class="entry_description"> 8398 <p>List of auto-exposure priority modes for <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> 8399that are supported by this camera device.<wbr/></p> 8400 </td> 8401 8402 <td class="entry_units"> 8403 </td> 8404 8405 <td class="entry_range"> 8406 <p>Any value listed in <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a></p> 8407 </td> 8408 8409 <td class="entry_hal_version"> 8410 <p>3.<wbr/>11</p> 8411 </td> 8412 8413 <td class="entry_tags"> 8414 </td> 8415 8416 </tr> 8417 <tr class="entries_header"> 8418 <th class="th_details" colspan="6">Details</th> 8419 </tr> 8420 <tr class="entry_cont"> 8421 <td class="entry_details" colspan="6"> 8422 <p>This entry lists the valid modes for 8423<a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> for this camera device.<wbr/> 8424If no AE priority modes are available for a device,<wbr/> this will only list OFF.<wbr/></p> 8425 </td> 8426 </tr> 8427 8428 8429 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8430 <!-- end of entry --> 8431 8432 8433 8434 <!-- end of kind --> 8435 </tbody> 8436 <tr><td colspan="7" class="kind">dynamic</td></tr> 8437 8438 <thead class="entries_header"> 8439 <tr> 8440 <th class="th_name">Property Name</th> 8441 <th class="th_type">Type</th> 8442 <th class="th_description">Description</th> 8443 <th class="th_units">Units</th> 8444 <th class="th_range">Range</th> 8445 <th class="th_hal_version">Initial HIDL HAL version</th> 8446 <th class="th_tags">Tags</th> 8447 </tr> 8448 </thead> 8449 8450 <tbody> 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 8462 <td class="entry_name 8463 entry_name_deprecated 8464 " rowspan="3"> 8465 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 8466 </td> 8467 <td class="entry_type"> 8468 <span class="entry_type_name">int32</span> 8469 8470 <span class="entry_type_visibility"> [system]</span> 8471 8472 8473 8474 <span class="entry_type_deprecated">[deprecated] </span> 8475 8476 8477 8478 </td> <!-- entry_type --> 8479 8480 <td class="entry_description"> 8481 <p>The ID sent with the latest 8482CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 8483 </td> 8484 8485 <td class="entry_units"> 8486 </td> 8487 8488 <td class="entry_range"> 8489 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 8490 </td> 8491 8492 <td class="entry_hal_version"> 8493 <p>3.<wbr/>2</p> 8494 </td> 8495 8496 <td class="entry_tags"> 8497 </td> 8498 8499 </tr> 8500 <tr class="entries_header"> 8501 <th class="th_details" colspan="6">Details</th> 8502 </tr> 8503 <tr class="entry_cont"> 8504 <td class="entry_details" colspan="6"> 8505 <p>Must be 0 if no 8506CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 8507by HAL.<wbr/> Always updated even if AE algorithm ignores the 8508trigger</p> 8509 </td> 8510 </tr> 8511 8512 8513 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8514 <!-- end of entry --> 8515 8516 8517 <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> 8518 <td class="entry_name 8519 " rowspan="5"> 8520 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 8521 </td> 8522 <td class="entry_type"> 8523 <span class="entry_type_name entry_type_name_enum">byte</span> 8524 8525 <span class="entry_type_visibility"> [public]</span> 8526 8527 8528 <span class="entry_type_hwlevel">[legacy] </span> 8529 8530 8531 8532 <ul class="entry_type_enum"> 8533 <li> 8534 <span class="entry_type_enum_name">OFF (v3.2)</span> 8535 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 8536avoid banding problems.<wbr/></p></span> 8537 </li> 8538 <li> 8539 <span class="entry_type_enum_name">50HZ (v3.2)</span> 8540 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 8541avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 8542 </li> 8543 <li> 8544 <span class="entry_type_enum_name">60HZ (v3.2)</span> 8545 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 8546avoid banding problems with 60Hz illumination 8547sources.<wbr/></p></span> 8548 </li> 8549 <li> 8550 <span class="entry_type_enum_name">AUTO (v3.2)</span> 8551 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 8552antibanding routine to the current illumination 8553condition.<wbr/> This is the default mode if AUTO is 8554available on given camera device.<wbr/></p></span> 8555 </li> 8556 </ul> 8557 8558 </td> <!-- entry_type --> 8559 8560 <td class="entry_description"> 8561 <p>The desired setting for the camera device's auto-exposure 8562algorithm's antibanding compensation.<wbr/></p> 8563 </td> 8564 8565 <td class="entry_units"> 8566 </td> 8567 8568 <td class="entry_range"> 8569 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 8570 </td> 8571 8572 <td class="entry_hal_version"> 8573 <p>3.<wbr/>2</p> 8574 </td> 8575 8576 <td class="entry_tags"> 8577 <ul class="entry_tags"> 8578 <li><a href="#tag_BC">BC</a></li> 8579 </ul> 8580 </td> 8581 8582 </tr> 8583 <tr class="entries_header"> 8584 <th class="th_details" colspan="6">Details</th> 8585 </tr> 8586 <tr class="entry_cont"> 8587 <td class="entry_details" colspan="6"> 8588 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 8589lights,<wbr/> flicker at the rate of the power supply frequency 8590(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 8591typically not noticeable to a person,<wbr/> it can be visible to 8592a camera device.<wbr/> If a camera sets its exposure time to the 8593wrong value,<wbr/> the flicker may become visible in the 8594viewfinder as flicker or in a final captured image,<wbr/> as a 8595set of variable-brightness bands across the image.<wbr/></p> 8596<p>Therefore,<wbr/> the auto-exposure routines of camera devices 8597include antibanding routines that ensure that the chosen 8598exposure value will not cause such banding.<wbr/> The choice of 8599exposure time depends on the rate of flicker,<wbr/> which the 8600camera device can detect automatically,<wbr/> or the expected 8601rate can be selected by the application using this 8602control.<wbr/></p> 8603<p>A given camera device may not support all of the possible 8604options for the antibanding mode.<wbr/> The 8605<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 8606the available modes for a given camera device.<wbr/></p> 8607<p>AUTO mode is the default if it is available on given 8608camera device.<wbr/> When AUTO mode is not available,<wbr/> the 8609default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 8610and 60HZ will be available.<wbr/></p> 8611<p>If manual exposure control is enabled (by setting 8612<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/> 8613then this setting has no effect,<wbr/> and the application must 8614ensure it selects exposure times that do not cause banding 8615issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 8616the application in this.<wbr/></p> 8617 </td> 8618 </tr> 8619 8620 <tr class="entries_header"> 8621 <th class="th_details" colspan="6">HAL Implementation Details</th> 8622 </tr> 8623 <tr class="entry_cont"> 8624 <td class="entry_details" colspan="6"> 8625 <p>For all capture request templates,<wbr/> this field must be set 8626to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 8627the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 862860HZ must be available.<wbr/></p> 8629<p>If manual exposure control is enabled (by setting 8630<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/> 8631then the exposure values provided by the application must not be 8632adjusted for antibanding.<wbr/></p> 8633 </td> 8634 </tr> 8635 8636 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8637 <!-- end of entry --> 8638 8639 8640 <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> 8641 <td class="entry_name 8642 " rowspan="3"> 8643 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 8644 </td> 8645 <td class="entry_type"> 8646 <span class="entry_type_name">int32</span> 8647 8648 <span class="entry_type_visibility"> [public]</span> 8649 8650 8651 <span class="entry_type_hwlevel">[legacy] </span> 8652 8653 8654 8655 8656 </td> <!-- entry_type --> 8657 8658 <td class="entry_description"> 8659 <p>Adjustment to auto-exposure (AE) target image 8660brightness.<wbr/></p> 8661 </td> 8662 8663 <td class="entry_units"> 8664 Compensation steps 8665 </td> 8666 8667 <td class="entry_range"> 8668 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 8669 </td> 8670 8671 <td class="entry_hal_version"> 8672 <p>3.<wbr/>2</p> 8673 </td> 8674 8675 <td class="entry_tags"> 8676 <ul class="entry_tags"> 8677 <li><a href="#tag_BC">BC</a></li> 8678 </ul> 8679 </td> 8680 8681 </tr> 8682 <tr class="entries_header"> 8683 <th class="th_details" colspan="6">Details</th> 8684 </tr> 8685 <tr class="entry_cont"> 8686 <td class="entry_details" colspan="6"> 8687 <p>The adjustment is measured as a count of steps,<wbr/> with the 8688step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 8689allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 8690<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 8691will mean an exposure compensation of +2 EV; -3 will mean an 8692exposure compensation of -1 EV.<wbr/> One EV represents a doubling 8693of image brightness.<wbr/> Note that this control will only be 8694effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 8695will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 8696<p>In the event of exposure compensation value being changed,<wbr/> camera device 8697may take several frames to reach the newly requested exposure target.<wbr/> 8698During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 8699state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 8700change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 8701FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 8702 </td> 8703 </tr> 8704 8705 8706 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8707 <!-- end of entry --> 8708 8709 8710 <tr class="entry" id="dynamic_android.control.aeLock"> 8711 <td class="entry_name 8712 " rowspan="3"> 8713 android.<wbr/>control.<wbr/>ae<wbr/>Lock 8714 </td> 8715 <td class="entry_type"> 8716 <span class="entry_type_name entry_type_name_enum">byte</span> 8717 8718 <span class="entry_type_visibility"> [public as boolean]</span> 8719 8720 8721 <span class="entry_type_hwlevel">[legacy] </span> 8722 8723 8724 8725 <ul class="entry_type_enum"> 8726 <li> 8727 <span class="entry_type_enum_name">OFF (v3.2)</span> 8728 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 8729is free to update its parameters.<wbr/></p></span> 8730 </li> 8731 <li> 8732 <span class="entry_type_enum_name">ON (v3.2)</span> 8733 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 8734must not update the exposure and sensitivity parameters 8735while the lock is active.<wbr/></p> 8736<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 8737will still take effect while auto-exposure is locked.<wbr/></p> 8738<p>Some rare LEGACY devices may not support 8739this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 8740 </li> 8741 </ul> 8742 8743 </td> <!-- entry_type --> 8744 8745 <td class="entry_description"> 8746 <p>Whether auto-exposure (AE) is currently locked to its latest 8747calculated values.<wbr/></p> 8748 </td> 8749 8750 <td class="entry_units"> 8751 </td> 8752 8753 <td class="entry_range"> 8754 </td> 8755 8756 <td class="entry_hal_version"> 8757 <p>3.<wbr/>2</p> 8758 </td> 8759 8760 <td class="entry_tags"> 8761 <ul class="entry_tags"> 8762 <li><a href="#tag_BC">BC</a></li> 8763 </ul> 8764 </td> 8765 8766 </tr> 8767 <tr class="entries_header"> 8768 <th class="th_details" colspan="6">Details</th> 8769 </tr> 8770 <tr class="entry_cont"> 8771 <td class="entry_details" colspan="6"> 8772 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 8773and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 8774<p>Note that even when AE is locked,<wbr/> the flash may be fired if 8775the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 8776ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 8777<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 8778is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 8779<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 8780when AE is already locked,<wbr/> the camera device will not change the exposure time 8781(<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>) 8782parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 8783is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 8784<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/> 8785Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 8786<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 8787the AE if AE is locked by the camera device internally during precapture metering 8788sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 8789ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 8790will never succeed in a sequence of preview requests where AE lock is always set 8791to <code>false</code>.<wbr/></p> 8792<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 8793get locked do not necessarily correspond to the settings that were present in the 8794latest capture result received from the camera device,<wbr/> since additional captures 8795and AE updates may have occurred even before the result was sent out.<wbr/> If an 8796application is switching between automatic and manual control and wishes to eliminate 8797any flicker during the switch,<wbr/> the following procedure is recommended:</p> 8798<ol> 8799<li>Starting in auto-AE mode:</li> 8800<li>Lock AE</li> 8801<li>Wait for the first result to be output that has the AE locked</li> 8802<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 8803<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 8804</ol> 8805<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> 8806 </td> 8807 </tr> 8808 8809 8810 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8811 <!-- end of entry --> 8812 8813 8814 <tr class="entry" id="dynamic_android.control.aeMode"> 8815 <td class="entry_name 8816 " rowspan="3"> 8817 android.<wbr/>control.<wbr/>ae<wbr/>Mode 8818 </td> 8819 <td class="entry_type"> 8820 <span class="entry_type_name entry_type_name_enum">byte</span> 8821 8822 <span class="entry_type_visibility"> [public]</span> 8823 8824 8825 <span class="entry_type_hwlevel">[legacy] </span> 8826 8827 8828 8829 <ul class="entry_type_enum"> 8830 <li> 8831 <span class="entry_type_enum_name">OFF (v3.2)</span> 8832 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 8833<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 8834<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 8835<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 8836device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 8837a flash unit for this camera device.<wbr/></p> 8838<p>Note that auto-white balance (AWB) and auto-focus (AF) 8839behavior is device dependent when AE is in OFF mode.<wbr/> 8840To have consistent behavior across different devices,<wbr/> 8841it is recommended to either set AWB and AF to OFF mode 8842or lock AWB and AF before setting AE to OFF.<wbr/> 8843See <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/> 8844<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> 8845for more details.<wbr/></p> 8846<p>LEGACY devices do not support the OFF mode and will 8847override attempts to use this value to ON.<wbr/></p></span> 8848 </li> 8849 <li> 8850 <span class="entry_type_enum_name">ON (v3.2)</span> 8851 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 8852with no flash control.<wbr/></p> 8853<p>The application's values for 8854<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 8855<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 8856<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 8857application has control over the various 8858android.<wbr/>flash.<wbr/>* fields.<wbr/></p> 8859<p>If the device supports manual flash strength control,<wbr/> i.<wbr/>e.,<wbr/> 8860if <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and 8861<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> then 8862the auto-exposure (AE) precapture metering sequence should be 8863triggered for the configured flash mode and strength to avoid 8864the image being incorrectly exposed at different 8865<a href="#controls_android.flash.strengthLevel">android.<wbr/>flash.<wbr/>strength<wbr/>Level</a>.<wbr/></p></span> 8866 </li> 8867 <li> 8868 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span> 8869 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 8870the camera's flash unit,<wbr/> firing it in low-light 8871conditions.<wbr/></p> 8872<p>The flash may be fired during a precapture sequence 8873(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 8874may be fired for captures for which the 8875<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 8876STILL_<wbr/>CAPTURE</p></span> 8877 </li> 8878 <li> 8879 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span> 8880 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 8881the camera's flash unit,<wbr/> always firing it for still 8882captures.<wbr/></p> 8883<p>The flash may be fired during a precapture sequence 8884(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 8885will always be fired for captures for which the 8886<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 8887STILL_<wbr/>CAPTURE</p></span> 8888 </li> 8889 <li> 8890 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span> 8891 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 8892reduction.<wbr/></p> 8893<p>If deemed necessary by the camera device,<wbr/> a red eye 8894reduction flash will fire during the precapture 8895sequence.<wbr/></p></span> 8896 </li> 8897 <li> 8898 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span> 8899 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p> 8900<p>It informs the camera device that an external flash has been turned on,<wbr/> and that 8901metering (and continuous focus if active) should be quickly recalculated to account 8902for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p> 8903<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the 8904other available AE modes.<wbr/></p> 8905<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 8906be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without 8907flash.<wbr/></p></span> 8908 </li> 8909 <li> 8910 <span class="entry_type_enum_name">ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY (v3.10)</span> 8911 <span class="entry_type_enum_optional">[optional]</span> 8912 <span class="entry_type_enum_notes"><p>Like 'ON' but applies additional brightness boost in low light scenes.<wbr/></p> 8913<p>When the scene lighting conditions are within the range defined by 8914<a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a> this mode will apply additional 8915brightness boost.<wbr/></p> 8916<p>This mode will automatically adjust the intensity of low light boost applied 8917according to the scene lighting conditions.<wbr/> A darker scene will receive more boost 8918while a brighter scene will receive less boost.<wbr/></p> 8919<p>This mode can ignore the set target frame rate to allow more light to be captured 8920which can result in choppier motion.<wbr/> The frame rate can extend to lower than the 8921<a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> but will not go below 10 FPS.<wbr/> This mode 8922can also increase the sensor sensitivity gain which can result in increased luma 8923and chroma noise.<wbr/> The sensor sensitivity gain can extend to higher values beyond 8924<a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>.<wbr/> This mode may also apply additional 8925processing to recover details in dark and bright areas of the image,<wbr/>and noise 8926reduction at high sensitivity gain settings to manage the trade-off between light 8927sensitivity and capture noise.<wbr/></p> 8928<p>This mode is restricted to two output surfaces.<wbr/> One output surface type can either 8929be SurfaceView or TextureView.<wbr/> Another output surface type can either be MediaCodec 8930or MediaRecorder.<wbr/> This mode cannot be used with a target FPS range higher than 30 8931FPS.<wbr/></p> 8932<p>If the session configuration is not supported,<wbr/> the AE mode reported in the 8933CaptureResult will be 'ON' instead of 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY'.<wbr/></p> 8934<p>When this AE mode is enabled,<wbr/> the CaptureResult field 8935<a href="#dynamic_android.control.lowLightBoostState">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State</a> will indicate when low light boost is 'ACTIVE' 8936or 'INACTIVE'.<wbr/> By default <a href="#dynamic_android.control.lowLightBoostState">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State</a> will be 'INACTIVE'.<wbr/></p> 8937<p>The low light boost is 'ACTIVE' once the scene lighting condition is less than the 8938upper bound lux value defined by <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a>.<wbr/> 8939This mode will be 'INACTIVE' once the scene lighting condition is greater than the 8940upper bound lux value defined by <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a>.<wbr/></p></span> 8941 </li> 8942 </ul> 8943 8944 </td> <!-- entry_type --> 8945 8946 <td class="entry_description"> 8947 <p>The desired mode for the camera device's 8948auto-exposure routine.<wbr/></p> 8949 </td> 8950 8951 <td class="entry_units"> 8952 </td> 8953 8954 <td class="entry_range"> 8955 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 8956 </td> 8957 8958 <td class="entry_hal_version"> 8959 <p>3.<wbr/>2</p> 8960 </td> 8961 8962 <td class="entry_tags"> 8963 <ul class="entry_tags"> 8964 <li><a href="#tag_BC">BC</a></li> 8965 </ul> 8966 </td> 8967 8968 </tr> 8969 <tr class="entries_header"> 8970 <th class="th_details" colspan="6">Details</th> 8971 </tr> 8972 <tr class="entry_cont"> 8973 <td class="entry_details" colspan="6"> 8974 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 8975AUTO.<wbr/></p> 8976<p>When set to any of the ON modes,<wbr/> the camera device's 8977auto-exposure routine is enabled,<wbr/> overriding the 8978application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 8979and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 8980<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 8981<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is 8982enabled,<wbr/> the relevant priority CaptureRequest settings will not be overridden.<wbr/> 8983See <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> for more details.<wbr/> If one of the FLASH modes 8984is selected,<wbr/> the camera device's flash unit controls are 8985also overridden.<wbr/></p> 8986<p>The FLASH modes are only available if the camera device 8987has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 8988<p>If flash TORCH mode is desired,<wbr/> this field must be set to 8989ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 8990<p>When set to any of the ON modes,<wbr/> the values chosen by the 8991camera device auto-exposure routine for the overridden 8992fields for a given capture will be available in its 8993CaptureResult.<wbr/></p> 8994<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON and if the device 8995supports manual flash strength control,<wbr/> i.<wbr/>e.,<wbr/> 8996if <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and 8997<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> then 8998the auto-exposure (AE) precapture metering sequence should be 8999triggered to avoid the image being incorrectly exposed at 9000different <a href="#controls_android.flash.strengthLevel">android.<wbr/>flash.<wbr/>strength<wbr/>Level</a>.<wbr/></p> 9001 </td> 9002 </tr> 9003 9004 9005 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9006 <!-- end of entry --> 9007 9008 9009 <tr class="entry" id="dynamic_android.control.aeRegions"> 9010 <td class="entry_name 9011 " rowspan="5"> 9012 android.<wbr/>control.<wbr/>ae<wbr/>Regions 9013 </td> 9014 <td class="entry_type"> 9015 <span class="entry_type_name">int32</span> 9016 <span class="entry_type_container">x</span> 9017 9018 <span class="entry_type_array"> 9019 5 x area_count 9020 </span> 9021 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 9022 9023 9024 9025 9026 9027 9028 </td> <!-- entry_type --> 9029 9030 <td class="entry_description"> 9031 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 9032 </td> 9033 9034 <td class="entry_units"> 9035 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 9036 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 9037 distortion correction capability and mode 9038 </td> 9039 9040 <td class="entry_range"> 9041 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 9042<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> 9043depending on distortion correction capability and mode</p> 9044 </td> 9045 9046 <td class="entry_hal_version"> 9047 <p>3.<wbr/>2</p> 9048 </td> 9049 9050 <td class="entry_tags"> 9051 <ul class="entry_tags"> 9052 <li><a href="#tag_BC">BC</a></li> 9053 </ul> 9054 </td> 9055 9056 </tr> 9057 <tr class="entries_header"> 9058 <th class="th_details" colspan="6">Details</th> 9059 </tr> 9060 <tr class="entry_cont"> 9061 <td class="entry_details" colspan="6"> 9062 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 9063Otherwise will always be present.<wbr/></p> 9064<p>The maximum number of regions supported by the device is determined by the value 9065of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 9066<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 9067system 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 9068the top-left pixel in the active pixel array,<wbr/> and 9069(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 9070<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 9071active pixel array.<wbr/></p> 9072<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 9073system depends on the mode being set.<wbr/> 9074When the distortion correction mode is OFF,<wbr/> the coordinate system follows 9075<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 9076<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 9077(<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/> 9078<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 9079pixel in the pre-correction active pixel array.<wbr/> 9080When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 9081<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 9082<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 9083(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 9084<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 9085active pixel array.<wbr/></p> 9086<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 9087for every pixel in the area.<wbr/> This means that a large metering area 9088with the same weight as a smaller area will have more effect in 9089the metering result.<wbr/> Metering areas can partially overlap and the 9090camera device will add the weights in the overlap region.<wbr/></p> 9091<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 9092region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 9093weight is ignored.<wbr/></p> 9094<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 9095camera device.<wbr/></p> 9096<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 9097capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 9098region and output only the intersection rectangle as the metering region in the result 9099metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 9100not reported in the result metadata.<wbr/></p> 9101<p>When setting the AE metering regions,<wbr/> the application must consider the additional 9102crop resulted from the aspect ratio differences between the preview stream and 9103<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full 9104active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/> 9105the boundary of AE regions will be [0,<wbr/> y_<wbr/>crop] and 9106[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and 9107[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio 9108mismatch.<wbr/></p> 9109<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 9110preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 9111pre-zoom field of view.<wbr/> This means that the same aeRegions values at different 9112<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The aeRegions 9113coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the 9114zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same 9115aeRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the 9116scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use 9117activeArraySize or preCorrectionActiveArraySize still depends on distortion correction 9118mode.<wbr/></p> 9119<p>For camera devices with the 9120<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 9121capability or devices where 9122<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 9123lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> 9124<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 9125<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the 9126coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 9127<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 9128 </td> 9129 </tr> 9130 9131 <tr class="entries_header"> 9132 <th class="th_details" colspan="6">HAL Implementation Details</th> 9133 </tr> 9134 <tr class="entry_cont"> 9135 <td class="entry_details" colspan="6"> 9136 <p>The HAL level representation of MeteringRectangle[] is a 9137int[5 * area_<wbr/>count].<wbr/> 9138Every five elements represent a metering region of 9139(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 9140The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 9141exclusive on xmax and ymax.<wbr/> 9142HAL must always report metering regions in the coordinate system of pre-correction 9143active array.<wbr/></p> 9144 </td> 9145 </tr> 9146 9147 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9148 <!-- end of entry --> 9149 9150 9151 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> 9152 <td class="entry_name 9153 " rowspan="3"> 9154 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 9155 </td> 9156 <td class="entry_type"> 9157 <span class="entry_type_name">int32</span> 9158 <span class="entry_type_container">x</span> 9159 9160 <span class="entry_type_array"> 9161 2 9162 </span> 9163 <span class="entry_type_visibility"> [public as rangeInt]</span> 9164 9165 9166 <span class="entry_type_hwlevel">[legacy] </span> 9167 9168 9169 9170 9171 </td> <!-- entry_type --> 9172 9173 <td class="entry_description"> 9174 <p>Range over which the auto-exposure routine can 9175adjust the capture frame rate to maintain good 9176exposure.<wbr/></p> 9177 </td> 9178 9179 <td class="entry_units"> 9180 Frames per second (FPS) 9181 </td> 9182 9183 <td class="entry_range"> 9184 <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> 9185 </td> 9186 9187 <td class="entry_hal_version"> 9188 <p>3.<wbr/>2</p> 9189 </td> 9190 9191 <td class="entry_tags"> 9192 <ul class="entry_tags"> 9193 <li><a href="#tag_BC">BC</a></li> 9194 </ul> 9195 </td> 9196 9197 </tr> 9198 <tr class="entries_header"> 9199 <th class="th_details" colspan="6">Details</th> 9200 </tr> 9201 <tr class="entry_cont"> 9202 <td class="entry_details" colspan="6"> 9203 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 9204manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 9205<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 9206<p>Note that the actual achievable max framerate also depends on the minimum frame 9207duration of the output streams.<wbr/> The max frame rate will be 9208<code>min(aeTargetFpsRange.<wbr/>maxFps,<wbr/> 1 /<wbr/> max(individual stream min durations))</code>.<wbr/> For example,<wbr/> 9209if the application sets this key to <code>{60,<wbr/> 60}</code>,<wbr/> but the maximum minFrameDuration among 9210all configured streams is 33ms,<wbr/> the maximum framerate won't be 60fps,<wbr/> but will be 921130fps.<wbr/></p> 9212<p>To start a CaptureSession with a target FPS range different from the 9213capture request template's default value,<wbr/> the application 9214is strongly recommended to call 9215<a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a> 9216with the target fps range before creating the capture session.<wbr/> The aeTargetFpsRange is 9217typically a session parameter.<wbr/> Specifying it at session creation time helps avoid 9218session reconfiguration delays in cases like 60fps or high speed recording.<wbr/></p> 9219 </td> 9220 </tr> 9221 9222 9223 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9224 <!-- end of entry --> 9225 9226 9227 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> 9228 <td class="entry_name 9229 " rowspan="5"> 9230 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 9231 </td> 9232 <td class="entry_type"> 9233 <span class="entry_type_name entry_type_name_enum">byte</span> 9234 9235 <span class="entry_type_visibility"> [public]</span> 9236 9237 9238 <span class="entry_type_hwlevel">[limited] </span> 9239 9240 9241 9242 <ul class="entry_type_enum"> 9243 <li> 9244 <span class="entry_type_enum_name">IDLE (v3.2)</span> 9245 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 9246 </li> 9247 <li> 9248 <span class="entry_type_enum_name">START (v3.2)</span> 9249 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 9250by the camera device.<wbr/></p> 9251<p>The exact effect of the precapture trigger depends on 9252the current AE mode and state.<wbr/></p></span> 9253 </li> 9254 <li> 9255 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 9256 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 9257precapture metering sequence,<wbr/> the auto-exposure routine will return to its 9258initial state.<wbr/></p></span> 9259 </li> 9260 </ul> 9261 9262 </td> <!-- entry_type --> 9263 9264 <td class="entry_description"> 9265 <p>Whether the camera device will trigger a precapture 9266metering sequence when it processes this request.<wbr/></p> 9267 </td> 9268 9269 <td class="entry_units"> 9270 </td> 9271 9272 <td class="entry_range"> 9273 </td> 9274 9275 <td class="entry_hal_version"> 9276 <p>3.<wbr/>2</p> 9277 </td> 9278 9279 <td class="entry_tags"> 9280 <ul class="entry_tags"> 9281 <li><a href="#tag_BC">BC</a></li> 9282 </ul> 9283 </td> 9284 9285 </tr> 9286 <tr class="entries_header"> 9287 <th class="th_details" colspan="6">Details</th> 9288 </tr> 9289 <tr class="entry_cont"> 9290 <td class="entry_details" colspan="6"> 9291 <p>This entry is normally set to IDLE,<wbr/> or is not 9292included at all in the request settings.<wbr/> When included and 9293set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 9294precapture metering sequence.<wbr/></p> 9295<p>When set to CANCEL,<wbr/> the camera device will cancel any active 9296precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 9297If a precapture metering sequence is already completed,<wbr/> and the camera 9298device has implicitly locked the AE for subsequent still capture,<wbr/> the 9299CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 9300<p>The precapture sequence should be triggered before starting a 9301high-quality still capture for final metering decisions to 9302be made,<wbr/> and for firing pre-capture flash pulses to estimate 9303scene brightness and required final capture flash power,<wbr/> when 9304the flash is enabled.<wbr/></p> 9305<p>Flash is enabled during precapture sequence when:</p> 9306<ul> 9307<li>AE mode is ON_<wbr/>ALWAYS_<wbr/>FLASH</li> 9308<li>AE mode is ON_<wbr/>AUTO_<wbr/>FLASH and the scene is deemed too dark without flash,<wbr/> or</li> 9309<li>AE mode is ON and flash mode is TORCH or SINGLE</li> 9310</ul> 9311<p>Normally,<wbr/> this entry should be set to START for only single request,<wbr/> and the 9312application should wait until the sequence completes before starting a new one.<wbr/></p> 9313<p>When a precapture metering sequence is finished,<wbr/> the camera device 9314may lock the auto-exposure routine internally to be able to accurately expose the 9315subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 9316For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 9317submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 9318submit 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 9319with <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 9320still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 9321API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 9322internally locked AE if the application doesn't submit a still capture request after 9323the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 9324be used in devices that have earlier API levels.<wbr/></p> 9325<p>The exact effect of auto-exposure (AE) precapture trigger 9326depends on the current AE mode and state; see 9327<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 9328details.<wbr/></p> 9329<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 9330capturing a high-resolution JPEG image will automatically trigger a 9331precapture sequence before the high-resolution capture,<wbr/> including 9332potentially firing a pre-capture flash.<wbr/></p> 9333<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 9334simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 9335the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 9336focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 9337trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 9338changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 9339example.<wbr/></p> 9340<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 9341the camera device will complete them in the optimal order for that device.<wbr/></p> 9342 </td> 9343 </tr> 9344 9345 <tr class="entries_header"> 9346 <th class="th_details" colspan="6">HAL Implementation Details</th> 9347 </tr> 9348 <tr class="entry_cont"> 9349 <td class="entry_details" colspan="6"> 9350 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 9351(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 9352treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 9353AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 9354to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 9355 </td> 9356 </tr> 9357 9358 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9359 <!-- end of entry --> 9360 9361 9362 <tr class="entry" id="dynamic_android.control.aeState"> 9363 <td class="entry_name 9364 " rowspan="3"> 9365 android.<wbr/>control.<wbr/>ae<wbr/>State 9366 </td> 9367 <td class="entry_type"> 9368 <span class="entry_type_name entry_type_name_enum">byte</span> 9369 9370 <span class="entry_type_visibility"> [public]</span> 9371 9372 9373 <span class="entry_type_hwlevel">[limited] </span> 9374 9375 9376 9377 <ul class="entry_type_enum"> 9378 <li> 9379 <span class="entry_type_enum_name">INACTIVE (v3.2)</span> 9380 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> 9381<p>When a camera device is opened,<wbr/> it starts in 9382this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 9383this state in capture result.<wbr/></p></span> 9384 </li> 9385 <li> 9386 <span class="entry_type_enum_name">SEARCHING (v3.2)</span> 9387 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 9388for the current scene.<wbr/></p> 9389<p>This is a transient state,<wbr/> the camera device may skip 9390reporting this state in capture result.<wbr/></p></span> 9391 </li> 9392 <li> 9393 <span class="entry_type_enum_name">CONVERGED (v3.2)</span> 9394 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 9395current scene.<wbr/></p></span> 9396 </li> 9397 <li> 9398 <span class="entry_type_enum_name">LOCKED (v3.2)</span> 9399 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 9400 </li> 9401 <li> 9402 <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span> 9403 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 9404needs to be fired for good quality still 9405capture.<wbr/></p></span> 9406 </li> 9407 <li> 9408 <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span> 9409 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 9410and is currently executing it.<wbr/></p> 9411<p>Precapture can be triggered through setting 9412<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently 9413active and completed (if it causes camera device internal AE lock) precapture 9414metering sequence can be canceled through setting 9415<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p> 9416<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED 9417or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient 9418state,<wbr/> the camera device may skip reporting this state in 9419capture result.<wbr/></p></span> 9420 </li> 9421 </ul> 9422 9423 </td> <!-- entry_type --> 9424 9425 <td class="entry_description"> 9426 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p> 9427 </td> 9428 9429 <td class="entry_units"> 9430 </td> 9431 9432 <td class="entry_range"> 9433 </td> 9434 9435 <td class="entry_hal_version"> 9436 <p>3.<wbr/>2</p> 9437 </td> 9438 9439 <td class="entry_tags"> 9440 </td> 9441 9442 </tr> 9443 <tr class="entries_header"> 9444 <th class="th_details" colspan="6">Details</th> 9445 </tr> 9446 <tr class="entry_cont"> 9447 <td class="entry_details" colspan="6"> 9448 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 9449resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 9450or <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 9451the algorithm states to INACTIVE.<wbr/></p> 9452<p>The camera device can do several state transitions between two results,<wbr/> if it is 9453allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 9454seen in a result.<wbr/></p> 9455<p>The state in the result is the state for this image (in sync with this image): if 9456AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 9457be good to use.<wbr/></p> 9458<p>Below are state transition tables for different AE modes.<wbr/></p> 9459<table> 9460<thead> 9461<tr> 9462<th style="text-align: center;">State</th> 9463<th style="text-align: center;">Transition Cause</th> 9464<th style="text-align: center;">New State</th> 9465<th style="text-align: center;">Notes</th> 9466</tr> 9467</thead> 9468<tbody> 9469<tr> 9470<td style="text-align: center;">INACTIVE</td> 9471<td style="text-align: center;"></td> 9472<td style="text-align: center;">INACTIVE</td> 9473<td style="text-align: center;">Camera device auto exposure algorithm is disabled</td> 9474</tr> 9475</tbody> 9476</table> 9477<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p> 9478<table> 9479<thead> 9480<tr> 9481<th style="text-align: center;">State</th> 9482<th style="text-align: center;">Transition Cause</th> 9483<th style="text-align: center;">New State</th> 9484<th style="text-align: center;">Notes</th> 9485</tr> 9486</thead> 9487<tbody> 9488<tr> 9489<td style="text-align: center;">INACTIVE</td> 9490<td style="text-align: center;">Camera device initiates AE scan</td> 9491<td style="text-align: center;">SEARCHING</td> 9492<td style="text-align: center;">Values changing</td> 9493</tr> 9494<tr> 9495<td style="text-align: center;">INACTIVE</td> 9496<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 9497<td style="text-align: center;">LOCKED</td> 9498<td style="text-align: center;">Values locked</td> 9499</tr> 9500<tr> 9501<td style="text-align: center;">SEARCHING</td> 9502<td style="text-align: center;">Camera device finishes AE scan</td> 9503<td style="text-align: center;">CONVERGED</td> 9504<td style="text-align: center;">Good values,<wbr/> not changing</td> 9505</tr> 9506<tr> 9507<td style="text-align: center;">SEARCHING</td> 9508<td style="text-align: center;">Camera device finishes AE scan</td> 9509<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> 9510<td style="text-align: center;">Converged but too dark w/<wbr/>o flash</td> 9511</tr> 9512<tr> 9513<td style="text-align: center;">SEARCHING</td> 9514<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 9515<td style="text-align: center;">LOCKED</td> 9516<td style="text-align: center;">Values locked</td> 9517</tr> 9518<tr> 9519<td style="text-align: center;">CONVERGED</td> 9520<td style="text-align: center;">Camera device initiates AE scan</td> 9521<td style="text-align: center;">SEARCHING</td> 9522<td style="text-align: center;">Values changing</td> 9523</tr> 9524<tr> 9525<td style="text-align: center;">CONVERGED</td> 9526<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 9527<td style="text-align: center;">LOCKED</td> 9528<td style="text-align: center;">Values locked</td> 9529</tr> 9530<tr> 9531<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> 9532<td style="text-align: center;">Camera device initiates AE scan</td> 9533<td style="text-align: center;">SEARCHING</td> 9534<td style="text-align: center;">Values changing</td> 9535</tr> 9536<tr> 9537<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> 9538<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 9539<td style="text-align: center;">LOCKED</td> 9540<td style="text-align: center;">Values locked</td> 9541</tr> 9542<tr> 9543<td style="text-align: center;">LOCKED</td> 9544<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 9545<td style="text-align: center;">SEARCHING</td> 9546<td style="text-align: center;">Values not good after unlock</td> 9547</tr> 9548<tr> 9549<td style="text-align: center;">LOCKED</td> 9550<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 9551<td style="text-align: center;">CONVERGED</td> 9552<td style="text-align: center;">Values good after unlock</td> 9553</tr> 9554<tr> 9555<td style="text-align: center;">LOCKED</td> 9556<td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 9557<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> 9558<td style="text-align: center;">Exposure good,<wbr/> but too dark</td> 9559</tr> 9560<tr> 9561<td style="text-align: center;">PRECAPTURE</td> 9562<td style="text-align: center;">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 9563<td style="text-align: center;">CONVERGED</td> 9564<td style="text-align: center;">Ready for high-quality capture</td> 9565</tr> 9566<tr> 9567<td style="text-align: center;">PRECAPTURE</td> 9568<td style="text-align: center;">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 9569<td style="text-align: center;">LOCKED</td> 9570<td style="text-align: center;">Ready for high-quality capture</td> 9571</tr> 9572<tr> 9573<td style="text-align: center;">LOCKED</td> 9574<td style="text-align: center;">aeLock is ON and aePrecaptureTrigger is START</td> 9575<td style="text-align: center;">LOCKED</td> 9576<td style="text-align: center;">Precapture trigger is ignored when AE is already locked</td> 9577</tr> 9578<tr> 9579<td style="text-align: center;">LOCKED</td> 9580<td style="text-align: center;">aeLock is ON and aePrecaptureTrigger is CANCEL</td> 9581<td style="text-align: center;">LOCKED</td> 9582<td style="text-align: center;">Precapture trigger is ignored when AE is already locked</td> 9583</tr> 9584<tr> 9585<td style="text-align: center;">Any state (excluding LOCKED)</td> 9586<td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 9587<td style="text-align: center;">PRECAPTURE</td> 9588<td style="text-align: center;">Start AE precapture metering sequence</td> 9589</tr> 9590<tr> 9591<td style="text-align: center;">Any state (excluding LOCKED)</td> 9592<td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td> 9593<td style="text-align: center;">INACTIVE</td> 9594<td style="text-align: center;">Currently active precapture metering sequence is canceled</td> 9595</tr> 9596</tbody> 9597</table> 9598<p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in 9599<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 9600the camera device finishes AE scan and it's too dark without flash.<wbr/></p> 9601<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 9602without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 9603can be skipped in that manner is called a transient state.<wbr/></p> 9604<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions 9605listed in above table,<wbr/> it is also legal for the camera device to skip one or more 9606transient states between two results.<wbr/> See below table for examples:</p> 9607<table> 9608<thead> 9609<tr> 9610<th style="text-align: center;">State</th> 9611<th style="text-align: center;">Transition Cause</th> 9612<th style="text-align: center;">New State</th> 9613<th style="text-align: center;">Notes</th> 9614</tr> 9615</thead> 9616<tbody> 9617<tr> 9618<td style="text-align: center;">INACTIVE</td> 9619<td style="text-align: center;">Camera device finished AE scan</td> 9620<td style="text-align: center;">CONVERGED</td> 9621<td style="text-align: center;">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 9622</tr> 9623<tr> 9624<td style="text-align: center;">Any state (excluding LOCKED)</td> 9625<td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td> 9626<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> 9627<td style="text-align: center;">Converged but too dark w/<wbr/>o flash after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 9628</tr> 9629<tr> 9630<td style="text-align: center;">Any state (excluding LOCKED)</td> 9631<td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td> 9632<td style="text-align: center;">CONVERGED</td> 9633<td style="text-align: center;">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 9634</tr> 9635<tr> 9636<td style="text-align: center;">Any state (excluding LOCKED)</td> 9637<td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 9638<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> 9639<td style="text-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> 9640</tr> 9641<tr> 9642<td style="text-align: center;">Any state (excluding LOCKED)</td> 9643<td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 9644<td style="text-align: center;">CONVERGED</td> 9645<td style="text-align: center;">Converged after a precapture sequences canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> 9646</tr> 9647<tr> 9648<td style="text-align: center;">CONVERGED</td> 9649<td style="text-align: center;">Camera device finished AE scan</td> 9650<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> 9651<td style="text-align: center;">Converged but too dark w/<wbr/>o flash after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 9652</tr> 9653<tr> 9654<td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> 9655<td style="text-align: center;">Camera device finished AE scan</td> 9656<td style="text-align: center;">CONVERGED</td> 9657<td style="text-align: center;">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 9658</tr> 9659</tbody> 9660</table> 9661 </td> 9662 </tr> 9663 9664 9665 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9666 <!-- end of entry --> 9667 9668 9669 <tr class="entry" id="dynamic_android.control.afMode"> 9670 <td class="entry_name 9671 " rowspan="5"> 9672 android.<wbr/>control.<wbr/>af<wbr/>Mode 9673 </td> 9674 <td class="entry_type"> 9675 <span class="entry_type_name entry_type_name_enum">byte</span> 9676 9677 <span class="entry_type_visibility"> [public]</span> 9678 9679 9680 <span class="entry_type_hwlevel">[legacy] </span> 9681 9682 9683 9684 <ul class="entry_type_enum"> 9685 <li> 9686 <span class="entry_type_enum_name">OFF (v3.2)</span> 9687 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 9688<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 9689application.<wbr/></p></span> 9690 </li> 9691 <li> 9692 <span class="entry_type_enum_name">AUTO (v3.2)</span> 9693 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 9694<p>In this mode,<wbr/> the lens does not move unless 9695the autofocus trigger action is called.<wbr/> When that trigger 9696is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 9697the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 9698<p>Always supported if lens is not fixed focus.<wbr/></p> 9699<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 9700is fixed-focus.<wbr/></p> 9701<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 9702and sets the AF state to INACTIVE.<wbr/></p></span> 9703 </li> 9704 <li> 9705 <span class="entry_type_enum_name">MACRO (v3.2)</span> 9706 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 9707<p>In this mode,<wbr/> the lens does not move unless the 9708autofocus trigger action is called.<wbr/> When that trigger is 9709activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 9710the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 9711mode is optimized for focusing on objects very close to 9712the camera.<wbr/></p> 9713<p>When that trigger is activated,<wbr/> AF will transition to 9714ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 9715NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 9716position to default,<wbr/> and sets the AF state to 9717INACTIVE.<wbr/></p></span> 9718 </li> 9719 <li> 9720 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span> 9721 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 9722position continually to attempt to provide a 9723constantly-in-focus image stream.<wbr/></p> 9724<p>The focusing behavior should be suitable for good quality 9725video recording; typically this means slower focus 9726movement and no overshoots.<wbr/> When the AF trigger is not 9727involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 9728and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 9729states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 9730the algorithm should immediately transition into 9731AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 9732lens position until a cancel AF trigger is received.<wbr/></p> 9733<p>Once cancel is received,<wbr/> the algorithm should transition 9734back to INACTIVE and resume passive scan.<wbr/> Note that this 9735behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 9736ongoing PASSIVE_<wbr/>SCAN must immediately be 9737canceled.<wbr/></p></span> 9738 </li> 9739 <li> 9740 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span> 9741 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 9742position continually to attempt to provide a 9743constantly-in-focus image stream.<wbr/></p> 9744<p>The focusing behavior should be suitable for still image 9745capture; typically this means focusing as fast as 9746possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 9747algorithm should start in INACTIVE state,<wbr/> and then 9748transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 9749appropriate as it attempts to maintain focus.<wbr/> When the AF 9750trigger is activated,<wbr/> the algorithm should finish its 9751PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 9752AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 9753lens position until a cancel AF trigger is received.<wbr/></p> 9754<p>When the AF cancel trigger is activated,<wbr/> the algorithm 9755should transition back to INACTIVE and then act as if it 9756has just been started.<wbr/></p></span> 9757 </li> 9758 <li> 9759 <span class="entry_type_enum_name">EDOF (v3.2)</span> 9760 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 9761<p>The camera device will produce images with an extended 9762depth of field automatically; no special focusing 9763operations need to be done before taking a picture.<wbr/></p> 9764<p>AF triggers are ignored,<wbr/> and the AF state will always be 9765INACTIVE.<wbr/></p></span> 9766 </li> 9767 </ul> 9768 9769 </td> <!-- entry_type --> 9770 9771 <td class="entry_description"> 9772 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 9773mode it is set to.<wbr/></p> 9774 </td> 9775 9776 <td class="entry_units"> 9777 </td> 9778 9779 <td class="entry_range"> 9780 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 9781 </td> 9782 9783 <td class="entry_hal_version"> 9784 <p>3.<wbr/>2</p> 9785 </td> 9786 9787 <td class="entry_tags"> 9788 <ul class="entry_tags"> 9789 <li><a href="#tag_BC">BC</a></li> 9790 </ul> 9791 </td> 9792 9793 </tr> 9794 <tr class="entries_header"> 9795 <th class="th_details" colspan="6">Details</th> 9796 </tr> 9797 <tr class="entry_cont"> 9798 <td class="entry_details" colspan="6"> 9799 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 9800(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 9801when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 9802dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 9803setting <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> 9804<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 9805the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 9806in result metadata.<wbr/></p> 9807 </td> 9808 </tr> 9809 9810 <tr class="entries_header"> 9811 <th class="th_details" colspan="6">HAL Implementation Details</th> 9812 </tr> 9813 <tr class="entry_cont"> 9814 <td class="entry_details" colspan="6"> 9815 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 9816request (<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 9817up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 9818<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 9819locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 9820after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 9821the same focal plane remains in focus.<wbr/></p> 9822<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 9823scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 9824(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 9825same lock behavior as above.<wbr/></p> 9826<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 9827focus 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/> 9828However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 9829manual control.<wbr/></p> 9830<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 9831camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 9832remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 9833by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 9834that will arise on camera modules with open-loop VCMs.<wbr/></p> 9835 </td> 9836 </tr> 9837 9838 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9839 <!-- end of entry --> 9840 9841 9842 <tr class="entry" id="dynamic_android.control.afRegions"> 9843 <td class="entry_name 9844 " rowspan="5"> 9845 android.<wbr/>control.<wbr/>af<wbr/>Regions 9846 </td> 9847 <td class="entry_type"> 9848 <span class="entry_type_name">int32</span> 9849 <span class="entry_type_container">x</span> 9850 9851 <span class="entry_type_array"> 9852 5 x area_count 9853 </span> 9854 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 9855 9856 9857 9858 9859 9860 9861 </td> <!-- entry_type --> 9862 9863 <td class="entry_description"> 9864 <p>List of metering areas to use for auto-focus.<wbr/></p> 9865 </td> 9866 9867 <td class="entry_units"> 9868 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 9869 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 9870 distortion correction capability and mode 9871 </td> 9872 9873 <td class="entry_range"> 9874 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 9875<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> 9876depending on distortion correction capability and mode</p> 9877 </td> 9878 9879 <td class="entry_hal_version"> 9880 <p>3.<wbr/>2</p> 9881 </td> 9882 9883 <td class="entry_tags"> 9884 <ul class="entry_tags"> 9885 <li><a href="#tag_BC">BC</a></li> 9886 </ul> 9887 </td> 9888 9889 </tr> 9890 <tr class="entries_header"> 9891 <th class="th_details" colspan="6">Details</th> 9892 </tr> 9893 <tr class="entry_cont"> 9894 <td class="entry_details" colspan="6"> 9895 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 9896Otherwise will always be present.<wbr/></p> 9897<p>The maximum number of focus areas supported by the device is determined by the value 9898of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 9899<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 9900system 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 9901the top-left pixel in the active pixel array,<wbr/> and 9902(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 9903<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 9904active pixel array.<wbr/></p> 9905<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 9906system depends on the mode being set.<wbr/> 9907When the distortion correction mode is OFF,<wbr/> the coordinate system follows 9908<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 9909<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 9910(<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/> 9911<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 9912pixel in the pre-correction active pixel array.<wbr/> 9913When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 9914<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 9915<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 9916(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 9917<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 9918active pixel array.<wbr/></p> 9919<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 9920for every pixel in the area.<wbr/> This means that a large metering area 9921with the same weight as a smaller area will have more effect in 9922the metering result.<wbr/> Metering areas can partially overlap and the 9923camera device will add the weights in the overlap region.<wbr/></p> 9924<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 9925is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 9926ignored.<wbr/></p> 9927<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 9928camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or 9929the region selected by the camera device as the focus area of interest.<wbr/></p> 9930<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 9931capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 9932region and output only the intersection rectangle as the metering region in the result 9933metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 9934not reported in the result metadata.<wbr/></p> 9935<p>When setting the AF metering regions,<wbr/> the application must consider the additional 9936crop resulted from the aspect ratio differences between the preview stream and 9937<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full 9938active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/> 9939the boundary of AF regions will be [0,<wbr/> y_<wbr/>crop] and 9940[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and 9941[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio 9942mismatch.<wbr/></p> 9943<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 9944preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 9945pre-zoom field of view.<wbr/> This means that the same afRegions values at different 9946<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The afRegions 9947coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the 9948zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same 9949afRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the 9950scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use 9951activeArraySize or preCorrectionActiveArraySize still depends on distortion correction 9952mode.<wbr/></p> 9953<p>For camera devices with the 9954<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 9955capability or devices where 9956<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 9957lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> 9958<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 9959<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the 9960coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 9961<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 9962 </td> 9963 </tr> 9964 9965 <tr class="entries_header"> 9966 <th class="th_details" colspan="6">HAL Implementation Details</th> 9967 </tr> 9968 <tr class="entry_cont"> 9969 <td class="entry_details" colspan="6"> 9970 <p>The HAL level representation of MeteringRectangle[] is a 9971int[5 * area_<wbr/>count].<wbr/> 9972Every five elements represent a metering region of 9973(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 9974The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 9975exclusive on xmax and ymax.<wbr/> 9976HAL must always report metering regions in the coordinate system of pre-correction 9977active array.<wbr/></p> 9978 </td> 9979 </tr> 9980 9981 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9982 <!-- end of entry --> 9983 9984 9985 <tr class="entry" id="dynamic_android.control.afTrigger"> 9986 <td class="entry_name 9987 " rowspan="5"> 9988 android.<wbr/>control.<wbr/>af<wbr/>Trigger 9989 </td> 9990 <td class="entry_type"> 9991 <span class="entry_type_name entry_type_name_enum">byte</span> 9992 9993 <span class="entry_type_visibility"> [public]</span> 9994 9995 9996 <span class="entry_type_hwlevel">[legacy] </span> 9997 9998 9999 10000 <ul class="entry_type_enum"> 10001 <li> 10002 <span class="entry_type_enum_name">IDLE (v3.2)</span> 10003 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 10004 </li> 10005 <li> 10006 <span class="entry_type_enum_name">START (v3.2)</span> 10007 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 10008 </li> 10009 <li> 10010 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 10011 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 10012state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 10013 </li> 10014 </ul> 10015 10016 </td> <!-- entry_type --> 10017 10018 <td class="entry_description"> 10019 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 10020 </td> 10021 10022 <td class="entry_units"> 10023 </td> 10024 10025 <td class="entry_range"> 10026 </td> 10027 10028 <td class="entry_hal_version"> 10029 <p>3.<wbr/>2</p> 10030 </td> 10031 10032 <td class="entry_tags"> 10033 <ul class="entry_tags"> 10034 <li><a href="#tag_BC">BC</a></li> 10035 </ul> 10036 </td> 10037 10038 </tr> 10039 <tr class="entries_header"> 10040 <th class="th_details" colspan="6">Details</th> 10041 </tr> 10042 <tr class="entry_cont"> 10043 <td class="entry_details" colspan="6"> 10044 <p>This entry is normally set to IDLE,<wbr/> or is not 10045included at all in the request settings.<wbr/></p> 10046<p>When included and set to START,<wbr/> the camera device will trigger the 10047autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 10048<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 10049and return to its initial AF state.<wbr/></p> 10050<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 10051single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 10052START for multiple captures in a row means restarting the AF operation over 10053and over again.<wbr/></p> 10054<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> 10055<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> 10056simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 10057the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 10058focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 10059trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 10060changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 10061 </td> 10062 </tr> 10063 10064 <tr class="entries_header"> 10065 <th class="th_details" colspan="6">HAL Implementation Details</th> 10066 </tr> 10067 <tr class="entry_cont"> 10068 <td class="entry_details" colspan="6"> 10069 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 10070(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 10071treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 10072AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 10073to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 10074 </td> 10075 </tr> 10076 10077 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10078 <!-- end of entry --> 10079 10080 10081 <tr class="entry" id="dynamic_android.control.afState"> 10082 <td class="entry_name 10083 " rowspan="3"> 10084 android.<wbr/>control.<wbr/>af<wbr/>State 10085 </td> 10086 <td class="entry_type"> 10087 <span class="entry_type_name entry_type_name_enum">byte</span> 10088 10089 <span class="entry_type_visibility"> [public]</span> 10090 10091 10092 <span class="entry_type_hwlevel">[legacy] </span> 10093 10094 10095 10096 <ul class="entry_type_enum"> 10097 <li> 10098 <span class="entry_type_enum_name">INACTIVE (v3.2)</span> 10099 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked 10100to scan.<wbr/></p> 10101<p>When a camera device is opened,<wbr/> it starts in this 10102state.<wbr/> This is a transient state,<wbr/> the camera device may 10103skip reporting this state in capture 10104result.<wbr/></p></span> 10105 </li> 10106 <li> 10107 <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span> 10108 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the 10109camera device in a continuous autofocus mode.<wbr/></p> 10110<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 10111state,<wbr/> the camera device may skip reporting this state in 10112capture result.<wbr/></p></span> 10113 </li> 10114 <li> 10115 <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span> 10116 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may 10117restart scanning at any time.<wbr/></p> 10118<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 10119state,<wbr/> the camera device may skip reporting this state in 10120capture result.<wbr/></p></span> 10121 </li> 10122 <li> 10123 <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span> 10124 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was 10125triggered by AF trigger.<wbr/></p> 10126<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient 10127state,<wbr/> the camera device may skip reporting this state in 10128capture result.<wbr/></p></span> 10129 </li> 10130 <li> 10131 <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span> 10132 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked 10133focus.<wbr/></p> 10134<p>This state is reached only after an explicit START AF trigger has been 10135sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> 10136<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 10137a 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> 10138 </li> 10139 <li> 10140 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span> 10141 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked 10142focus.<wbr/></p> 10143<p>This state is reached only after an explicit START AF trigger has been 10144sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> 10145<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 10146a 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> 10147 </li> 10148 <li> 10149 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span> 10150 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> 10151and may restart scanning at any time.<wbr/></p> 10152<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera 10153device may skip reporting this state in capture result.<wbr/></p> 10154<p>LEGACY camera devices do not support this state.<wbr/> When a passive 10155scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> 10156 </li> 10157 </ul> 10158 10159 </td> <!-- entry_type --> 10160 10161 <td class="entry_description"> 10162 <p>Current state of auto-focus (AF) algorithm.<wbr/></p> 10163 </td> 10164 10165 <td class="entry_units"> 10166 </td> 10167 10168 <td class="entry_range"> 10169 </td> 10170 10171 <td class="entry_hal_version"> 10172 <p>3.<wbr/>2</p> 10173 </td> 10174 10175 <td class="entry_tags"> 10176 </td> 10177 10178 </tr> 10179 <tr class="entries_header"> 10180 <th class="th_details" colspan="6">Details</th> 10181 </tr> 10182 <tr class="entry_cont"> 10183 <td class="entry_details" colspan="6"> 10184 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 10185resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 10186or <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 10187the algorithm states to INACTIVE.<wbr/></p> 10188<p>The camera device can do several state transitions between two results,<wbr/> if it is 10189allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 10190seen in a result.<wbr/></p> 10191<p>The state in the result is the state for this image (in sync with this image): if 10192AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 10193be sharp.<wbr/></p> 10194<p>Below are state transition tables for different AF modes.<wbr/></p> 10195<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> 10196<table> 10197<thead> 10198<tr> 10199<th style="text-align: center;">State</th> 10200<th style="text-align: center;">Transition Cause</th> 10201<th style="text-align: center;">New State</th> 10202<th style="text-align: center;">Notes</th> 10203</tr> 10204</thead> 10205<tbody> 10206<tr> 10207<td style="text-align: center;">INACTIVE</td> 10208<td style="text-align: center;"></td> 10209<td style="text-align: center;">INACTIVE</td> 10210<td style="text-align: center;">Never changes</td> 10211</tr> 10212</tbody> 10213</table> 10214<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> 10215<table> 10216<thead> 10217<tr> 10218<th style="text-align: center;">State</th> 10219<th style="text-align: center;">Transition Cause</th> 10220<th style="text-align: center;">New State</th> 10221<th style="text-align: center;">Notes</th> 10222</tr> 10223</thead> 10224<tbody> 10225<tr> 10226<td style="text-align: center;">INACTIVE</td> 10227<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10228<td style="text-align: center;">ACTIVE_<wbr/>SCAN</td> 10229<td style="text-align: center;">Start AF sweep,<wbr/> Lens now moving</td> 10230</tr> 10231<tr> 10232<td style="text-align: center;">ACTIVE_<wbr/>SCAN</td> 10233<td style="text-align: center;">AF sweep done</td> 10234<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10235<td style="text-align: center;">Focused,<wbr/> Lens now locked</td> 10236</tr> 10237<tr> 10238<td style="text-align: center;">ACTIVE_<wbr/>SCAN</td> 10239<td style="text-align: center;">AF sweep done</td> 10240<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10241<td style="text-align: center;">Not focused,<wbr/> Lens now locked</td> 10242</tr> 10243<tr> 10244<td style="text-align: center;">ACTIVE_<wbr/>SCAN</td> 10245<td style="text-align: center;">AF_<wbr/>CANCEL</td> 10246<td style="text-align: center;">INACTIVE</td> 10247<td style="text-align: center;">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 10248</tr> 10249<tr> 10250<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10251<td style="text-align: center;">AF_<wbr/>CANCEL</td> 10252<td style="text-align: center;">INACTIVE</td> 10253<td style="text-align: center;">Cancel/<wbr/>reset AF</td> 10254</tr> 10255<tr> 10256<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10257<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10258<td style="text-align: center;">ACTIVE_<wbr/>SCAN</td> 10259<td style="text-align: center;">Start new sweep,<wbr/> Lens now moving</td> 10260</tr> 10261<tr> 10262<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10263<td style="text-align: center;">AF_<wbr/>CANCEL</td> 10264<td style="text-align: center;">INACTIVE</td> 10265<td style="text-align: center;">Cancel/<wbr/>reset AF</td> 10266</tr> 10267<tr> 10268<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10269<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10270<td style="text-align: center;">ACTIVE_<wbr/>SCAN</td> 10271<td style="text-align: center;">Start new sweep,<wbr/> Lens now moving</td> 10272</tr> 10273<tr> 10274<td style="text-align: center;">Any state</td> 10275<td style="text-align: center;">Mode change</td> 10276<td style="text-align: center;">INACTIVE</td> 10277<td style="text-align: center;"></td> 10278</tr> 10279</tbody> 10280</table> 10281<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 10282without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 10283can be skipped in that manner is called a transient state.<wbr/></p> 10284<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 10285state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 10286one or more transient states between two results.<wbr/> See below table for examples:</p> 10287<table> 10288<thead> 10289<tr> 10290<th style="text-align: center;">State</th> 10291<th style="text-align: center;">Transition Cause</th> 10292<th style="text-align: center;">New State</th> 10293<th style="text-align: center;">Notes</th> 10294</tr> 10295</thead> 10296<tbody> 10297<tr> 10298<td style="text-align: center;">INACTIVE</td> 10299<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10300<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10301<td style="text-align: center;">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 10302</tr> 10303<tr> 10304<td style="text-align: center;">INACTIVE</td> 10305<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10306<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10307<td style="text-align: center;">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 10308</tr> 10309<tr> 10310<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10311<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10312<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10313<td style="text-align: center;">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 10314</tr> 10315<tr> 10316<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10317<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10318<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10319<td style="text-align: center;">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 10320</tr> 10321</tbody> 10322</table> 10323<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> 10324<table> 10325<thead> 10326<tr> 10327<th style="text-align: center;">State</th> 10328<th style="text-align: center;">Transition Cause</th> 10329<th style="text-align: center;">New State</th> 10330<th style="text-align: center;">Notes</th> 10331</tr> 10332</thead> 10333<tbody> 10334<tr> 10335<td style="text-align: center;">INACTIVE</td> 10336<td style="text-align: center;">Camera device initiates new scan</td> 10337<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10338<td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td> 10339</tr> 10340<tr> 10341<td style="text-align: center;">INACTIVE</td> 10342<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10343<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10344<td style="text-align: center;">AF state query,<wbr/> Lens now locked</td> 10345</tr> 10346<tr> 10347<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10348<td style="text-align: center;">Camera device completes current scan</td> 10349<td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td> 10350<td style="text-align: center;">End AF scan,<wbr/> Lens now locked</td> 10351</tr> 10352<tr> 10353<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10354<td style="text-align: center;">Camera device fails current scan</td> 10355<td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td> 10356<td style="text-align: center;">End AF scan,<wbr/> Lens now locked</td> 10357</tr> 10358<tr> 10359<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10360<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10361<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10362<td style="text-align: center;">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> 10363</tr> 10364<tr> 10365<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10366<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10367<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10368<td style="text-align: center;">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> 10369</tr> 10370<tr> 10371<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10372<td style="text-align: center;">AF_<wbr/>CANCEL</td> 10373<td style="text-align: center;">INACTIVE</td> 10374<td style="text-align: center;">Reset lens position,<wbr/> Lens now locked</td> 10375</tr> 10376<tr> 10377<td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td> 10378<td style="text-align: center;">Camera device initiates new scan</td> 10379<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10380<td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td> 10381</tr> 10382<tr> 10383<td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td> 10384<td style="text-align: center;">Camera device initiates new scan</td> 10385<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10386<td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td> 10387</tr> 10388<tr> 10389<td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td> 10390<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10391<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10392<td style="text-align: center;">Immediate transition,<wbr/> lens now locked</td> 10393</tr> 10394<tr> 10395<td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td> 10396<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10397<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10398<td style="text-align: center;">Immediate transition,<wbr/> lens now locked</td> 10399</tr> 10400<tr> 10401<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10402<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10403<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10404<td style="text-align: center;">No effect</td> 10405</tr> 10406<tr> 10407<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10408<td style="text-align: center;">AF_<wbr/>CANCEL</td> 10409<td style="text-align: center;">INACTIVE</td> 10410<td style="text-align: center;">Restart AF scan</td> 10411</tr> 10412<tr> 10413<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10414<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10415<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10416<td style="text-align: center;">No effect</td> 10417</tr> 10418<tr> 10419<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10420<td style="text-align: center;">AF_<wbr/>CANCEL</td> 10421<td style="text-align: center;">INACTIVE</td> 10422<td style="text-align: center;">Restart AF scan</td> 10423</tr> 10424</tbody> 10425</table> 10426<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> 10427<table> 10428<thead> 10429<tr> 10430<th style="text-align: center;">State</th> 10431<th style="text-align: center;">Transition Cause</th> 10432<th style="text-align: center;">New State</th> 10433<th style="text-align: center;">Notes</th> 10434</tr> 10435</thead> 10436<tbody> 10437<tr> 10438<td style="text-align: center;">INACTIVE</td> 10439<td style="text-align: center;">Camera device initiates new scan</td> 10440<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10441<td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td> 10442</tr> 10443<tr> 10444<td style="text-align: center;">INACTIVE</td> 10445<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10446<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10447<td style="text-align: center;">AF state query,<wbr/> Lens now locked</td> 10448</tr> 10449<tr> 10450<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10451<td style="text-align: center;">Camera device completes current scan</td> 10452<td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td> 10453<td style="text-align: center;">End AF scan,<wbr/> Lens now locked</td> 10454</tr> 10455<tr> 10456<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10457<td style="text-align: center;">Camera device fails current scan</td> 10458<td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td> 10459<td style="text-align: center;">End AF scan,<wbr/> Lens now locked</td> 10460</tr> 10461<tr> 10462<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10463<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10464<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10465<td style="text-align: center;">Eventual transition once the focus is good.<wbr/> Lens now locked</td> 10466</tr> 10467<tr> 10468<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10469<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10470<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10471<td style="text-align: center;">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> 10472</tr> 10473<tr> 10474<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10475<td style="text-align: center;">AF_<wbr/>CANCEL</td> 10476<td style="text-align: center;">INACTIVE</td> 10477<td style="text-align: center;">Reset lens position,<wbr/> Lens now locked</td> 10478</tr> 10479<tr> 10480<td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td> 10481<td style="text-align: center;">Camera device initiates new scan</td> 10482<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10483<td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td> 10484</tr> 10485<tr> 10486<td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td> 10487<td style="text-align: center;">Camera device initiates new scan</td> 10488<td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> 10489<td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td> 10490</tr> 10491<tr> 10492<td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td> 10493<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10494<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10495<td style="text-align: center;">Immediate trans.<wbr/> Lens now locked</td> 10496</tr> 10497<tr> 10498<td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td> 10499<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10500<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10501<td style="text-align: center;">Immediate trans.<wbr/> Lens now locked</td> 10502</tr> 10503<tr> 10504<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10505<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10506<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10507<td style="text-align: center;">No effect</td> 10508</tr> 10509<tr> 10510<td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> 10511<td style="text-align: center;">AF_<wbr/>CANCEL</td> 10512<td style="text-align: center;">INACTIVE</td> 10513<td style="text-align: center;">Restart AF scan</td> 10514</tr> 10515<tr> 10516<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10517<td style="text-align: center;">AF_<wbr/>TRIGGER</td> 10518<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10519<td style="text-align: center;">No effect</td> 10520</tr> 10521<tr> 10522<td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 10523<td style="text-align: center;">AF_<wbr/>CANCEL</td> 10524<td style="text-align: center;">INACTIVE</td> 10525<td style="text-align: center;">Restart AF scan</td> 10526</tr> 10527</tbody> 10528</table> 10529<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 10530(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 10531camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 10532will be evaluated in the context of the new mode in the request.<wbr/> 10533See below table for examples:</p> 10534<table> 10535<thead> 10536<tr> 10537<th style="text-align: center;">State</th> 10538<th style="text-align: center;">Transition Cause</th> 10539<th style="text-align: center;">New State</th> 10540<th style="text-align: center;">Notes</th> 10541</tr> 10542</thead> 10543<tbody> 10544<tr> 10545<td style="text-align: center;">any state</td> 10546<td style="text-align: center;">CAF-->AUTO mode switch</td> 10547<td style="text-align: center;">INACTIVE</td> 10548<td style="text-align: center;">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 10549</tr> 10550<tr> 10551<td style="text-align: center;">any state</td> 10552<td style="text-align: center;">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 10553<td style="text-align: center;">trigger-reachable states from INACTIVE</td> 10554<td style="text-align: center;">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 10555</tr> 10556<tr> 10557<td style="text-align: center;">any state</td> 10558<td style="text-align: center;">AUTO-->CAF mode switch</td> 10559<td style="text-align: center;">passively reachable states from INACTIVE</td> 10560<td style="text-align: center;">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 10561</tr> 10562</tbody> 10563</table> 10564 </td> 10565 </tr> 10566 10567 10568 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10569 <!-- end of entry --> 10570 10571 10572 <tr class="entry" id="dynamic_android.control.afTriggerId"> 10573 <td class="entry_name 10574 entry_name_deprecated 10575 " rowspan="3"> 10576 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 10577 </td> 10578 <td class="entry_type"> 10579 <span class="entry_type_name">int32</span> 10580 10581 <span class="entry_type_visibility"> [system]</span> 10582 10583 10584 10585 <span class="entry_type_deprecated">[deprecated] </span> 10586 10587 10588 10589 </td> <!-- entry_type --> 10590 10591 <td class="entry_description"> 10592 <p>The ID sent with the latest 10593CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 10594 </td> 10595 10596 <td class="entry_units"> 10597 </td> 10598 10599 <td class="entry_range"> 10600 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 10601 </td> 10602 10603 <td class="entry_hal_version"> 10604 <p>3.<wbr/>2</p> 10605 </td> 10606 10607 <td class="entry_tags"> 10608 </td> 10609 10610 </tr> 10611 <tr class="entries_header"> 10612 <th class="th_details" colspan="6">Details</th> 10613 </tr> 10614 <tr class="entry_cont"> 10615 <td class="entry_details" colspan="6"> 10616 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 10617received yet by HAL.<wbr/> Always updated even if AF algorithm 10618ignores the trigger</p> 10619 </td> 10620 </tr> 10621 10622 10623 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10624 <!-- end of entry --> 10625 10626 10627 <tr class="entry" id="dynamic_android.control.awbLock"> 10628 <td class="entry_name 10629 " rowspan="3"> 10630 android.<wbr/>control.<wbr/>awb<wbr/>Lock 10631 </td> 10632 <td class="entry_type"> 10633 <span class="entry_type_name entry_type_name_enum">byte</span> 10634 10635 <span class="entry_type_visibility"> [public as boolean]</span> 10636 10637 10638 <span class="entry_type_hwlevel">[legacy] </span> 10639 10640 10641 10642 <ul class="entry_type_enum"> 10643 <li> 10644 <span class="entry_type_enum_name">OFF (v3.2)</span> 10645 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 10646algorithm is free to update its parameters if in AUTO 10647mode.<wbr/></p></span> 10648 </li> 10649 <li> 10650 <span class="entry_type_enum_name">ON (v3.2)</span> 10651 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 10652algorithm will not update its parameters while the lock 10653is active.<wbr/></p></span> 10654 </li> 10655 </ul> 10656 10657 </td> <!-- entry_type --> 10658 10659 <td class="entry_description"> 10660 <p>Whether auto-white balance (AWB) is currently locked to its 10661latest calculated values.<wbr/></p> 10662 </td> 10663 10664 <td class="entry_units"> 10665 </td> 10666 10667 <td class="entry_range"> 10668 </td> 10669 10670 <td class="entry_hal_version"> 10671 <p>3.<wbr/>2</p> 10672 </td> 10673 10674 <td class="entry_tags"> 10675 <ul class="entry_tags"> 10676 <li><a href="#tag_BC">BC</a></li> 10677 </ul> 10678 </td> 10679 10680 </tr> 10681 <tr class="entries_header"> 10682 <th class="th_details" colspan="6">Details</th> 10683 </tr> 10684 <tr class="entry_cont"> 10685 <td class="entry_details" colspan="6"> 10686 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 10687and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 10688<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 10689get locked do not necessarily correspond to the settings that were present in the 10690latest capture result received from the camera device,<wbr/> since additional captures 10691and AWB updates may have occurred even before the result was sent out.<wbr/> If an 10692application is switching between automatic and manual control and wishes to eliminate 10693any flicker during the switch,<wbr/> the following procedure is recommended:</p> 10694<ol> 10695<li>Starting in auto-AWB mode:</li> 10696<li>Lock AWB</li> 10697<li>Wait for the first result to be output that has the AWB locked</li> 10698<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 10699<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 10700</ol> 10701<p>Note that AWB lock is only meaningful when 10702<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 10703AWB is already fixed to a specific setting.<wbr/></p> 10704<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 10705 </td> 10706 </tr> 10707 10708 10709 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10710 <!-- end of entry --> 10711 10712 10713 <tr class="entry" id="dynamic_android.control.awbMode"> 10714 <td class="entry_name 10715 " rowspan="3"> 10716 android.<wbr/>control.<wbr/>awb<wbr/>Mode 10717 </td> 10718 <td class="entry_type"> 10719 <span class="entry_type_name entry_type_name_enum">byte</span> 10720 10721 <span class="entry_type_visibility"> [public]</span> 10722 10723 10724 <span class="entry_type_hwlevel">[legacy] </span> 10725 10726 10727 10728 <ul class="entry_type_enum"> 10729 <li> 10730 <span class="entry_type_enum_name">OFF (v3.2)</span> 10731 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 10732<p>The application-selected color transform matrix 10733(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 10734(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 10735device for manual white balance control.<wbr/></p></span> 10736 </li> 10737 <li> 10738 <span class="entry_type_enum_name">AUTO (v3.2)</span> 10739 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 10740<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 10741and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 10742For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 10743values used by the camera device for the transform and gains 10744will be available in the capture result for this request.<wbr/></p></span> 10745 </li> 10746 <li> 10747 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span> 10748 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 10749the camera device uses incandescent light as the assumed scene 10750illumination for white balance.<wbr/></p> 10751<p>While the exact white balance transforms are up to the 10752camera device,<wbr/> they will approximately match the CIE 10753standard illuminant A.<wbr/></p> 10754<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 10755and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 10756For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 10757values used by the camera device for the transform and gains 10758will be available in the capture result for this request.<wbr/></p></span> 10759 </li> 10760 <li> 10761 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> 10762 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 10763the camera device uses fluorescent light as the assumed scene 10764illumination for white balance.<wbr/></p> 10765<p>While the exact white balance transforms are up to the 10766camera device,<wbr/> they will approximately match the CIE 10767standard illuminant F2.<wbr/></p> 10768<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 10769and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 10770For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 10771values used by the camera device for the transform and gains 10772will be available in the capture result for this request.<wbr/></p></span> 10773 </li> 10774 <li> 10775 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span> 10776 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 10777the camera device uses warm fluorescent light as the assumed scene 10778illumination for white balance.<wbr/></p> 10779<p>While the exact white balance transforms are up to the 10780camera device,<wbr/> they will approximately match the CIE 10781standard illuminant F4.<wbr/></p> 10782<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 10783and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 10784For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 10785values used by the camera device for the transform and gains 10786will be available in the capture result for this request.<wbr/></p></span> 10787 </li> 10788 <li> 10789 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> 10790 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 10791the camera device uses daylight light as the assumed scene 10792illumination for white balance.<wbr/></p> 10793<p>While the exact white balance transforms are up to the 10794camera device,<wbr/> they will approximately match the CIE 10795standard illuminant D65.<wbr/></p> 10796<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 10797and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 10798For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 10799values used by the camera device for the transform and gains 10800will be available in the capture result for this request.<wbr/></p></span> 10801 </li> 10802 <li> 10803 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span> 10804 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 10805the camera device uses cloudy daylight light as the assumed scene 10806illumination for white balance.<wbr/></p> 10807<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 10808and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 10809For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 10810values used by the camera device for the transform and gains 10811will be available in the capture result for this request.<wbr/></p></span> 10812 </li> 10813 <li> 10814 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span> 10815 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 10816the camera device uses twilight light as the assumed scene 10817illumination for white balance.<wbr/></p> 10818<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 10819and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 10820For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 10821values used by the camera device for the transform and gains 10822will be available in the capture result for this request.<wbr/></p></span> 10823 </li> 10824 <li> 10825 <span class="entry_type_enum_name">SHADE (v3.2)</span> 10826 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 10827the camera device uses shade light as the assumed scene 10828illumination for white balance.<wbr/></p> 10829<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 10830and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 10831For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 10832values used by the camera device for the transform and gains 10833will be available in the capture result for this request.<wbr/></p></span> 10834 </li> 10835 </ul> 10836 10837 </td> <!-- entry_type --> 10838 10839 <td class="entry_description"> 10840 <p>Whether auto-white balance (AWB) is currently setting the color 10841transform fields,<wbr/> and what its illumination target 10842is.<wbr/></p> 10843 </td> 10844 10845 <td class="entry_units"> 10846 </td> 10847 10848 <td class="entry_range"> 10849 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 10850 </td> 10851 10852 <td class="entry_hal_version"> 10853 <p>3.<wbr/>2</p> 10854 </td> 10855 10856 <td class="entry_tags"> 10857 <ul class="entry_tags"> 10858 <li><a href="#tag_BC">BC</a></li> 10859 </ul> 10860 </td> 10861 10862 </tr> 10863 <tr class="entries_header"> 10864 <th class="th_details" colspan="6">Details</th> 10865 </tr> 10866 <tr class="entry_cont"> 10867 <td class="entry_details" colspan="6"> 10868 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 10869<p>When set to the AUTO mode,<wbr/> the camera device's auto-white balance 10870routine is enabled,<wbr/> overriding the application's selected 10871<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 10872<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> 10873is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommended to 10874also 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 10875setting AE mode to OFF.<wbr/></p> 10876<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 10877routine is disabled.<wbr/> The application manually controls the white 10878balance 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> 10879and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 10880<p>When set to any other modes,<wbr/> the camera device's auto-white 10881balance routine is disabled.<wbr/> The camera device uses each 10882particular illumination target for white balance 10883adjustment.<wbr/> The application's values for 10884<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 10885<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 10886<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 10887 </td> 10888 </tr> 10889 10890 10891 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10892 <!-- end of entry --> 10893 10894 10895 <tr class="entry" id="dynamic_android.control.awbRegions"> 10896 <td class="entry_name 10897 " rowspan="5"> 10898 android.<wbr/>control.<wbr/>awb<wbr/>Regions 10899 </td> 10900 <td class="entry_type"> 10901 <span class="entry_type_name">int32</span> 10902 <span class="entry_type_container">x</span> 10903 10904 <span class="entry_type_array"> 10905 5 x area_count 10906 </span> 10907 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 10908 10909 10910 10911 10912 10913 10914 </td> <!-- entry_type --> 10915 10916 <td class="entry_description"> 10917 <p>List of metering areas to use for auto-white-balance illuminant 10918estimation.<wbr/></p> 10919 </td> 10920 10921 <td class="entry_units"> 10922 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 10923 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 10924 distortion correction capability and mode 10925 </td> 10926 10927 <td class="entry_range"> 10928 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 10929<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> 10930depending on distortion correction capability and mode</p> 10931 </td> 10932 10933 <td class="entry_hal_version"> 10934 <p>3.<wbr/>2</p> 10935 </td> 10936 10937 <td class="entry_tags"> 10938 <ul class="entry_tags"> 10939 <li><a href="#tag_BC">BC</a></li> 10940 </ul> 10941 </td> 10942 10943 </tr> 10944 <tr class="entries_header"> 10945 <th class="th_details" colspan="6">Details</th> 10946 </tr> 10947 <tr class="entry_cont"> 10948 <td class="entry_details" colspan="6"> 10949 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 10950Otherwise will always be present.<wbr/></p> 10951<p>The maximum number of regions supported by the device is determined by the value 10952of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 10953<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 10954system 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 10955the top-left pixel in the active pixel array,<wbr/> and 10956(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 10957<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 10958active pixel array.<wbr/></p> 10959<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 10960system depends on the mode being set.<wbr/> 10961When the distortion correction mode is OFF,<wbr/> the coordinate system follows 10962<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 10963<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 10964(<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/> 10965<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 10966pixel in the pre-correction active pixel array.<wbr/> 10967When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 10968<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 10969<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 10970(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 10971<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 10972active pixel array.<wbr/></p> 10973<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 10974for every pixel in the area.<wbr/> This means that a large metering area 10975with the same weight as a smaller area will have more effect in 10976the metering result.<wbr/> Metering areas can partially overlap and the 10977camera device will add the weights in the overlap region.<wbr/></p> 10978<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 10979only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 109800 weight is ignored.<wbr/></p> 10981<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 10982camera device.<wbr/></p> 10983<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 10984capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 10985region and output only the intersection rectangle as the metering region in the result 10986metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 10987not reported in the result metadata.<wbr/></p> 10988<p>When setting the AWB metering regions,<wbr/> the application must consider the additional 10989crop resulted from the aspect ratio differences between the preview stream and 10990<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full 10991active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/> 10992the boundary of AWB regions will be [0,<wbr/> y_<wbr/>crop] and 10993[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and 10994[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio 10995mismatch.<wbr/></p> 10996<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 10997preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 10998pre-zoom field of view.<wbr/> This means that the same awbRegions values at different 10999<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The awbRegions 11000coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the 11001zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same 11002awbRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of 11003the scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use 11004activeArraySize or preCorrectionActiveArraySize still depends on distortion correction 11005mode.<wbr/></p> 11006<p>For camera devices with the 11007<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 11008capability or devices where 11009<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 11010lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> 11011<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 11012<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the 11013coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 11014<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 11015 </td> 11016 </tr> 11017 11018 <tr class="entries_header"> 11019 <th class="th_details" colspan="6">HAL Implementation Details</th> 11020 </tr> 11021 <tr class="entry_cont"> 11022 <td class="entry_details" colspan="6"> 11023 <p>The HAL level representation of MeteringRectangle[] is a 11024int[5 * area_<wbr/>count].<wbr/> 11025Every five elements represent a metering region of 11026(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 11027The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 11028exclusive on xmax and ymax.<wbr/> 11029HAL must always report metering regions in the coordinate system of pre-correction 11030active array.<wbr/></p> 11031 </td> 11032 </tr> 11033 11034 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11035 <!-- end of entry --> 11036 11037 11038 <tr class="entry" id="dynamic_android.control.captureIntent"> 11039 <td class="entry_name 11040 " rowspan="3"> 11041 android.<wbr/>control.<wbr/>capture<wbr/>Intent 11042 </td> 11043 <td class="entry_type"> 11044 <span class="entry_type_name entry_type_name_enum">byte</span> 11045 11046 <span class="entry_type_visibility"> [public]</span> 11047 11048 11049 <span class="entry_type_hwlevel">[legacy] </span> 11050 11051 11052 11053 <ul class="entry_type_enum"> 11054 <li> 11055 <span class="entry_type_enum_name">CUSTOM (v3.2)</span> 11056 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 11057categories.<wbr/> The camera device will default to preview-like 11058behavior.<wbr/></p></span> 11059 </li> 11060 <li> 11061 <span class="entry_type_enum_name">PREVIEW (v3.2)</span> 11062 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 11063<p>The precapture trigger may be used to start off a metering 11064w/<wbr/>flash sequence.<wbr/></p></span> 11065 </li> 11066 <li> 11067 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span> 11068 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 11069use case.<wbr/></p> 11070<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 11071 </li> 11072 <li> 11073 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span> 11074 <span class="entry_type_enum_notes"><p>This request is for a video recording 11075use case.<wbr/></p></span> 11076 </li> 11077 <li> 11078 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span> 11079 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 11080image while recording video) use case.<wbr/></p> 11081<p>The camera device should take the highest-quality image 11082possible (given the other settings) without disrupting the 11083frame rate of video recording.<wbr/> </p></span> 11084 </li> 11085 <li> 11086 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 11087 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 11088application will stream full-resolution images and 11089reprocess one or several later for a final 11090capture.<wbr/></p></span> 11091 </li> 11092 <li> 11093 <span class="entry_type_enum_name">MANUAL (v3.2)</span> 11094 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 11095the applications want to directly control the capture parameters.<wbr/></p> 11096<p>For example,<wbr/> the application may wish to manually control 11097<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> 11098 </li> 11099 <li> 11100 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> 11101 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where 11102the application will use camera and inertial sensor data to 11103locate and track objects in the world.<wbr/></p> 11104<p>The camera device auto-exposure routine will limit the exposure time 11105of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span> 11106 </li> 11107 </ul> 11108 11109 </td> <!-- entry_type --> 11110 11111 <td class="entry_description"> 11112 <p>Information to the camera device 3A (auto-exposure,<wbr/> 11113auto-focus,<wbr/> auto-white balance) routines about the purpose 11114of this capture,<wbr/> to help the camera device to decide optimal 3A 11115strategy.<wbr/></p> 11116 </td> 11117 11118 <td class="entry_units"> 11119 </td> 11120 11121 <td class="entry_range"> 11122 </td> 11123 11124 <td class="entry_hal_version"> 11125 <p>3.<wbr/>2</p> 11126 </td> 11127 11128 <td class="entry_tags"> 11129 <ul class="entry_tags"> 11130 <li><a href="#tag_BC">BC</a></li> 11131 </ul> 11132 </td> 11133 11134 </tr> 11135 <tr class="entries_header"> 11136 <th class="th_details" colspan="6">Details</th> 11137 </tr> 11138 <tr class="entry_cont"> 11139 <td class="entry_details" colspan="6"> 11140 <p>This control (except for MANUAL) is only effective if 11141<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 11142<p>All intents are supported by all devices,<wbr/> except that:</p> 11143<ul> 11144<li>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 11145PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/></li> 11146<li>MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 11147MANUAL_<wbr/>SENSOR.<wbr/></li> 11148<li>MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 11149MOTION_<wbr/>TRACKING.<wbr/></li> 11150</ul> 11151 </td> 11152 </tr> 11153 11154 11155 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11156 <!-- end of entry --> 11157 11158 11159 <tr class="entry" id="dynamic_android.control.awbState"> 11160 <td class="entry_name 11161 " rowspan="3"> 11162 android.<wbr/>control.<wbr/>awb<wbr/>State 11163 </td> 11164 <td class="entry_type"> 11165 <span class="entry_type_name entry_type_name_enum">byte</span> 11166 11167 <span class="entry_type_visibility"> [public]</span> 11168 11169 11170 <span class="entry_type_hwlevel">[limited] </span> 11171 11172 11173 11174 <ul class="entry_type_enum"> 11175 <li> 11176 <span class="entry_type_enum_name">INACTIVE (v3.2)</span> 11177 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> 11178<p>When a camera device is opened,<wbr/> it starts in this 11179state.<wbr/> This is a transient state,<wbr/> the camera device may 11180skip reporting this state in capture 11181result.<wbr/></p></span> 11182 </li> 11183 <li> 11184 <span class="entry_type_enum_name">SEARCHING (v3.2)</span> 11185 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 11186values for the current scene.<wbr/></p> 11187<p>This is a transient state,<wbr/> the camera device 11188may skip reporting this state in capture result.<wbr/></p></span> 11189 </li> 11190 <li> 11191 <span class="entry_type_enum_name">CONVERGED (v3.2)</span> 11192 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 11193current scene.<wbr/></p></span> 11194 </li> 11195 <li> 11196 <span class="entry_type_enum_name">LOCKED (v3.2)</span> 11197 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 11198 </li> 11199 </ul> 11200 11201 </td> <!-- entry_type --> 11202 11203 <td class="entry_description"> 11204 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p> 11205 </td> 11206 11207 <td class="entry_units"> 11208 </td> 11209 11210 <td class="entry_range"> 11211 </td> 11212 11213 <td class="entry_hal_version"> 11214 <p>3.<wbr/>2</p> 11215 </td> 11216 11217 <td class="entry_tags"> 11218 </td> 11219 11220 </tr> 11221 <tr class="entries_header"> 11222 <th class="th_details" colspan="6">Details</th> 11223 </tr> 11224 <tr class="entry_cont"> 11225 <td class="entry_details" colspan="6"> 11226 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 11227resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 11228or <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 11229the algorithm states to INACTIVE.<wbr/></p> 11230<p>The camera device can do several state transitions between two results,<wbr/> if it is 11231allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 11232a result.<wbr/></p> 11233<p>The state in the result is the state for this image (in sync with this image): if 11234AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 11235be good to use.<wbr/></p> 11236<p>Below are state transition tables for different AWB modes.<wbr/></p> 11237<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 11238<table> 11239<thead> 11240<tr> 11241<th style="text-align: center;">State</th> 11242<th style="text-align: center;">Transition Cause</th> 11243<th style="text-align: center;">New State</th> 11244<th style="text-align: center;">Notes</th> 11245</tr> 11246</thead> 11247<tbody> 11248<tr> 11249<td style="text-align: center;">INACTIVE</td> 11250<td style="text-align: center;"></td> 11251<td style="text-align: center;">INACTIVE</td> 11252<td style="text-align: center;">Camera device auto white balance algorithm is disabled</td> 11253</tr> 11254</tbody> 11255</table> 11256<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 11257<table> 11258<thead> 11259<tr> 11260<th style="text-align: center;">State</th> 11261<th style="text-align: center;">Transition Cause</th> 11262<th style="text-align: center;">New State</th> 11263<th style="text-align: center;">Notes</th> 11264</tr> 11265</thead> 11266<tbody> 11267<tr> 11268<td style="text-align: center;">INACTIVE</td> 11269<td style="text-align: center;">Camera device initiates AWB scan</td> 11270<td style="text-align: center;">SEARCHING</td> 11271<td style="text-align: center;">Values changing</td> 11272</tr> 11273<tr> 11274<td style="text-align: center;">INACTIVE</td> 11275<td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 11276<td style="text-align: center;">LOCKED</td> 11277<td style="text-align: center;">Values locked</td> 11278</tr> 11279<tr> 11280<td style="text-align: center;">SEARCHING</td> 11281<td style="text-align: center;">Camera device finishes AWB scan</td> 11282<td style="text-align: center;">CONVERGED</td> 11283<td style="text-align: center;">Good values,<wbr/> not changing</td> 11284</tr> 11285<tr> 11286<td style="text-align: center;">SEARCHING</td> 11287<td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 11288<td style="text-align: center;">LOCKED</td> 11289<td style="text-align: center;">Values locked</td> 11290</tr> 11291<tr> 11292<td style="text-align: center;">CONVERGED</td> 11293<td style="text-align: center;">Camera device initiates AWB scan</td> 11294<td style="text-align: center;">SEARCHING</td> 11295<td style="text-align: center;">Values changing</td> 11296</tr> 11297<tr> 11298<td style="text-align: center;">CONVERGED</td> 11299<td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 11300<td style="text-align: center;">LOCKED</td> 11301<td style="text-align: center;">Values locked</td> 11302</tr> 11303<tr> 11304<td style="text-align: center;">LOCKED</td> 11305<td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 11306<td style="text-align: center;">SEARCHING</td> 11307<td style="text-align: center;">Values not good after unlock</td> 11308</tr> 11309</tbody> 11310</table> 11311<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 11312without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 11313can be skipped in that manner is called a transient state.<wbr/></p> 11314<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 11315listed in above table,<wbr/> it is also legal for the camera device to skip one or more 11316transient states between two results.<wbr/> See below table for examples:</p> 11317<table> 11318<thead> 11319<tr> 11320<th style="text-align: center;">State</th> 11321<th style="text-align: center;">Transition Cause</th> 11322<th style="text-align: center;">New State</th> 11323<th style="text-align: center;">Notes</th> 11324</tr> 11325</thead> 11326<tbody> 11327<tr> 11328<td style="text-align: center;">INACTIVE</td> 11329<td style="text-align: center;">Camera device finished AWB scan</td> 11330<td style="text-align: center;">CONVERGED</td> 11331<td style="text-align: center;">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 11332</tr> 11333<tr> 11334<td style="text-align: center;">LOCKED</td> 11335<td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 11336<td style="text-align: center;">CONVERGED</td> 11337<td style="text-align: center;">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 11338</tr> 11339</tbody> 11340</table> 11341 </td> 11342 </tr> 11343 11344 11345 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11346 <!-- end of entry --> 11347 11348 11349 <tr class="entry" id="dynamic_android.control.effectMode"> 11350 <td class="entry_name 11351 " rowspan="3"> 11352 android.<wbr/>control.<wbr/>effect<wbr/>Mode 11353 </td> 11354 <td class="entry_type"> 11355 <span class="entry_type_name entry_type_name_enum">byte</span> 11356 11357 <span class="entry_type_visibility"> [public]</span> 11358 11359 11360 <span class="entry_type_hwlevel">[legacy] </span> 11361 11362 11363 11364 <ul class="entry_type_enum"> 11365 <li> 11366 <span class="entry_type_enum_name">OFF (v3.2)</span> 11367 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 11368 </li> 11369 <li> 11370 <span class="entry_type_enum_name">MONO (v3.2)</span> 11371 <span class="entry_type_enum_optional">[optional]</span> 11372 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 11373a single color.<wbr/></p> 11374<p>This will typically be grayscale.<wbr/></p></span> 11375 </li> 11376 <li> 11377 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span> 11378 <span class="entry_type_enum_optional">[optional]</span> 11379 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 11380are inverted.<wbr/></p></span> 11381 </li> 11382 <li> 11383 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span> 11384 <span class="entry_type_enum_optional">[optional]</span> 11385 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 11386image is wholly or partially reversed in 11387tone.<wbr/></p></span> 11388 </li> 11389 <li> 11390 <span class="entry_type_enum_name">SEPIA (v3.2)</span> 11391 <span class="entry_type_enum_optional">[optional]</span> 11392 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 11393gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 11394 </li> 11395 <li> 11396 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span> 11397 <span class="entry_type_enum_optional">[optional]</span> 11398 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 11399discrete regions of tone rather than a continuous 11400gradient of tones.<wbr/></p></span> 11401 </li> 11402 <li> 11403 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span> 11404 <span class="entry_type_enum_optional">[optional]</span> 11405 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 11406as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 11407 </li> 11408 <li> 11409 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span> 11410 <span class="entry_type_enum_optional">[optional]</span> 11411 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 11412as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 11413 </li> 11414 <li> 11415 <span class="entry_type_enum_name">AQUA (v3.2)</span> 11416 <span class="entry_type_enum_optional">[optional]</span> 11417 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 11418 </li> 11419 </ul> 11420 11421 </td> <!-- entry_type --> 11422 11423 <td class="entry_description"> 11424 <p>A special color effect to apply.<wbr/></p> 11425 </td> 11426 11427 <td class="entry_units"> 11428 </td> 11429 11430 <td class="entry_range"> 11431 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 11432 </td> 11433 11434 <td class="entry_hal_version"> 11435 <p>3.<wbr/>2</p> 11436 </td> 11437 11438 <td class="entry_tags"> 11439 <ul class="entry_tags"> 11440 <li><a href="#tag_BC">BC</a></li> 11441 </ul> 11442 </td> 11443 11444 </tr> 11445 <tr class="entries_header"> 11446 <th class="th_details" colspan="6">Details</th> 11447 </tr> 11448 <tr class="entry_cont"> 11449 <td class="entry_details" colspan="6"> 11450 <p>When this mode is set,<wbr/> a color effect will be applied 11451to images produced by the camera device.<wbr/> The interpretation 11452and implementation of these color effects is left to the 11453implementor of the camera device,<wbr/> and should not be 11454depended on to be consistent (or present) across all 11455devices.<wbr/></p> 11456 </td> 11457 </tr> 11458 11459 11460 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11461 <!-- end of entry --> 11462 11463 11464 <tr class="entry" id="dynamic_android.control.mode"> 11465 <td class="entry_name 11466 " rowspan="3"> 11467 android.<wbr/>control.<wbr/>mode 11468 </td> 11469 <td class="entry_type"> 11470 <span class="entry_type_name entry_type_name_enum">byte</span> 11471 11472 <span class="entry_type_visibility"> [public]</span> 11473 11474 11475 <span class="entry_type_hwlevel">[legacy] </span> 11476 11477 11478 11479 <ul class="entry_type_enum"> 11480 <li> 11481 <span class="entry_type_enum_name">OFF (v3.2)</span> 11482 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 11483<p>All control by the device's metering and focusing (3A) 11484routines is disabled,<wbr/> and no other settings in 11485android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 11486<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 11487device to select post-processing values for processing 11488blocks that do not allow for manual control,<wbr/> or are not 11489exposed by the camera API.<wbr/></p> 11490<p>However,<wbr/> the camera device's 3A routines may continue to 11491collect statistics and update their internal state so that 11492when control is switched to AUTO mode,<wbr/> good control values 11493can be immediately applied.<wbr/></p></span> 11494 </li> 11495 <li> 11496 <span class="entry_type_enum_name">AUTO (v3.2)</span> 11497 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 11498<p>Manual control of capture parameters is disabled.<wbr/> All 11499controls in android.<wbr/>control.<wbr/>* besides sceneMode take 11500effect.<wbr/></p></span> 11501 </li> 11502 <li> 11503 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span> 11504 <span class="entry_type_enum_optional">[optional]</span> 11505 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 11506<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 11507control.<wbr/>afMode controls; the camera device will ignore 11508those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 11509FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 11510This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 11511<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 11512contain some modes other than DISABLED).<wbr/></p> 11513<p>For extended scene modes such as BOKEH,<wbr/> please use USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE instead.<wbr/></p></span> 11514 </li> 11515 <li> 11516 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span> 11517 <span class="entry_type_enum_optional">[optional]</span> 11518 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 11519used by camera device background auto-exposure,<wbr/> auto-white balance and 11520auto-focus algorithms (3A) to update their statistics.<wbr/></p> 11521<p>Specifically,<wbr/> the 3A routines are locked to the last 11522values set from a request with AUTO,<wbr/> OFF,<wbr/> or 11523USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 11524collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 11525discarded by the camera device.<wbr/></p></span> 11526 </li> 11527 <li> 11528 <span class="entry_type_enum_name">USE_EXTENDED_SCENE_MODE (v3.5)</span> 11529 <span class="entry_type_enum_optional">[optional]</span> 11530 <span class="entry_type_enum_notes"><p>Use a specific extended scene mode.<wbr/></p> 11531<p>When extended scene mode is on,<wbr/> the camera device may override certain control 11532parameters,<wbr/> such as targetFpsRange,<wbr/> AE,<wbr/> AWB,<wbr/> and AF modes,<wbr/> to achieve best power and 11533quality tradeoffs.<wbr/> Only the mandatory stream combinations of LIMITED hardware level 11534are guaranteed.<wbr/></p> 11535<p>This setting can only be used if extended scene mode is supported (i.<wbr/>e.<wbr/> 11536android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Modes 11537contains some modes other than DISABLED).<wbr/></p></span> 11538 </li> 11539 </ul> 11540 11541 </td> <!-- entry_type --> 11542 11543 <td class="entry_description"> 11544 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 11545routines.<wbr/></p> 11546 </td> 11547 11548 <td class="entry_units"> 11549 </td> 11550 11551 <td class="entry_range"> 11552 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 11553 </td> 11554 11555 <td class="entry_hal_version"> 11556 <p>3.<wbr/>2</p> 11557 </td> 11558 11559 <td class="entry_tags"> 11560 <ul class="entry_tags"> 11561 <li><a href="#tag_BC">BC</a></li> 11562 </ul> 11563 </td> 11564 11565 </tr> 11566 <tr class="entries_header"> 11567 <th class="th_details" colspan="6">Details</th> 11568 </tr> 11569 <tr class="entry_cont"> 11570 <td class="entry_details" colspan="6"> 11571 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 11572by the camera device is disabled.<wbr/> The application must set the fields for 11573capture parameters itself.<wbr/></p> 11574<p>When set to AUTO,<wbr/> the individual algorithm controls in 11575android.<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> 11576<p>When set to USE_<wbr/>SCENE_<wbr/>MODE or USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 11577android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device 11578implements one of the scene mode or extended scene mode settings (such as ACTION,<wbr/> 11579SUNSET,<wbr/> PARTY,<wbr/> or BOKEH) as it wishes.<wbr/> The camera device scene mode 115803A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 11581<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 11582is that this frame will not be used by camera device background 3A statistics 11583update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 11584where the application doesn't want a 3A manual control capture to affect 11585the subsequent auto 3A capture results.<wbr/></p> 11586 </td> 11587 </tr> 11588 11589 11590 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11591 <!-- end of entry --> 11592 11593 11594 <tr class="entry" id="dynamic_android.control.sceneMode"> 11595 <td class="entry_name 11596 " rowspan="5"> 11597 android.<wbr/>control.<wbr/>scene<wbr/>Mode 11598 </td> 11599 <td class="entry_type"> 11600 <span class="entry_type_name entry_type_name_enum">byte</span> 11601 11602 <span class="entry_type_visibility"> [public]</span> 11603 11604 11605 <span class="entry_type_hwlevel">[legacy] </span> 11606 11607 11608 11609 <ul class="entry_type_enum"> 11610 <li> 11611 <span class="entry_type_enum_name">DISABLED (v3.2)</span> 11612 <span class="entry_type_enum_value">0</span> 11613 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 11614 </li> 11615 <li> 11616 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span> 11617 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 11618detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 11619auto-exposure routines.<wbr/></p> 11620<p>If face detection statistics are disabled 11621(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/> 11622this should still operate correctly (but will not return 11623face detection statistics to the framework).<wbr/></p> 11624<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 11625<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> 11626remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 11627 </li> 11628 <li> 11629 <span class="entry_type_enum_name">ACTION (v3.2)</span> 11630 <span class="entry_type_enum_optional">[optional]</span> 11631 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 11632<p>Similar to SPORTS.<wbr/></p></span> 11633 </li> 11634 <li> 11635 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span> 11636 <span class="entry_type_enum_optional">[optional]</span> 11637 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 11638 </li> 11639 <li> 11640 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span> 11641 <span class="entry_type_enum_optional">[optional]</span> 11642 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 11643 </li> 11644 <li> 11645 <span class="entry_type_enum_name">NIGHT (v3.2)</span> 11646 <span class="entry_type_enum_optional">[optional]</span> 11647 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 11648 </li> 11649 <li> 11650 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span> 11651 <span class="entry_type_enum_optional">[optional]</span> 11652 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 11653settings.<wbr/></p></span> 11654 </li> 11655 <li> 11656 <span class="entry_type_enum_name">THEATRE (v3.2)</span> 11657 <span class="entry_type_enum_optional">[optional]</span> 11658 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 11659remain off.<wbr/></p></span> 11660 </li> 11661 <li> 11662 <span class="entry_type_enum_name">BEACH (v3.2)</span> 11663 <span class="entry_type_enum_optional">[optional]</span> 11664 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 11665 </li> 11666 <li> 11667 <span class="entry_type_enum_name">SNOW (v3.2)</span> 11668 <span class="entry_type_enum_optional">[optional]</span> 11669 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 11670 </li> 11671 <li> 11672 <span class="entry_type_enum_name">SUNSET (v3.2)</span> 11673 <span class="entry_type_enum_optional">[optional]</span> 11674 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 11675 </li> 11676 <li> 11677 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span> 11678 <span class="entry_type_enum_optional">[optional]</span> 11679 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 11680device motion (for example: due to hand shake).<wbr/></p></span> 11681 </li> 11682 <li> 11683 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span> 11684 <span class="entry_type_enum_optional">[optional]</span> 11685 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 11686 </li> 11687 <li> 11688 <span class="entry_type_enum_name">SPORTS (v3.2)</span> 11689 <span class="entry_type_enum_optional">[optional]</span> 11690 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 11691<p>Similar to ACTION.<wbr/></p></span> 11692 </li> 11693 <li> 11694 <span class="entry_type_enum_name">PARTY (v3.2)</span> 11695 <span class="entry_type_enum_optional">[optional]</span> 11696 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 11697people.<wbr/></p></span> 11698 </li> 11699 <li> 11700 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span> 11701 <span class="entry_type_enum_optional">[optional]</span> 11702 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 11703is a candle.<wbr/></p></span> 11704 </li> 11705 <li> 11706 <span class="entry_type_enum_name">BARCODE (v3.2)</span> 11707 <span class="entry_type_enum_optional">[optional]</span> 11708 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 11709for use by camera applications that wish to read the 11710barcode value.<wbr/></p></span> 11711 </li> 11712 <li> 11713 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span> 11714 <span class="entry_type_enum_deprecated">[deprecated]</span> 11715 <span class="entry_type_enum_optional">[optional]</span> 11716 <span class="entry_type_enum_hidden">[java_public]</span> 11717 <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> 11718and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 11719for high speed video recording.<wbr/></p> 11720<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 11721<p>The supported high speed video sizes and fps ranges are specified in 11722<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 11723output frame rates,<wbr/> the application is only allowed to select video size 11724and fps range combinations listed in this static metadata.<wbr/> The fps range 11725can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 11726<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 11727ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 11728controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 11729and post-processing parameters is possible.<wbr/> All other controls operate the 11730same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 11731android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 11732<ul> 11733<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 11734<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 11735<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 11736<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 11737<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 11738<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 11739<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 11740<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 11741<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 11742<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 11743<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li> 11744</ul> 11745<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 11746<ul> 11747<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> 11748<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 11749<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 11750<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 11751</ul> 11752<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 11753be lower than what camera can output,<wbr/> depending on the destination Surfaces for 11754the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 11755the application need check if the video encoder is capable of supporting the 11756high frame rate for a given video size,<wbr/> or it will end up with lower recording 11757frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 11758rate will be bounded by the screen refresh rate.<wbr/></p> 11759<p>The camera device will only support up to 2 output high speed streams 11760(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 11761in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 11762<ul> 11763<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 11764format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 11765min(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> 11766<li>The stream sizes are selected from the sizes reported by 11767<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 11768<li>No processed non-stalling or raw streams are configured.<wbr/></li> 11769</ul> 11770<p>When above conditions are NOT satisfied,<wbr/> the controls of this mode and 11771<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/> 11772the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 11773and the returned capture result metadata will give the fps range chosen 11774by the camera device.<wbr/></p> 11775<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 11776reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 11777the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 11778 </li> 11779 <li> 11780 <span class="entry_type_enum_name">HDR (v3.2)</span> 11781 <span class="entry_type_enum_optional">[optional]</span> 11782 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 11783<p>In this scene mode,<wbr/> the camera device captures images 11784that keep a larger range of scene illumination levels 11785visible in the final image.<wbr/> For example,<wbr/> when taking a 11786picture of a object in front of a bright window,<wbr/> both 11787the object and the scene through the window may be 11788visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 11789one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 11790HDR mode generally takes much longer to capture a single 11791image,<wbr/> has no user control,<wbr/> and may have other artifacts 11792depending on the HDR method used.<wbr/></p> 11793<p>Therefore,<wbr/> HDR captures operate at a much slower rate 11794than regular captures.<wbr/></p> 11795<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 11796is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 11797STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 11798using a high dynamic range capture technique.<wbr/> On LEGACY 11799devices,<wbr/> captures that target a JPEG-format output will 11800be captured with HDR,<wbr/> and the capture intent is not 11801relevant.<wbr/></p> 11802<p>The HDR capture may involve the device capturing a burst 11803of images internally and combining them into one,<wbr/> or it 11804may involve the device using specialized high dynamic 11805range capture hardware.<wbr/> In all cases,<wbr/> a single image is 11806produced in response to a capture request submitted 11807while in HDR mode.<wbr/></p> 11808<p>Since substantial post-processing is generally needed to 11809produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG 11810outputs are supported for LIMITED/<wbr/>FULL device HDR 11811captures,<wbr/> and only JPEG outputs are supported for LEGACY 11812HDR captures.<wbr/> Using a RAW output for HDR capture is not 11813supported.<wbr/></p> 11814<p>Some devices may also support always-on HDR,<wbr/> which 11815applies HDR processing at full frame rate.<wbr/> For these 11816devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also 11817produce an HDR output with no frame rate impact compared 11818to normal operation,<wbr/> though the quality may be lower 11819than for STILL_<wbr/>CAPTURE intents.<wbr/></p> 11820<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types 11821or capture intents,<wbr/> the images captured will be as if 11822the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> 11823 </li> 11824 <li> 11825 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span> 11826 <span class="entry_type_enum_optional">[optional]</span> 11827 <span class="entry_type_enum_hidden">[hidden]</span> 11828 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 11829device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 11830under low light conditions.<wbr/></p> 11831<p>The camera device may be tuned to expose the images in a reduced 11832sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 11833if 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/> 11834the camera device auto-exposure routine tuning process may limit the actual 11835exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 11836excessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 11837low light may be under-exposed when the sensor max exposure time (bounded by the 11838<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 11839ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 11840camera device auto-exposure routine to increase the sensitivity up to the max 11841sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 11842dark and the max exposure time is reached.<wbr/> The captured images may be noisier 11843compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 11844recommended that the application only use this scene mode when it is capable of 11845reducing the noise level of the captured images.<wbr/></p> 11846<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 11847<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> 11848remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 11849 </li> 11850 <li> 11851 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span> 11852 <span class="entry_type_enum_optional">[optional]</span> 11853 <span class="entry_type_enum_hidden">[hidden]</span> 11854 <span class="entry_type_enum_value">100</span> 11855 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 11856<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 11857customized scene modes.<wbr/></p></span> 11858 </li> 11859 <li> 11860 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span> 11861 <span class="entry_type_enum_optional">[optional]</span> 11862 <span class="entry_type_enum_hidden">[hidden]</span> 11863 <span class="entry_type_enum_value">127</span> 11864 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 11865<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 11866customized scene modes.<wbr/></p></span> 11867 </li> 11868 </ul> 11869 11870 </td> <!-- entry_type --> 11871 11872 <td class="entry_description"> 11873 <p>Control for which scene mode is currently active.<wbr/></p> 11874 </td> 11875 11876 <td class="entry_units"> 11877 </td> 11878 11879 <td class="entry_range"> 11880 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 11881 </td> 11882 11883 <td class="entry_hal_version"> 11884 <p>3.<wbr/>2</p> 11885 </td> 11886 11887 <td class="entry_tags"> 11888 <ul class="entry_tags"> 11889 <li><a href="#tag_BC">BC</a></li> 11890 </ul> 11891 </td> 11892 11893 </tr> 11894 <tr class="entries_header"> 11895 <th class="th_details" colspan="6">Details</th> 11896 </tr> 11897 <tr class="entry_cont"> 11898 <td class="entry_details" colspan="6"> 11899 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 11900capture settings.<wbr/></p> 11901<p>This is the mode that that is active when 11902<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 11903disable <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> 11904while in use.<wbr/></p> 11905<p>The interpretation and implementation of these scene modes is left 11906to the implementor of the camera device.<wbr/> Their behavior will not be 11907consistent across all devices,<wbr/> and any given device may only implement 11908a subset of these modes.<wbr/></p> 11909 </td> 11910 </tr> 11911 11912 <tr class="entries_header"> 11913 <th class="th_details" colspan="6">HAL Implementation Details</th> 11914 </tr> 11915 <tr class="entry_cont"> 11916 <td class="entry_details" colspan="6"> 11917 <p>HAL implementations that include scene modes are expected to provide 11918the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 11919<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 11920<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 11921<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 11922HAL must list supported video size and fps range in 11923<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/> 11924if the HAL has two different sensor configurations for normal streaming mode and high 11925speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the 11926HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy 11927HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 11928<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 11929capability defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 11930 </td> 11931 </tr> 11932 11933 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11934 <!-- end of entry --> 11935 11936 11937 <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> 11938 <td class="entry_name 11939 " rowspan="5"> 11940 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 11941 </td> 11942 <td class="entry_type"> 11943 <span class="entry_type_name entry_type_name_enum">byte</span> 11944 11945 <span class="entry_type_visibility"> [public]</span> 11946 11947 11948 <span class="entry_type_hwlevel">[legacy] </span> 11949 11950 11951 11952 <ul class="entry_type_enum"> 11953 <li> 11954 <span class="entry_type_enum_name">OFF (v3.2)</span> 11955 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 11956 </li> 11957 <li> 11958 <span class="entry_type_enum_name">ON (v3.2)</span> 11959 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 11960 </li> 11961 <li> 11962 <span class="entry_type_enum_name">PREVIEW_STABILIZATION (v3.8)</span> 11963 <span class="entry_type_enum_optional">[optional]</span> 11964 <span class="entry_type_enum_notes"><p>Preview stabilization,<wbr/> where the preview in addition to all other non-RAW streams are 11965stabilized with the same quality of stabilization,<wbr/> is enabled.<wbr/> This mode aims to give 11966clients a 'what you see is what you get' effect.<wbr/> In this mode,<wbr/> the FoV reduction will 11967be a maximum of 20 % both horizontally and vertically 11968(10% from left,<wbr/> right,<wbr/> top,<wbr/> bottom) for the given zoom ratio /<wbr/> crop region.<wbr/> 11969The resultant FoV will also be the same across all processed streams 11970(that have the same aspect ratio).<wbr/></p></span> 11971 </li> 11972 </ul> 11973 11974 </td> <!-- entry_type --> 11975 11976 <td class="entry_description"> 11977 <p>Whether video stabilization is 11978active.<wbr/></p> 11979 </td> 11980 11981 <td class="entry_units"> 11982 </td> 11983 11984 <td class="entry_range"> 11985 </td> 11986 11987 <td class="entry_hal_version"> 11988 <p>3.<wbr/>2</p> 11989 </td> 11990 11991 <td class="entry_tags"> 11992 <ul class="entry_tags"> 11993 <li><a href="#tag_BC">BC</a></li> 11994 </ul> 11995 </td> 11996 11997 </tr> 11998 <tr class="entries_header"> 11999 <th class="th_details" colspan="6">Details</th> 12000 </tr> 12001 <tr class="entry_cont"> 12002 <td class="entry_details" colspan="6"> 12003 <p>Video stabilization automatically warps images from 12004the camera in order to stabilize motion between consecutive frames.<wbr/></p> 12005<p>If enabled,<wbr/> video stabilization can modify the 12006<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 12007<p>Switching between different video stabilization modes may take several 12008frames to initialize,<wbr/> the camera device will report the current mode 12009in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 12010the video stabilization modes in the first several capture results may 12011still be "OFF",<wbr/> and it will become "ON" when the initialization is 12012done.<wbr/></p> 12013<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 12014stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 12015that an output targeting a MediaRecorder or MediaCodec will be stabilized if 12016the recording resolution is less than or equal to 1920 x 1080 (width less than 12017or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 12018frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 12019<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 12020OFF if the recording output is not stabilized,<wbr/> or if there are no output 12021Surface types that can be stabilized.<wbr/></p> 12022<p>The application is strongly recommended to call 12023<a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a> 12024with the desired video stabilization mode before creating the capture session.<wbr/> 12025Video stabilization mode is a session parameter on many devices.<wbr/> Specifying 12026it at session creation time helps avoid reconfiguration delay caused by difference 12027between the default value and the first CaptureRequest.<wbr/></p> 12028<p>If a camera device supports both this mode and OIS 12029(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 12030produce undesirable interaction,<wbr/> so it is recommended not to enable 12031both at the same time.<wbr/></p> 12032<p>If video stabilization is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/> 12033<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose 12034to turn on hardware based image stabilization in addition to software based stabilization 12035if it deems that appropriate.<wbr/> 12036This key may be a part of the available session keys,<wbr/> which camera clients may 12037query via 12038<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/> 12039If this is the case,<wbr/> changing this key over the life-time of a capture session may 12040cause delays /<wbr/> glitches.<wbr/></p> 12041 </td> 12042 </tr> 12043 12044 <tr class="entries_header"> 12045 <th class="th_details" colspan="6">HAL Implementation Details</th> 12046 </tr> 12047 <tr class="entry_cont"> 12048 <td class="entry_details" colspan="6"> 12049 <p>When this key is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/> 12050for non-stalling buffers returned without errors,<wbr/> the time interval between notify readout 12051timestamp and when buffers are returned to the camera framework,<wbr/> must be no more than 1 12052extra frame interval,<wbr/> relative to the case where this key is set to "OFF".<wbr/></p> 12053<p>This is in order for look-ahead time period to be short enough 12054for preview to match video recording for real-time usage.<wbr/></p> 12055 </td> 12056 </tr> 12057 12058 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12059 <!-- end of entry --> 12060 12061 12062 <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost"> 12063 <td class="entry_name 12064 " rowspan="3"> 12065 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost 12066 </td> 12067 <td class="entry_type"> 12068 <span class="entry_type_name">int32</span> 12069 12070 <span class="entry_type_visibility"> [public]</span> 12071 12072 12073 12074 12075 12076 12077 </td> <!-- entry_type --> 12078 12079 <td class="entry_description"> 12080 <p>The amount of additional sensitivity boost applied to output images 12081after RAW sensor data is captured.<wbr/></p> 12082 </td> 12083 12084 <td class="entry_units"> 12085 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 12086 </td> 12087 12088 <td class="entry_range"> 12089 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p> 12090 </td> 12091 12092 <td class="entry_hal_version"> 12093 <p>3.<wbr/>2</p> 12094 </td> 12095 12096 <td class="entry_tags"> 12097 </td> 12098 12099 </tr> 12100 <tr class="entries_header"> 12101 <th class="th_details" colspan="6">Details</th> 12102 </tr> 12103 <tr class="entry_cont"> 12104 <td class="entry_details" colspan="6"> 12105 <p>Some camera devices support additional digital sensitivity boosting in the 12106camera processing pipeline after sensor RAW image is captured.<wbr/> 12107Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not 12108have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> 12109<p>This key will be <code>null</code> for devices that do not support any RAW format 12110outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 12111present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 12112list <code>100</code> in this key.<wbr/></p> 12113<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the 12114boost to the nearest supported value.<wbr/> 12115The final boost value used will be available in the output capture result.<wbr/></p> 12116<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images 12117of such device will have the total sensitivity of 12118<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> 12119The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> 12120<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 12121OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 12122 </td> 12123 </tr> 12124 12125 12126 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12127 <!-- end of entry --> 12128 12129 12130 <tr class="entry" id="dynamic_android.control.enableZsl"> 12131 <td class="entry_name 12132 " rowspan="5"> 12133 android.<wbr/>control.<wbr/>enable<wbr/>Zsl 12134 </td> 12135 <td class="entry_type"> 12136 <span class="entry_type_name entry_type_name_enum">byte</span> 12137 12138 <span class="entry_type_visibility"> [public as boolean]</span> 12139 12140 12141 12142 12143 12144 <ul class="entry_type_enum"> 12145 <li> 12146 <span class="entry_type_enum_name">FALSE (v3.2)</span> 12147 <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 12148after previous requests.<wbr/></p></span> 12149 </li> 12150 <li> 12151 <span class="entry_type_enum_name">TRUE (v3.2)</span> 12152 <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 12153captured before previous requests.<wbr/></p></span> 12154 </li> 12155 </ul> 12156 12157 </td> <!-- entry_type --> 12158 12159 <td class="entry_description"> 12160 <p>Allow camera device to enable zero-shutter-lag mode for requests with 12161<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p> 12162 </td> 12163 12164 <td class="entry_units"> 12165 </td> 12166 12167 <td class="entry_range"> 12168 </td> 12169 12170 <td class="entry_hal_version"> 12171 <p>3.<wbr/>2</p> 12172 </td> 12173 12174 <td class="entry_tags"> 12175 </td> 12176 12177 </tr> 12178 <tr class="entries_header"> 12179 <th class="th_details" colspan="6">Details</th> 12180 </tr> 12181 <tr class="entry_cont"> 12182 <td class="entry_details" colspan="6"> 12183 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with 12184STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to 12185produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the 12186<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/> 12187Therefore,<wbr/> the contents of the output images and the result metadata may be out of order 12188compared to previous regular requests.<wbr/> enableZsl does not affect requests with other 12189capture intents.<wbr/></p> 12190<p>For example,<wbr/> when requests are submitted in the following order: 12191 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW 12192 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> 12193<p>The output images for request B may have contents captured before the output images for 12194request A,<wbr/> and the result metadata for request B may be older than the result metadata for 12195request A.<wbr/></p> 12196<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in 12197the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p> 12198<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in 12199TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always 12200<code>false</code> if present.<wbr/></p> 12201<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all 12202capture templates is always <code>false</code> if present.<wbr/></p> 12203<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p> 12204 </td> 12205 </tr> 12206 12207 <tr class="entries_header"> 12208 <th class="th_details" colspan="6">HAL Implementation Details</th> 12209 </tr> 12210 <tr class="entry_cont"> 12211 <td class="entry_details" colspan="6"> 12212 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE 12213capture intent.<wbr/></p> 12214 </td> 12215 </tr> 12216 12217 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12218 <!-- end of entry --> 12219 12220 12221 <tr class="entry" id="dynamic_android.control.afSceneChange"> 12222 <td class="entry_name 12223 " rowspan="3"> 12224 android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change 12225 </td> 12226 <td class="entry_type"> 12227 <span class="entry_type_name entry_type_name_enum">byte</span> 12228 12229 <span class="entry_type_visibility"> [public]</span> 12230 12231 12232 12233 12234 12235 <ul class="entry_type_enum"> 12236 <li> 12237 <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span> 12238 <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span> 12239 </li> 12240 <li> 12241 <span class="entry_type_enum_name">DETECTED (v3.3)</span> 12242 <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span> 12243 </li> 12244 </ul> 12245 12246 </td> <!-- entry_type --> 12247 12248 <td class="entry_description"> 12249 <p>Whether a significant scene change is detected within the currently-set AF 12250region(s).<wbr/></p> 12251 </td> 12252 12253 <td class="entry_units"> 12254 </td> 12255 12256 <td class="entry_range"> 12257 </td> 12258 12259 <td class="entry_hal_version"> 12260 <p>3.<wbr/>3</p> 12261 </td> 12262 12263 <td class="entry_tags"> 12264 </td> 12265 12266 </tr> 12267 <tr class="entries_header"> 12268 <th class="th_details" colspan="6">Details</th> 12269 </tr> 12270 <tr class="entry_cont"> 12271 <td class="entry_details" colspan="6"> 12272 <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/> 12273such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a 12274significant illumination change,<wbr/> this value will be set to DETECTED for a single capture 12275result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar 12276to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p> 12277<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> 12278 </td> 12279 </tr> 12280 12281 12282 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12283 <!-- end of entry --> 12284 12285 12286 <tr class="entry" id="dynamic_android.control.extendedSceneMode"> 12287 <td class="entry_name 12288 " rowspan="3"> 12289 android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode 12290 </td> 12291 <td class="entry_type"> 12292 <span class="entry_type_name entry_type_name_enum">byte</span> 12293 12294 <span class="entry_type_visibility"> [public]</span> 12295 12296 12297 12298 12299 12300 <ul class="entry_type_enum"> 12301 <li> 12302 <span class="entry_type_enum_name">DISABLED (v3.5)</span> 12303 <span class="entry_type_enum_value">0</span> 12304 <span class="entry_type_enum_notes"><p>Extended scene mode is disabled.<wbr/></p></span> 12305 </li> 12306 <li> 12307 <span class="entry_type_enum_name">BOKEH_STILL_CAPTURE (v3.5)</span> 12308 <span class="entry_type_enum_notes"><p>High quality bokeh mode is enabled for all non-raw streams (including YUV,<wbr/> 12309JPEG,<wbr/> and IMPLEMENTATION_<wbr/>DEFINED) when capture intent is STILL_<wbr/>CAPTURE.<wbr/> Due to the 12310extra image processing,<wbr/> this mode may introduce additional stall to non-raw streams.<wbr/> 12311This mode should be used in high quality still capture use case.<wbr/></p></span> 12312 </li> 12313 <li> 12314 <span class="entry_type_enum_name">BOKEH_CONTINUOUS (v3.5)</span> 12315 <span class="entry_type_enum_notes"><p>Bokeh effect must not slow down capture rate relative to sensor raw output,<wbr/> 12316and the effect is applied to all processed streams no larger than the maximum 12317streaming dimension.<wbr/> This mode should be used if performance and power are a 12318priority,<wbr/> such as video recording.<wbr/></p></span> 12319 </li> 12320 <li> 12321 <span class="entry_type_enum_name">VENDOR_START (v3.5)</span> 12322 <span class="entry_type_enum_hidden">[hidden]</span> 12323 <span class="entry_type_enum_value">0x40</span> 12324 <span class="entry_type_enum_notes"><p>Vendor defined extended scene modes.<wbr/> These depend on vendor implementation.<wbr/></p></span> 12325 </li> 12326 </ul> 12327 12328 </td> <!-- entry_type --> 12329 12330 <td class="entry_description"> 12331 <p>Whether extended scene mode is enabled for a particular capture request.<wbr/></p> 12332 </td> 12333 12334 <td class="entry_units"> 12335 </td> 12336 12337 <td class="entry_range"> 12338 </td> 12339 12340 <td class="entry_hal_version"> 12341 <p>3.<wbr/>5</p> 12342 </td> 12343 12344 <td class="entry_tags"> 12345 </td> 12346 12347 </tr> 12348 <tr class="entries_header"> 12349 <th class="th_details" colspan="6">Details</th> 12350 </tr> 12351 <tr class="entry_cont"> 12352 <td class="entry_details" colspan="6"> 12353 <p>With bokeh mode,<wbr/> the camera device may blur out the parts of scene that are not in 12354focus,<wbr/> creating a bokeh (or shallow depth of field) effect for people or objects.<wbr/></p> 12355<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with STILL_<wbr/>CAPTURE capture intent,<wbr/> due to the extra 12356processing needed for high quality bokeh effect,<wbr/> the stall may be longer than when 12357capture intent is not STILL_<wbr/>CAPTURE.<wbr/></p> 12358<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with PREVIEW capture intent,<wbr/></p> 12359<ul> 12360<li>If the camera device has BURST_<wbr/>CAPTURE capability,<wbr/> the frame rate requirement of 12361BURST_<wbr/>CAPTURE must still be met.<wbr/></li> 12362<li>All streams not larger than the maximum streaming dimension for BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode 12363(queried via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_CAPABILITIES">Camera<wbr/>Characteristics#CONTROL_<wbr/>AVAILABLE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE_<wbr/>CAPABILITIES</a>) 12364will have preview bokeh effect applied.<wbr/></li> 12365</ul> 12366<p>When set to BOKEH_<wbr/>CONTINUOUS mode,<wbr/> configured streams dimension should not exceed this mode's 12367maximum streaming dimension in order to have bokeh effect applied.<wbr/> Bokeh effect may not 12368be available for streams larger than the maximum streaming dimension.<wbr/></p> 12369<p>Switching between different extended scene modes may involve reconfiguration of the camera 12370pipeline,<wbr/> resulting in long latency.<wbr/> The application should check this key against the 12371available session keys queried via 12372<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p> 12373<p>For a logical multi-camera,<wbr/> bokeh may be implemented by stereo vision from sub-cameras 12374with different field of view.<wbr/> As a result,<wbr/> when bokeh mode is enabled,<wbr/> the camera device 12375may override <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the field of 12376view may be smaller than when bokeh mode is off.<wbr/></p> 12377 </td> 12378 </tr> 12379 12380 12381 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12382 <!-- end of entry --> 12383 12384 12385 <tr class="entry" id="dynamic_android.control.zoomRatio"> 12386 <td class="entry_name 12387 " rowspan="5"> 12388 android.<wbr/>control.<wbr/>zoom<wbr/>Ratio 12389 </td> 12390 <td class="entry_type"> 12391 <span class="entry_type_name">float</span> 12392 12393 <span class="entry_type_visibility"> [public]</span> 12394 12395 12396 <span class="entry_type_hwlevel">[limited] </span> 12397 12398 12399 12400 12401 </td> <!-- entry_type --> 12402 12403 <td class="entry_description"> 12404 <p>The desired zoom ratio</p> 12405 </td> 12406 12407 <td class="entry_units"> 12408 </td> 12409 12410 <td class="entry_range"> 12411 <p><a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a></p> 12412 </td> 12413 12414 <td class="entry_hal_version"> 12415 <p>3.<wbr/>5</p> 12416 </td> 12417 12418 <td class="entry_tags"> 12419 </td> 12420 12421 </tr> 12422 <tr class="entries_header"> 12423 <th class="th_details" colspan="6">Details</th> 12424 </tr> 12425 <tr class="entry_cont"> 12426 <td class="entry_details" colspan="6"> 12427 <p>Instead of using <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> for zoom,<wbr/> the application can now choose to 12428use this tag to specify the desired zoom level.<wbr/></p> 12429<p>By using this control,<wbr/> the application gains a simpler way to control zoom,<wbr/> which can 12430be a combination of optical and digital zoom.<wbr/> For example,<wbr/> a multi-camera system may 12431contain more than one lens with different focal lengths,<wbr/> and the user can use optical 12432zoom by switching between lenses.<wbr/> Using zoomRatio has benefits in the scenarios below:</p> 12433<ul> 12434<li>Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides 12435 better precision compared to an integer value of <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li> 12436<li>Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas 12437 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> doesn't.<wbr/></li> 12438</ul> 12439<p>To illustrate,<wbr/> here are several scenarios of different zoom ratios,<wbr/> crop regions,<wbr/> 12440and output streams,<wbr/> for a hypothetical camera device with an active array of size 12441<code>(2000,<wbr/>1500)</code>.<wbr/></p> 12442<ul> 12443<li>Camera Configuration:<ul> 12444<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li> 12445<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li> 12446<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li> 12447</ul> 12448</li> 12449<li>Case #1: 4:3 crop region with 2.<wbr/>0x zoom ratio<ul> 12450<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li> 12451<li>Crop region: <code>Rect(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code> (post zoom)</li> 12452</ul> 12453</li> 12454<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-43.png"/><ul> 12455<li><code>640x480</code> stream source area: <code>(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</code> (equal to crop region)</li> 12456<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (letterboxed)</li> 12457</ul> 12458</li> 12459<li>Case #2: 16:9 crop region with 2.<wbr/>0x zoom.<wbr/><ul> 12460<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li> 12461<li>Crop region: <code>Rect(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code></li> 12462<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-169.png"/></li> 12463<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (pillarboxed)</li> 12464<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (equal to crop region)</li> 12465</ul> 12466</li> 12467<li>Case #3: 1:1 crop region with 0.<wbr/>5x zoom out to ultrawide lens.<wbr/><ul> 12468<li>Zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)</li> 12469<li>Crop region: <code>Rect(250,<wbr/> 0,<wbr/> 1750,<wbr/> 1500)</code></li> 12470<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png"/></li> 12471<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (letterboxed)</li> 12472<li><code>1280x720</code> stream source area: <code>(250,<wbr/> 328,<wbr/> 1750,<wbr/> 1172)</code> (letterboxed)</li> 12473</ul> 12474</li> 12475</ul> 12476<p>As seen from the graphs above,<wbr/> the coordinate system of cropRegion now changes to the 12477effective after-zoom field-of-view,<wbr/> and is represented by the rectangle of (0,<wbr/> 0,<wbr/> 12478activeArrayWith,<wbr/> activeArrayHeight).<wbr/> The same applies to AE/<wbr/>AWB/<wbr/>AF regions,<wbr/> and faces.<wbr/> 12479This coordinate system change isn't applicable to RAW capture and its related 12480metadata such as intrinsicCalibration and lensShadingMap.<wbr/></p> 12481<p>Using the same hypothetical example above,<wbr/> and assuming output stream #1 (640x480) is 12482the viewfinder stream,<wbr/> the application can achieve 2.<wbr/>0x zoom in one of two ways:</p> 12483<ul> 12484<li>zoomRatio = 2.<wbr/>0,<wbr/> scaler.<wbr/>cropRegion = (0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</li> 12485<li>zoomRatio = 1.<wbr/>0 (default),<wbr/> scaler.<wbr/>cropRegion = (500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</li> 12486</ul> 12487<p>If the application intends to set aeRegions to be top-left quarter of the viewfinder 12488field-of-view,<wbr/> the <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a> should be set to (0,<wbr/> 0,<wbr/> 1000,<wbr/> 750) with 12489zoomRatio set to 2.<wbr/>0.<wbr/> Alternatively,<wbr/> the application can set aeRegions to the equivalent 12490region of (500,<wbr/> 375,<wbr/> 1000,<wbr/> 750) for zoomRatio of 1.<wbr/>0.<wbr/> If the application doesn't 12491explicitly set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> its value defaults to 1.<wbr/>0.<wbr/></p> 12492<p>One limitation of controlling zoom using zoomRatio is that the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> 12493must only be used for letterboxing or pillarboxing of the sensor active array,<wbr/> and no 12494FREEFORM cropping can be used with <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> other than 1.<wbr/>0.<wbr/> If 12495<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is not 1.<wbr/>0,<wbr/> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is set to be 12496windowboxing,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be 12497the active array.<wbr/></p> 12498<p>In the capture request,<wbr/> if the application sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to a 12499value != 1.<wbr/>0,<wbr/> the <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the capture result reflects the 12500effective zoom ratio achieved by the camera device,<wbr/> and the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> 12501adjusts for additional crops that are not zoom related.<wbr/> Otherwise,<wbr/> if the application 12502sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0,<wbr/> or does not set it at all,<wbr/> the 12503<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the result metadata will also be 1.<wbr/>0.<wbr/></p> 12504<p>When the application requests a physical stream for a logical multi-camera,<wbr/> the 12505<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in the physical camera result metadata will be 1.<wbr/>0,<wbr/> and 12506the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> tag reflects the amount of zoom and crop done by the 12507physical camera device.<wbr/></p> 12508 </td> 12509 </tr> 12510 12511 <tr class="entries_header"> 12512 <th class="th_details" colspan="6">HAL Implementation Details</th> 12513 </tr> 12514 <tr class="entry_cont"> 12515 <td class="entry_details" colspan="6"> 12516 <p>For all capture request templates,<wbr/> this field must be set to 1.<wbr/>0 in order to have 12517consistent field of views between different modes.<wbr/></p> 12518 </td> 12519 </tr> 12520 12521 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12522 <!-- end of entry --> 12523 12524 12525 <tr class="entry" id="dynamic_android.control.settingsOverride"> 12526 <td class="entry_name 12527 " rowspan="5"> 12528 android.<wbr/>control.<wbr/>settings<wbr/>Override 12529 </td> 12530 <td class="entry_type"> 12531 <span class="entry_type_name entry_type_name_enum">int32</span> 12532 12533 <span class="entry_type_visibility"> [public]</span> 12534 12535 12536 12537 12538 12539 <ul class="entry_type_enum"> 12540 <li> 12541 <span class="entry_type_enum_name">OFF (v3.9)</span> 12542 <span class="entry_type_enum_notes"><p>No keys are applied sooner than the other keys when applying CaptureRequest 12543settings to the camera device.<wbr/> This is the default value.<wbr/></p></span> 12544 </li> 12545 <li> 12546 <span class="entry_type_enum_name">ZOOM (v3.9)</span> 12547 <span class="entry_type_enum_notes"><p>Zoom related keys are applied sooner than the other keys in the CaptureRequest.<wbr/> The 12548zoom related keys are:</p> 12549<ul> 12550<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li> 12551<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 12552<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 12553<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 12554<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 12555</ul> 12556<p>Even though <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/> 12557and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a> are not directly zoom related,<wbr/> applications 12558typically scale these regions together with <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to have a 12559consistent mapping within the current field of view.<wbr/> In this aspect,<wbr/> they are 12560related to <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/></p></span> 12561 </li> 12562 <li> 12563 <span class="entry_type_enum_name">VENDOR_START (v3.9)</span> 12564 <span class="entry_type_enum_hidden">[hidden]</span> 12565 <span class="entry_type_enum_value">0x4000</span> 12566 <span class="entry_type_enum_notes"><p>Vendor defined settingsOverride.<wbr/> These depend on vendor implementation.<wbr/></p></span> 12567 </li> 12568 </ul> 12569 12570 </td> <!-- entry_type --> 12571 12572 <td class="entry_description"> 12573 <p>The desired CaptureRequest settings override with which certain keys are 12574applied earlier so that they can take effect sooner.<wbr/></p> 12575 </td> 12576 12577 <td class="entry_units"> 12578 </td> 12579 12580 <td class="entry_range"> 12581 <p><a href="#static_android.control.availableSettingsOverrides">android.<wbr/>control.<wbr/>available<wbr/>Settings<wbr/>Overrides</a></p> 12582 </td> 12583 12584 <td class="entry_hal_version"> 12585 <p>3.<wbr/>9</p> 12586 </td> 12587 12588 <td class="entry_tags"> 12589 </td> 12590 12591 </tr> 12592 <tr class="entries_header"> 12593 <th class="th_details" colspan="6">Details</th> 12594 </tr> 12595 <tr class="entry_cont"> 12596 <td class="entry_details" colspan="6"> 12597 <p>There are some CaptureRequest keys which can be applied earlier than others 12598when controls within a CaptureRequest aren't required to take effect at the same time.<wbr/> 12599One such example is zoom.<wbr/> Zoom can be applied at a later stage of the camera pipeline.<wbr/> 12600As soon as the camera device receives the CaptureRequest,<wbr/> it can apply the requested 12601zoom value onto an earlier request that's already in the pipeline,<wbr/> thus improves zoom 12602latency.<wbr/></p> 12603<p>This key's value in the capture result reflects whether the controls for this capture 12604are overridden "by" a newer request.<wbr/> This means that if a capture request turns on 12605settings override,<wbr/> the capture result of an earlier request will contain the key value 12606of ZOOM.<wbr/> On the other hand,<wbr/> if a capture request has settings override turned on,<wbr/> 12607but all newer requests have it turned off,<wbr/> the key's value in the capture result will 12608be OFF because this capture isn't overridden by a newer capture.<wbr/> In the two examples 12609below,<wbr/> the capture results columns illustrate the settingsOverride values in different 12610scenarios.<wbr/></p> 12611<p>Assuming the zoom settings override can speed up by 1 frame,<wbr/> below example illustrates 12612the speed-up at the start of capture session:</p> 12613<pre><code>Camera session created 12614Request 1 (zoom=1.<wbr/>0x,<wbr/> override=ZOOM) -> 12615Request 2 (zoom=1.<wbr/>2x,<wbr/> override=ZOOM) -> 12616Request 3 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) -> Result 1 (zoom=1.<wbr/>2x,<wbr/> override=ZOOM) 12617Request 4 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) -> Result 2 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) 12618Request 5 (zoom=1.<wbr/>8x,<wbr/> override=ZOOM) -> Result 3 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) 12619 -> Result 4 (zoom=1.<wbr/>8x,<wbr/> override=ZOOM) 12620 -> Result 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF) 12621</code></pre> 12622<p>The application can turn on settings override and use zoom as normal.<wbr/> The example 12623shows that the later zoom values (1.<wbr/>2x,<wbr/> 1.<wbr/>4x,<wbr/> 1.<wbr/>6x,<wbr/> and 1.<wbr/>8x) overwrite the zoom 12624values (1.<wbr/>0x,<wbr/> 1.<wbr/>2x,<wbr/> 1.<wbr/>4x,<wbr/> and 1.<wbr/>8x) of earlier requests (#1,<wbr/> #2,<wbr/> #3,<wbr/> and #4).<wbr/></p> 12625<p>The application must make sure the settings override doesn't interfere with user 12626journeys requiring simultaneous application of all controls in CaptureRequest on the 12627requested output targets.<wbr/> For example,<wbr/> if the application takes a still capture using 12628CameraCaptureSession#capture,<wbr/> and the repeating request immediately sets a different 12629zoom value using override,<wbr/> the inflight still capture could have its zoom value 12630overwritten unexpectedly.<wbr/></p> 12631<p>So the application is strongly recommended to turn off settingsOverride when taking 12632still/<wbr/>burst captures,<wbr/> and turn it back on when there is only repeating viewfinder 12633request and no inflight still/<wbr/>burst captures.<wbr/></p> 12634<p>Below is the example demonstrating the transitions in and out of the 12635settings override:</p> 12636<pre><code>Request 1 (zoom=1.<wbr/>0x,<wbr/> override=OFF) 12637Request 2 (zoom=1.<wbr/>2x,<wbr/> override=OFF) 12638Request 3 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) -> Result 1 (zoom=1.<wbr/>0x,<wbr/> override=OFF) 12639Request 4 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) -> Result 2 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) 12640Request 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF) -> Result 3 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) 12641 -> Result 4 (zoom=1.<wbr/>6x,<wbr/> override=OFF) 12642 -> Result 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF) 12643</code></pre> 12644<p>This example shows that:</p> 12645<ul> 12646<li>The application "ramps in" settings override by setting the control to ZOOM.<wbr/> 12647In the example,<wbr/> request #3 enables zoom settings override.<wbr/> Because the camera device 12648can speed up applying zoom by 1 frame,<wbr/> the outputs of request #2 has 1.<wbr/>4x zoom,<wbr/> the 12649value specified in request #3.<wbr/></li> 12650<li>The application "ramps out" of settings override by setting the control to OFF.<wbr/> In 12651the example,<wbr/> request #5 changes the override to OFF.<wbr/> Because request #4's zoom 12652takes effect in result #3,<wbr/> result #4's zoom remains the same until new value takes 12653effect in result #5.<wbr/></li> 12654</ul> 12655 </td> 12656 </tr> 12657 12658 <tr class="entries_header"> 12659 <th class="th_details" colspan="6">HAL Implementation Details</th> 12660 </tr> 12661 <tr class="entry_cont"> 12662 <td class="entry_details" colspan="6"> 12663 <p>The HAL must set this value to OFF in all of the Capture templates.<wbr/></p> 12664<p>Typically the HAL unblocks processCaptureRequest at the same rate as the sensor capture,<wbr/> 12665and the HAL queues the capture settings in its pipeline when processCaptureRequest 12666returns.<wbr/> However,<wbr/> when the settings override is enabled,<wbr/> the HAL can optimize the 12667overridden controls' latency by applying them as soon as processCaptureRequest is 12668called,<wbr/> rather than when it's unblocked.<wbr/></p> 12669<p>For devices launching with API level 35 or newer,<wbr/> to avoid regression on zoom 12670smoothness,<wbr/> when zoom settings override is on during pinch zoom (zoom value gradually 12671changes),<wbr/> the zoom effect in the camera output must not become more jittery.<wbr/> More 12672specifically,<wbr/> the variation of zoom pipeline latency must not increase.<wbr/> The latency 12673improvement must be at least 1 frame regardless of zoom in or zoom out.<wbr/></p> 12674<p>For devices launched before API level 35,<wbr/> if zoom settings override is on,<wbr/> when 12675zooming in,<wbr/> the HAL must be able to apply the zoom related settings at least 1 12676frame ahead.<wbr/></p> 12677 </td> 12678 </tr> 12679 12680 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12681 <!-- end of entry --> 12682 12683 12684 <tr class="entry" id="dynamic_android.control.settingsOverridingFrameNumber"> 12685 <td class="entry_name 12686 " rowspan="3"> 12687 android.<wbr/>control.<wbr/>settings<wbr/>Overriding<wbr/>Frame<wbr/>Number 12688 </td> 12689 <td class="entry_type"> 12690 <span class="entry_type_name">int32</span> 12691 12692 <span class="entry_type_visibility"> [system]</span> 12693 12694 12695 12696 12697 12698 12699 </td> <!-- entry_type --> 12700 12701 <td class="entry_description"> 12702 <p>The frame number of the newer request overriding this capture.<wbr/></p> 12703 </td> 12704 12705 <td class="entry_units"> 12706 </td> 12707 12708 <td class="entry_range"> 12709 </td> 12710 12711 <td class="entry_hal_version"> 12712 <p>3.<wbr/>9</p> 12713 </td> 12714 12715 <td class="entry_tags"> 12716 </td> 12717 12718 </tr> 12719 <tr class="entries_header"> 12720 <th class="th_details" colspan="6">Details</th> 12721 </tr> 12722 <tr class="entry_cont"> 12723 <td class="entry_details" colspan="6"> 12724 <p>Must be equal to the frame number of the result if this capture isn't 12725overridden by a newer request,<wbr/> i.<wbr/>e.<wbr/> if <a href="#controls_android.control.settingsOverride">android.<wbr/>control.<wbr/>settings<wbr/>Override</a> is OFF 12726in the capture result.<wbr/> On the other hand,<wbr/> if the capture is overridden by a newer 12727request,<wbr/> the value of this tag (unsigned) must be larger than the frame number of 12728the capture result.<wbr/></p> 12729 </td> 12730 </tr> 12731 12732 12733 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12734 <!-- end of entry --> 12735 12736 12737 <tr class="entry" id="dynamic_android.control.autoframing"> 12738 <td class="entry_name 12739 " rowspan="5"> 12740 android.<wbr/>control.<wbr/>autoframing 12741 </td> 12742 <td class="entry_type"> 12743 <span class="entry_type_name entry_type_name_enum">byte</span> 12744 12745 <span class="entry_type_visibility"> [public]</span> 12746 12747 12748 <span class="entry_type_hwlevel">[limited] </span> 12749 12750 12751 12752 <ul class="entry_type_enum"> 12753 <li> 12754 <span class="entry_type_enum_name">OFF (v3.9)</span> 12755 <span class="entry_type_enum_notes"><p>Disable autoframing.<wbr/></p></span> 12756 </li> 12757 <li> 12758 <span class="entry_type_enum_name">ON (v3.9)</span> 12759 <span class="entry_type_enum_notes"><p>Enable autoframing to keep people in the frame's field of view.<wbr/></p></span> 12760 </li> 12761 <li> 12762 <span class="entry_type_enum_name">AUTO (v3.9)</span> 12763 <span class="entry_type_enum_hidden">[hidden]</span> 12764 <span class="entry_type_enum_notes"><p>Automatically select ON or OFF based on the system level preferences.<wbr/></p></span> 12765 </li> 12766 </ul> 12767 12768 </td> <!-- entry_type --> 12769 12770 <td class="entry_description"> 12771 <p>Automatic crop,<wbr/> pan and zoom to keep objects in the center of the frame.<wbr/></p> 12772 </td> 12773 12774 <td class="entry_units"> 12775 </td> 12776 12777 <td class="entry_range"> 12778 </td> 12779 12780 <td class="entry_hal_version"> 12781 <p>3.<wbr/>9</p> 12782 </td> 12783 12784 <td class="entry_tags"> 12785 </td> 12786 12787 </tr> 12788 <tr class="entries_header"> 12789 <th class="th_details" colspan="6">Details</th> 12790 </tr> 12791 <tr class="entry_cont"> 12792 <td class="entry_details" colspan="6"> 12793 <p>Auto-framing is a special mode provided by the camera device to dynamically crop,<wbr/> zoom 12794or pan the camera feed to try to ensure that the people in a scene occupy a reasonable 12795portion of the viewport.<wbr/> It is primarily designed to support video calling in 12796situations where the user isn't directly in front of the device,<wbr/> especially for 12797wide-angle cameras.<wbr/> 12798<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in CaptureResult will be used 12799to denote the coordinates of the auto-framed region.<wbr/> 12800Zoom and video stabilization controls are disabled when auto-framing is enabled.<wbr/> The 3A 12801regions must map the screen coordinates into the scaler crop returned from the capture 12802result instead of using the active array sensor.<wbr/></p> 12803 </td> 12804 </tr> 12805 12806 <tr class="entries_header"> 12807 <th class="th_details" colspan="6">HAL Implementation Details</th> 12808 </tr> 12809 <tr class="entry_cont"> 12810 <td class="entry_details" colspan="6"> 12811 <p>While auto-framing is ON,<wbr/> the aspect ratio of the auto-framed region must match the 12812aspect ratio of the configured output stream.<wbr/> 12813When reporting CaptureResult,<wbr/> SCALER_<wbr/>CROP_<wbr/>REGION might not adequately describe the 12814actual sensor pixels.<wbr/> In this case,<wbr/> it is acceptable for the returned parameters to only 12815be an approximation of the image sensor region that is actually used.<wbr/> 12816When auto-framing is turned off,<wbr/> the transition should be immediate,<wbr/> with no panning or 12817zooming to transition to the settings requested by the app.<wbr/> When it is turned on,<wbr/> the 12818transition can be immediate or smooth.<wbr/></p> 12819 </td> 12820 </tr> 12821 12822 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12823 <!-- end of entry --> 12824 12825 12826 <tr class="entry" id="dynamic_android.control.autoframingState"> 12827 <td class="entry_name 12828 " rowspan="3"> 12829 android.<wbr/>control.<wbr/>autoframing<wbr/>State 12830 </td> 12831 <td class="entry_type"> 12832 <span class="entry_type_name entry_type_name_enum">byte</span> 12833 12834 <span class="entry_type_visibility"> [public]</span> 12835 12836 12837 <span class="entry_type_hwlevel">[limited] </span> 12838 12839 12840 12841 <ul class="entry_type_enum"> 12842 <li> 12843 <span class="entry_type_enum_name">INACTIVE (v3.9)</span> 12844 <span class="entry_type_enum_notes"><p>Auto-framing is inactive.<wbr/></p></span> 12845 </li> 12846 <li> 12847 <span class="entry_type_enum_name">FRAMING (v3.9)</span> 12848 <span class="entry_type_enum_notes"><p>Auto-framing is in process - either zooming in,<wbr/> zooming out or pan is taking place.<wbr/></p></span> 12849 </li> 12850 <li> 12851 <span class="entry_type_enum_name">CONVERGED (v3.9)</span> 12852 <span class="entry_type_enum_notes"><p>Auto-framing has reached a stable state (frame/<wbr/>fov is not being adjusted).<wbr/> The state 12853may transition back to FRAMING if the scene changes.<wbr/></p></span> 12854 </li> 12855 </ul> 12856 12857 </td> <!-- entry_type --> 12858 12859 <td class="entry_description"> 12860 <p>Current state of auto-framing.<wbr/></p> 12861 </td> 12862 12863 <td class="entry_units"> 12864 </td> 12865 12866 <td class="entry_range"> 12867 </td> 12868 12869 <td class="entry_hal_version"> 12870 <p>3.<wbr/>9</p> 12871 </td> 12872 12873 <td class="entry_tags"> 12874 </td> 12875 12876 </tr> 12877 <tr class="entries_header"> 12878 <th class="th_details" colspan="6">Details</th> 12879 </tr> 12880 <tr class="entry_cont"> 12881 <td class="entry_details" colspan="6"> 12882 <p>When the camera doesn't have auto-framing available (i.<wbr/>e 12883<code><a href="#static_android.control.autoframingAvailable">android.<wbr/>control.<wbr/>autoframing<wbr/>Available</a></code> == false) or it is not enabled (i.<wbr/>e 12884<code><a href="#controls_android.control.autoframing">android.<wbr/>control.<wbr/>autoframing</a></code> == OFF),<wbr/> the state will always be INACTIVE.<wbr/> 12885Other states indicate the current auto-framing state:</p> 12886<ul> 12887<li>When <code><a href="#controls_android.control.autoframing">android.<wbr/>control.<wbr/>autoframing</a></code> is set to ON,<wbr/> auto-framing will take 12888place.<wbr/> While the frame is aligning itself to center the object (doing things like 12889zooming in,<wbr/> zooming out or pan),<wbr/> the state will be FRAMING.<wbr/></li> 12890<li>When field of view is not being adjusted anymore and has reached a stable state,<wbr/> the 12891state will be CONVERGED.<wbr/></li> 12892</ul> 12893 </td> 12894 </tr> 12895 12896 12897 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12898 <!-- end of entry --> 12899 12900 12901 <tr class="entry" id="dynamic_android.control.lowLightBoostState"> 12902 <td class="entry_name 12903 " rowspan="3"> 12904 android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State 12905 </td> 12906 <td class="entry_type"> 12907 <span class="entry_type_name entry_type_name_enum">byte</span> 12908 12909 <span class="entry_type_visibility"> [public]</span> 12910 12911 12912 12913 12914 12915 <ul class="entry_type_enum"> 12916 <li> 12917 <span class="entry_type_enum_name">INACTIVE (v3.10)</span> 12918 <span class="entry_type_enum_notes"><p>The AE mode 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY' is enabled but not applied.<wbr/></p></span> 12919 </li> 12920 <li> 12921 <span class="entry_type_enum_name">ACTIVE (v3.10)</span> 12922 <span class="entry_type_enum_notes"><p>The AE mode 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY' is enabled and applied.<wbr/></p></span> 12923 </li> 12924 </ul> 12925 12926 </td> <!-- entry_type --> 12927 12928 <td class="entry_description"> 12929 <p>Current state of the low light boost AE mode.<wbr/></p> 12930 </td> 12931 12932 <td class="entry_units"> 12933 </td> 12934 12935 <td class="entry_range"> 12936 </td> 12937 12938 <td class="entry_hal_version"> 12939 <p>3.<wbr/>10</p> 12940 </td> 12941 12942 <td class="entry_tags"> 12943 </td> 12944 12945 </tr> 12946 <tr class="entries_header"> 12947 <th class="th_details" colspan="6">Details</th> 12948 </tr> 12949 <tr class="entry_cont"> 12950 <td class="entry_details" colspan="6"> 12951 <p>When low light boost is enabled by setting the AE mode to 12952'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY',<wbr/> it can dynamically apply a low light 12953boost when the light level threshold is exceeded.<wbr/></p> 12954<p>This state indicates when low light boost is 'ACTIVE' and applied.<wbr/> Similarly,<wbr/> it can 12955indicate when it is not being applied by returning 'INACTIVE'.<wbr/></p> 12956<p>The default value will always be 'INACTIVE'.<wbr/></p> 12957 </td> 12958 </tr> 12959 12960 12961 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12962 <!-- end of entry --> 12963 12964 12965 <tr class="entry" id="dynamic_android.control.zoomMethod"> 12966 <td class="entry_name 12967 " rowspan="5"> 12968 android.<wbr/>control.<wbr/>zoom<wbr/>Method 12969 </td> 12970 <td class="entry_type"> 12971 <span class="entry_type_name entry_type_name_enum">byte</span> 12972 12973 <span class="entry_type_visibility"> [fwk_public]</span> 12974 12975 12976 <span class="entry_type_hwlevel">[limited] </span> 12977 12978 12979 12980 <ul class="entry_type_enum"> 12981 <li> 12982 <span class="entry_type_enum_name">AUTO (v3.11)</span> 12983 <span class="entry_type_enum_value">0</span> 12984 <span class="entry_type_enum_notes"><p>The camera device automatically detects whether the application does zoom with 12985<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and in turn decides which 12986metadata tag reflects the effective zoom level.<wbr/></p></span> 12987 </li> 12988 <li> 12989 <span class="entry_type_enum_name">ZOOM_RATIO (v3.11)</span> 12990 <span class="entry_type_enum_value">1</span> 12991 <span class="entry_type_enum_notes"><p>The application intends to control zoom via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and 12992the effective zoom level is reflected by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in capture results.<wbr/></p></span> 12993 </li> 12994 </ul> 12995 12996 </td> <!-- entry_type --> 12997 12998 <td class="entry_description"> 12999 <p>Whether the application uses <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> 13000to control zoom levels.<wbr/></p> 13001 </td> 13002 13003 <td class="entry_units"> 13004 </td> 13005 13006 <td class="entry_range"> 13007 </td> 13008 13009 <td class="entry_hal_version"> 13010 <p>3.<wbr/>11</p> 13011 </td> 13012 13013 <td class="entry_tags"> 13014 </td> 13015 13016 </tr> 13017 <tr class="entries_header"> 13018 <th class="th_details" colspan="6">Details</th> 13019 </tr> 13020 <tr class="entry_cont"> 13021 <td class="entry_details" colspan="6"> 13022 <p>If set to AUTO,<wbr/> the camera device detects which capture request key the application uses 13023to do zoom,<wbr/> <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> If 13024the application doesn't set android.<wbr/>scaler.<wbr/>zoom<wbr/>Ratio or sets it to 1.<wbr/>0 in the capture 13025request,<wbr/> the effective zoom level is reflected in <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> in capture 13026results.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to values other than 1.<wbr/>0,<wbr/> the effective 13027zoom level is reflected in <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> AUTO is the default value 13028for this control,<wbr/> and also the behavior of the OS before Android version 13029<a href="https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#BAKLAVA">BAKLAVA</a>.<wbr/></p> 13030<p>If set to ZOOM_<wbr/>RATIO,<wbr/> the application explicitly specifies zoom level be controlled 13031by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the effective zoom level is reflected in 13032<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in capture results.<wbr/> This addresses an ambiguity with AUTO,<wbr/> 13033with which the camera device cannot know if the application is using cropRegion or 13034zoomRatio at 1.<wbr/>0x.<wbr/></p> 13035 </td> 13036 </tr> 13037 13038 <tr class="entries_header"> 13039 <th class="th_details" colspan="6">HAL Implementation Details</th> 13040 </tr> 13041 <tr class="entry_cont"> 13042 <td class="entry_details" colspan="6"> 13043 <p>Do not use this key directly.<wbr/> It's for camera framework usage,<wbr/> 13044and not for HAL consumption.<wbr/></p> 13045 </td> 13046 </tr> 13047 13048 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13049 <!-- end of entry --> 13050 13051 13052 <tr class="entry" id="dynamic_android.control.aePriorityMode"> 13053 <td class="entry_name 13054 " rowspan="5"> 13055 android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode 13056 </td> 13057 <td class="entry_type"> 13058 <span class="entry_type_name entry_type_name_enum">byte</span> 13059 13060 <span class="entry_type_visibility"> [public]</span> 13061 13062 13063 13064 13065 13066 <ul class="entry_type_enum"> 13067 <li> 13068 <span class="entry_type_enum_name">OFF (v3.11)</span> 13069 <span class="entry_type_enum_notes"><p>Disable AE priority mode.<wbr/> This is the default value.<wbr/></p></span> 13070 </li> 13071 <li> 13072 <span class="entry_type_enum_name">SENSOR_SENSITIVITY_PRIORITY (v3.11)</span> 13073 <span class="entry_type_enum_notes"><p>The camera device's auto-exposure routine is active and 13074prioritizes the application-selected ISO (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/></p> 13075<p>The application has control over <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> while 13076the application's values for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 13077<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/></p></span> 13078 </li> 13079 <li> 13080 <span class="entry_type_enum_name">SENSOR_EXPOSURE_TIME_PRIORITY (v3.11)</span> 13081 <span class="entry_type_enum_notes"><p>The camera device's auto-exposure routine is active and 13082prioritizes the application-selected exposure time 13083(<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>).<wbr/></p> 13084<p>The application has control over <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> while 13085the application's values for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 13086<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/></p></span> 13087 </li> 13088 </ul> 13089 13090 </td> <!-- entry_type --> 13091 13092 <td class="entry_description"> 13093 <p>Turn on AE priority mode.<wbr/></p> 13094 </td> 13095 13096 <td class="entry_units"> 13097 </td> 13098 13099 <td class="entry_range"> 13100 </td> 13101 13102 <td class="entry_hal_version"> 13103 <p>3.<wbr/>11</p> 13104 </td> 13105 13106 <td class="entry_tags"> 13107 </td> 13108 13109 </tr> 13110 <tr class="entries_header"> 13111 <th class="th_details" colspan="6">Details</th> 13112 </tr> 13113 <tr class="entry_cont"> 13114 <td class="entry_details" colspan="6"> 13115 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 13116AUTO and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is set to one of its 13117ON modes,<wbr/> with the exception of ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY.<wbr/></p> 13118<p>When a priority mode is enabled,<wbr/> the camera device's 13119auto-exposure routine will maintain the application's 13120selected parameters relevant to the priority mode while overriding 13121the remaining exposure parameters 13122(<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/> and 13123<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> For example,<wbr/> if 13124SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY mode is enabled,<wbr/> the camera device will 13125maintain the application-selected <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> 13126while adjusting <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> 13127and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/> The overridden fields for a 13128given capture will be available in its CaptureResult.<wbr/></p> 13129 </td> 13130 </tr> 13131 13132 <tr class="entries_header"> 13133 <th class="th_details" colspan="6">HAL Implementation Details</th> 13134 </tr> 13135 <tr class="entry_cont"> 13136 <td class="entry_details" colspan="6"> 13137 <p>The total sensitivity applied for SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY should not be 13138adjusted by any HAL applied <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a>.<wbr/></p> 13139 </td> 13140 </tr> 13141 13142 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13143 <!-- end of entry --> 13144 13145 13146 13147 <!-- end of kind --> 13148 </tbody> 13149 13150 <!-- end of section --> 13151 <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr> 13152 13153 13154 <tr><td colspan="7" class="kind">controls</td></tr> 13155 13156 <thead class="entries_header"> 13157 <tr> 13158 <th class="th_name">Property Name</th> 13159 <th class="th_type">Type</th> 13160 <th class="th_description">Description</th> 13161 <th class="th_units">Units</th> 13162 <th class="th_range">Range</th> 13163 <th class="th_hal_version">Initial HIDL HAL version</th> 13164 <th class="th_tags">Tags</th> 13165 </tr> 13166 </thead> 13167 13168 <tbody> 13169 13170 13171 13172 13173 13174 13175 13176 13177 13178 13179 <tr class="entry" id="controls_android.demosaic.mode"> 13180 <td class="entry_name 13181 " rowspan="1"> 13182 android.<wbr/>demosaic.<wbr/>mode 13183 </td> 13184 <td class="entry_type"> 13185 <span class="entry_type_name entry_type_name_enum">byte</span> 13186 13187 <span class="entry_type_visibility"> [system]</span> 13188 13189 13190 13191 13192 13193 <ul class="entry_type_enum"> 13194 <li> 13195 <span class="entry_type_enum_name">FAST (v3.2)</span> 13196 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 13197Bayer RAW output.<wbr/></p></span> 13198 </li> 13199 <li> 13200 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 13201 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down 13202relative to raw output.<wbr/></p></span> 13203 </li> 13204 </ul> 13205 13206 </td> <!-- entry_type --> 13207 13208 <td class="entry_description"> 13209 <p>Controls the quality of the demosaicing 13210processing.<wbr/></p> 13211 </td> 13212 13213 <td class="entry_units"> 13214 </td> 13215 13216 <td class="entry_range"> 13217 </td> 13218 13219 <td class="entry_hal_version"> 13220 <p>3.<wbr/>2</p> 13221 </td> 13222 13223 <td class="entry_tags"> 13224 <ul class="entry_tags"> 13225 <li><a href="#tag_FUTURE">FUTURE</a></li> 13226 </ul> 13227 </td> 13228 13229 </tr> 13230 13231 13232 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13233 <!-- end of entry --> 13234 13235 13236 13237 <!-- end of kind --> 13238 </tbody> 13239 13240 <!-- end of section --> 13241 <tr><td colspan="7" id="section_edge" class="section">edge</td></tr> 13242 13243 13244 <tr><td colspan="7" class="kind">controls</td></tr> 13245 13246 <thead class="entries_header"> 13247 <tr> 13248 <th class="th_name">Property Name</th> 13249 <th class="th_type">Type</th> 13250 <th class="th_description">Description</th> 13251 <th class="th_units">Units</th> 13252 <th class="th_range">Range</th> 13253 <th class="th_hal_version">Initial HIDL HAL version</th> 13254 <th class="th_tags">Tags</th> 13255 </tr> 13256 </thead> 13257 13258 <tbody> 13259 13260 13261 13262 13263 13264 13265 13266 13267 13268 13269 <tr class="entry" id="controls_android.edge.mode"> 13270 <td class="entry_name 13271 " rowspan="5"> 13272 android.<wbr/>edge.<wbr/>mode 13273 </td> 13274 <td class="entry_type"> 13275 <span class="entry_type_name entry_type_name_enum">byte</span> 13276 13277 <span class="entry_type_visibility"> [public]</span> 13278 13279 13280 <span class="entry_type_hwlevel">[full] </span> 13281 13282 13283 13284 <ul class="entry_type_enum"> 13285 <li> 13286 <span class="entry_type_enum_name">OFF (v3.2)</span> 13287 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 13288 </li> 13289 <li> 13290 <span class="entry_type_enum_name">FAST (v3.2)</span> 13291 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 13292relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 13293slow down frame rate relative to sensor.<wbr/></p></span> 13294 </li> 13295 <li> 13296 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 13297 <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> 13298 </li> 13299 <li> 13300 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 13301 <span class="entry_type_enum_optional">[optional]</span> 13302 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different 13303levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording 13304resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) 13305or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge 13306enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned 13307so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST 13308(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 13309<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 13310with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 13311high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 13312produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 13313high-resolution buffers must not have edge enhancement applied to maximize efficiency of 13314preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 13315buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 13316reasonable preview quality.<wbr/></p> 13317<p>This mode is guaranteed to be supported by devices that support either the 13318YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 13319(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 13320be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 13321 </li> 13322 </ul> 13323 13324 </td> <!-- entry_type --> 13325 13326 <td class="entry_description"> 13327 <p>Operation mode for edge 13328enhancement.<wbr/></p> 13329 </td> 13330 13331 <td class="entry_units"> 13332 </td> 13333 13334 <td class="entry_range"> 13335 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 13336 </td> 13337 13338 <td class="entry_hal_version"> 13339 <p>3.<wbr/>2</p> 13340 </td> 13341 13342 <td class="entry_tags"> 13343 <ul class="entry_tags"> 13344 <li><a href="#tag_V1">V1</a></li> 13345 <li><a href="#tag_REPROC">REPROC</a></li> 13346 </ul> 13347 </td> 13348 13349 </tr> 13350 <tr class="entries_header"> 13351 <th class="th_details" colspan="6">Details</th> 13352 </tr> 13353 <tr class="entry_cont"> 13354 <td class="entry_details" colspan="6"> 13355 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 13356no enhancement will be applied by the camera device.<wbr/></p> 13357<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 13358will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 13359camera device will use the highest-quality enhancement algorithms,<wbr/> 13360even if it slows down capture rate.<wbr/> FAST means the camera device will 13361not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 13362edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 13363amount of enhancement applied.<wbr/></p> 13364<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 13365buffer of high-resolution images during preview and reprocess image(s) from that buffer 13366into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 13367edge enhancement to low-resolution streams (below maximum recording resolution) to 13368maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 13369since those will be reprocessed later if necessary.<wbr/></p> 13370<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 13371device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 13372The camera device may adjust its internal edge enhancement parameters for best 13373image 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> 13374 </td> 13375 </tr> 13376 13377 <tr class="entries_header"> 13378 <th class="th_details" colspan="6">HAL Implementation Details</th> 13379 </tr> 13380 <tr class="entry_cont"> 13381 <td class="entry_details" colspan="6"> 13382 <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 13383adjust the internal edge enhancement reduction parameters appropriately to get the best 13384quality images.<wbr/></p> 13385 </td> 13386 </tr> 13387 13388 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13389 <!-- end of entry --> 13390 13391 13392 <tr class="entry" id="controls_android.edge.strength"> 13393 <td class="entry_name 13394 " rowspan="1"> 13395 android.<wbr/>edge.<wbr/>strength 13396 </td> 13397 <td class="entry_type"> 13398 <span class="entry_type_name">byte</span> 13399 13400 <span class="entry_type_visibility"> [system]</span> 13401 13402 13403 13404 13405 13406 13407 </td> <!-- entry_type --> 13408 13409 <td class="entry_description"> 13410 <p>Control the amount of edge enhancement 13411applied to the images</p> 13412 </td> 13413 13414 <td class="entry_units"> 13415 1-10; 10 is maximum sharpening 13416 </td> 13417 13418 <td class="entry_range"> 13419 </td> 13420 13421 <td class="entry_hal_version"> 13422 <p>3.<wbr/>2</p> 13423 </td> 13424 13425 <td class="entry_tags"> 13426 <ul class="entry_tags"> 13427 <li><a href="#tag_FUTURE">FUTURE</a></li> 13428 </ul> 13429 </td> 13430 13431 </tr> 13432 13433 13434 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13435 <!-- end of entry --> 13436 13437 13438 13439 <!-- end of kind --> 13440 </tbody> 13441 <tr><td colspan="7" class="kind">static</td></tr> 13442 13443 <thead class="entries_header"> 13444 <tr> 13445 <th class="th_name">Property Name</th> 13446 <th class="th_type">Type</th> 13447 <th class="th_description">Description</th> 13448 <th class="th_units">Units</th> 13449 <th class="th_range">Range</th> 13450 <th class="th_hal_version">Initial HIDL HAL version</th> 13451 <th class="th_tags">Tags</th> 13452 </tr> 13453 </thead> 13454 13455 <tbody> 13456 13457 13458 13459 13460 13461 13462 13463 13464 13465 13466 <tr class="entry" id="static_android.edge.availableEdgeModes"> 13467 <td class="entry_name 13468 " rowspan="5"> 13469 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 13470 </td> 13471 <td class="entry_type"> 13472 <span class="entry_type_name">byte</span> 13473 <span class="entry_type_container">x</span> 13474 13475 <span class="entry_type_array"> 13476 n 13477 </span> 13478 <span class="entry_type_visibility"> [public as enumList]</span> 13479 13480 13481 <span class="entry_type_hwlevel">[full] </span> 13482 13483 13484 <div class="entry_type_notes">list of enums</div> 13485 13486 13487 </td> <!-- entry_type --> 13488 13489 <td class="entry_description"> 13490 <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 13491device.<wbr/></p> 13492 </td> 13493 13494 <td class="entry_units"> 13495 </td> 13496 13497 <td class="entry_range"> 13498 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p> 13499 </td> 13500 13501 <td class="entry_hal_version"> 13502 <p>3.<wbr/>2</p> 13503 </td> 13504 13505 <td class="entry_tags"> 13506 <ul class="entry_tags"> 13507 <li><a href="#tag_V1">V1</a></li> 13508 <li><a href="#tag_REPROC">REPROC</a></li> 13509 </ul> 13510 </td> 13511 13512 </tr> 13513 <tr class="entries_header"> 13514 <th class="th_details" colspan="6">Details</th> 13515 </tr> 13516 <tr class="entry_cont"> 13517 <td class="entry_details" colspan="6"> 13518 <p>Full-capability camera devices must always support OFF; camera devices that support 13519YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will 13520list FAST.<wbr/></p> 13521 </td> 13522 </tr> 13523 13524 <tr class="entries_header"> 13525 <th class="th_details" colspan="6">HAL Implementation Details</th> 13526 </tr> 13527 <tr class="entry_cont"> 13528 <td class="entry_details" colspan="6"> 13529 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available 13530on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 13531That is,<wbr/> if the highest quality implementation on the camera device does not slow down 13532capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 13533 </td> 13534 </tr> 13535 13536 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13537 <!-- end of entry --> 13538 13539 13540 13541 <!-- end of kind --> 13542 </tbody> 13543 <tr><td colspan="7" class="kind">dynamic</td></tr> 13544 13545 <thead class="entries_header"> 13546 <tr> 13547 <th class="th_name">Property Name</th> 13548 <th class="th_type">Type</th> 13549 <th class="th_description">Description</th> 13550 <th class="th_units">Units</th> 13551 <th class="th_range">Range</th> 13552 <th class="th_hal_version">Initial HIDL HAL version</th> 13553 <th class="th_tags">Tags</th> 13554 </tr> 13555 </thead> 13556 13557 <tbody> 13558 13559 13560 13561 13562 13563 13564 13565 13566 13567 13568 <tr class="entry" id="dynamic_android.edge.mode"> 13569 <td class="entry_name 13570 " rowspan="5"> 13571 android.<wbr/>edge.<wbr/>mode 13572 </td> 13573 <td class="entry_type"> 13574 <span class="entry_type_name entry_type_name_enum">byte</span> 13575 13576 <span class="entry_type_visibility"> [public]</span> 13577 13578 13579 <span class="entry_type_hwlevel">[full] </span> 13580 13581 13582 13583 <ul class="entry_type_enum"> 13584 <li> 13585 <span class="entry_type_enum_name">OFF (v3.2)</span> 13586 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 13587 </li> 13588 <li> 13589 <span class="entry_type_enum_name">FAST (v3.2)</span> 13590 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 13591relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 13592slow down frame rate relative to sensor.<wbr/></p></span> 13593 </li> 13594 <li> 13595 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 13596 <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> 13597 </li> 13598 <li> 13599 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 13600 <span class="entry_type_enum_optional">[optional]</span> 13601 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different 13602levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording 13603resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) 13604or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge 13605enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned 13606so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST 13607(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 13608<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 13609with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 13610high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 13611produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 13612high-resolution buffers must not have edge enhancement applied to maximize efficiency of 13613preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 13614buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 13615reasonable preview quality.<wbr/></p> 13616<p>This mode is guaranteed to be supported by devices that support either the 13617YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 13618(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 13619be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 13620 </li> 13621 </ul> 13622 13623 </td> <!-- entry_type --> 13624 13625 <td class="entry_description"> 13626 <p>Operation mode for edge 13627enhancement.<wbr/></p> 13628 </td> 13629 13630 <td class="entry_units"> 13631 </td> 13632 13633 <td class="entry_range"> 13634 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 13635 </td> 13636 13637 <td class="entry_hal_version"> 13638 <p>3.<wbr/>2</p> 13639 </td> 13640 13641 <td class="entry_tags"> 13642 <ul class="entry_tags"> 13643 <li><a href="#tag_V1">V1</a></li> 13644 <li><a href="#tag_REPROC">REPROC</a></li> 13645 </ul> 13646 </td> 13647 13648 </tr> 13649 <tr class="entries_header"> 13650 <th class="th_details" colspan="6">Details</th> 13651 </tr> 13652 <tr class="entry_cont"> 13653 <td class="entry_details" colspan="6"> 13654 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 13655no enhancement will be applied by the camera device.<wbr/></p> 13656<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 13657will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 13658camera device will use the highest-quality enhancement algorithms,<wbr/> 13659even if it slows down capture rate.<wbr/> FAST means the camera device will 13660not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 13661edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 13662amount of enhancement applied.<wbr/></p> 13663<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 13664buffer of high-resolution images during preview and reprocess image(s) from that buffer 13665into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 13666edge enhancement to low-resolution streams (below maximum recording resolution) to 13667maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 13668since those will be reprocessed later if necessary.<wbr/></p> 13669<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 13670device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 13671The camera device may adjust its internal edge enhancement parameters for best 13672image 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> 13673 </td> 13674 </tr> 13675 13676 <tr class="entries_header"> 13677 <th class="th_details" colspan="6">HAL Implementation Details</th> 13678 </tr> 13679 <tr class="entry_cont"> 13680 <td class="entry_details" colspan="6"> 13681 <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 13682adjust the internal edge enhancement reduction parameters appropriately to get the best 13683quality images.<wbr/></p> 13684 </td> 13685 </tr> 13686 13687 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13688 <!-- end of entry --> 13689 13690 13691 13692 <!-- end of kind --> 13693 </tbody> 13694 13695 <!-- end of section --> 13696 <tr><td colspan="7" id="section_flash" class="section">flash</td></tr> 13697 13698 13699 <tr><td colspan="7" class="kind">controls</td></tr> 13700 13701 <thead class="entries_header"> 13702 <tr> 13703 <th class="th_name">Property Name</th> 13704 <th class="th_type">Type</th> 13705 <th class="th_description">Description</th> 13706 <th class="th_units">Units</th> 13707 <th class="th_range">Range</th> 13708 <th class="th_hal_version">Initial HIDL HAL version</th> 13709 <th class="th_tags">Tags</th> 13710 </tr> 13711 </thead> 13712 13713 <tbody> 13714 13715 13716 13717 13718 13719 13720 13721 13722 13723 13724 <tr class="entry" id="controls_android.flash.firingPower"> 13725 <td class="entry_name 13726 " rowspan="3"> 13727 android.<wbr/>flash.<wbr/>firing<wbr/>Power 13728 </td> 13729 <td class="entry_type"> 13730 <span class="entry_type_name">byte</span> 13731 13732 <span class="entry_type_visibility"> [system]</span> 13733 13734 13735 13736 13737 13738 13739 </td> <!-- entry_type --> 13740 13741 <td class="entry_description"> 13742 <p>Power for flash firing/<wbr/>torch</p> 13743 </td> 13744 13745 <td class="entry_units"> 13746 10 is max power; 0 is no flash.<wbr/> Linear 13747 </td> 13748 13749 <td class="entry_range"> 13750 <p>0 - 10</p> 13751 </td> 13752 13753 <td class="entry_hal_version"> 13754 <p>3.<wbr/>2</p> 13755 </td> 13756 13757 <td class="entry_tags"> 13758 <ul class="entry_tags"> 13759 <li><a href="#tag_FUTURE">FUTURE</a></li> 13760 </ul> 13761 </td> 13762 13763 </tr> 13764 <tr class="entries_header"> 13765 <th class="th_details" colspan="6">Details</th> 13766 </tr> 13767 <tr class="entry_cont"> 13768 <td class="entry_details" colspan="6"> 13769 <p>Power for snapshot may use a different scale than 13770for torch mode.<wbr/> Only one entry for torch mode will be 13771used</p> 13772 </td> 13773 </tr> 13774 13775 13776 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13777 <!-- end of entry --> 13778 13779 13780 <tr class="entry" id="controls_android.flash.firingTime"> 13781 <td class="entry_name 13782 " rowspan="3"> 13783 android.<wbr/>flash.<wbr/>firing<wbr/>Time 13784 </td> 13785 <td class="entry_type"> 13786 <span class="entry_type_name">int64</span> 13787 13788 <span class="entry_type_visibility"> [system]</span> 13789 13790 13791 13792 13793 13794 13795 </td> <!-- entry_type --> 13796 13797 <td class="entry_description"> 13798 <p>Firing time of flash relative to start of 13799exposure</p> 13800 </td> 13801 13802 <td class="entry_units"> 13803 nanoseconds 13804 </td> 13805 13806 <td class="entry_range"> 13807 <p>0-(exposure time-flash duration)</p> 13808 </td> 13809 13810 <td class="entry_hal_version"> 13811 <p>3.<wbr/>2</p> 13812 </td> 13813 13814 <td class="entry_tags"> 13815 <ul class="entry_tags"> 13816 <li><a href="#tag_FUTURE">FUTURE</a></li> 13817 </ul> 13818 </td> 13819 13820 </tr> 13821 <tr class="entries_header"> 13822 <th class="th_details" colspan="6">Details</th> 13823 </tr> 13824 <tr class="entry_cont"> 13825 <td class="entry_details" colspan="6"> 13826 <p>Clamped to (0,<wbr/> exposure time - flash 13827duration).<wbr/></p> 13828 </td> 13829 </tr> 13830 13831 13832 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13833 <!-- end of entry --> 13834 13835 13836 <tr class="entry" id="controls_android.flash.mode"> 13837 <td class="entry_name 13838 " rowspan="3"> 13839 android.<wbr/>flash.<wbr/>mode 13840 </td> 13841 <td class="entry_type"> 13842 <span class="entry_type_name entry_type_name_enum">byte</span> 13843 13844 <span class="entry_type_visibility"> [public]</span> 13845 13846 13847 <span class="entry_type_hwlevel">[legacy] </span> 13848 13849 13850 13851 <ul class="entry_type_enum"> 13852 <li> 13853 <span class="entry_type_enum_name">OFF (v3.2)</span> 13854 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 13855 </li> 13856 <li> 13857 <span class="entry_type_enum_name">SINGLE (v3.2)</span> 13858 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 13859for this capture.<wbr/></p></span> 13860 </li> 13861 <li> 13862 <span class="entry_type_enum_name">TORCH (v3.2)</span> 13863 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 13864 </li> 13865 </ul> 13866 13867 </td> <!-- entry_type --> 13868 13869 <td class="entry_description"> 13870 <p>The desired mode for for the camera device's flash control.<wbr/></p> 13871 </td> 13872 13873 <td class="entry_units"> 13874 </td> 13875 13876 <td class="entry_range"> 13877 </td> 13878 13879 <td class="entry_hal_version"> 13880 <p>3.<wbr/>2</p> 13881 </td> 13882 13883 <td class="entry_tags"> 13884 <ul class="entry_tags"> 13885 <li><a href="#tag_BC">BC</a></li> 13886 </ul> 13887 </td> 13888 13889 </tr> 13890 <tr class="entries_header"> 13891 <th class="th_details" colspan="6">Details</th> 13892 </tr> 13893 <tr class="entry_cont"> 13894 <td class="entry_details" colspan="6"> 13895 <p>This control is only effective when flash unit is available 13896(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 13897<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/> 13898Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 13899ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 13900<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 13901<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 13902device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 13903control should be used along with auto-exposure (AE) precapture metering sequence 13904(<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> 13905<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 13906for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 13907<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> 13908 </td> 13909 </tr> 13910 13911 13912 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13913 <!-- end of entry --> 13914 13915 13916 <tr class="entry" id="controls_android.flash.strengthLevel"> 13917 <td class="entry_name 13918 " rowspan="3"> 13919 android.<wbr/>flash.<wbr/>strength<wbr/>Level 13920 </td> 13921 <td class="entry_type"> 13922 <span class="entry_type_name">int32</span> 13923 13924 <span class="entry_type_visibility"> [public]</span> 13925 13926 13927 <span class="entry_type_hwlevel">[legacy] </span> 13928 13929 13930 13931 13932 </td> <!-- entry_type --> 13933 13934 <td class="entry_description"> 13935 <p>Flash strength level to be used when manual flash control is active.<wbr/></p> 13936 </td> 13937 13938 <td class="entry_units"> 13939 </td> 13940 13941 <td class="entry_range"> 13942 <p><code>[1-<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a>]</code> when the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> is 13943set to TORCH; 13944<code>[1-<a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a>]</code> when the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> is 13945set to SINGLE</p> 13946 </td> 13947 13948 <td class="entry_hal_version"> 13949 <p>3.<wbr/>10</p> 13950 </td> 13951 13952 <td class="entry_tags"> 13953 </td> 13954 13955 </tr> 13956 <tr class="entries_header"> 13957 <th class="th_details" colspan="6">Details</th> 13958 </tr> 13959 <tr class="entry_cont"> 13960 <td class="entry_details" colspan="6"> 13961 <p>Flash strength level to use in capture mode i.<wbr/>e.<wbr/> when the applications control 13962flash with either <code>SINGLE</code> or <code>TORCH</code> mode.<wbr/></p> 13963<p>Use <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and 13964<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> to check whether the device supports 13965flash strength control or not.<wbr/> 13966If the values of <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and 13967<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> 13968then the device supports manual flash strength control.<wbr/></p> 13969<p>If the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> <code>TORCH</code> the value must be >= 1 13970and <= <a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a>.<wbr/> 13971If the application doesn't set the key and 13972<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> > 1,<wbr/> 13973then the flash will be fired at the default level set by HAL in 13974<a href="#static_android.flash.torchStrengthDefaultLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Default<wbr/>Level</a>.<wbr/> 13975If the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> <code>SINGLE</code>,<wbr/> then the value must be >= 1 13976and <= <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a>.<wbr/> 13977If the application does not set this key and 13978<a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> > 1,<wbr/> 13979then the flash will be fired at the default level set by HAL 13980in <a href="#static_android.flash.singleStrengthDefaultLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Default<wbr/>Level</a>.<wbr/> 13981If <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is set to any of <code>ON_<wbr/>AUTO_<wbr/>FLASH</code>,<wbr/> <code>ON_<wbr/>ALWAYS_<wbr/>FLASH</code>,<wbr/> 13982<code>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE</code>,<wbr/> <code>ON_<wbr/>EXTERNAL_<wbr/>FLASH</code> values,<wbr/> then the strengthLevel will be ignored.<wbr/></p> 13983<p>When AE mode is ON and flash mode is TORCH or SINGLE,<wbr/> the application should make sure 13984the AE mode,<wbr/> flash mode,<wbr/> and flash strength level remain the same between precapture 13985trigger request and final capture request.<wbr/> The flash strength level being set during 13986precapture sequence is used by the camera device as a reference.<wbr/> The actual strength 13987may be less,<wbr/> and the auto-exposure routine makes sure proper conversions of sensor 13988exposure time and sensitivities between precapture and final capture for the specified 13989strength level.<wbr/></p> 13990 </td> 13991 </tr> 13992 13993 13994 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13995 <!-- end of entry --> 13996 13997 13998 13999 <!-- end of kind --> 14000 </tbody> 14001 <tr><td colspan="7" class="kind">static</td></tr> 14002 14003 <thead class="entries_header"> 14004 <tr> 14005 <th class="th_name">Property Name</th> 14006 <th class="th_type">Type</th> 14007 <th class="th_description">Description</th> 14008 <th class="th_units">Units</th> 14009 <th class="th_range">Range</th> 14010 <th class="th_hal_version">Initial HIDL HAL version</th> 14011 <th class="th_tags">Tags</th> 14012 </tr> 14013 </thead> 14014 14015 <tbody> 14016 14017 14018 14019 14020 14021 14022 14023 14024 14025 14026 14027 14028 <tr class="entry" id="static_android.flash.info.available"> 14029 <td class="entry_name 14030 " rowspan="3"> 14031 android.<wbr/>flash.<wbr/>info.<wbr/>available 14032 </td> 14033 <td class="entry_type"> 14034 <span class="entry_type_name entry_type_name_enum">byte</span> 14035 14036 <span class="entry_type_visibility"> [public as boolean]</span> 14037 14038 14039 <span class="entry_type_hwlevel">[legacy] </span> 14040 14041 14042 14043 <ul class="entry_type_enum"> 14044 <li> 14045 <span class="entry_type_enum_name">FALSE (v3.2)</span> 14046 </li> 14047 <li> 14048 <span class="entry_type_enum_name">TRUE (v3.2)</span> 14049 </li> 14050 </ul> 14051 14052 </td> <!-- entry_type --> 14053 14054 <td class="entry_description"> 14055 <p>Whether this camera device has a 14056flash unit.<wbr/></p> 14057 </td> 14058 14059 <td class="entry_units"> 14060 </td> 14061 14062 <td class="entry_range"> 14063 </td> 14064 14065 <td class="entry_hal_version"> 14066 <p>3.<wbr/>2</p> 14067 </td> 14068 14069 <td class="entry_tags"> 14070 <ul class="entry_tags"> 14071 <li><a href="#tag_BC">BC</a></li> 14072 </ul> 14073 </td> 14074 14075 </tr> 14076 <tr class="entries_header"> 14077 <th class="th_details" colspan="6">Details</th> 14078 </tr> 14079 <tr class="entry_cont"> 14080 <td class="entry_details" colspan="6"> 14081 <p>Will be <code>false</code> if no flash is available.<wbr/></p> 14082<p>If there is no flash unit,<wbr/> none of the flash controls do 14083anything.<wbr/></p> 14084 </td> 14085 </tr> 14086 14087 14088 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14089 <!-- end of entry --> 14090 14091 14092 <tr class="entry" id="static_android.flash.info.chargeDuration"> 14093 <td class="entry_name 14094 " rowspan="3"> 14095 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 14096 </td> 14097 <td class="entry_type"> 14098 <span class="entry_type_name">int64</span> 14099 14100 <span class="entry_type_visibility"> [system]</span> 14101 14102 14103 14104 14105 14106 14107 </td> <!-- entry_type --> 14108 14109 <td class="entry_description"> 14110 <p>Time taken before flash can fire 14111again</p> 14112 </td> 14113 14114 <td class="entry_units"> 14115 nanoseconds 14116 </td> 14117 14118 <td class="entry_range"> 14119 <p>0-1e9</p> 14120 </td> 14121 14122 <td class="entry_hal_version"> 14123 <p>3.<wbr/>2</p> 14124 </td> 14125 14126 <td class="entry_tags"> 14127 <ul class="entry_tags"> 14128 <li><a href="#tag_FUTURE">FUTURE</a></li> 14129 </ul> 14130 </td> 14131 14132 </tr> 14133 <tr class="entries_header"> 14134 <th class="th_details" colspan="6">Details</th> 14135 </tr> 14136 <tr class="entry_cont"> 14137 <td class="entry_details" colspan="6"> 14138 <p>1 second too long/<wbr/>too short for recharge? Should 14139this be power-dependent?</p> 14140 </td> 14141 </tr> 14142 14143 14144 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14145 <!-- end of entry --> 14146 14147 14148 <tr class="entry" id="static_android.flash.info.strengthMaximumLevel"> 14149 <td class="entry_name 14150 " rowspan="3"> 14151 android.<wbr/>flash.<wbr/>info.<wbr/>strength<wbr/>Maximum<wbr/>Level 14152 </td> 14153 <td class="entry_type"> 14154 <span class="entry_type_name">int32</span> 14155 14156 <span class="entry_type_visibility"> [public]</span> 14157 14158 14159 14160 14161 14162 14163 </td> <!-- entry_type --> 14164 14165 <td class="entry_description"> 14166 <p>Maximum flashlight brightness level.<wbr/></p> 14167 </td> 14168 14169 <td class="entry_units"> 14170 </td> 14171 14172 <td class="entry_range"> 14173 </td> 14174 14175 <td class="entry_hal_version"> 14176 <p>3.<wbr/>8</p> 14177 </td> 14178 14179 <td class="entry_tags"> 14180 </td> 14181 14182 </tr> 14183 <tr class="entries_header"> 14184 <th class="th_details" colspan="6">Details</th> 14185 </tr> 14186 <tr class="entry_cont"> 14187 <td class="entry_details" colspan="6"> 14188 <p>If this value is greater than 1,<wbr/> then the device supports controlling the 14189flashlight brightness level via 14190<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#turnOnTorchWithStrengthLevel">CameraManager#turnOnTorchWithStrengthLevel</a>.<wbr/> 14191If this value is equal to 1,<wbr/> flashlight brightness control is not supported.<wbr/> 14192The value for this key will be null for devices with no flash unit.<wbr/></p> 14193<p>The maximum value is guaranteed to be safe to use for an indefinite duration in 14194terms of device flashlight lifespan,<wbr/> but may be too bright for comfort for many 14195use cases.<wbr/> Use the default torch brightness value to avoid problems with an 14196over-bright flashlight.<wbr/></p> 14197 </td> 14198 </tr> 14199 14200 14201 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14202 <!-- end of entry --> 14203 14204 14205 <tr class="entry" id="static_android.flash.info.strengthDefaultLevel"> 14206 <td class="entry_name 14207 " rowspan="3"> 14208 android.<wbr/>flash.<wbr/>info.<wbr/>strength<wbr/>Default<wbr/>Level 14209 </td> 14210 <td class="entry_type"> 14211 <span class="entry_type_name">int32</span> 14212 14213 <span class="entry_type_visibility"> [public]</span> 14214 14215 14216 14217 14218 14219 14220 </td> <!-- entry_type --> 14221 14222 <td class="entry_description"> 14223 <p>Default flashlight brightness level to be set via 14224<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#turnOnTorchWithStrengthLevel">CameraManager#turnOnTorchWithStrengthLevel</a>.<wbr/></p> 14225 </td> 14226 14227 <td class="entry_units"> 14228 </td> 14229 14230 <td class="entry_range"> 14231 </td> 14232 14233 <td class="entry_hal_version"> 14234 <p>3.<wbr/>8</p> 14235 </td> 14236 14237 <td class="entry_tags"> 14238 </td> 14239 14240 </tr> 14241 <tr class="entries_header"> 14242 <th class="th_details" colspan="6">Details</th> 14243 </tr> 14244 <tr class="entry_cont"> 14245 <td class="entry_details" colspan="6"> 14246 <p>If flash unit is available this will be greater than or equal to 1 and less 14247or equal to <code><a href="#static_android.flash.info.strengthMaximumLevel">android.<wbr/>flash.<wbr/>info.<wbr/>strength<wbr/>Maximum<wbr/>Level</a></code>.<wbr/></p> 14248<p>Setting flashlight brightness above the default level 14249(i.<wbr/>e.<wbr/><code><a href="#static_android.flash.info.strengthDefaultLevel">android.<wbr/>flash.<wbr/>info.<wbr/>strength<wbr/>Default<wbr/>Level</a></code>) may make the device more 14250likely to reach thermal throttling conditions and slow down,<wbr/> or drain the 14251battery quicker than normal.<wbr/> To minimize such issues,<wbr/> it is recommended to 14252start the flashlight at this default brightness until a user explicitly requests 14253a brighter level.<wbr/> 14254Note that the value for this key will be null for devices with no flash unit.<wbr/> 14255The default level should always be > 0.<wbr/></p> 14256 </td> 14257 </tr> 14258 14259 14260 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14261 <!-- end of entry --> 14262 14263 14264 14265 14266 14267 <tr class="entry" id="static_android.flash.colorTemperature"> 14268 <td class="entry_name 14269 " rowspan="1"> 14270 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 14271 </td> 14272 <td class="entry_type"> 14273 <span class="entry_type_name">byte</span> 14274 14275 <span class="entry_type_visibility"> [system]</span> 14276 14277 14278 14279 14280 14281 14282 </td> <!-- entry_type --> 14283 14284 <td class="entry_description"> 14285 <p>The x,<wbr/>y whitepoint of the 14286flash</p> 14287 </td> 14288 14289 <td class="entry_units"> 14290 pair of floats 14291 </td> 14292 14293 <td class="entry_range"> 14294 <p>0-1 for both</p> 14295 </td> 14296 14297 <td class="entry_hal_version"> 14298 <p>3.<wbr/>2</p> 14299 </td> 14300 14301 <td class="entry_tags"> 14302 <ul class="entry_tags"> 14303 <li><a href="#tag_FUTURE">FUTURE</a></li> 14304 </ul> 14305 </td> 14306 14307 </tr> 14308 14309 14310 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14311 <!-- end of entry --> 14312 14313 14314 <tr class="entry" id="static_android.flash.maxEnergy"> 14315 <td class="entry_name 14316 " rowspan="1"> 14317 android.<wbr/>flash.<wbr/>max<wbr/>Energy 14318 </td> 14319 <td class="entry_type"> 14320 <span class="entry_type_name">byte</span> 14321 14322 <span class="entry_type_visibility"> [system]</span> 14323 14324 14325 14326 14327 14328 14329 </td> <!-- entry_type --> 14330 14331 <td class="entry_description"> 14332 <p>Max energy output of the flash for a full 14333power single flash</p> 14334 </td> 14335 14336 <td class="entry_units"> 14337 lumen-seconds 14338 </td> 14339 14340 <td class="entry_range"> 14341 <p>>= 0</p> 14342 </td> 14343 14344 <td class="entry_hal_version"> 14345 <p>3.<wbr/>2</p> 14346 </td> 14347 14348 <td class="entry_tags"> 14349 <ul class="entry_tags"> 14350 <li><a href="#tag_FUTURE">FUTURE</a></li> 14351 </ul> 14352 </td> 14353 14354 </tr> 14355 14356 14357 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14358 <!-- end of entry --> 14359 14360 14361 <tr class="entry" id="static_android.flash.singleStrengthMaxLevel"> 14362 <td class="entry_name 14363 " rowspan="3"> 14364 android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level 14365 </td> 14366 <td class="entry_type"> 14367 <span class="entry_type_name">int32</span> 14368 14369 <span class="entry_type_visibility"> [public]</span> 14370 14371 14372 <span class="entry_type_hwlevel">[legacy] </span> 14373 14374 14375 14376 14377 </td> <!-- entry_type --> 14378 14379 <td class="entry_description"> 14380 <p>Maximum flash brightness level for manual flash control in <code>SINGLE</code> mode.<wbr/></p> 14381 </td> 14382 14383 <td class="entry_units"> 14384 </td> 14385 14386 <td class="entry_range"> 14387 </td> 14388 14389 <td class="entry_hal_version"> 14390 <p>3.<wbr/>10</p> 14391 </td> 14392 14393 <td class="entry_tags"> 14394 </td> 14395 14396 </tr> 14397 <tr class="entries_header"> 14398 <th class="th_details" colspan="6">Details</th> 14399 </tr> 14400 <tr class="entry_cont"> 14401 <td class="entry_details" colspan="6"> 14402 <p>Maximum flash brightness level in camera capture mode and 14403<a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to <code>SINGLE</code>.<wbr/> 14404Value will be > 1 if the manual flash strength control feature is supported,<wbr/> 14405otherwise the value will be equal to 1.<wbr/> 14406Note that this level is just a number of supported levels (the granularity of control).<wbr/> 14407There is no actual physical power units tied to this level.<wbr/></p> 14408 </td> 14409 </tr> 14410 14411 14412 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14413 <!-- end of entry --> 14414 14415 14416 <tr class="entry" id="static_android.flash.singleStrengthDefaultLevel"> 14417 <td class="entry_name 14418 " rowspan="3"> 14419 android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Default<wbr/>Level 14420 </td> 14421 <td class="entry_type"> 14422 <span class="entry_type_name">int32</span> 14423 14424 <span class="entry_type_visibility"> [public]</span> 14425 14426 14427 <span class="entry_type_hwlevel">[legacy] </span> 14428 14429 14430 14431 14432 </td> <!-- entry_type --> 14433 14434 <td class="entry_description"> 14435 <p>Default flash brightness level for manual flash control in <code>SINGLE</code> mode.<wbr/></p> 14436 </td> 14437 14438 <td class="entry_units"> 14439 </td> 14440 14441 <td class="entry_range"> 14442 </td> 14443 14444 <td class="entry_hal_version"> 14445 <p>3.<wbr/>10</p> 14446 </td> 14447 14448 <td class="entry_tags"> 14449 </td> 14450 14451 </tr> 14452 <tr class="entries_header"> 14453 <th class="th_details" colspan="6">Details</th> 14454 </tr> 14455 <tr class="entry_cont"> 14456 <td class="entry_details" colspan="6"> 14457 <p>If flash unit is available this will be greater than or equal to 1 and less 14458or equal to <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a>.<wbr/> 14459Note for devices that do not support the manual flash strength control 14460feature,<wbr/> this level will always be equal to 1.<wbr/></p> 14461 </td> 14462 </tr> 14463 14464 14465 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14466 <!-- end of entry --> 14467 14468 14469 <tr class="entry" id="static_android.flash.torchStrengthMaxLevel"> 14470 <td class="entry_name 14471 " rowspan="3"> 14472 android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level 14473 </td> 14474 <td class="entry_type"> 14475 <span class="entry_type_name">int32</span> 14476 14477 <span class="entry_type_visibility"> [public]</span> 14478 14479 14480 <span class="entry_type_hwlevel">[legacy] </span> 14481 14482 14483 14484 14485 </td> <!-- entry_type --> 14486 14487 <td class="entry_description"> 14488 <p>Maximum flash brightness level for manual flash control in <code>TORCH</code> mode</p> 14489 </td> 14490 14491 <td class="entry_units"> 14492 </td> 14493 14494 <td class="entry_range"> 14495 </td> 14496 14497 <td class="entry_hal_version"> 14498 <p>3.<wbr/>10</p> 14499 </td> 14500 14501 <td class="entry_tags"> 14502 </td> 14503 14504 </tr> 14505 <tr class="entries_header"> 14506 <th class="th_details" colspan="6">Details</th> 14507 </tr> 14508 <tr class="entry_cont"> 14509 <td class="entry_details" colspan="6"> 14510 <p>Maximum flash brightness level in camera capture mode and 14511<a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to <code>TORCH</code>.<wbr/> 14512Value will be > 1 if the manual flash strength control feature is supported,<wbr/> 14513otherwise the value will be equal to 1.<wbr/></p> 14514<p>Note that this level is just a number of supported levels(the granularity of control).<wbr/> 14515There is no actual physical power units tied to this level.<wbr/> 14516There is no relation between <a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> and 14517<a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> i.<wbr/>e.<wbr/> the ratio of 14518<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a>:<a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> 14519is not guaranteed to be the ratio of actual brightness.<wbr/></p> 14520 </td> 14521 </tr> 14522 14523 14524 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14525 <!-- end of entry --> 14526 14527 14528 <tr class="entry" id="static_android.flash.torchStrengthDefaultLevel"> 14529 <td class="entry_name 14530 " rowspan="3"> 14531 android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Default<wbr/>Level 14532 </td> 14533 <td class="entry_type"> 14534 <span class="entry_type_name">int32</span> 14535 14536 <span class="entry_type_visibility"> [public]</span> 14537 14538 14539 <span class="entry_type_hwlevel">[legacy] </span> 14540 14541 14542 14543 14544 </td> <!-- entry_type --> 14545 14546 <td class="entry_description"> 14547 <p>Default flash brightness level for manual flash control in <code>TORCH</code> mode</p> 14548 </td> 14549 14550 <td class="entry_units"> 14551 </td> 14552 14553 <td class="entry_range"> 14554 </td> 14555 14556 <td class="entry_hal_version"> 14557 <p>3.<wbr/>10</p> 14558 </td> 14559 14560 <td class="entry_tags"> 14561 </td> 14562 14563 </tr> 14564 <tr class="entries_header"> 14565 <th class="th_details" colspan="6">Details</th> 14566 </tr> 14567 <tr class="entry_cont"> 14568 <td class="entry_details" colspan="6"> 14569 <p>If flash unit is available this will be greater than or equal to 1 and less 14570or equal to <a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a>.<wbr/> 14571Note for the devices that do not support the manual flash strength control feature,<wbr/> 14572this level will always be equal to 1.<wbr/></p> 14573 </td> 14574 </tr> 14575 14576 14577 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14578 <!-- end of entry --> 14579 14580 14581 14582 <!-- end of kind --> 14583 </tbody> 14584 <tr><td colspan="7" class="kind">dynamic</td></tr> 14585 14586 <thead class="entries_header"> 14587 <tr> 14588 <th class="th_name">Property Name</th> 14589 <th class="th_type">Type</th> 14590 <th class="th_description">Description</th> 14591 <th class="th_units">Units</th> 14592 <th class="th_range">Range</th> 14593 <th class="th_hal_version">Initial HIDL HAL version</th> 14594 <th class="th_tags">Tags</th> 14595 </tr> 14596 </thead> 14597 14598 <tbody> 14599 14600 14601 14602 14603 14604 14605 14606 14607 14608 14609 <tr class="entry" id="dynamic_android.flash.firingPower"> 14610 <td class="entry_name 14611 " rowspan="3"> 14612 android.<wbr/>flash.<wbr/>firing<wbr/>Power 14613 </td> 14614 <td class="entry_type"> 14615 <span class="entry_type_name">byte</span> 14616 14617 <span class="entry_type_visibility"> [system]</span> 14618 14619 14620 14621 14622 14623 14624 </td> <!-- entry_type --> 14625 14626 <td class="entry_description"> 14627 <p>Power for flash firing/<wbr/>torch</p> 14628 </td> 14629 14630 <td class="entry_units"> 14631 10 is max power; 0 is no flash.<wbr/> Linear 14632 </td> 14633 14634 <td class="entry_range"> 14635 <p>0 - 10</p> 14636 </td> 14637 14638 <td class="entry_hal_version"> 14639 <p>3.<wbr/>2</p> 14640 </td> 14641 14642 <td class="entry_tags"> 14643 <ul class="entry_tags"> 14644 <li><a href="#tag_FUTURE">FUTURE</a></li> 14645 </ul> 14646 </td> 14647 14648 </tr> 14649 <tr class="entries_header"> 14650 <th class="th_details" colspan="6">Details</th> 14651 </tr> 14652 <tr class="entry_cont"> 14653 <td class="entry_details" colspan="6"> 14654 <p>Power for snapshot may use a different scale than 14655for torch mode.<wbr/> Only one entry for torch mode will be 14656used</p> 14657 </td> 14658 </tr> 14659 14660 14661 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14662 <!-- end of entry --> 14663 14664 14665 <tr class="entry" id="dynamic_android.flash.firingTime"> 14666 <td class="entry_name 14667 " rowspan="3"> 14668 android.<wbr/>flash.<wbr/>firing<wbr/>Time 14669 </td> 14670 <td class="entry_type"> 14671 <span class="entry_type_name">int64</span> 14672 14673 <span class="entry_type_visibility"> [system]</span> 14674 14675 14676 14677 14678 14679 14680 </td> <!-- entry_type --> 14681 14682 <td class="entry_description"> 14683 <p>Firing time of flash relative to start of 14684exposure</p> 14685 </td> 14686 14687 <td class="entry_units"> 14688 nanoseconds 14689 </td> 14690 14691 <td class="entry_range"> 14692 <p>0-(exposure time-flash duration)</p> 14693 </td> 14694 14695 <td class="entry_hal_version"> 14696 <p>3.<wbr/>2</p> 14697 </td> 14698 14699 <td class="entry_tags"> 14700 <ul class="entry_tags"> 14701 <li><a href="#tag_FUTURE">FUTURE</a></li> 14702 </ul> 14703 </td> 14704 14705 </tr> 14706 <tr class="entries_header"> 14707 <th class="th_details" colspan="6">Details</th> 14708 </tr> 14709 <tr class="entry_cont"> 14710 <td class="entry_details" colspan="6"> 14711 <p>Clamped to (0,<wbr/> exposure time - flash 14712duration).<wbr/></p> 14713 </td> 14714 </tr> 14715 14716 14717 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14718 <!-- end of entry --> 14719 14720 14721 <tr class="entry" id="dynamic_android.flash.mode"> 14722 <td class="entry_name 14723 " rowspan="3"> 14724 android.<wbr/>flash.<wbr/>mode 14725 </td> 14726 <td class="entry_type"> 14727 <span class="entry_type_name entry_type_name_enum">byte</span> 14728 14729 <span class="entry_type_visibility"> [public]</span> 14730 14731 14732 <span class="entry_type_hwlevel">[legacy] </span> 14733 14734 14735 14736 <ul class="entry_type_enum"> 14737 <li> 14738 <span class="entry_type_enum_name">OFF (v3.2)</span> 14739 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 14740 </li> 14741 <li> 14742 <span class="entry_type_enum_name">SINGLE (v3.2)</span> 14743 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 14744for this capture.<wbr/></p></span> 14745 </li> 14746 <li> 14747 <span class="entry_type_enum_name">TORCH (v3.2)</span> 14748 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 14749 </li> 14750 </ul> 14751 14752 </td> <!-- entry_type --> 14753 14754 <td class="entry_description"> 14755 <p>The desired mode for for the camera device's flash control.<wbr/></p> 14756 </td> 14757 14758 <td class="entry_units"> 14759 </td> 14760 14761 <td class="entry_range"> 14762 </td> 14763 14764 <td class="entry_hal_version"> 14765 <p>3.<wbr/>2</p> 14766 </td> 14767 14768 <td class="entry_tags"> 14769 <ul class="entry_tags"> 14770 <li><a href="#tag_BC">BC</a></li> 14771 </ul> 14772 </td> 14773 14774 </tr> 14775 <tr class="entries_header"> 14776 <th class="th_details" colspan="6">Details</th> 14777 </tr> 14778 <tr class="entry_cont"> 14779 <td class="entry_details" colspan="6"> 14780 <p>This control is only effective when flash unit is available 14781(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 14782<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/> 14783Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 14784ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 14785<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 14786<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 14787device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 14788control should be used along with auto-exposure (AE) precapture metering sequence 14789(<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> 14790<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 14791for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 14792<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> 14793 </td> 14794 </tr> 14795 14796 14797 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14798 <!-- end of entry --> 14799 14800 14801 <tr class="entry" id="dynamic_android.flash.state"> 14802 <td class="entry_name 14803 " rowspan="3"> 14804 android.<wbr/>flash.<wbr/>state 14805 </td> 14806 <td class="entry_type"> 14807 <span class="entry_type_name entry_type_name_enum">byte</span> 14808 14809 <span class="entry_type_visibility"> [public]</span> 14810 14811 14812 <span class="entry_type_hwlevel">[limited] </span> 14813 14814 14815 14816 <ul class="entry_type_enum"> 14817 <li> 14818 <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span> 14819 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 14820 </li> 14821 <li> 14822 <span class="entry_type_enum_name">CHARGING (v3.2)</span> 14823 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 14824 </li> 14825 <li> 14826 <span class="entry_type_enum_name">READY (v3.2)</span> 14827 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 14828 </li> 14829 <li> 14830 <span class="entry_type_enum_name">FIRED (v3.2)</span> 14831 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 14832 </li> 14833 <li> 14834 <span class="entry_type_enum_name">PARTIAL (v3.2)</span> 14835 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p> 14836<p>This is usually due to the next or previous frame having 14837the flash fire,<wbr/> and the flash spilling into this capture 14838due to hardware limitations.<wbr/></p></span> 14839 </li> 14840 </ul> 14841 14842 </td> <!-- entry_type --> 14843 14844 <td class="entry_description"> 14845 <p>Current state of the flash 14846unit.<wbr/></p> 14847 </td> 14848 14849 <td class="entry_units"> 14850 </td> 14851 14852 <td class="entry_range"> 14853 </td> 14854 14855 <td class="entry_hal_version"> 14856 <p>3.<wbr/>2</p> 14857 </td> 14858 14859 <td class="entry_tags"> 14860 </td> 14861 14862 </tr> 14863 <tr class="entries_header"> 14864 <th class="th_details" colspan="6">Details</th> 14865 </tr> 14866 <tr class="entry_cont"> 14867 <td class="entry_details" colspan="6"> 14868 <p>When the camera device doesn't have flash unit 14869(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/> 14870Other states indicate the current flash status.<wbr/></p> 14871<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p> 14872<ul> 14873<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li> 14874<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH 14875 will always return FIRED.<wbr/></li> 14876<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH 14877 will always return FIRED.<wbr/></li> 14878</ul> 14879<p>In all other conditions the state will not be available on 14880LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p> 14881 </td> 14882 </tr> 14883 14884 14885 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14886 <!-- end of entry --> 14887 14888 14889 <tr class="entry" id="dynamic_android.flash.strengthLevel"> 14890 <td class="entry_name 14891 " rowspan="3"> 14892 android.<wbr/>flash.<wbr/>strength<wbr/>Level 14893 </td> 14894 <td class="entry_type"> 14895 <span class="entry_type_name">int32</span> 14896 14897 <span class="entry_type_visibility"> [public]</span> 14898 14899 14900 <span class="entry_type_hwlevel">[legacy] </span> 14901 14902 14903 14904 14905 </td> <!-- entry_type --> 14906 14907 <td class="entry_description"> 14908 <p>Flash strength level to be used when manual flash control is active.<wbr/></p> 14909 </td> 14910 14911 <td class="entry_units"> 14912 </td> 14913 14914 <td class="entry_range"> 14915 <p><code>[1-<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a>]</code> when the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> is 14916set to TORCH; 14917<code>[1-<a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a>]</code> when the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> is 14918set to SINGLE</p> 14919 </td> 14920 14921 <td class="entry_hal_version"> 14922 <p>3.<wbr/>10</p> 14923 </td> 14924 14925 <td class="entry_tags"> 14926 </td> 14927 14928 </tr> 14929 <tr class="entries_header"> 14930 <th class="th_details" colspan="6">Details</th> 14931 </tr> 14932 <tr class="entry_cont"> 14933 <td class="entry_details" colspan="6"> 14934 <p>Flash strength level to use in capture mode i.<wbr/>e.<wbr/> when the applications control 14935flash with either <code>SINGLE</code> or <code>TORCH</code> mode.<wbr/></p> 14936<p>Use <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and 14937<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> to check whether the device supports 14938flash strength control or not.<wbr/> 14939If the values of <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and 14940<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> 14941then the device supports manual flash strength control.<wbr/></p> 14942<p>If the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> <code>TORCH</code> the value must be >= 1 14943and <= <a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a>.<wbr/> 14944If the application doesn't set the key and 14945<a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> > 1,<wbr/> 14946then the flash will be fired at the default level set by HAL in 14947<a href="#static_android.flash.torchStrengthDefaultLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Default<wbr/>Level</a>.<wbr/> 14948If the <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> <code>SINGLE</code>,<wbr/> then the value must be >= 1 14949and <= <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a>.<wbr/> 14950If the application does not set this key and 14951<a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> > 1,<wbr/> 14952then the flash will be fired at the default level set by HAL 14953in <a href="#static_android.flash.singleStrengthDefaultLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Default<wbr/>Level</a>.<wbr/> 14954If <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is set to any of <code>ON_<wbr/>AUTO_<wbr/>FLASH</code>,<wbr/> <code>ON_<wbr/>ALWAYS_<wbr/>FLASH</code>,<wbr/> 14955<code>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE</code>,<wbr/> <code>ON_<wbr/>EXTERNAL_<wbr/>FLASH</code> values,<wbr/> then the strengthLevel will be ignored.<wbr/></p> 14956<p>When AE mode is ON and flash mode is TORCH or SINGLE,<wbr/> the application should make sure 14957the AE mode,<wbr/> flash mode,<wbr/> and flash strength level remain the same between precapture 14958trigger request and final capture request.<wbr/> The flash strength level being set during 14959precapture sequence is used by the camera device as a reference.<wbr/> The actual strength 14960may be less,<wbr/> and the auto-exposure routine makes sure proper conversions of sensor 14961exposure time and sensitivities between precapture and final capture for the specified 14962strength level.<wbr/></p> 14963 </td> 14964 </tr> 14965 14966 14967 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14968 <!-- end of entry --> 14969 14970 14971 14972 <!-- end of kind --> 14973 </tbody> 14974 14975 <!-- end of section --> 14976 <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr> 14977 14978 14979 <tr><td colspan="7" class="kind">controls</td></tr> 14980 14981 <thead class="entries_header"> 14982 <tr> 14983 <th class="th_name">Property Name</th> 14984 <th class="th_type">Type</th> 14985 <th class="th_description">Description</th> 14986 <th class="th_units">Units</th> 14987 <th class="th_range">Range</th> 14988 <th class="th_hal_version">Initial HIDL HAL version</th> 14989 <th class="th_tags">Tags</th> 14990 </tr> 14991 </thead> 14992 14993 <tbody> 14994 14995 14996 14997 14998 14999 15000 15001 15002 15003 15004 <tr class="entry" id="controls_android.hotPixel.mode"> 15005 <td class="entry_name 15006 " rowspan="3"> 15007 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 15008 </td> 15009 <td class="entry_type"> 15010 <span class="entry_type_name entry_type_name_enum">byte</span> 15011 15012 <span class="entry_type_visibility"> [public]</span> 15013 15014 15015 15016 15017 15018 <ul class="entry_type_enum"> 15019 <li> 15020 <span class="entry_type_enum_name">OFF (v3.2)</span> 15021 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 15022<p>The frame rate must not be reduced relative to sensor raw output 15023for this option.<wbr/></p> 15024<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> 15025 </li> 15026 <li> 15027 <span class="entry_type_enum_name">FAST (v3.2)</span> 15028 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 15029rate relative to sensor raw output.<wbr/></p> 15030<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> 15031 </li> 15032 <li> 15033 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 15034 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 15035of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 15036<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> 15037 </li> 15038 </ul> 15039 15040 </td> <!-- entry_type --> 15041 15042 <td class="entry_description"> 15043 <p>Operational mode for hot pixel correction.<wbr/></p> 15044 </td> 15045 15046 <td class="entry_units"> 15047 </td> 15048 15049 <td class="entry_range"> 15050 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 15051 </td> 15052 15053 <td class="entry_hal_version"> 15054 <p>3.<wbr/>2</p> 15055 </td> 15056 15057 <td class="entry_tags"> 15058 <ul class="entry_tags"> 15059 <li><a href="#tag_V1">V1</a></li> 15060 <li><a href="#tag_RAW">RAW</a></li> 15061 </ul> 15062 </td> 15063 15064 </tr> 15065 <tr class="entries_header"> 15066 <th class="th_details" colspan="6">Details</th> 15067 </tr> 15068 <tr class="entry_cont"> 15069 <td class="entry_details" colspan="6"> 15070 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 15071that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 15072are stuck at an arbitrary value or are oversensitive).<wbr/></p> 15073 </td> 15074 </tr> 15075 15076 15077 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15078 <!-- end of entry --> 15079 15080 15081 15082 <!-- end of kind --> 15083 </tbody> 15084 <tr><td colspan="7" class="kind">static</td></tr> 15085 15086 <thead class="entries_header"> 15087 <tr> 15088 <th class="th_name">Property Name</th> 15089 <th class="th_type">Type</th> 15090 <th class="th_description">Description</th> 15091 <th class="th_units">Units</th> 15092 <th class="th_range">Range</th> 15093 <th class="th_hal_version">Initial HIDL HAL version</th> 15094 <th class="th_tags">Tags</th> 15095 </tr> 15096 </thead> 15097 15098 <tbody> 15099 15100 15101 15102 15103 15104 15105 15106 15107 15108 15109 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 15110 <td class="entry_name 15111 " rowspan="5"> 15112 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 15113 </td> 15114 <td class="entry_type"> 15115 <span class="entry_type_name">byte</span> 15116 <span class="entry_type_container">x</span> 15117 15118 <span class="entry_type_array"> 15119 n 15120 </span> 15121 <span class="entry_type_visibility"> [public as enumList]</span> 15122 15123 15124 15125 15126 <div class="entry_type_notes">list of enums</div> 15127 15128 15129 </td> <!-- entry_type --> 15130 15131 <td class="entry_description"> 15132 <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 15133camera device.<wbr/></p> 15134 </td> 15135 15136 <td class="entry_units"> 15137 </td> 15138 15139 <td class="entry_range"> 15140 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p> 15141 </td> 15142 15143 <td class="entry_hal_version"> 15144 <p>3.<wbr/>2</p> 15145 </td> 15146 15147 <td class="entry_tags"> 15148 <ul class="entry_tags"> 15149 <li><a href="#tag_V1">V1</a></li> 15150 <li><a href="#tag_RAW">RAW</a></li> 15151 </ul> 15152 </td> 15153 15154 </tr> 15155 <tr class="entries_header"> 15156 <th class="th_details" colspan="6">Details</th> 15157 </tr> 15158 <tr class="entry_cont"> 15159 <td class="entry_details" colspan="6"> 15160 <p>FULL mode camera devices will always support FAST.<wbr/></p> 15161 </td> 15162 </tr> 15163 15164 <tr class="entries_header"> 15165 <th class="th_details" colspan="6">HAL Implementation Details</th> 15166 </tr> 15167 <tr class="entry_cont"> 15168 <td class="entry_details" colspan="6"> 15169 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 15170pixels than actual pixels on the camera sensor.<wbr/> 15171HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available 15172on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 15173That is,<wbr/> if the highest quality implementation on the camera device does not slow down 15174capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 15175 </td> 15176 </tr> 15177 15178 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15179 <!-- end of entry --> 15180 15181 15182 15183 <!-- end of kind --> 15184 </tbody> 15185 <tr><td colspan="7" class="kind">dynamic</td></tr> 15186 15187 <thead class="entries_header"> 15188 <tr> 15189 <th class="th_name">Property Name</th> 15190 <th class="th_type">Type</th> 15191 <th class="th_description">Description</th> 15192 <th class="th_units">Units</th> 15193 <th class="th_range">Range</th> 15194 <th class="th_hal_version">Initial HIDL HAL version</th> 15195 <th class="th_tags">Tags</th> 15196 </tr> 15197 </thead> 15198 15199 <tbody> 15200 15201 15202 15203 15204 15205 15206 15207 15208 15209 15210 <tr class="entry" id="dynamic_android.hotPixel.mode"> 15211 <td class="entry_name 15212 " rowspan="3"> 15213 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 15214 </td> 15215 <td class="entry_type"> 15216 <span class="entry_type_name entry_type_name_enum">byte</span> 15217 15218 <span class="entry_type_visibility"> [public]</span> 15219 15220 15221 15222 15223 15224 <ul class="entry_type_enum"> 15225 <li> 15226 <span class="entry_type_enum_name">OFF (v3.2)</span> 15227 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 15228<p>The frame rate must not be reduced relative to sensor raw output 15229for this option.<wbr/></p> 15230<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> 15231 </li> 15232 <li> 15233 <span class="entry_type_enum_name">FAST (v3.2)</span> 15234 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 15235rate relative to sensor raw output.<wbr/></p> 15236<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> 15237 </li> 15238 <li> 15239 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 15240 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 15241of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 15242<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> 15243 </li> 15244 </ul> 15245 15246 </td> <!-- entry_type --> 15247 15248 <td class="entry_description"> 15249 <p>Operational mode for hot pixel correction.<wbr/></p> 15250 </td> 15251 15252 <td class="entry_units"> 15253 </td> 15254 15255 <td class="entry_range"> 15256 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 15257 </td> 15258 15259 <td class="entry_hal_version"> 15260 <p>3.<wbr/>2</p> 15261 </td> 15262 15263 <td class="entry_tags"> 15264 <ul class="entry_tags"> 15265 <li><a href="#tag_V1">V1</a></li> 15266 <li><a href="#tag_RAW">RAW</a></li> 15267 </ul> 15268 </td> 15269 15270 </tr> 15271 <tr class="entries_header"> 15272 <th class="th_details" colspan="6">Details</th> 15273 </tr> 15274 <tr class="entry_cont"> 15275 <td class="entry_details" colspan="6"> 15276 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 15277that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 15278are stuck at an arbitrary value or are oversensitive).<wbr/></p> 15279 </td> 15280 </tr> 15281 15282 15283 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15284 <!-- end of entry --> 15285 15286 15287 15288 <!-- end of kind --> 15289 </tbody> 15290 15291 <!-- end of section --> 15292 <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr> 15293 15294 15295 <tr><td colspan="7" class="kind">controls</td></tr> 15296 15297 <thead class="entries_header"> 15298 <tr> 15299 <th class="th_name">Property Name</th> 15300 <th class="th_type">Type</th> 15301 <th class="th_description">Description</th> 15302 <th class="th_units">Units</th> 15303 <th class="th_range">Range</th> 15304 <th class="th_hal_version">Initial HIDL HAL version</th> 15305 <th class="th_tags">Tags</th> 15306 </tr> 15307 </thead> 15308 15309 <tbody> 15310 15311 15312 15313 15314 15315 15316 15317 15318 15319 15320 <tr class="entry" id="controls_android.jpeg.gpsLocation"> 15321 <td class="entry_name 15322 " rowspan="3"> 15323 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 15324 </td> 15325 <td class="entry_type"> 15326 <span class="entry_type_name">byte</span> 15327 15328 <span class="entry_type_visibility"> [java_public as location]</span> 15329 15330 <span class="entry_type_synthetic">[synthetic] </span> 15331 15332 <span class="entry_type_hwlevel">[legacy] </span> 15333 15334 15335 15336 15337 </td> <!-- entry_type --> 15338 15339 <td class="entry_description"> 15340 <p>A location object to use when generating image GPS metadata.<wbr/></p> 15341 </td> 15342 15343 <td class="entry_units"> 15344 </td> 15345 15346 <td class="entry_range"> 15347 </td> 15348 15349 <td class="entry_hal_version"> 15350 <p>3.<wbr/>2</p> 15351 </td> 15352 15353 <td class="entry_tags"> 15354 </td> 15355 15356 </tr> 15357 <tr class="entries_header"> 15358 <th class="th_details" colspan="6">Details</th> 15359 </tr> 15360 <tr class="entry_cont"> 15361 <td class="entry_details" colspan="6"> 15362 <p>Setting a location object in a request will include the GPS coordinates of the location 15363into any JPEG images captured based on the request.<wbr/> These coordinates can then be 15364viewed by anyone who receives the JPEG image.<wbr/></p> 15365<p>This tag is also used for HEIC image capture.<wbr/></p> 15366 </td> 15367 </tr> 15368 15369 15370 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15371 <!-- end of entry --> 15372 15373 15374 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 15375 <td class="entry_name 15376 " rowspan="3"> 15377 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 15378 </td> 15379 <td class="entry_type"> 15380 <span class="entry_type_name">double</span> 15381 <span class="entry_type_container">x</span> 15382 15383 <span class="entry_type_array"> 15384 3 15385 </span> 15386 <span class="entry_type_visibility"> [ndk_public]</span> 15387 15388 15389 <span class="entry_type_hwlevel">[legacy] </span> 15390 15391 15392 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 15393 15394 15395 </td> <!-- entry_type --> 15396 15397 <td class="entry_description"> 15398 <p>GPS coordinates to include in output JPEG 15399EXIF.<wbr/></p> 15400 </td> 15401 15402 <td class="entry_units"> 15403 </td> 15404 15405 <td class="entry_range"> 15406 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 15407 </td> 15408 15409 <td class="entry_hal_version"> 15410 <p>3.<wbr/>2</p> 15411 </td> 15412 15413 <td class="entry_tags"> 15414 <ul class="entry_tags"> 15415 <li><a href="#tag_BC">BC</a></li> 15416 </ul> 15417 </td> 15418 15419 </tr> 15420 <tr class="entries_header"> 15421 <th class="th_details" colspan="6">Details</th> 15422 </tr> 15423 <tr class="entry_cont"> 15424 <td class="entry_details" colspan="6"> 15425 <p>This tag is also used for HEIC image capture.<wbr/></p> 15426 </td> 15427 </tr> 15428 15429 15430 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15431 <!-- end of entry --> 15432 15433 15434 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 15435 <td class="entry_name 15436 " rowspan="3"> 15437 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 15438 </td> 15439 <td class="entry_type"> 15440 <span class="entry_type_name">byte</span> 15441 15442 <span class="entry_type_visibility"> [ndk_public as string]</span> 15443 15444 15445 <span class="entry_type_hwlevel">[legacy] </span> 15446 15447 15448 15449 15450 </td> <!-- entry_type --> 15451 15452 <td class="entry_description"> 15453 <p>32 characters describing GPS algorithm to 15454include in EXIF.<wbr/></p> 15455 </td> 15456 15457 <td class="entry_units"> 15458 UTF-8 null-terminated string 15459 </td> 15460 15461 <td class="entry_range"> 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_BC">BC</a></li> 15471 </ul> 15472 </td> 15473 15474 </tr> 15475 <tr class="entries_header"> 15476 <th class="th_details" colspan="6">Details</th> 15477 </tr> 15478 <tr class="entry_cont"> 15479 <td class="entry_details" colspan="6"> 15480 <p>This tag is also used for HEIC image capture.<wbr/></p> 15481 </td> 15482 </tr> 15483 15484 15485 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15486 <!-- end of entry --> 15487 15488 15489 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 15490 <td class="entry_name 15491 " rowspan="3"> 15492 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 15493 </td> 15494 <td class="entry_type"> 15495 <span class="entry_type_name">int64</span> 15496 15497 <span class="entry_type_visibility"> [ndk_public]</span> 15498 15499 15500 <span class="entry_type_hwlevel">[legacy] </span> 15501 15502 15503 15504 15505 </td> <!-- entry_type --> 15506 15507 <td class="entry_description"> 15508 <p>Time GPS fix was made to include in 15509EXIF.<wbr/></p> 15510 </td> 15511 15512 <td class="entry_units"> 15513 UTC in seconds since January 1,<wbr/> 1970 15514 </td> 15515 15516 <td class="entry_range"> 15517 </td> 15518 15519 <td class="entry_hal_version"> 15520 <p>3.<wbr/>2</p> 15521 </td> 15522 15523 <td class="entry_tags"> 15524 <ul class="entry_tags"> 15525 <li><a href="#tag_BC">BC</a></li> 15526 </ul> 15527 </td> 15528 15529 </tr> 15530 <tr class="entries_header"> 15531 <th class="th_details" colspan="6">Details</th> 15532 </tr> 15533 <tr class="entry_cont"> 15534 <td class="entry_details" colspan="6"> 15535 <p>This tag is also used for HEIC image capture.<wbr/></p> 15536 </td> 15537 </tr> 15538 15539 15540 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15541 <!-- end of entry --> 15542 15543 15544 <tr class="entry" id="controls_android.jpeg.orientation"> 15545 <td class="entry_name 15546 " rowspan="3"> 15547 android.<wbr/>jpeg.<wbr/>orientation 15548 </td> 15549 <td class="entry_type"> 15550 <span class="entry_type_name">int32</span> 15551 15552 <span class="entry_type_visibility"> [public]</span> 15553 15554 15555 <span class="entry_type_hwlevel">[legacy] </span> 15556 15557 15558 15559 15560 </td> <!-- entry_type --> 15561 15562 <td class="entry_description"> 15563 <p>The orientation for a JPEG image.<wbr/></p> 15564 </td> 15565 15566 <td class="entry_units"> 15567 Degrees in multiples of 90 15568 </td> 15569 15570 <td class="entry_range"> 15571 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 15572 </td> 15573 15574 <td class="entry_hal_version"> 15575 <p>3.<wbr/>2</p> 15576 </td> 15577 15578 <td class="entry_tags"> 15579 <ul class="entry_tags"> 15580 <li><a href="#tag_BC">BC</a></li> 15581 </ul> 15582 </td> 15583 15584 </tr> 15585 <tr class="entries_header"> 15586 <th class="th_details" colspan="6">Details</th> 15587 </tr> 15588 <tr class="entry_cont"> 15589 <td class="entry_details" colspan="6"> 15590 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 15591to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 15592upright.<wbr/></p> 15593<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 15594rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 15595the thumbnail data will also be rotated.<wbr/> Additionally,<wbr/> in the case where the image data 15596is rotated,<wbr/> <a href="https://developer.android.com/reference/android/media/Image.html#getWidth">Image#getWidth</a> and <a href="https://developer.android.com/reference/android/media/Image.html#getHeight">Image#getHeight</a> 15597will not be updated to reflect the height and width of the rotated image.<wbr/></p> 15598<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 15599by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 15600<p>To translate from the device orientation given by the Android sensor APIs for camera 15601sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p> 15602<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 15603 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 15604 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 15605 15606 //<wbr/> Round device orientation to a multiple of 90 15607 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 15608 15609 //<wbr/> Reverse device orientation for front-facing cameras 15610 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 15611 if (facingFront) deviceOrientation = -deviceOrientation; 15612 15613 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 15614 //<wbr/> the image upright relative to the device orientation 15615 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 15616 15617 return jpegOrientation; 15618} 15619</code></pre> 15620<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will 15621also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p> 15622<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which 15623case the rotation is reflected by 15624<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by 15625rotating the image data itself.<wbr/></p> 15626 </td> 15627 </tr> 15628 15629 15630 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15631 <!-- end of entry --> 15632 15633 15634 <tr class="entry" id="controls_android.jpeg.quality"> 15635 <td class="entry_name 15636 " rowspan="3"> 15637 android.<wbr/>jpeg.<wbr/>quality 15638 </td> 15639 <td class="entry_type"> 15640 <span class="entry_type_name">byte</span> 15641 15642 <span class="entry_type_visibility"> [public]</span> 15643 15644 15645 <span class="entry_type_hwlevel">[legacy] </span> 15646 15647 15648 15649 15650 </td> <!-- entry_type --> 15651 15652 <td class="entry_description"> 15653 <p>Compression quality of the final JPEG 15654image.<wbr/></p> 15655 </td> 15656 15657 <td class="entry_units"> 15658 </td> 15659 15660 <td class="entry_range"> 15661 <p>1-100; larger is higher quality</p> 15662 </td> 15663 15664 <td class="entry_hal_version"> 15665 <p>3.<wbr/>2</p> 15666 </td> 15667 15668 <td class="entry_tags"> 15669 <ul class="entry_tags"> 15670 <li><a href="#tag_BC">BC</a></li> 15671 </ul> 15672 </td> 15673 15674 </tr> 15675 <tr class="entries_header"> 15676 <th class="th_details" colspan="6">Details</th> 15677 </tr> 15678 <tr class="entry_cont"> 15679 <td class="entry_details" colspan="6"> 15680 <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality 15681of the HEIC image capture.<wbr/></p> 15682 </td> 15683 </tr> 15684 15685 15686 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15687 <!-- end of entry --> 15688 15689 15690 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 15691 <td class="entry_name 15692 " rowspan="3"> 15693 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 15694 </td> 15695 <td class="entry_type"> 15696 <span class="entry_type_name">byte</span> 15697 15698 <span class="entry_type_visibility"> [public]</span> 15699 15700 15701 <span class="entry_type_hwlevel">[legacy] </span> 15702 15703 15704 15705 15706 </td> <!-- entry_type --> 15707 15708 <td class="entry_description"> 15709 <p>Compression quality of JPEG 15710thumbnail.<wbr/></p> 15711 </td> 15712 15713 <td class="entry_units"> 15714 </td> 15715 15716 <td class="entry_range"> 15717 <p>1-100; larger is higher quality</p> 15718 </td> 15719 15720 <td class="entry_hal_version"> 15721 <p>3.<wbr/>2</p> 15722 </td> 15723 15724 <td class="entry_tags"> 15725 <ul class="entry_tags"> 15726 <li><a href="#tag_BC">BC</a></li> 15727 </ul> 15728 </td> 15729 15730 </tr> 15731 <tr class="entries_header"> 15732 <th class="th_details" colspan="6">Details</th> 15733 </tr> 15734 <tr class="entry_cont"> 15735 <td class="entry_details" colspan="6"> 15736 <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p> 15737 </td> 15738 </tr> 15739 15740 15741 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15742 <!-- end of entry --> 15743 15744 15745 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 15746 <td class="entry_name 15747 " rowspan="5"> 15748 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 15749 </td> 15750 <td class="entry_type"> 15751 <span class="entry_type_name">int32</span> 15752 <span class="entry_type_container">x</span> 15753 15754 <span class="entry_type_array"> 15755 2 15756 </span> 15757 <span class="entry_type_visibility"> [public as size]</span> 15758 15759 15760 <span class="entry_type_hwlevel">[legacy] </span> 15761 15762 15763 15764 15765 </td> <!-- entry_type --> 15766 15767 <td class="entry_description"> 15768 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 15769 </td> 15770 15771 <td class="entry_units"> 15772 </td> 15773 15774 <td class="entry_range"> 15775 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 15776 </td> 15777 15778 <td class="entry_hal_version"> 15779 <p>3.<wbr/>2</p> 15780 </td> 15781 15782 <td class="entry_tags"> 15783 <ul class="entry_tags"> 15784 <li><a href="#tag_BC">BC</a></li> 15785 </ul> 15786 </td> 15787 15788 </tr> 15789 <tr class="entries_header"> 15790 <th class="th_details" colspan="6">Details</th> 15791 </tr> 15792 <tr class="entry_cont"> 15793 <td class="entry_details" colspan="6"> 15794 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 15795but the captured JPEG will still be a valid image.<wbr/></p> 15796<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 15797should have the same aspect ratio as the main JPEG output.<wbr/></p> 15798<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 15799ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 15800For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1580116:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 15802generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 15803Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 15804<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 15805the camera device will handle thumbnail rotation in one of the following ways:</p> 15806<ul> 15807<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 15808 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 15809<li>Rotate the jpeg and thumbnail image data and not set 15810 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 15811 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumbnail size in 15812 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 15813 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 15814 size.<wbr/></li> 15815</ul> 15816<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the 15817the thumbnail rotation is reflected by 15818<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by 15819rotating the thumbnail data itself.<wbr/></p> 15820 </td> 15821 </tr> 15822 15823 <tr class="entries_header"> 15824 <th class="th_details" colspan="6">HAL Implementation Details</th> 15825 </tr> 15826 <tr class="entry_cont"> 15827 <td class="entry_details" colspan="6"> 15828 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 15829The cropping must be done on the primary jpeg image rather than the sensor pre-correction 15830active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't 15831apply to the thumbnail image cropping.<wbr/></p> 15832 </td> 15833 </tr> 15834 15835 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15836 <!-- end of entry --> 15837 15838 15839 15840 <!-- end of kind --> 15841 </tbody> 15842 <tr><td colspan="7" class="kind">static</td></tr> 15843 15844 <thead class="entries_header"> 15845 <tr> 15846 <th class="th_name">Property Name</th> 15847 <th class="th_type">Type</th> 15848 <th class="th_description">Description</th> 15849 <th class="th_units">Units</th> 15850 <th class="th_range">Range</th> 15851 <th class="th_hal_version">Initial HIDL HAL version</th> 15852 <th class="th_tags">Tags</th> 15853 </tr> 15854 </thead> 15855 15856 <tbody> 15857 15858 15859 15860 15861 15862 15863 15864 15865 15866 15867 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 15868 <td class="entry_name 15869 " rowspan="3"> 15870 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 15871 </td> 15872 <td class="entry_type"> 15873 <span class="entry_type_name">int32</span> 15874 <span class="entry_type_container">x</span> 15875 15876 <span class="entry_type_array"> 15877 2 x n 15878 </span> 15879 <span class="entry_type_visibility"> [public as size]</span> 15880 15881 15882 <span class="entry_type_hwlevel">[legacy] </span> 15883 15884 15885 15886 15887 </td> <!-- entry_type --> 15888 15889 <td class="entry_description"> 15890 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this 15891camera device.<wbr/></p> 15892 </td> 15893 15894 <td class="entry_units"> 15895 </td> 15896 15897 <td class="entry_range"> 15898 </td> 15899 15900 <td class="entry_hal_version"> 15901 <p>3.<wbr/>2</p> 15902 </td> 15903 15904 <td class="entry_tags"> 15905 <ul class="entry_tags"> 15906 <li><a href="#tag_BC">BC</a></li> 15907 </ul> 15908 </td> 15909 15910 </tr> 15911 <tr class="entries_header"> 15912 <th class="th_details" colspan="6">Details</th> 15913 </tr> 15914 <tr class="entry_cont"> 15915 <td class="entry_details" colspan="6"> 15916 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no 15917thumbnail should be generated.<wbr/></p> 15918<p>Below conditions will be satisfied for this size list:</p> 15919<ul> 15920<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 15921If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 15922<li>The aspect ratio of the largest thumbnail size will be same as the 15923aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 15924The largest size is defined as the size that has the largest pixel area 15925in a given size list.<wbr/></li> 15926<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 15927one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 15928and vice versa.<wbr/></li> 15929<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li> 15930</ul> 15931<p>This list is also used as supported thumbnail sizes for HEIC image format capture.<wbr/></p> 15932 </td> 15933 </tr> 15934 15935 15936 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15937 <!-- end of entry --> 15938 15939 15940 <tr class="entry" id="static_android.jpeg.maxSize"> 15941 <td class="entry_name 15942 " rowspan="3"> 15943 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 15944 </td> 15945 <td class="entry_type"> 15946 <span class="entry_type_name">int32</span> 15947 15948 <span class="entry_type_visibility"> [system]</span> 15949 15950 15951 15952 15953 15954 15955 </td> <!-- entry_type --> 15956 15957 <td class="entry_description"> 15958 <p>Maximum size in bytes for the compressed 15959JPEG buffer,<wbr/> in default sensor pixel mode (see <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>)</p> 15960 </td> 15961 15962 <td class="entry_units"> 15963 </td> 15964 15965 <td class="entry_range"> 15966 <p>Must be large enough to fit any JPEG produced by 15967the camera</p> 15968 </td> 15969 15970 <td class="entry_hal_version"> 15971 <p>3.<wbr/>2</p> 15972 </td> 15973 15974 <td class="entry_tags"> 15975 </td> 15976 15977 </tr> 15978 <tr class="entries_header"> 15979 <th class="th_details" colspan="6">Details</th> 15980 </tr> 15981 <tr class="entry_cont"> 15982 <td class="entry_details" colspan="6"> 15983 <p>This is used for sizing the gralloc buffers for 15984JPEG</p> 15985 </td> 15986 </tr> 15987 15988 15989 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15990 <!-- end of entry --> 15991 15992 15993 15994 <!-- end of kind --> 15995 </tbody> 15996 <tr><td colspan="7" class="kind">dynamic</td></tr> 15997 15998 <thead class="entries_header"> 15999 <tr> 16000 <th class="th_name">Property Name</th> 16001 <th class="th_type">Type</th> 16002 <th class="th_description">Description</th> 16003 <th class="th_units">Units</th> 16004 <th class="th_range">Range</th> 16005 <th class="th_hal_version">Initial HIDL HAL version</th> 16006 <th class="th_tags">Tags</th> 16007 </tr> 16008 </thead> 16009 16010 <tbody> 16011 16012 16013 16014 16015 16016 16017 16018 16019 16020 16021 <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> 16022 <td class="entry_name 16023 " rowspan="3"> 16024 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 16025 </td> 16026 <td class="entry_type"> 16027 <span class="entry_type_name">byte</span> 16028 16029 <span class="entry_type_visibility"> [java_public as location]</span> 16030 16031 <span class="entry_type_synthetic">[synthetic] </span> 16032 16033 <span class="entry_type_hwlevel">[legacy] </span> 16034 16035 16036 16037 16038 </td> <!-- entry_type --> 16039 16040 <td class="entry_description"> 16041 <p>A location object to use when generating image GPS metadata.<wbr/></p> 16042 </td> 16043 16044 <td class="entry_units"> 16045 </td> 16046 16047 <td class="entry_range"> 16048 </td> 16049 16050 <td class="entry_hal_version"> 16051 <p>3.<wbr/>2</p> 16052 </td> 16053 16054 <td class="entry_tags"> 16055 </td> 16056 16057 </tr> 16058 <tr class="entries_header"> 16059 <th class="th_details" colspan="6">Details</th> 16060 </tr> 16061 <tr class="entry_cont"> 16062 <td class="entry_details" colspan="6"> 16063 <p>Setting a location object in a request will include the GPS coordinates of the location 16064into any JPEG images captured based on the request.<wbr/> These coordinates can then be 16065viewed by anyone who receives the JPEG image.<wbr/></p> 16066<p>This tag is also used for HEIC image capture.<wbr/></p> 16067 </td> 16068 </tr> 16069 16070 16071 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16072 <!-- end of entry --> 16073 16074 16075 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 16076 <td class="entry_name 16077 " rowspan="3"> 16078 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 16079 </td> 16080 <td class="entry_type"> 16081 <span class="entry_type_name">double</span> 16082 <span class="entry_type_container">x</span> 16083 16084 <span class="entry_type_array"> 16085 3 16086 </span> 16087 <span class="entry_type_visibility"> [ndk_public]</span> 16088 16089 16090 <span class="entry_type_hwlevel">[legacy] </span> 16091 16092 16093 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 16094 16095 16096 </td> <!-- entry_type --> 16097 16098 <td class="entry_description"> 16099 <p>GPS coordinates to include in output JPEG 16100EXIF.<wbr/></p> 16101 </td> 16102 16103 <td class="entry_units"> 16104 </td> 16105 16106 <td class="entry_range"> 16107 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 16108 </td> 16109 16110 <td class="entry_hal_version"> 16111 <p>3.<wbr/>2</p> 16112 </td> 16113 16114 <td class="entry_tags"> 16115 <ul class="entry_tags"> 16116 <li><a href="#tag_BC">BC</a></li> 16117 </ul> 16118 </td> 16119 16120 </tr> 16121 <tr class="entries_header"> 16122 <th class="th_details" colspan="6">Details</th> 16123 </tr> 16124 <tr class="entry_cont"> 16125 <td class="entry_details" colspan="6"> 16126 <p>This tag is also used for HEIC image capture.<wbr/></p> 16127 </td> 16128 </tr> 16129 16130 16131 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16132 <!-- end of entry --> 16133 16134 16135 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 16136 <td class="entry_name 16137 " rowspan="3"> 16138 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 16139 </td> 16140 <td class="entry_type"> 16141 <span class="entry_type_name">byte</span> 16142 16143 <span class="entry_type_visibility"> [ndk_public as string]</span> 16144 16145 16146 <span class="entry_type_hwlevel">[legacy] </span> 16147 16148 16149 16150 16151 </td> <!-- entry_type --> 16152 16153 <td class="entry_description"> 16154 <p>32 characters describing GPS algorithm to 16155include in EXIF.<wbr/></p> 16156 </td> 16157 16158 <td class="entry_units"> 16159 UTF-8 null-terminated string 16160 </td> 16161 16162 <td class="entry_range"> 16163 </td> 16164 16165 <td class="entry_hal_version"> 16166 <p>3.<wbr/>2</p> 16167 </td> 16168 16169 <td class="entry_tags"> 16170 <ul class="entry_tags"> 16171 <li><a href="#tag_BC">BC</a></li> 16172 </ul> 16173 </td> 16174 16175 </tr> 16176 <tr class="entries_header"> 16177 <th class="th_details" colspan="6">Details</th> 16178 </tr> 16179 <tr class="entry_cont"> 16180 <td class="entry_details" colspan="6"> 16181 <p>This tag is also used for HEIC image capture.<wbr/></p> 16182 </td> 16183 </tr> 16184 16185 16186 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16187 <!-- end of entry --> 16188 16189 16190 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 16191 <td class="entry_name 16192 " rowspan="3"> 16193 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 16194 </td> 16195 <td class="entry_type"> 16196 <span class="entry_type_name">int64</span> 16197 16198 <span class="entry_type_visibility"> [ndk_public]</span> 16199 16200 16201 <span class="entry_type_hwlevel">[legacy] </span> 16202 16203 16204 16205 16206 </td> <!-- entry_type --> 16207 16208 <td class="entry_description"> 16209 <p>Time GPS fix was made to include in 16210EXIF.<wbr/></p> 16211 </td> 16212 16213 <td class="entry_units"> 16214 UTC in seconds since January 1,<wbr/> 1970 16215 </td> 16216 16217 <td class="entry_range"> 16218 </td> 16219 16220 <td class="entry_hal_version"> 16221 <p>3.<wbr/>2</p> 16222 </td> 16223 16224 <td class="entry_tags"> 16225 <ul class="entry_tags"> 16226 <li><a href="#tag_BC">BC</a></li> 16227 </ul> 16228 </td> 16229 16230 </tr> 16231 <tr class="entries_header"> 16232 <th class="th_details" colspan="6">Details</th> 16233 </tr> 16234 <tr class="entry_cont"> 16235 <td class="entry_details" colspan="6"> 16236 <p>This tag is also used for HEIC image capture.<wbr/></p> 16237 </td> 16238 </tr> 16239 16240 16241 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16242 <!-- end of entry --> 16243 16244 16245 <tr class="entry" id="dynamic_android.jpeg.orientation"> 16246 <td class="entry_name 16247 " rowspan="3"> 16248 android.<wbr/>jpeg.<wbr/>orientation 16249 </td> 16250 <td class="entry_type"> 16251 <span class="entry_type_name">int32</span> 16252 16253 <span class="entry_type_visibility"> [public]</span> 16254 16255 16256 <span class="entry_type_hwlevel">[legacy] </span> 16257 16258 16259 16260 16261 </td> <!-- entry_type --> 16262 16263 <td class="entry_description"> 16264 <p>The orientation for a JPEG image.<wbr/></p> 16265 </td> 16266 16267 <td class="entry_units"> 16268 Degrees in multiples of 90 16269 </td> 16270 16271 <td class="entry_range"> 16272 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 16273 </td> 16274 16275 <td class="entry_hal_version"> 16276 <p>3.<wbr/>2</p> 16277 </td> 16278 16279 <td class="entry_tags"> 16280 <ul class="entry_tags"> 16281 <li><a href="#tag_BC">BC</a></li> 16282 </ul> 16283 </td> 16284 16285 </tr> 16286 <tr class="entries_header"> 16287 <th class="th_details" colspan="6">Details</th> 16288 </tr> 16289 <tr class="entry_cont"> 16290 <td class="entry_details" colspan="6"> 16291 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 16292to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 16293upright.<wbr/></p> 16294<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 16295rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 16296the thumbnail data will also be rotated.<wbr/> Additionally,<wbr/> in the case where the image data 16297is rotated,<wbr/> <a href="https://developer.android.com/reference/android/media/Image.html#getWidth">Image#getWidth</a> and <a href="https://developer.android.com/reference/android/media/Image.html#getHeight">Image#getHeight</a> 16298will not be updated to reflect the height and width of the rotated image.<wbr/></p> 16299<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 16300by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 16301<p>To translate from the device orientation given by the Android sensor APIs for camera 16302sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p> 16303<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 16304 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 16305 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 16306 16307 //<wbr/> Round device orientation to a multiple of 90 16308 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 16309 16310 //<wbr/> Reverse device orientation for front-facing cameras 16311 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 16312 if (facingFront) deviceOrientation = -deviceOrientation; 16313 16314 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 16315 //<wbr/> the image upright relative to the device orientation 16316 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 16317 16318 return jpegOrientation; 16319} 16320</code></pre> 16321<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will 16322also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p> 16323<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which 16324case the rotation is reflected by 16325<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by 16326rotating the image data itself.<wbr/></p> 16327 </td> 16328 </tr> 16329 16330 16331 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16332 <!-- end of entry --> 16333 16334 16335 <tr class="entry" id="dynamic_android.jpeg.quality"> 16336 <td class="entry_name 16337 " rowspan="3"> 16338 android.<wbr/>jpeg.<wbr/>quality 16339 </td> 16340 <td class="entry_type"> 16341 <span class="entry_type_name">byte</span> 16342 16343 <span class="entry_type_visibility"> [public]</span> 16344 16345 16346 <span class="entry_type_hwlevel">[legacy] </span> 16347 16348 16349 16350 16351 </td> <!-- entry_type --> 16352 16353 <td class="entry_description"> 16354 <p>Compression quality of the final JPEG 16355image.<wbr/></p> 16356 </td> 16357 16358 <td class="entry_units"> 16359 </td> 16360 16361 <td class="entry_range"> 16362 <p>1-100; larger is higher quality</p> 16363 </td> 16364 16365 <td class="entry_hal_version"> 16366 <p>3.<wbr/>2</p> 16367 </td> 16368 16369 <td class="entry_tags"> 16370 <ul class="entry_tags"> 16371 <li><a href="#tag_BC">BC</a></li> 16372 </ul> 16373 </td> 16374 16375 </tr> 16376 <tr class="entries_header"> 16377 <th class="th_details" colspan="6">Details</th> 16378 </tr> 16379 <tr class="entry_cont"> 16380 <td class="entry_details" colspan="6"> 16381 <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality 16382of the HEIC image capture.<wbr/></p> 16383 </td> 16384 </tr> 16385 16386 16387 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16388 <!-- end of entry --> 16389 16390 16391 <tr class="entry" id="dynamic_android.jpeg.size"> 16392 <td class="entry_name 16393 " rowspan="3"> 16394 android.<wbr/>jpeg.<wbr/>size 16395 </td> 16396 <td class="entry_type"> 16397 <span class="entry_type_name">int32</span> 16398 16399 <span class="entry_type_visibility"> [system]</span> 16400 16401 16402 16403 16404 16405 16406 </td> <!-- entry_type --> 16407 16408 <td class="entry_description"> 16409 <p>The size of the compressed JPEG image,<wbr/> in 16410bytes</p> 16411 </td> 16412 16413 <td class="entry_units"> 16414 </td> 16415 16416 <td class="entry_range"> 16417 <p>>= 0</p> 16418 </td> 16419 16420 <td class="entry_hal_version"> 16421 <p>3.<wbr/>2</p> 16422 </td> 16423 16424 <td class="entry_tags"> 16425 <ul class="entry_tags"> 16426 <li><a href="#tag_FUTURE">FUTURE</a></li> 16427 </ul> 16428 </td> 16429 16430 </tr> 16431 <tr class="entries_header"> 16432 <th class="th_details" colspan="6">Details</th> 16433 </tr> 16434 <tr class="entry_cont"> 16435 <td class="entry_details" colspan="6"> 16436 <p>If no JPEG output is produced for the request,<wbr/> 16437this must be 0.<wbr/></p> 16438<p>Otherwise,<wbr/> this describes the real size of the compressed 16439JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 16440if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 16441has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 16442the JPEG stream will be 1000000 bytes,<wbr/> of which the first 16443500000 make up the real data.<wbr/></p> 16444 </td> 16445 </tr> 16446 16447 16448 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16449 <!-- end of entry --> 16450 16451 16452 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 16453 <td class="entry_name 16454 " rowspan="3"> 16455 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 16456 </td> 16457 <td class="entry_type"> 16458 <span class="entry_type_name">byte</span> 16459 16460 <span class="entry_type_visibility"> [public]</span> 16461 16462 16463 <span class="entry_type_hwlevel">[legacy] </span> 16464 16465 16466 16467 16468 </td> <!-- entry_type --> 16469 16470 <td class="entry_description"> 16471 <p>Compression quality of JPEG 16472thumbnail.<wbr/></p> 16473 </td> 16474 16475 <td class="entry_units"> 16476 </td> 16477 16478 <td class="entry_range"> 16479 <p>1-100; larger is higher quality</p> 16480 </td> 16481 16482 <td class="entry_hal_version"> 16483 <p>3.<wbr/>2</p> 16484 </td> 16485 16486 <td class="entry_tags"> 16487 <ul class="entry_tags"> 16488 <li><a href="#tag_BC">BC</a></li> 16489 </ul> 16490 </td> 16491 16492 </tr> 16493 <tr class="entries_header"> 16494 <th class="th_details" colspan="6">Details</th> 16495 </tr> 16496 <tr class="entry_cont"> 16497 <td class="entry_details" colspan="6"> 16498 <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p> 16499 </td> 16500 </tr> 16501 16502 16503 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16504 <!-- end of entry --> 16505 16506 16507 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 16508 <td class="entry_name 16509 " rowspan="5"> 16510 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 16511 </td> 16512 <td class="entry_type"> 16513 <span class="entry_type_name">int32</span> 16514 <span class="entry_type_container">x</span> 16515 16516 <span class="entry_type_array"> 16517 2 16518 </span> 16519 <span class="entry_type_visibility"> [public as size]</span> 16520 16521 16522 <span class="entry_type_hwlevel">[legacy] </span> 16523 16524 16525 16526 16527 </td> <!-- entry_type --> 16528 16529 <td class="entry_description"> 16530 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 16531 </td> 16532 16533 <td class="entry_units"> 16534 </td> 16535 16536 <td class="entry_range"> 16537 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 16538 </td> 16539 16540 <td class="entry_hal_version"> 16541 <p>3.<wbr/>2</p> 16542 </td> 16543 16544 <td class="entry_tags"> 16545 <ul class="entry_tags"> 16546 <li><a href="#tag_BC">BC</a></li> 16547 </ul> 16548 </td> 16549 16550 </tr> 16551 <tr class="entries_header"> 16552 <th class="th_details" colspan="6">Details</th> 16553 </tr> 16554 <tr class="entry_cont"> 16555 <td class="entry_details" colspan="6"> 16556 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 16557but the captured JPEG will still be a valid image.<wbr/></p> 16558<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 16559should have the same aspect ratio as the main JPEG output.<wbr/></p> 16560<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 16561ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 16562For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1656316:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 16564generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 16565Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 16566<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 16567the camera device will handle thumbnail rotation in one of the following ways:</p> 16568<ul> 16569<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 16570 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 16571<li>Rotate the jpeg and thumbnail image data and not set 16572 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 16573 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumbnail size in 16574 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 16575 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 16576 size.<wbr/></li> 16577</ul> 16578<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the 16579the thumbnail rotation is reflected by 16580<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by 16581rotating the thumbnail data itself.<wbr/></p> 16582 </td> 16583 </tr> 16584 16585 <tr class="entries_header"> 16586 <th class="th_details" colspan="6">HAL Implementation Details</th> 16587 </tr> 16588 <tr class="entry_cont"> 16589 <td class="entry_details" colspan="6"> 16590 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 16591The cropping must be done on the primary jpeg image rather than the sensor pre-correction 16592active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't 16593apply to the thumbnail image cropping.<wbr/></p> 16594 </td> 16595 </tr> 16596 16597 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16598 <!-- end of entry --> 16599 16600 16601 16602 <!-- end of kind --> 16603 </tbody> 16604 16605 <!-- end of section --> 16606 <tr><td colspan="7" id="section_lens" class="section">lens</td></tr> 16607 16608 16609 <tr><td colspan="7" class="kind">controls</td></tr> 16610 16611 <thead class="entries_header"> 16612 <tr> 16613 <th class="th_name">Property Name</th> 16614 <th class="th_type">Type</th> 16615 <th class="th_description">Description</th> 16616 <th class="th_units">Units</th> 16617 <th class="th_range">Range</th> 16618 <th class="th_hal_version">Initial HIDL HAL version</th> 16619 <th class="th_tags">Tags</th> 16620 </tr> 16621 </thead> 16622 16623 <tbody> 16624 16625 16626 16627 16628 16629 16630 16631 16632 16633 16634 <tr class="entry" id="controls_android.lens.aperture"> 16635 <td class="entry_name 16636 " rowspan="3"> 16637 android.<wbr/>lens.<wbr/>aperture 16638 </td> 16639 <td class="entry_type"> 16640 <span class="entry_type_name">float</span> 16641 16642 <span class="entry_type_visibility"> [public]</span> 16643 16644 16645 <span class="entry_type_hwlevel">[full] </span> 16646 16647 16648 16649 16650 </td> <!-- entry_type --> 16651 16652 <td class="entry_description"> 16653 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 16654effective aperture diameter.<wbr/></p> 16655 </td> 16656 16657 <td class="entry_units"> 16658 The f-number (f/<wbr/>N) 16659 </td> 16660 16661 <td class="entry_range"> 16662 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 16663 </td> 16664 16665 <td class="entry_hal_version"> 16666 <p>3.<wbr/>2</p> 16667 </td> 16668 16669 <td class="entry_tags"> 16670 <ul class="entry_tags"> 16671 <li><a href="#tag_V1">V1</a></li> 16672 </ul> 16673 </td> 16674 16675 </tr> 16676 <tr class="entries_header"> 16677 <th class="th_details" colspan="6">Details</th> 16678 </tr> 16679 <tr class="entry_cont"> 16680 <td class="entry_details" colspan="6"> 16681 <p>Setting this value is only supported on the camera devices that have a variable 16682aperture lens.<wbr/></p> 16683<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 16684this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 16685<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> 16686to achieve manual exposure control.<wbr/></p> 16687<p>The requested aperture value may take several frames to reach the 16688requested value; the camera device will report the current (intermediate) 16689aperture size in capture result metadata while the aperture is changing.<wbr/> 16690While 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> 16691<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 16692the ON modes,<wbr/> this will be overridden by the camera device 16693auto-exposure algorithm,<wbr/> the overridden values are then provided 16694back to the user in the corresponding result.<wbr/></p> 16695 </td> 16696 </tr> 16697 16698 16699 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16700 <!-- end of entry --> 16701 16702 16703 <tr class="entry" id="controls_android.lens.filterDensity"> 16704 <td class="entry_name 16705 " rowspan="3"> 16706 android.<wbr/>lens.<wbr/>filter<wbr/>Density 16707 </td> 16708 <td class="entry_type"> 16709 <span class="entry_type_name">float</span> 16710 16711 <span class="entry_type_visibility"> [public]</span> 16712 16713 16714 <span class="entry_type_hwlevel">[full] </span> 16715 16716 16717 16718 16719 </td> <!-- entry_type --> 16720 16721 <td class="entry_description"> 16722 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 16723 </td> 16724 16725 <td class="entry_units"> 16726 Exposure Value (EV) 16727 </td> 16728 16729 <td class="entry_range"> 16730 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 16731 </td> 16732 16733 <td class="entry_hal_version"> 16734 <p>3.<wbr/>2</p> 16735 </td> 16736 16737 <td class="entry_tags"> 16738 <ul class="entry_tags"> 16739 <li><a href="#tag_V1">V1</a></li> 16740 </ul> 16741 </td> 16742 16743 </tr> 16744 <tr class="entries_header"> 16745 <th class="th_details" colspan="6">Details</th> 16746 </tr> 16747 <tr class="entry_cont"> 16748 <td class="entry_details" colspan="6"> 16749 <p>This control will not be supported on most camera devices.<wbr/></p> 16750<p>Lens filters are typically used to lower the amount of light the 16751sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 16752step is the standard logarithmic representation,<wbr/> which are 16753non-negative,<wbr/> and inversely proportional to the amount of light 16754hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 16755in no reduction of the incoming light,<wbr/> and setting this to 2 would 16756mean that the filter is set to reduce incoming light by two stops 16757(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 16758<p>It may take several frames before the lens filter density changes 16759to the requested value.<wbr/> While the filter density is still changing,<wbr/> 16760<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 16761 </td> 16762 </tr> 16763 16764 16765 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16766 <!-- end of entry --> 16767 16768 16769 <tr class="entry" id="controls_android.lens.focalLength"> 16770 <td class="entry_name 16771 " rowspan="5"> 16772 android.<wbr/>lens.<wbr/>focal<wbr/>Length 16773 </td> 16774 <td class="entry_type"> 16775 <span class="entry_type_name">float</span> 16776 16777 <span class="entry_type_visibility"> [public]</span> 16778 16779 16780 <span class="entry_type_hwlevel">[legacy] </span> 16781 16782 16783 16784 16785 </td> <!-- entry_type --> 16786 16787 <td class="entry_description"> 16788 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 16789 </td> 16790 16791 <td class="entry_units"> 16792 Millimeters 16793 </td> 16794 16795 <td class="entry_range"> 16796 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 16797 </td> 16798 16799 <td class="entry_hal_version"> 16800 <p>3.<wbr/>2</p> 16801 </td> 16802 16803 <td class="entry_tags"> 16804 <ul class="entry_tags"> 16805 <li><a href="#tag_V1">V1</a></li> 16806 </ul> 16807 </td> 16808 16809 </tr> 16810 <tr class="entries_header"> 16811 <th class="th_details" colspan="6">Details</th> 16812 </tr> 16813 <tr class="entry_cont"> 16814 <td class="entry_details" colspan="6"> 16815 <p>This setting controls the physical focal length of the camera 16816device's lens.<wbr/> Changing the focal length changes the field of 16817view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 16818<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 16819setting won't be applied instantaneously,<wbr/> and it may take several 16820frames before the lens can change to the requested focal length.<wbr/> 16821While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 16822be set to MOVING.<wbr/></p> 16823<p>Optical zoom via this control will not be supported on most devices.<wbr/> Starting from API 16824level 30,<wbr/> the camera device may combine optical and digital zoom through the 16825<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> control.<wbr/></p> 16826 </td> 16827 </tr> 16828 16829 <tr class="entries_header"> 16830 <th class="th_details" colspan="6">HAL Implementation Details</th> 16831 </tr> 16832 <tr class="entry_cont"> 16833 <td class="entry_details" colspan="6"> 16834 <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and 16835cropRegion change in the same request,<wbr/> the camera device must make sure that the new 16836focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there 16837is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied 16838immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device 16839will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p> 16840<p>Starting from API level 30,<wbr/> it's strongly recommended for HAL to implement the 16841combination of optical and digital zoom using the new <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> API,<wbr/> in 16842lieu of using <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 16843 </td> 16844 </tr> 16845 16846 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16847 <!-- end of entry --> 16848 16849 16850 <tr class="entry" id="controls_android.lens.focusDistance"> 16851 <td class="entry_name 16852 " rowspan="3"> 16853 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 16854 </td> 16855 <td class="entry_type"> 16856 <span class="entry_type_name">float</span> 16857 16858 <span class="entry_type_visibility"> [public]</span> 16859 16860 16861 <span class="entry_type_hwlevel">[full] </span> 16862 16863 16864 16865 16866 </td> <!-- entry_type --> 16867 16868 <td class="entry_description"> 16869 <p>Desired distance to plane of sharpest focus,<wbr/> 16870measured from frontmost surface of the lens.<wbr/></p> 16871 </td> 16872 16873 <td class="entry_units"> 16874 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 16875 </td> 16876 16877 <td class="entry_range"> 16878 <p>>= 0</p> 16879 </td> 16880 16881 <td class="entry_hal_version"> 16882 <p>3.<wbr/>2</p> 16883 </td> 16884 16885 <td class="entry_tags"> 16886 <ul class="entry_tags"> 16887 <li><a href="#tag_BC">BC</a></li> 16888 <li><a href="#tag_V1">V1</a></li> 16889 </ul> 16890 </td> 16891 16892 </tr> 16893 <tr class="entries_header"> 16894 <th class="th_details" colspan="6">Details</th> 16895 </tr> 16896 <tr class="entry_cont"> 16897 <td class="entry_details" colspan="6"> 16898 <p>This control can be used for setting manual focus,<wbr/> on devices that support 16899the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see 16900<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p> 16901<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to 16902<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> 16903<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 16904instantaneously,<wbr/> and it may take several frames before the lens 16905can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 16906<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 16907<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code> 16908for infinity focus.<wbr/></p> 16909 </td> 16910 </tr> 16911 16912 16913 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16914 <!-- end of entry --> 16915 16916 16917 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 16918 <td class="entry_name 16919 " rowspan="3"> 16920 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 16921 </td> 16922 <td class="entry_type"> 16923 <span class="entry_type_name entry_type_name_enum">byte</span> 16924 16925 <span class="entry_type_visibility"> [public]</span> 16926 16927 16928 <span class="entry_type_hwlevel">[limited] </span> 16929 16930 16931 16932 <ul class="entry_type_enum"> 16933 <li> 16934 <span class="entry_type_enum_name">OFF (v3.2)</span> 16935 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 16936 </li> 16937 <li> 16938 <span class="entry_type_enum_name">ON (v3.2)</span> 16939 <span class="entry_type_enum_optional">[optional]</span> 16940 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 16941 </li> 16942 </ul> 16943 16944 </td> <!-- entry_type --> 16945 16946 <td class="entry_description"> 16947 <p>Sets whether the camera device uses optical image stabilization (OIS) 16948when capturing images.<wbr/></p> 16949 </td> 16950 16951 <td class="entry_units"> 16952 </td> 16953 16954 <td class="entry_range"> 16955 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 16956 </td> 16957 16958 <td class="entry_hal_version"> 16959 <p>3.<wbr/>2</p> 16960 </td> 16961 16962 <td class="entry_tags"> 16963 <ul class="entry_tags"> 16964 <li><a href="#tag_V1">V1</a></li> 16965 </ul> 16966 </td> 16967 16968 </tr> 16969 <tr class="entries_header"> 16970 <th class="th_details" colspan="6">Details</th> 16971 </tr> 16972 <tr class="entry_cont"> 16973 <td class="entry_details" colspan="6"> 16974 <p>OIS is used to compensate for motion blur due to small 16975movements of the camera during capture.<wbr/> Unlike digital image 16976stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 16977makes use of mechanical elements to stabilize the camera 16978sensor,<wbr/> and thus allows for longer exposure times before 16979camera shake becomes apparent.<wbr/></p> 16980<p>Switching between different optical stabilization modes may take several 16981frames to initialize,<wbr/> the camera device will report the current mode in 16982capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 16983optical stabilization modes in the first several capture results may still 16984be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 16985<p>If a camera device supports both OIS and digital image stabilization 16986(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 16987interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 16988<p>If <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/> 16989<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose 16990to turn on hardware based image stabilization in addition to software based stabilization 16991if it deems that appropriate.<wbr/> This key's value in the capture result will reflect which 16992OIS mode was chosen.<wbr/></p> 16993<p>Not all devices will support OIS; see 16994<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 16995available controls.<wbr/></p> 16996 </td> 16997 </tr> 16998 16999 17000 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17001 <!-- end of entry --> 17002 17003 17004 17005 <!-- end of kind --> 17006 </tbody> 17007 <tr><td colspan="7" class="kind">static</td></tr> 17008 17009 <thead class="entries_header"> 17010 <tr> 17011 <th class="th_name">Property Name</th> 17012 <th class="th_type">Type</th> 17013 <th class="th_description">Description</th> 17014 <th class="th_units">Units</th> 17015 <th class="th_range">Range</th> 17016 <th class="th_hal_version">Initial HIDL HAL version</th> 17017 <th class="th_tags">Tags</th> 17018 </tr> 17019 </thead> 17020 17021 <tbody> 17022 17023 17024 17025 17026 17027 17028 17029 17030 17031 17032 17033 17034 <tr class="entry" id="static_android.lens.info.availableApertures"> 17035 <td class="entry_name 17036 " rowspan="3"> 17037 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 17038 </td> 17039 <td class="entry_type"> 17040 <span class="entry_type_name">float</span> 17041 <span class="entry_type_container">x</span> 17042 17043 <span class="entry_type_array"> 17044 n 17045 </span> 17046 <span class="entry_type_visibility"> [public]</span> 17047 17048 17049 <span class="entry_type_hwlevel">[full] </span> 17050 17051 17052 17053 17054 </td> <!-- entry_type --> 17055 17056 <td class="entry_description"> 17057 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are 17058supported by this camera device.<wbr/></p> 17059 </td> 17060 17061 <td class="entry_units"> 17062 The aperture f-number 17063 </td> 17064 17065 <td class="entry_range"> 17066 </td> 17067 17068 <td class="entry_hal_version"> 17069 <p>3.<wbr/>2</p> 17070 </td> 17071 17072 <td class="entry_tags"> 17073 <ul class="entry_tags"> 17074 <li><a href="#tag_V1">V1</a></li> 17075 </ul> 17076 </td> 17077 17078 </tr> 17079 <tr class="entries_header"> 17080 <th class="th_details" colspan="6">Details</th> 17081 </tr> 17082 <tr class="entry_cont"> 17083 <td class="entry_details" colspan="6"> 17084 <p>If the camera device doesn't support a variable lens aperture,<wbr/> 17085this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p> 17086<p>If the camera device supports a variable aperture,<wbr/> the aperture values 17087in this list will be sorted in ascending order.<wbr/></p> 17088 </td> 17089 </tr> 17090 17091 17092 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17093 <!-- end of entry --> 17094 17095 17096 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 17097 <td class="entry_name 17098 " rowspan="3"> 17099 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 17100 </td> 17101 <td class="entry_type"> 17102 <span class="entry_type_name">float</span> 17103 <span class="entry_type_container">x</span> 17104 17105 <span class="entry_type_array"> 17106 n 17107 </span> 17108 <span class="entry_type_visibility"> [public]</span> 17109 17110 17111 <span class="entry_type_hwlevel">[full] </span> 17112 17113 17114 17115 17116 </td> <!-- entry_type --> 17117 17118 <td class="entry_description"> 17119 <p>List of neutral density filter values for 17120<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p> 17121 </td> 17122 17123 <td class="entry_units"> 17124 Exposure value (EV) 17125 </td> 17126 17127 <td class="entry_range"> 17128 <p>Values are >= 0</p> 17129 </td> 17130 17131 <td class="entry_hal_version"> 17132 <p>3.<wbr/>2</p> 17133 </td> 17134 17135 <td class="entry_tags"> 17136 <ul class="entry_tags"> 17137 <li><a href="#tag_V1">V1</a></li> 17138 </ul> 17139 </td> 17140 17141 </tr> 17142 <tr class="entries_header"> 17143 <th class="th_details" colspan="6">Details</th> 17144 </tr> 17145 <tr class="entry_cont"> 17146 <td class="entry_details" colspan="6"> 17147 <p>If a neutral density filter is not supported by this camera device,<wbr/> 17148this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every 17149filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p> 17150 </td> 17151 </tr> 17152 17153 17154 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17155 <!-- end of entry --> 17156 17157 17158 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 17159 <td class="entry_name 17160 " rowspan="3"> 17161 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 17162 </td> 17163 <td class="entry_type"> 17164 <span class="entry_type_name">float</span> 17165 <span class="entry_type_container">x</span> 17166 17167 <span class="entry_type_array"> 17168 n 17169 </span> 17170 <span class="entry_type_visibility"> [public]</span> 17171 17172 17173 <span class="entry_type_hwlevel">[legacy] </span> 17174 17175 17176 <div class="entry_type_notes">The list of available focal lengths</div> 17177 17178 17179 </td> <!-- entry_type --> 17180 17181 <td class="entry_description"> 17182 <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 17183device.<wbr/></p> 17184 </td> 17185 17186 <td class="entry_units"> 17187 Millimeters 17188 </td> 17189 17190 <td class="entry_range"> 17191 <p>Values are > 0</p> 17192 </td> 17193 17194 <td class="entry_hal_version"> 17195 <p>3.<wbr/>2</p> 17196 </td> 17197 17198 <td class="entry_tags"> 17199 <ul class="entry_tags"> 17200 <li><a href="#tag_BC">BC</a></li> 17201 <li><a href="#tag_V1">V1</a></li> 17202 </ul> 17203 </td> 17204 17205 </tr> 17206 <tr class="entries_header"> 17207 <th class="th_details" colspan="6">Details</th> 17208 </tr> 17209 <tr class="entry_cont"> 17210 <td class="entry_details" colspan="6"> 17211 <p>If optical zoom is not supported,<wbr/> this list will only contain 17212a single value corresponding to the fixed focal length of the 17213device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported 17214by the camera device,<wbr/> in ascending order.<wbr/></p> 17215 </td> 17216 </tr> 17217 17218 17219 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17220 <!-- end of entry --> 17221 17222 17223 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 17224 <td class="entry_name 17225 " rowspan="3"> 17226 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 17227 </td> 17228 <td class="entry_type"> 17229 <span class="entry_type_name">byte</span> 17230 <span class="entry_type_container">x</span> 17231 17232 <span class="entry_type_array"> 17233 n 17234 </span> 17235 <span class="entry_type_visibility"> [public as enumList]</span> 17236 17237 17238 <span class="entry_type_hwlevel">[limited] </span> 17239 17240 17241 <div class="entry_type_notes">list of enums</div> 17242 17243 17244 </td> <!-- entry_type --> 17245 17246 <td class="entry_description"> 17247 <p>List of optical image stabilization (OIS) modes for 17248<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> 17249 </td> 17250 17251 <td class="entry_units"> 17252 </td> 17253 17254 <td class="entry_range"> 17255 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p> 17256 </td> 17257 17258 <td class="entry_hal_version"> 17259 <p>3.<wbr/>2</p> 17260 </td> 17261 17262 <td class="entry_tags"> 17263 <ul class="entry_tags"> 17264 <li><a href="#tag_V1">V1</a></li> 17265 </ul> 17266 </td> 17267 17268 </tr> 17269 <tr class="entries_header"> 17270 <th class="th_details" colspan="6">Details</th> 17271 </tr> 17272 <tr class="entry_cont"> 17273 <td class="entry_details" colspan="6"> 17274 <p>If OIS is not supported by a given camera device,<wbr/> this list will 17275contain only OFF.<wbr/></p> 17276 </td> 17277 </tr> 17278 17279 17280 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17281 <!-- end of entry --> 17282 17283 17284 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 17285 <td class="entry_name 17286 " rowspan="3"> 17287 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 17288 </td> 17289 <td class="entry_type"> 17290 <span class="entry_type_name">float</span> 17291 17292 <span class="entry_type_visibility"> [public]</span> 17293 17294 17295 <span class="entry_type_hwlevel">[limited] </span> 17296 17297 17298 17299 17300 </td> <!-- entry_type --> 17301 17302 <td class="entry_description"> 17303 <p>Hyperfocal distance for this lens.<wbr/></p> 17304 </td> 17305 17306 <td class="entry_units"> 17307 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 17308 </td> 17309 17310 <td class="entry_range"> 17311 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is 17312within <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> 17313 </td> 17314 17315 <td class="entry_hal_version"> 17316 <p>3.<wbr/>2</p> 17317 </td> 17318 17319 <td class="entry_tags"> 17320 </td> 17321 17322 </tr> 17323 <tr class="entries_header"> 17324 <th class="th_details" colspan="6">Details</th> 17325 </tr> 17326 <tr class="entry_cont"> 17327 <td class="entry_details" colspan="6"> 17328 <p>If the lens is not fixed focus,<wbr/> the camera device will report this 17329field 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> 17330 </td> 17331 </tr> 17332 17333 17334 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17335 <!-- end of entry --> 17336 17337 17338 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 17339 <td class="entry_name 17340 " rowspan="5"> 17341 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 17342 </td> 17343 <td class="entry_type"> 17344 <span class="entry_type_name">float</span> 17345 17346 <span class="entry_type_visibility"> [public]</span> 17347 17348 17349 <span class="entry_type_hwlevel">[limited] </span> 17350 17351 17352 17353 17354 </td> <!-- entry_type --> 17355 17356 <td class="entry_description"> 17357 <p>Shortest distance from frontmost surface 17358of the lens that can be brought into sharp focus.<wbr/></p> 17359 </td> 17360 17361 <td class="entry_units"> 17362 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 17363 </td> 17364 17365 <td class="entry_range"> 17366 <p>>= 0</p> 17367 </td> 17368 17369 <td class="entry_hal_version"> 17370 <p>3.<wbr/>2</p> 17371 </td> 17372 17373 <td class="entry_tags"> 17374 <ul class="entry_tags"> 17375 <li><a href="#tag_V1">V1</a></li> 17376 </ul> 17377 </td> 17378 17379 </tr> 17380 <tr class="entries_header"> 17381 <th class="th_details" colspan="6">Details</th> 17382 </tr> 17383 <tr class="entry_cont"> 17384 <td class="entry_details" colspan="6"> 17385 <p>If the lens is fixed-focus,<wbr/> this will be 173860.<wbr/></p> 17387 </td> 17388 </tr> 17389 17390 <tr class="entries_header"> 17391 <th class="th_details" colspan="6">HAL Implementation Details</th> 17392 </tr> 17393 <tr class="entry_cont"> 17394 <td class="entry_details" colspan="6"> 17395 <p>Mandatory for FULL devices; LIMITED devices 17396must always set this value to 0 for fixed-focus; and may omit 17397the minimum focus distance otherwise.<wbr/></p> 17398<p>This field is also mandatory for all devices advertising 17399the MANUAL_<wbr/>SENSOR capability.<wbr/></p> 17400 </td> 17401 </tr> 17402 17403 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17404 <!-- end of entry --> 17405 17406 17407 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 17408 <td class="entry_name 17409 " rowspan="3"> 17410 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 17411 </td> 17412 <td class="entry_type"> 17413 <span class="entry_type_name">int32</span> 17414 <span class="entry_type_container">x</span> 17415 17416 <span class="entry_type_array"> 17417 2 17418 </span> 17419 <span class="entry_type_visibility"> [ndk_public as size]</span> 17420 17421 17422 <span class="entry_type_hwlevel">[full] </span> 17423 17424 17425 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 17426 17427 17428 </td> <!-- entry_type --> 17429 17430 <td class="entry_description"> 17431 <p>Dimensions of lens shading map.<wbr/></p> 17432 </td> 17433 17434 <td class="entry_units"> 17435 </td> 17436 17437 <td class="entry_range"> 17438 <p>Both values >= 1</p> 17439 </td> 17440 17441 <td class="entry_hal_version"> 17442 <p>3.<wbr/>2</p> 17443 </td> 17444 17445 <td class="entry_tags"> 17446 <ul class="entry_tags"> 17447 <li><a href="#tag_V1">V1</a></li> 17448 </ul> 17449 </td> 17450 17451 </tr> 17452 <tr class="entries_header"> 17453 <th class="th_details" colspan="6">Details</th> 17454 </tr> 17455 <tr class="entry_cont"> 17456 <td class="entry_details" colspan="6"> 17457 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 17458must be smaller than 64x64.<wbr/></p> 17459 </td> 17460 </tr> 17461 17462 17463 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17464 <!-- end of entry --> 17465 17466 17467 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 17468 <td class="entry_name 17469 " rowspan="5"> 17470 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 17471 </td> 17472 <td class="entry_type"> 17473 <span class="entry_type_name entry_type_name_enum">byte</span> 17474 17475 <span class="entry_type_visibility"> [public]</span> 17476 17477 17478 <span class="entry_type_hwlevel">[limited] </span> 17479 17480 17481 17482 <ul class="entry_type_enum"> 17483 <li> 17484 <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span> 17485 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 17486<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p> 17487<p>Setting the lens to the same focus distance on separate occasions may 17488result in a different real focus distance,<wbr/> depending on factors such 17489as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 17490and the device temperature.<wbr/> The focus distance value will still be 17491in 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 17492represents the farthest focus.<wbr/></p></span> 17493 </li> 17494 <li> 17495 <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span> 17496 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p> 17497<p>However,<wbr/> setting the lens to the same focus distance 17498on separate occasions may result in a different real 17499focus distance,<wbr/> depending on factors such as the 17500orientation of the device,<wbr/> the age of the focusing 17501mechanism,<wbr/> and the device temperature.<wbr/></p></span> 17502 </li> 17503 <li> 17504 <span class="entry_type_enum_name">CALIBRATED (v3.2)</span> 17505 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and 17506is calibrated.<wbr/></p> 17507<p>The lens mechanism is calibrated so that setting the 17508same focus distance is repeatable on multiple 17509occasions with good accuracy,<wbr/> and the focus distance 17510corresponds to the real physical distance to the plane 17511of best focus.<wbr/></p></span> 17512 </li> 17513 </ul> 17514 17515 </td> <!-- entry_type --> 17516 17517 <td class="entry_description"> 17518 <p>The lens focus distance calibration quality.<wbr/></p> 17519 </td> 17520 17521 <td class="entry_units"> 17522 </td> 17523 17524 <td class="entry_range"> 17525 </td> 17526 17527 <td class="entry_hal_version"> 17528 <p>3.<wbr/>2</p> 17529 </td> 17530 17531 <td class="entry_tags"> 17532 <ul class="entry_tags"> 17533 <li><a href="#tag_V1">V1</a></li> 17534 </ul> 17535 </td> 17536 17537 </tr> 17538 <tr class="entries_header"> 17539 <th class="th_details" colspan="6">Details</th> 17540 </tr> 17541 <tr class="entry_cont"> 17542 <td class="entry_details" colspan="6"> 17543 <p>The lens focus distance calibration quality determines the reliability of 17544focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 17545<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 17546<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 17547<p>APPROXIMATE and CALIBRATED devices report the focus metadata in 17548units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> 17549and increasing positive numbers represent focusing closer and closer 17550to the camera device.<wbr/> The focus distance control also uses diopters 17551on these devices.<wbr/></p> 17552<p>UNCALIBRATED devices do not use units that are directly comparable 17553to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest 17554focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the 17555nearest focus the device can achieve.<wbr/></p> 17556 </td> 17557 </tr> 17558 17559 <tr class="entries_header"> 17560 <th class="th_details" colspan="6">HAL Implementation Details</th> 17561 </tr> 17562 <tr class="entry_cont"> 17563 <td class="entry_details" colspan="6"> 17564 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity 17565focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) 17566and the lens focus distance is set to 0 diopters 17567(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity 17568and is stably focused at infinity even if the device tilts.<wbr/> It may take the 17569lens some time to move; during the move the lens state should be MOVING and 17570the output diopter value should be changing toward 0.<wbr/></p> 17571 </td> 17572 </tr> 17573 17574 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17575 <!-- end of entry --> 17576 17577 17578 17579 17580 17581 <tr class="entry" id="static_android.lens.facing"> 17582 <td class="entry_name 17583 " rowspan="1"> 17584 android.<wbr/>lens.<wbr/>facing 17585 </td> 17586 <td class="entry_type"> 17587 <span class="entry_type_name entry_type_name_enum">byte</span> 17588 17589 <span class="entry_type_visibility"> [public]</span> 17590 17591 17592 <span class="entry_type_hwlevel">[legacy] </span> 17593 17594 17595 17596 <ul class="entry_type_enum"> 17597 <li> 17598 <span class="entry_type_enum_name">FRONT (v3.2)</span> 17599 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span> 17600 </li> 17601 <li> 17602 <span class="entry_type_enum_name">BACK (v3.2)</span> 17603 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span> 17604 </li> 17605 <li> 17606 <span class="entry_type_enum_name">EXTERNAL (v3.2)</span> 17607 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the 17608device's screen.<wbr/></p></span> 17609 </li> 17610 </ul> 17611 17612 </td> <!-- entry_type --> 17613 17614 <td class="entry_description"> 17615 <p>Direction the camera faces relative to 17616device screen.<wbr/></p> 17617 </td> 17618 17619 <td class="entry_units"> 17620 </td> 17621 17622 <td class="entry_range"> 17623 </td> 17624 17625 <td class="entry_hal_version"> 17626 <p>3.<wbr/>2</p> 17627 </td> 17628 17629 <td class="entry_tags"> 17630 </td> 17631 17632 </tr> 17633 17634 17635 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17636 <!-- end of entry --> 17637 17638 17639 <tr class="entry" id="static_android.lens.poseRotation"> 17640 <td class="entry_name 17641 " rowspan="3"> 17642 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 17643 </td> 17644 <td class="entry_type"> 17645 <span class="entry_type_name">float</span> 17646 <span class="entry_type_container">x</span> 17647 17648 <span class="entry_type_array"> 17649 4 17650 </span> 17651 <span class="entry_type_visibility"> [public]</span> 17652 17653 17654 17655 17656 17657 17658 </td> <!-- entry_type --> 17659 17660 <td class="entry_description"> 17661 <p>The orientation of the camera relative to the sensor 17662coordinate system.<wbr/></p> 17663 </td> 17664 17665 <td class="entry_units"> 17666 17667 Quaternion coefficients 17668 17669 </td> 17670 17671 <td class="entry_range"> 17672 </td> 17673 17674 <td class="entry_hal_version"> 17675 <p>3.<wbr/>2</p> 17676 </td> 17677 17678 <td class="entry_tags"> 17679 <ul class="entry_tags"> 17680 <li><a href="#tag_DEPTH">DEPTH</a></li> 17681 </ul> 17682 </td> 17683 17684 </tr> 17685 <tr class="entries_header"> 17686 <th class="th_details" colspan="6">Details</th> 17687 </tr> 17688 <tr class="entry_cont"> 17689 <td class="entry_details" colspan="6"> 17690 <p>The four coefficients that describe the quaternion 17691rotation from the Android sensor coordinate system to a 17692camera-aligned coordinate system where the X-axis is 17693aligned with the long side of the image sensor,<wbr/> the Y-axis 17694is aligned with the short side of the image sensor,<wbr/> and 17695the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 17696<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 17697to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 17698amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 17699<pre><code> theta = 2 * acos(w) 17700a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 17701a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 17702a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 17703</code></pre> 17704<p>To create a 3x3 rotation matrix that applies the rotation 17705defined by this quaternion,<wbr/> the following matrix can be 17706used:</p> 17707<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 17708 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 17709 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 17710</code></pre> 17711<p>This matrix can then be used to apply the rotation to a 17712 column vector point with</p> 17713<p><code>p' = Rp</code></p> 17714<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 17715 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 17716<p>If <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> the quaternion rotation cannot 17717 be accurately represented by the camera device,<wbr/> and will be represented by 17718 default values matching its default facing.<wbr/></p> 17719 </td> 17720 </tr> 17721 17722 17723 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17724 <!-- end of entry --> 17725 17726 17727 <tr class="entry" id="static_android.lens.poseTranslation"> 17728 <td class="entry_name 17729 " rowspan="3"> 17730 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 17731 </td> 17732 <td class="entry_type"> 17733 <span class="entry_type_name">float</span> 17734 <span class="entry_type_container">x</span> 17735 17736 <span class="entry_type_array"> 17737 3 17738 </span> 17739 <span class="entry_type_visibility"> [public]</span> 17740 17741 17742 17743 17744 17745 17746 </td> <!-- entry_type --> 17747 17748 <td class="entry_description"> 17749 <p>Position of the camera optical center.<wbr/></p> 17750 </td> 17751 17752 <td class="entry_units"> 17753 Meters 17754 </td> 17755 17756 <td class="entry_range"> 17757 </td> 17758 17759 <td class="entry_hal_version"> 17760 <p>3.<wbr/>2</p> 17761 </td> 17762 17763 <td class="entry_tags"> 17764 <ul class="entry_tags"> 17765 <li><a href="#tag_DEPTH">DEPTH</a></li> 17766 </ul> 17767 </td> 17768 17769 </tr> 17770 <tr class="entries_header"> 17771 <th class="th_details" colspan="6">Details</th> 17772 </tr> 17773 <tr class="entry_cont"> 17774 <td class="entry_details" colspan="6"> 17775 <p>The position of the camera device's lens optical center,<wbr/> 17776as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p> 17777<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 17778is relative to the optical center of the largest camera device facing in the same 17779direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor 17780coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor 17781coordinate system,<wbr/> but not the origin.<wbr/></p> 17782<p>If this device is the largest or only camera device with a given facing,<wbr/> then this 17783position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm 17784from the main sensor along the +X axis (to the right from the user's perspective) will 17785report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/> Note that this means that,<wbr/> for many computer vision 17786applications,<wbr/> the position needs to be negated to convert it to a translation from the 17787camera to the origin.<wbr/></p> 17788<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first 17789the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source 17790camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the 17791<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 17792relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination 17793camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination 17794camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel 17795coordinates.<wbr/></p> 17796<p>To compare this against a real image from the destination camera,<wbr/> the destination camera 17797image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p> 17798<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 17799the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as 17800with PRIMARY_<wbr/>CAMERA.<wbr/></p> 17801<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> this position cannot be accurately 17802represented by the camera device,<wbr/> and will be represented as <code>(0,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 17803<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is AUTOMOTIVE,<wbr/> then this position is relative to the 17804origin of the automotive sensor coordinate system,<wbr/> which is at the center of the rear 17805axle.<wbr/></p> 17806 </td> 17807 </tr> 17808 17809 17810 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17811 <!-- end of entry --> 17812 17813 17814 <tr class="entry" id="static_android.lens.intrinsicCalibration"> 17815 <td class="entry_name 17816 " rowspan="3"> 17817 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 17818 </td> 17819 <td class="entry_type"> 17820 <span class="entry_type_name">float</span> 17821 <span class="entry_type_container">x</span> 17822 17823 <span class="entry_type_array"> 17824 5 17825 </span> 17826 <span class="entry_type_visibility"> [public]</span> 17827 17828 17829 17830 17831 17832 17833 </td> <!-- entry_type --> 17834 17835 <td class="entry_description"> 17836 <p>The parameters for this camera device's intrinsic 17837calibration.<wbr/></p> 17838 </td> 17839 17840 <td class="entry_units"> 17841 17842 Pixels in the 17843 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 17844 coordinate system.<wbr/> 17845 17846 </td> 17847 17848 <td class="entry_range"> 17849 </td> 17850 17851 <td class="entry_hal_version"> 17852 <p>3.<wbr/>2</p> 17853 </td> 17854 17855 <td class="entry_tags"> 17856 <ul class="entry_tags"> 17857 <li><a href="#tag_DEPTH">DEPTH</a></li> 17858 </ul> 17859 </td> 17860 17861 </tr> 17862 <tr class="entries_header"> 17863 <th class="th_details" colspan="6">Details</th> 17864 </tr> 17865 <tr class="entry_cont"> 17866 <td class="entry_details" colspan="6"> 17867 <p>The five calibration parameters that describe the 17868transform from camera-centric 3D coordinates to sensor 17869pixel coordinates:</p> 17870<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 17871</code></pre> 17872<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 17873focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 17874axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 17875being aligned with the lens plane.<wbr/></p> 17876<p>These are typically used within a transformation matrix K:</p> 17877<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 17878 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 17879 0 0,<wbr/> 1 ] 17880</code></pre> 17881<p>which can then be combined with the camera pose rotation 17882<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 17883<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the 17884complete transform from world coordinates to pixel 17885coordinates:</p> 17886<pre><code>P = [ K 0 * [ R -Rt 17887 0 1 ] 0 1 ] 17888</code></pre> 17889<p>(Note the negation of poseTranslation when mapping from camera 17890to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p> 17891<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system 17892and <code>p_<wbr/>s</code> being a point in the camera active pixel array 17893coordinate system,<wbr/> and with the mapping including the 17894homogeneous division by z:</p> 17895<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 17896p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 17897</code></pre> 17898<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 17899point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 17900(depth) in pixel coordinates.<wbr/></p> 17901<p>Note that the coordinate system for this transform is the 17902<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/> 17903where <code>(0,<wbr/>0)</code> is the top-left of the 17904preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 17905intrinsic calibration transforms have been applied to a 17906world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> 17907transform needs to be applied,<wbr/> and the result adjusted to 17908be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 17909system (where <code>(0,<wbr/> 0)</code> is the top-left of the 17910activeArraySize rectangle),<wbr/> to determine the final pixel 17911coordinate of the world point for processed (non-RAW) 17912output buffers.<wbr/></p> 17913<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at 17914coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/> So on a device with a 17915precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel 17916indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would 17917have an optical center at the exact center of the pixel grid,<wbr/> at 17918coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel 17919<code>(5,<wbr/>5)</code>.<wbr/></p> 17920 </td> 17921 </tr> 17922 17923 17924 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17925 <!-- end of entry --> 17926 17927 17928 <tr class="entry" id="static_android.lens.radialDistortion"> 17929 <td class="entry_name 17930 entry_name_deprecated 17931 " rowspan="3"> 17932 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 17933 </td> 17934 <td class="entry_type"> 17935 <span class="entry_type_name">float</span> 17936 <span class="entry_type_container">x</span> 17937 17938 <span class="entry_type_array"> 17939 6 17940 </span> 17941 <span class="entry_type_visibility"> [public]</span> 17942 17943 17944 17945 <span class="entry_type_deprecated">[deprecated] </span> 17946 17947 17948 17949 </td> <!-- entry_type --> 17950 17951 <td class="entry_description"> 17952 <p>The correction coefficients to correct for this camera device's 17953radial and tangential lens distortion.<wbr/></p> 17954 </td> 17955 17956 <td class="entry_units"> 17957 17958 Unitless coefficients.<wbr/> 17959 17960 </td> 17961 17962 <td class="entry_range"> 17963 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17964 </td> 17965 17966 <td class="entry_hal_version"> 17967 <p>3.<wbr/>2</p> 17968 </td> 17969 17970 <td class="entry_tags"> 17971 <ul class="entry_tags"> 17972 <li><a href="#tag_DEPTH">DEPTH</a></li> 17973 </ul> 17974 </td> 17975 17976 </tr> 17977 <tr class="entries_header"> 17978 <th class="th_details" colspan="6">Details</th> 17979 </tr> 17980 <tr class="entry_cont"> 17981 <td class="entry_details" colspan="6"> 17982 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 17983kappa_<wbr/>3]</code> and two tangential distortion coefficients 17984<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 17985lens's geometric distortion with the mapping equations:</p> 17986<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 ) + 17987 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 17988 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 17989 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 17990</code></pre> 17991<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 17992input image that correspond to the pixel values in the 17993corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 17994<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 17995</code></pre> 17996<p>The pixel coordinates are defined in a normalized 17997coordinate system related to the 17998<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 17999Both <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 18000lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 18001of both x and y coordinates are normalized to be 1 at the 18002edge further from the optical center,<wbr/> so the range 18003for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 18004<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 18005optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 18006is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 18007<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 18008 </td> 18009 </tr> 18010 18011 18012 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18013 <!-- end of entry --> 18014 18015 18016 <tr class="entry" id="static_android.lens.poseReference"> 18017 <td class="entry_name 18018 " rowspan="3"> 18019 android.<wbr/>lens.<wbr/>pose<wbr/>Reference 18020 </td> 18021 <td class="entry_type"> 18022 <span class="entry_type_name entry_type_name_enum">byte</span> 18023 18024 <span class="entry_type_visibility"> [public]</span> 18025 18026 18027 18028 18029 18030 <ul class="entry_type_enum"> 18031 <li> 18032 <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span> 18033 <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 18034the largest camera device facing the same direction as this camera.<wbr/></p> 18035<p>This is the default value for API levels before Android P.<wbr/></p></span> 18036 </li> 18037 <li> 18038 <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span> 18039 <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 18040primary gyroscope of this Android device.<wbr/></p></span> 18041 </li> 18042 <li> 18043 <span class="entry_type_enum_name">UNDEFINED (v3.5)</span> 18044 <span class="entry_type_enum_notes"><p>The camera device cannot represent the values of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> 18045and <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> accurately enough.<wbr/> One such example is a camera device 18046on the cover of a foldable phone: in order to measure the pose translation and rotation,<wbr/> 18047some kind of hinge position sensor would be needed.<wbr/></p> 18048<p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> must be all zeros,<wbr/> and 18049<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> must be values matching its default facing.<wbr/></p></span> 18050 </li> 18051 <li> 18052 <span class="entry_type_enum_name">AUTOMOTIVE (v3.8)</span> 18053 <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 origin of the 18054automotive sensor coordinate system,<wbr/> which is at the center of the rear axle.<wbr/></p></span> 18055 </li> 18056 </ul> 18057 18058 </td> <!-- entry_type --> 18059 18060 <td class="entry_description"> 18061 <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> and the accuracy of 18062<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> and <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>.<wbr/></p> 18063 </td> 18064 18065 <td class="entry_units"> 18066 </td> 18067 18068 <td class="entry_range"> 18069 </td> 18070 18071 <td class="entry_hal_version"> 18072 <p>3.<wbr/>3</p> 18073 </td> 18074 18075 <td class="entry_tags"> 18076 </td> 18077 18078 </tr> 18079 <tr class="entries_header"> 18080 <th class="th_details" colspan="6">Details</th> 18081 </tr> 18082 <tr class="entry_cont"> 18083 <td class="entry_details" colspan="6"> 18084 <p>Different calibration methods and use cases can produce better or worse results 18085depending on the selected coordinate origin.<wbr/></p> 18086 </td> 18087 </tr> 18088 18089 18090 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18091 <!-- end of entry --> 18092 18093 18094 <tr class="entry" id="static_android.lens.distortion"> 18095 <td class="entry_name 18096 " rowspan="3"> 18097 android.<wbr/>lens.<wbr/>distortion 18098 </td> 18099 <td class="entry_type"> 18100 <span class="entry_type_name">float</span> 18101 <span class="entry_type_container">x</span> 18102 18103 <span class="entry_type_array"> 18104 5 18105 </span> 18106 <span class="entry_type_visibility"> [public]</span> 18107 18108 18109 18110 18111 18112 18113 </td> <!-- entry_type --> 18114 18115 <td class="entry_description"> 18116 <p>The correction coefficients to correct for this camera device's 18117radial and tangential lens distortion.<wbr/></p> 18118<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was 18119inconsistently defined.<wbr/></p> 18120 </td> 18121 18122 <td class="entry_units"> 18123 18124 Unitless coefficients.<wbr/> 18125 18126 </td> 18127 18128 <td class="entry_range"> 18129 </td> 18130 18131 <td class="entry_hal_version"> 18132 <p>3.<wbr/>3</p> 18133 </td> 18134 18135 <td class="entry_tags"> 18136 <ul class="entry_tags"> 18137 <li><a href="#tag_DEPTH">DEPTH</a></li> 18138 </ul> 18139 </td> 18140 18141 </tr> 18142 <tr class="entries_header"> 18143 <th class="th_details" colspan="6">Details</th> 18144 </tr> 18145 <tr class="entry_cont"> 18146 <td class="entry_details" colspan="6"> 18147 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 18148kappa_<wbr/>3]</code> and two tangential distortion coefficients 18149<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 18150lens's geometric distortion with the mapping equations:</p> 18151<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 18152 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 18153 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 18154 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 18155</code></pre> 18156<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 18157input image that correspond to the pixel values in the 18158corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 18159<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 18160</code></pre> 18161<p>The pixel coordinates are defined in a coordinate system 18162related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 18163calibration fields; see that entry for details of the mapping stages.<wbr/> 18164Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> 18165have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and 18166the range of the coordinates depends on the focal length 18167terms of the intrinsic calibration.<wbr/></p> 18168<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 18169optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p> 18170<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 18171 </td> 18172 </tr> 18173 18174 18175 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18176 <!-- end of entry --> 18177 18178 18179 <tr class="entry" id="static_android.lens.distortionMaximumResolution"> 18180 <td class="entry_name 18181 " rowspan="3"> 18182 android.<wbr/>lens.<wbr/>distortion<wbr/>Maximum<wbr/>Resolution 18183 </td> 18184 <td class="entry_type"> 18185 <span class="entry_type_name">float</span> 18186 <span class="entry_type_container">x</span> 18187 18188 <span class="entry_type_array"> 18189 5 18190 </span> 18191 <span class="entry_type_visibility"> [public]</span> 18192 18193 18194 18195 18196 18197 18198 </td> <!-- entry_type --> 18199 18200 <td class="entry_description"> 18201 <p>The correction coefficients to correct for this camera device's 18202radial and tangential lens distortion for a 18203CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to 18204<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 18205 </td> 18206 18207 <td class="entry_units"> 18208 18209 Unitless coefficients.<wbr/> 18210 18211 </td> 18212 18213 <td class="entry_range"> 18214 </td> 18215 18216 <td class="entry_hal_version"> 18217 <p>3.<wbr/>6</p> 18218 </td> 18219 18220 <td class="entry_tags"> 18221 <ul class="entry_tags"> 18222 <li><a href="#tag_DEPTH">DEPTH</a></li> 18223 </ul> 18224 </td> 18225 18226 </tr> 18227 <tr class="entries_header"> 18228 <th class="th_details" colspan="6">Details</th> 18229 </tr> 18230 <tr class="entry_cont"> 18231 <td class="entry_details" colspan="6"> 18232 <p>Analogous to <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 18233<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 18234 </td> 18235 </tr> 18236 18237 18238 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18239 <!-- end of entry --> 18240 18241 18242 <tr class="entry" id="static_android.lens.intrinsicCalibrationMaximumResolution"> 18243 <td class="entry_name 18244 " rowspan="3"> 18245 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration<wbr/>Maximum<wbr/>Resolution 18246 </td> 18247 <td class="entry_type"> 18248 <span class="entry_type_name">float</span> 18249 <span class="entry_type_container">x</span> 18250 18251 <span class="entry_type_array"> 18252 5 18253 </span> 18254 <span class="entry_type_visibility"> [public]</span> 18255 18256 18257 18258 18259 18260 18261 </td> <!-- entry_type --> 18262 18263 <td class="entry_description"> 18264 <p>The parameters for this camera device's intrinsic 18265calibration when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 18266<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 18267 </td> 18268 18269 <td class="entry_units"> 18270 18271 Pixels in the 18272 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution 18273 coordinate system.<wbr/> 18274 18275 </td> 18276 18277 <td class="entry_range"> 18278 </td> 18279 18280 <td class="entry_hal_version"> 18281 <p>3.<wbr/>6</p> 18282 </td> 18283 18284 <td class="entry_tags"> 18285 <ul class="entry_tags"> 18286 <li><a href="#tag_DEPTH">DEPTH</a></li> 18287 </ul> 18288 </td> 18289 18290 </tr> 18291 <tr class="entries_header"> 18292 <th class="th_details" colspan="6">Details</th> 18293 </tr> 18294 <tr class="entry_cont"> 18295 <td class="entry_details" colspan="6"> 18296 <p>Analogous to <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 18297<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 18298 </td> 18299 </tr> 18300 18301 18302 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18303 <!-- end of entry --> 18304 18305 18306 18307 <!-- end of kind --> 18308 </tbody> 18309 <tr><td colspan="7" class="kind">dynamic</td></tr> 18310 18311 <thead class="entries_header"> 18312 <tr> 18313 <th class="th_name">Property Name</th> 18314 <th class="th_type">Type</th> 18315 <th class="th_description">Description</th> 18316 <th class="th_units">Units</th> 18317 <th class="th_range">Range</th> 18318 <th class="th_hal_version">Initial HIDL HAL version</th> 18319 <th class="th_tags">Tags</th> 18320 </tr> 18321 </thead> 18322 18323 <tbody> 18324 18325 18326 18327 18328 18329 18330 18331 18332 18333 18334 <tr class="entry" id="dynamic_android.lens.aperture"> 18335 <td class="entry_name 18336 " rowspan="3"> 18337 android.<wbr/>lens.<wbr/>aperture 18338 </td> 18339 <td class="entry_type"> 18340 <span class="entry_type_name">float</span> 18341 18342 <span class="entry_type_visibility"> [public]</span> 18343 18344 18345 <span class="entry_type_hwlevel">[full] </span> 18346 18347 18348 18349 18350 </td> <!-- entry_type --> 18351 18352 <td class="entry_description"> 18353 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 18354effective aperture diameter.<wbr/></p> 18355 </td> 18356 18357 <td class="entry_units"> 18358 The f-number (f/<wbr/>N) 18359 </td> 18360 18361 <td class="entry_range"> 18362 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 18363 </td> 18364 18365 <td class="entry_hal_version"> 18366 <p>3.<wbr/>2</p> 18367 </td> 18368 18369 <td class="entry_tags"> 18370 <ul class="entry_tags"> 18371 <li><a href="#tag_V1">V1</a></li> 18372 </ul> 18373 </td> 18374 18375 </tr> 18376 <tr class="entries_header"> 18377 <th class="th_details" colspan="6">Details</th> 18378 </tr> 18379 <tr class="entry_cont"> 18380 <td class="entry_details" colspan="6"> 18381 <p>Setting this value is only supported on the camera devices that have a variable 18382aperture lens.<wbr/></p> 18383<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 18384this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 18385<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> 18386to achieve manual exposure control.<wbr/></p> 18387<p>The requested aperture value may take several frames to reach the 18388requested value; the camera device will report the current (intermediate) 18389aperture size in capture result metadata while the aperture is changing.<wbr/> 18390While 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> 18391<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 18392the ON modes,<wbr/> this will be overridden by the camera device 18393auto-exposure algorithm,<wbr/> the overridden values are then provided 18394back to the user in the corresponding result.<wbr/></p> 18395 </td> 18396 </tr> 18397 18398 18399 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18400 <!-- end of entry --> 18401 18402 18403 <tr class="entry" id="dynamic_android.lens.filterDensity"> 18404 <td class="entry_name 18405 " rowspan="3"> 18406 android.<wbr/>lens.<wbr/>filter<wbr/>Density 18407 </td> 18408 <td class="entry_type"> 18409 <span class="entry_type_name">float</span> 18410 18411 <span class="entry_type_visibility"> [public]</span> 18412 18413 18414 <span class="entry_type_hwlevel">[full] </span> 18415 18416 18417 18418 18419 </td> <!-- entry_type --> 18420 18421 <td class="entry_description"> 18422 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 18423 </td> 18424 18425 <td class="entry_units"> 18426 Exposure Value (EV) 18427 </td> 18428 18429 <td class="entry_range"> 18430 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 18431 </td> 18432 18433 <td class="entry_hal_version"> 18434 <p>3.<wbr/>2</p> 18435 </td> 18436 18437 <td class="entry_tags"> 18438 <ul class="entry_tags"> 18439 <li><a href="#tag_V1">V1</a></li> 18440 </ul> 18441 </td> 18442 18443 </tr> 18444 <tr class="entries_header"> 18445 <th class="th_details" colspan="6">Details</th> 18446 </tr> 18447 <tr class="entry_cont"> 18448 <td class="entry_details" colspan="6"> 18449 <p>This control will not be supported on most camera devices.<wbr/></p> 18450<p>Lens filters are typically used to lower the amount of light the 18451sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 18452step is the standard logarithmic representation,<wbr/> which are 18453non-negative,<wbr/> and inversely proportional to the amount of light 18454hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 18455in no reduction of the incoming light,<wbr/> and setting this to 2 would 18456mean that the filter is set to reduce incoming light by two stops 18457(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 18458<p>It may take several frames before the lens filter density changes 18459to the requested value.<wbr/> While the filter density is still changing,<wbr/> 18460<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 18461 </td> 18462 </tr> 18463 18464 18465 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18466 <!-- end of entry --> 18467 18468 18469 <tr class="entry" id="dynamic_android.lens.focalLength"> 18470 <td class="entry_name 18471 " rowspan="5"> 18472 android.<wbr/>lens.<wbr/>focal<wbr/>Length 18473 </td> 18474 <td class="entry_type"> 18475 <span class="entry_type_name">float</span> 18476 18477 <span class="entry_type_visibility"> [public]</span> 18478 18479 18480 <span class="entry_type_hwlevel">[legacy] </span> 18481 18482 18483 18484 18485 </td> <!-- entry_type --> 18486 18487 <td class="entry_description"> 18488 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 18489 </td> 18490 18491 <td class="entry_units"> 18492 Millimeters 18493 </td> 18494 18495 <td class="entry_range"> 18496 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 18497 </td> 18498 18499 <td class="entry_hal_version"> 18500 <p>3.<wbr/>2</p> 18501 </td> 18502 18503 <td class="entry_tags"> 18504 <ul class="entry_tags"> 18505 <li><a href="#tag_BC">BC</a></li> 18506 </ul> 18507 </td> 18508 18509 </tr> 18510 <tr class="entries_header"> 18511 <th class="th_details" colspan="6">Details</th> 18512 </tr> 18513 <tr class="entry_cont"> 18514 <td class="entry_details" colspan="6"> 18515 <p>This setting controls the physical focal length of the camera 18516device's lens.<wbr/> Changing the focal length changes the field of 18517view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 18518<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 18519setting won't be applied instantaneously,<wbr/> and it may take several 18520frames before the lens can change to the requested focal length.<wbr/> 18521While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 18522be set to MOVING.<wbr/></p> 18523<p>Optical zoom via this control will not be supported on most devices.<wbr/> Starting from API 18524level 30,<wbr/> the camera device may combine optical and digital zoom through the 18525<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> control.<wbr/></p> 18526 </td> 18527 </tr> 18528 18529 <tr class="entries_header"> 18530 <th class="th_details" colspan="6">HAL Implementation Details</th> 18531 </tr> 18532 <tr class="entry_cont"> 18533 <td class="entry_details" colspan="6"> 18534 <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and 18535cropRegion change in the same request,<wbr/> the camera device must make sure that the new 18536focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there 18537is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied 18538immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device 18539will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p> 18540<p>Starting from API level 30,<wbr/> it's strongly recommended for HAL to implement the 18541combination of optical and digital zoom using the new <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> API,<wbr/> in 18542lieu of using <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 18543 </td> 18544 </tr> 18545 18546 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18547 <!-- end of entry --> 18548 18549 18550 <tr class="entry" id="dynamic_android.lens.focusDistance"> 18551 <td class="entry_name 18552 " rowspan="3"> 18553 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 18554 </td> 18555 <td class="entry_type"> 18556 <span class="entry_type_name">float</span> 18557 18558 <span class="entry_type_visibility"> [public]</span> 18559 18560 18561 <span class="entry_type_hwlevel">[full] </span> 18562 18563 18564 18565 18566 </td> <!-- entry_type --> 18567 18568 <td class="entry_description"> 18569 <p>Desired distance to plane of sharpest focus,<wbr/> 18570measured from frontmost surface of the lens.<wbr/></p> 18571 </td> 18572 18573 <td class="entry_units"> 18574 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 18575 </td> 18576 18577 <td class="entry_range"> 18578 <p>>= 0</p> 18579 </td> 18580 18581 <td class="entry_hal_version"> 18582 <p>3.<wbr/>2</p> 18583 </td> 18584 18585 <td class="entry_tags"> 18586 <ul class="entry_tags"> 18587 <li><a href="#tag_BC">BC</a></li> 18588 </ul> 18589 </td> 18590 18591 </tr> 18592 <tr class="entries_header"> 18593 <th class="th_details" colspan="6">Details</th> 18594 </tr> 18595 <tr class="entry_cont"> 18596 <td class="entry_details" colspan="6"> 18597 <p>Should be zero for fixed-focus cameras</p> 18598 </td> 18599 </tr> 18600 18601 18602 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18603 <!-- end of entry --> 18604 18605 18606 <tr class="entry" id="dynamic_android.lens.focusRange"> 18607 <td class="entry_name 18608 " rowspan="3"> 18609 android.<wbr/>lens.<wbr/>focus<wbr/>Range 18610 </td> 18611 <td class="entry_type"> 18612 <span class="entry_type_name">float</span> 18613 <span class="entry_type_container">x</span> 18614 18615 <span class="entry_type_array"> 18616 2 18617 </span> 18618 <span class="entry_type_visibility"> [public as pairFloatFloat]</span> 18619 18620 18621 <span class="entry_type_hwlevel">[limited] </span> 18622 18623 18624 <div class="entry_type_notes">Range of scene distances that are in focus</div> 18625 18626 18627 </td> <!-- entry_type --> 18628 18629 <td class="entry_description"> 18630 <p>The range of scene distances that are in 18631sharp focus (depth of field).<wbr/></p> 18632 </td> 18633 18634 <td class="entry_units"> 18635 A pair of focus distances in diopters: (near,<wbr/> 18636 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 18637 </td> 18638 18639 <td class="entry_range"> 18640 <p>>=0</p> 18641 </td> 18642 18643 <td class="entry_hal_version"> 18644 <p>3.<wbr/>2</p> 18645 </td> 18646 18647 <td class="entry_tags"> 18648 <ul class="entry_tags"> 18649 <li><a href="#tag_BC">BC</a></li> 18650 </ul> 18651 </td> 18652 18653 </tr> 18654 <tr class="entries_header"> 18655 <th class="th_details" colspan="6">Details</th> 18656 </tr> 18657 <tr class="entry_cont"> 18658 <td class="entry_details" colspan="6"> 18659 <p>If variable focus not supported,<wbr/> can still report 18660fixed depth of field range</p> 18661 </td> 18662 </tr> 18663 18664 18665 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18666 <!-- end of entry --> 18667 18668 18669 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 18670 <td class="entry_name 18671 " rowspan="3"> 18672 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 18673 </td> 18674 <td class="entry_type"> 18675 <span class="entry_type_name entry_type_name_enum">byte</span> 18676 18677 <span class="entry_type_visibility"> [public]</span> 18678 18679 18680 <span class="entry_type_hwlevel">[limited] </span> 18681 18682 18683 18684 <ul class="entry_type_enum"> 18685 <li> 18686 <span class="entry_type_enum_name">OFF (v3.2)</span> 18687 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 18688 </li> 18689 <li> 18690 <span class="entry_type_enum_name">ON (v3.2)</span> 18691 <span class="entry_type_enum_optional">[optional]</span> 18692 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 18693 </li> 18694 </ul> 18695 18696 </td> <!-- entry_type --> 18697 18698 <td class="entry_description"> 18699 <p>Sets whether the camera device uses optical image stabilization (OIS) 18700when capturing images.<wbr/></p> 18701 </td> 18702 18703 <td class="entry_units"> 18704 </td> 18705 18706 <td class="entry_range"> 18707 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 18708 </td> 18709 18710 <td class="entry_hal_version"> 18711 <p>3.<wbr/>2</p> 18712 </td> 18713 18714 <td class="entry_tags"> 18715 <ul class="entry_tags"> 18716 <li><a href="#tag_V1">V1</a></li> 18717 </ul> 18718 </td> 18719 18720 </tr> 18721 <tr class="entries_header"> 18722 <th class="th_details" colspan="6">Details</th> 18723 </tr> 18724 <tr class="entry_cont"> 18725 <td class="entry_details" colspan="6"> 18726 <p>OIS is used to compensate for motion blur due to small 18727movements of the camera during capture.<wbr/> Unlike digital image 18728stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 18729makes use of mechanical elements to stabilize the camera 18730sensor,<wbr/> and thus allows for longer exposure times before 18731camera shake becomes apparent.<wbr/></p> 18732<p>Switching between different optical stabilization modes may take several 18733frames to initialize,<wbr/> the camera device will report the current mode in 18734capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 18735optical stabilization modes in the first several capture results may still 18736be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 18737<p>If a camera device supports both OIS and digital image stabilization 18738(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 18739interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 18740<p>If <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/> 18741<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose 18742to turn on hardware based image stabilization in addition to software based stabilization 18743if it deems that appropriate.<wbr/> This key's value in the capture result will reflect which 18744OIS mode was chosen.<wbr/></p> 18745<p>Not all devices will support OIS; see 18746<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 18747available controls.<wbr/></p> 18748 </td> 18749 </tr> 18750 18751 18752 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18753 <!-- end of entry --> 18754 18755 18756 <tr class="entry" id="dynamic_android.lens.state"> 18757 <td class="entry_name 18758 " rowspan="3"> 18759 android.<wbr/>lens.<wbr/>state 18760 </td> 18761 <td class="entry_type"> 18762 <span class="entry_type_name entry_type_name_enum">byte</span> 18763 18764 <span class="entry_type_visibility"> [public]</span> 18765 18766 18767 <span class="entry_type_hwlevel">[limited] </span> 18768 18769 18770 18771 <ul class="entry_type_enum"> 18772 <li> 18773 <span class="entry_type_enum_name">STATIONARY (v3.2)</span> 18774 <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/> 18775<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> 18776 </li> 18777 <li> 18778 <span class="entry_type_enum_name">MOVING (v3.2)</span> 18779 <span class="entry_type_enum_notes"><p>One or several of the lens parameters 18780(<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/> 18781<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 18782currently changing.<wbr/></p></span> 18783 </li> 18784 </ul> 18785 18786 </td> <!-- entry_type --> 18787 18788 <td class="entry_description"> 18789 <p>Current lens status.<wbr/></p> 18790 </td> 18791 18792 <td class="entry_units"> 18793 </td> 18794 18795 <td class="entry_range"> 18796 </td> 18797 18798 <td class="entry_hal_version"> 18799 <p>3.<wbr/>2</p> 18800 </td> 18801 18802 <td class="entry_tags"> 18803 <ul class="entry_tags"> 18804 <li><a href="#tag_V1">V1</a></li> 18805 </ul> 18806 </td> 18807 18808 </tr> 18809 <tr class="entries_header"> 18810 <th class="th_details" colspan="6">Details</th> 18811 </tr> 18812 <tr class="entry_cont"> 18813 <td class="entry_details" colspan="6"> 18814 <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/> 18815<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/> 18816they may take several frames to reach the requested values.<wbr/> This state indicates 18817the current status of the lens parameters.<wbr/></p> 18818<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 18819either because the parameters are all fixed,<wbr/> or because the lens has had enough 18820time to reach the most recently-requested values.<wbr/> 18821If all these lens parameters are not changeable for a camera device,<wbr/> as listed below:</p> 18822<ul> 18823<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 18824<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 18825<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/> 18826which means the optical zoom is not supported.<wbr/></li> 18827<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> 18828<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> 18829</ul> 18830<p>Then this state will always be STATIONARY.<wbr/></p> 18831<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 18832is changing.<wbr/></p> 18833 </td> 18834 </tr> 18835 18836 18837 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18838 <!-- end of entry --> 18839 18840 18841 <tr class="entry" id="dynamic_android.lens.poseRotation"> 18842 <td class="entry_name 18843 " rowspan="3"> 18844 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 18845 </td> 18846 <td class="entry_type"> 18847 <span class="entry_type_name">float</span> 18848 <span class="entry_type_container">x</span> 18849 18850 <span class="entry_type_array"> 18851 4 18852 </span> 18853 <span class="entry_type_visibility"> [public]</span> 18854 18855 18856 18857 18858 18859 18860 </td> <!-- entry_type --> 18861 18862 <td class="entry_description"> 18863 <p>The orientation of the camera relative to the sensor 18864coordinate system.<wbr/></p> 18865 </td> 18866 18867 <td class="entry_units"> 18868 18869 Quaternion coefficients 18870 18871 </td> 18872 18873 <td class="entry_range"> 18874 </td> 18875 18876 <td class="entry_hal_version"> 18877 <p>3.<wbr/>2</p> 18878 </td> 18879 18880 <td class="entry_tags"> 18881 <ul class="entry_tags"> 18882 <li><a href="#tag_DEPTH">DEPTH</a></li> 18883 </ul> 18884 </td> 18885 18886 </tr> 18887 <tr class="entries_header"> 18888 <th class="th_details" colspan="6">Details</th> 18889 </tr> 18890 <tr class="entry_cont"> 18891 <td class="entry_details" colspan="6"> 18892 <p>The four coefficients that describe the quaternion 18893rotation from the Android sensor coordinate system to a 18894camera-aligned coordinate system where the X-axis is 18895aligned with the long side of the image sensor,<wbr/> the Y-axis 18896is aligned with the short side of the image sensor,<wbr/> and 18897the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 18898<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 18899to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 18900amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 18901<pre><code> theta = 2 * acos(w) 18902a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 18903a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 18904a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 18905</code></pre> 18906<p>To create a 3x3 rotation matrix that applies the rotation 18907defined by this quaternion,<wbr/> the following matrix can be 18908used:</p> 18909<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 18910 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 18911 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 18912</code></pre> 18913<p>This matrix can then be used to apply the rotation to a 18914 column vector point with</p> 18915<p><code>p' = Rp</code></p> 18916<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 18917 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 18918<p>If <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> the quaternion rotation cannot 18919 be accurately represented by the camera device,<wbr/> and will be represented by 18920 default values matching its default facing.<wbr/></p> 18921 </td> 18922 </tr> 18923 18924 18925 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18926 <!-- end of entry --> 18927 18928 18929 <tr class="entry" id="dynamic_android.lens.poseTranslation"> 18930 <td class="entry_name 18931 " rowspan="3"> 18932 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 18933 </td> 18934 <td class="entry_type"> 18935 <span class="entry_type_name">float</span> 18936 <span class="entry_type_container">x</span> 18937 18938 <span class="entry_type_array"> 18939 3 18940 </span> 18941 <span class="entry_type_visibility"> [public]</span> 18942 18943 18944 18945 18946 18947 18948 </td> <!-- entry_type --> 18949 18950 <td class="entry_description"> 18951 <p>Position of the camera optical center.<wbr/></p> 18952 </td> 18953 18954 <td class="entry_units"> 18955 Meters 18956 </td> 18957 18958 <td class="entry_range"> 18959 </td> 18960 18961 <td class="entry_hal_version"> 18962 <p>3.<wbr/>2</p> 18963 </td> 18964 18965 <td class="entry_tags"> 18966 <ul class="entry_tags"> 18967 <li><a href="#tag_DEPTH">DEPTH</a></li> 18968 </ul> 18969 </td> 18970 18971 </tr> 18972 <tr class="entries_header"> 18973 <th class="th_details" colspan="6">Details</th> 18974 </tr> 18975 <tr class="entry_cont"> 18976 <td class="entry_details" colspan="6"> 18977 <p>The position of the camera device's lens optical center,<wbr/> 18978as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p> 18979<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 18980is relative to the optical center of the largest camera device facing in the same 18981direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor 18982coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor 18983coordinate system,<wbr/> but not the origin.<wbr/></p> 18984<p>If this device is the largest or only camera device with a given facing,<wbr/> then this 18985position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm 18986from the main sensor along the +X axis (to the right from the user's perspective) will 18987report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/> Note that this means that,<wbr/> for many computer vision 18988applications,<wbr/> the position needs to be negated to convert it to a translation from the 18989camera to the origin.<wbr/></p> 18990<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first 18991the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source 18992camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the 18993<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 18994relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination 18995camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination 18996camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel 18997coordinates.<wbr/></p> 18998<p>To compare this against a real image from the destination camera,<wbr/> the destination camera 18999image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p> 19000<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 19001the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as 19002with PRIMARY_<wbr/>CAMERA.<wbr/></p> 19003<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> this position cannot be accurately 19004represented by the camera device,<wbr/> and will be represented as <code>(0,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 19005<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is AUTOMOTIVE,<wbr/> then this position is relative to the 19006origin of the automotive sensor coordinate system,<wbr/> which is at the center of the rear 19007axle.<wbr/></p> 19008 </td> 19009 </tr> 19010 19011 19012 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19013 <!-- end of entry --> 19014 19015 19016 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration"> 19017 <td class="entry_name 19018 " rowspan="3"> 19019 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 19020 </td> 19021 <td class="entry_type"> 19022 <span class="entry_type_name">float</span> 19023 <span class="entry_type_container">x</span> 19024 19025 <span class="entry_type_array"> 19026 5 19027 </span> 19028 <span class="entry_type_visibility"> [public]</span> 19029 19030 19031 19032 19033 19034 19035 </td> <!-- entry_type --> 19036 19037 <td class="entry_description"> 19038 <p>The parameters for this camera device's intrinsic 19039calibration.<wbr/></p> 19040 </td> 19041 19042 <td class="entry_units"> 19043 19044 Pixels in the 19045 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 19046 coordinate system.<wbr/> 19047 19048 </td> 19049 19050 <td class="entry_range"> 19051 </td> 19052 19053 <td class="entry_hal_version"> 19054 <p>3.<wbr/>2</p> 19055 </td> 19056 19057 <td class="entry_tags"> 19058 <ul class="entry_tags"> 19059 <li><a href="#tag_DEPTH">DEPTH</a></li> 19060 </ul> 19061 </td> 19062 19063 </tr> 19064 <tr class="entries_header"> 19065 <th class="th_details" colspan="6">Details</th> 19066 </tr> 19067 <tr class="entry_cont"> 19068 <td class="entry_details" colspan="6"> 19069 <p>The five calibration parameters that describe the 19070transform from camera-centric 3D coordinates to sensor 19071pixel coordinates:</p> 19072<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 19073</code></pre> 19074<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 19075focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 19076axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 19077being aligned with the lens plane.<wbr/></p> 19078<p>These are typically used within a transformation matrix K:</p> 19079<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 19080 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 19081 0 0,<wbr/> 1 ] 19082</code></pre> 19083<p>which can then be combined with the camera pose rotation 19084<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 19085<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the 19086complete transform from world coordinates to pixel 19087coordinates:</p> 19088<pre><code>P = [ K 0 * [ R -Rt 19089 0 1 ] 0 1 ] 19090</code></pre> 19091<p>(Note the negation of poseTranslation when mapping from camera 19092to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p> 19093<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system 19094and <code>p_<wbr/>s</code> being a point in the camera active pixel array 19095coordinate system,<wbr/> and with the mapping including the 19096homogeneous division by z:</p> 19097<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 19098p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 19099</code></pre> 19100<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 19101point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 19102(depth) in pixel coordinates.<wbr/></p> 19103<p>Note that the coordinate system for this transform is the 19104<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/> 19105where <code>(0,<wbr/>0)</code> is the top-left of the 19106preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 19107intrinsic calibration transforms have been applied to a 19108world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> 19109transform needs to be applied,<wbr/> and the result adjusted to 19110be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 19111system (where <code>(0,<wbr/> 0)</code> is the top-left of the 19112activeArraySize rectangle),<wbr/> to determine the final pixel 19113coordinate of the world point for processed (non-RAW) 19114output buffers.<wbr/></p> 19115<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at 19116coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/> So on a device with a 19117precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel 19118indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would 19119have an optical center at the exact center of the pixel grid,<wbr/> at 19120coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel 19121<code>(5,<wbr/>5)</code>.<wbr/></p> 19122 </td> 19123 </tr> 19124 19125 19126 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19127 <!-- end of entry --> 19128 19129 19130 <tr class="entry" id="dynamic_android.lens.radialDistortion"> 19131 <td class="entry_name 19132 entry_name_deprecated 19133 " rowspan="3"> 19134 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 19135 </td> 19136 <td class="entry_type"> 19137 <span class="entry_type_name">float</span> 19138 <span class="entry_type_container">x</span> 19139 19140 <span class="entry_type_array"> 19141 6 19142 </span> 19143 <span class="entry_type_visibility"> [public]</span> 19144 19145 19146 19147 <span class="entry_type_deprecated">[deprecated] </span> 19148 19149 19150 19151 </td> <!-- entry_type --> 19152 19153 <td class="entry_description"> 19154 <p>The correction coefficients to correct for this camera device's 19155radial and tangential lens distortion.<wbr/></p> 19156 </td> 19157 19158 <td class="entry_units"> 19159 19160 Unitless coefficients.<wbr/> 19161 19162 </td> 19163 19164 <td class="entry_range"> 19165 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 19166 </td> 19167 19168 <td class="entry_hal_version"> 19169 <p>3.<wbr/>2</p> 19170 </td> 19171 19172 <td class="entry_tags"> 19173 <ul class="entry_tags"> 19174 <li><a href="#tag_DEPTH">DEPTH</a></li> 19175 </ul> 19176 </td> 19177 19178 </tr> 19179 <tr class="entries_header"> 19180 <th class="th_details" colspan="6">Details</th> 19181 </tr> 19182 <tr class="entry_cont"> 19183 <td class="entry_details" colspan="6"> 19184 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 19185kappa_<wbr/>3]</code> and two tangential distortion coefficients 19186<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 19187lens's geometric distortion with the mapping equations:</p> 19188<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 ) + 19189 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 19190 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 19191 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 19192</code></pre> 19193<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 19194input image that correspond to the pixel values in the 19195corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 19196<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 19197</code></pre> 19198<p>The pixel coordinates are defined in a normalized 19199coordinate system related to the 19200<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 19201Both <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 19202lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 19203of both x and y coordinates are normalized to be 1 at the 19204edge further from the optical center,<wbr/> so the range 19205for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 19206<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 19207optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 19208is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 19209<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 19210 </td> 19211 </tr> 19212 19213 19214 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19215 <!-- end of entry --> 19216 19217 19218 <tr class="entry" id="dynamic_android.lens.distortion"> 19219 <td class="entry_name 19220 " rowspan="3"> 19221 android.<wbr/>lens.<wbr/>distortion 19222 </td> 19223 <td class="entry_type"> 19224 <span class="entry_type_name">float</span> 19225 <span class="entry_type_container">x</span> 19226 19227 <span class="entry_type_array"> 19228 5 19229 </span> 19230 <span class="entry_type_visibility"> [public]</span> 19231 19232 19233 19234 19235 19236 19237 </td> <!-- entry_type --> 19238 19239 <td class="entry_description"> 19240 <p>The correction coefficients to correct for this camera device's 19241radial and tangential lens distortion.<wbr/></p> 19242<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was 19243inconsistently defined.<wbr/></p> 19244 </td> 19245 19246 <td class="entry_units"> 19247 19248 Unitless coefficients.<wbr/> 19249 19250 </td> 19251 19252 <td class="entry_range"> 19253 </td> 19254 19255 <td class="entry_hal_version"> 19256 <p>3.<wbr/>3</p> 19257 </td> 19258 19259 <td class="entry_tags"> 19260 <ul class="entry_tags"> 19261 <li><a href="#tag_DEPTH">DEPTH</a></li> 19262 </ul> 19263 </td> 19264 19265 </tr> 19266 <tr class="entries_header"> 19267 <th class="th_details" colspan="6">Details</th> 19268 </tr> 19269 <tr class="entry_cont"> 19270 <td class="entry_details" colspan="6"> 19271 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 19272kappa_<wbr/>3]</code> and two tangential distortion coefficients 19273<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 19274lens's geometric distortion with the mapping equations:</p> 19275<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 19276 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 19277 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 19278 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 19279</code></pre> 19280<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 19281input image that correspond to the pixel values in the 19282corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 19283<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 19284</code></pre> 19285<p>The pixel coordinates are defined in a coordinate system 19286related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 19287calibration fields; see that entry for details of the mapping stages.<wbr/> 19288Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> 19289have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and 19290the range of the coordinates depends on the focal length 19291terms of the intrinsic calibration.<wbr/></p> 19292<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 19293optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p> 19294<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 19295 </td> 19296 </tr> 19297 19298 19299 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19300 <!-- end of entry --> 19301 19302 19303 19304 <!-- end of kind --> 19305 </tbody> 19306 19307 <!-- end of section --> 19308 <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr> 19309 19310 19311 <tr><td colspan="7" class="kind">controls</td></tr> 19312 19313 <thead class="entries_header"> 19314 <tr> 19315 <th class="th_name">Property Name</th> 19316 <th class="th_type">Type</th> 19317 <th class="th_description">Description</th> 19318 <th class="th_units">Units</th> 19319 <th class="th_range">Range</th> 19320 <th class="th_hal_version">Initial HIDL HAL version</th> 19321 <th class="th_tags">Tags</th> 19322 </tr> 19323 </thead> 19324 19325 <tbody> 19326 19327 19328 19329 19330 19331 19332 19333 19334 19335 19336 <tr class="entry" id="controls_android.noiseReduction.mode"> 19337 <td class="entry_name 19338 " rowspan="5"> 19339 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 19340 </td> 19341 <td class="entry_type"> 19342 <span class="entry_type_name entry_type_name_enum">byte</span> 19343 19344 <span class="entry_type_visibility"> [public]</span> 19345 19346 19347 <span class="entry_type_hwlevel">[full] </span> 19348 19349 19350 19351 <ul class="entry_type_enum"> 19352 <li> 19353 <span class="entry_type_enum_name">OFF (v3.2)</span> 19354 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 19355 </li> 19356 <li> 19357 <span class="entry_type_enum_name">FAST (v3.2)</span> 19358 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 19359output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 19360relative to sensor.<wbr/></p></span> 19361 </li> 19362 <li> 19363 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 19364 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 19365rate relative to sensor output.<wbr/></p></span> 19366 </li> 19367 <li> 19368 <span class="entry_type_enum_name">MINIMAL (v3.2)</span> 19369 <span class="entry_type_enum_optional">[optional]</span> 19370 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 19371sensor output.<wbr/> </p></span> 19372 </li> 19373 <li> 19374 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 19375 <span class="entry_type_enum_optional">[optional]</span> 19376 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 19377based 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>) 19378or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if 19379supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of 19380noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> 19381and the quality is equal to or better than FAST (since it is only applied to 19382lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 19383<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 19384with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 19385high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 19386produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 19387high-resolution buffers must not have noise reduction applied to maximize efficiency of 19388preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 19389low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 19390applied for reasonable preview quality.<wbr/></p> 19391<p>This mode is guaranteed to be supported by devices that support either the 19392YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 19393(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 19394be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 19395 </li> 19396 </ul> 19397 19398 </td> <!-- entry_type --> 19399 19400 <td class="entry_description"> 19401 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 19402 </td> 19403 19404 <td class="entry_units"> 19405 </td> 19406 19407 <td class="entry_range"> 19408 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 19409 </td> 19410 19411 <td class="entry_hal_version"> 19412 <p>3.<wbr/>2</p> 19413 </td> 19414 19415 <td class="entry_tags"> 19416 <ul class="entry_tags"> 19417 <li><a href="#tag_V1">V1</a></li> 19418 <li><a href="#tag_REPROC">REPROC</a></li> 19419 </ul> 19420 </td> 19421 19422 </tr> 19423 <tr class="entries_header"> 19424 <th class="th_details" colspan="6">Details</th> 19425 </tr> 19426 <tr class="entry_cont"> 19427 <td class="entry_details" colspan="6"> 19428 <p>The noise reduction algorithm attempts to improve image quality by removing 19429excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 19430<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 19431YUV domain.<wbr/></p> 19432<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 19433demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 19434This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 19435<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> 19436<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 19437will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 19438will use the highest-quality noise filtering algorithms,<wbr/> 19439even if it slows down capture rate.<wbr/> FAST means the camera device will not 19440slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 19441MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 19442Every output stream will have a similar amount of enhancement applied.<wbr/></p> 19443<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 19444buffer of high-resolution images during preview and reprocess image(s) from that buffer 19445into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 19446noise reduction to low-resolution streams (below maximum recording resolution) to maximize 19447preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 19448those will be reprocessed later if necessary.<wbr/></p> 19449<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 19450will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 19451may adjust the noise reduction parameters for best image quality based on the 19452<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 19453 </td> 19454 </tr> 19455 19456 <tr class="entries_header"> 19457 <th class="th_details" colspan="6">HAL Implementation Details</th> 19458 </tr> 19459 <tr class="entry_cont"> 19460 <td class="entry_details" colspan="6"> 19461 <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 19462adjust the internal noise reduction parameters appropriately to get the best quality 19463images.<wbr/></p> 19464 </td> 19465 </tr> 19466 19467 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19468 <!-- end of entry --> 19469 19470 19471 <tr class="entry" id="controls_android.noiseReduction.strength"> 19472 <td class="entry_name 19473 " rowspan="1"> 19474 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 19475 </td> 19476 <td class="entry_type"> 19477 <span class="entry_type_name">byte</span> 19478 19479 <span class="entry_type_visibility"> [system]</span> 19480 19481 19482 19483 19484 19485 19486 </td> <!-- entry_type --> 19487 19488 <td class="entry_description"> 19489 <p>Control the amount of noise reduction 19490applied to the images</p> 19491 </td> 19492 19493 <td class="entry_units"> 19494 1-10; 10 is max noise reduction 19495 </td> 19496 19497 <td class="entry_range"> 19498 <p>1 - 10</p> 19499 </td> 19500 19501 <td class="entry_hal_version"> 19502 <p>3.<wbr/>2</p> 19503 </td> 19504 19505 <td class="entry_tags"> 19506 <ul class="entry_tags"> 19507 <li><a href="#tag_FUTURE">FUTURE</a></li> 19508 </ul> 19509 </td> 19510 19511 </tr> 19512 19513 19514 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19515 <!-- end of entry --> 19516 19517 19518 19519 <!-- end of kind --> 19520 </tbody> 19521 <tr><td colspan="7" class="kind">static</td></tr> 19522 19523 <thead class="entries_header"> 19524 <tr> 19525 <th class="th_name">Property Name</th> 19526 <th class="th_type">Type</th> 19527 <th class="th_description">Description</th> 19528 <th class="th_units">Units</th> 19529 <th class="th_range">Range</th> 19530 <th class="th_hal_version">Initial HIDL HAL version</th> 19531 <th class="th_tags">Tags</th> 19532 </tr> 19533 </thead> 19534 19535 <tbody> 19536 19537 19538 19539 19540 19541 19542 19543 19544 19545 19546 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 19547 <td class="entry_name 19548 " rowspan="5"> 19549 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 19550 </td> 19551 <td class="entry_type"> 19552 <span class="entry_type_name">byte</span> 19553 <span class="entry_type_container">x</span> 19554 19555 <span class="entry_type_array"> 19556 n 19557 </span> 19558 <span class="entry_type_visibility"> [public as enumList]</span> 19559 19560 19561 <span class="entry_type_hwlevel">[limited] </span> 19562 19563 19564 <div class="entry_type_notes">list of enums</div> 19565 19566 19567 </td> <!-- entry_type --> 19568 19569 <td class="entry_description"> 19570 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported 19571by this camera device.<wbr/></p> 19572 </td> 19573 19574 <td class="entry_units"> 19575 </td> 19576 19577 <td class="entry_range"> 19578 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p> 19579 </td> 19580 19581 <td class="entry_hal_version"> 19582 <p>3.<wbr/>2</p> 19583 </td> 19584 19585 <td class="entry_tags"> 19586 <ul class="entry_tags"> 19587 <li><a href="#tag_V1">V1</a></li> 19588 <li><a href="#tag_REPROC">REPROC</a></li> 19589 </ul> 19590 </td> 19591 19592 </tr> 19593 <tr class="entries_header"> 19594 <th class="th_details" colspan="6">Details</th> 19595 </tr> 19596 <tr class="entry_cont"> 19597 <td class="entry_details" colspan="6"> 19598 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p> 19599<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support 19600ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p> 19601<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p> 19602 </td> 19603 </tr> 19604 19605 <tr class="entries_header"> 19606 <th class="th_details" colspan="6">HAL Implementation Details</th> 19607 </tr> 19608 <tr class="entry_cont"> 19609 <td class="entry_details" colspan="6"> 19610 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available 19611on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 19612That is,<wbr/> if the highest quality implementation on the camera device does not slow down 19613capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 19614 </td> 19615 </tr> 19616 19617 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19618 <!-- end of entry --> 19619 19620 19621 19622 <!-- end of kind --> 19623 </tbody> 19624 <tr><td colspan="7" class="kind">dynamic</td></tr> 19625 19626 <thead class="entries_header"> 19627 <tr> 19628 <th class="th_name">Property Name</th> 19629 <th class="th_type">Type</th> 19630 <th class="th_description">Description</th> 19631 <th class="th_units">Units</th> 19632 <th class="th_range">Range</th> 19633 <th class="th_hal_version">Initial HIDL HAL version</th> 19634 <th class="th_tags">Tags</th> 19635 </tr> 19636 </thead> 19637 19638 <tbody> 19639 19640 19641 19642 19643 19644 19645 19646 19647 19648 19649 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 19650 <td class="entry_name 19651 " rowspan="5"> 19652 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 19653 </td> 19654 <td class="entry_type"> 19655 <span class="entry_type_name entry_type_name_enum">byte</span> 19656 19657 <span class="entry_type_visibility"> [public]</span> 19658 19659 19660 <span class="entry_type_hwlevel">[full] </span> 19661 19662 19663 19664 <ul class="entry_type_enum"> 19665 <li> 19666 <span class="entry_type_enum_name">OFF (v3.2)</span> 19667 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 19668 </li> 19669 <li> 19670 <span class="entry_type_enum_name">FAST (v3.2)</span> 19671 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 19672output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 19673relative to sensor.<wbr/></p></span> 19674 </li> 19675 <li> 19676 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 19677 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 19678rate relative to sensor output.<wbr/></p></span> 19679 </li> 19680 <li> 19681 <span class="entry_type_enum_name">MINIMAL (v3.2)</span> 19682 <span class="entry_type_enum_optional">[optional]</span> 19683 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 19684sensor output.<wbr/> </p></span> 19685 </li> 19686 <li> 19687 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 19688 <span class="entry_type_enum_optional">[optional]</span> 19689 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 19690based 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>) 19691or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if 19692supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of 19693noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> 19694and the quality is equal to or better than FAST (since it is only applied to 19695lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 19696<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 19697with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 19698high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 19699produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 19700high-resolution buffers must not have noise reduction applied to maximize efficiency of 19701preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 19702low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 19703applied for reasonable preview quality.<wbr/></p> 19704<p>This mode is guaranteed to be supported by devices that support either the 19705YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 19706(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 19707be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 19708 </li> 19709 </ul> 19710 19711 </td> <!-- entry_type --> 19712 19713 <td class="entry_description"> 19714 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 19715 </td> 19716 19717 <td class="entry_units"> 19718 </td> 19719 19720 <td class="entry_range"> 19721 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 19722 </td> 19723 19724 <td class="entry_hal_version"> 19725 <p>3.<wbr/>2</p> 19726 </td> 19727 19728 <td class="entry_tags"> 19729 <ul class="entry_tags"> 19730 <li><a href="#tag_V1">V1</a></li> 19731 <li><a href="#tag_REPROC">REPROC</a></li> 19732 </ul> 19733 </td> 19734 19735 </tr> 19736 <tr class="entries_header"> 19737 <th class="th_details" colspan="6">Details</th> 19738 </tr> 19739 <tr class="entry_cont"> 19740 <td class="entry_details" colspan="6"> 19741 <p>The noise reduction algorithm attempts to improve image quality by removing 19742excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 19743<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 19744YUV domain.<wbr/></p> 19745<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 19746demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 19747This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 19748<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> 19749<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 19750will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 19751will use the highest-quality noise filtering algorithms,<wbr/> 19752even if it slows down capture rate.<wbr/> FAST means the camera device will not 19753slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 19754MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 19755Every output stream will have a similar amount of enhancement applied.<wbr/></p> 19756<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 19757buffer of high-resolution images during preview and reprocess image(s) from that buffer 19758into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 19759noise reduction to low-resolution streams (below maximum recording resolution) to maximize 19760preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 19761those will be reprocessed later if necessary.<wbr/></p> 19762<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 19763will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 19764may adjust the noise reduction parameters for best image quality based on the 19765<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 19766 </td> 19767 </tr> 19768 19769 <tr class="entries_header"> 19770 <th class="th_details" colspan="6">HAL Implementation Details</th> 19771 </tr> 19772 <tr class="entry_cont"> 19773 <td class="entry_details" colspan="6"> 19774 <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 19775adjust the internal noise reduction parameters appropriately to get the best quality 19776images.<wbr/></p> 19777 </td> 19778 </tr> 19779 19780 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19781 <!-- end of entry --> 19782 19783 19784 19785 <!-- end of kind --> 19786 </tbody> 19787 19788 <!-- end of section --> 19789 <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr> 19790 19791 19792 <tr><td colspan="7" class="kind">static</td></tr> 19793 19794 <thead class="entries_header"> 19795 <tr> 19796 <th class="th_name">Property Name</th> 19797 <th class="th_type">Type</th> 19798 <th class="th_description">Description</th> 19799 <th class="th_units">Units</th> 19800 <th class="th_range">Range</th> 19801 <th class="th_hal_version">Initial HIDL HAL version</th> 19802 <th class="th_tags">Tags</th> 19803 </tr> 19804 </thead> 19805 19806 <tbody> 19807 19808 19809 19810 19811 19812 19813 19814 19815 19816 19817 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 19818 <td class="entry_name 19819 entry_name_deprecated 19820 " rowspan="3"> 19821 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 19822 </td> 19823 <td class="entry_type"> 19824 <span class="entry_type_name">byte</span> 19825 19826 <span class="entry_type_visibility"> [system]</span> 19827 19828 19829 19830 <span class="entry_type_deprecated">[deprecated] </span> 19831 19832 19833 19834 </td> <!-- entry_type --> 19835 19836 <td class="entry_description"> 19837 <p>If set to 1,<wbr/> the camera service does not 19838scale 'normalized' coordinates with respect to the crop 19839region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 19840and output (face rectangles).<wbr/></p> 19841 </td> 19842 19843 <td class="entry_units"> 19844 </td> 19845 19846 <td class="entry_range"> 19847 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 19848 </td> 19849 19850 <td class="entry_hal_version"> 19851 <p>3.<wbr/>2</p> 19852 </td> 19853 19854 <td class="entry_tags"> 19855 </td> 19856 19857 </tr> 19858 <tr class="entries_header"> 19859 <th class="th_details" colspan="6">Details</th> 19860 </tr> 19861 <tr class="entry_cont"> 19862 <td class="entry_details" colspan="6"> 19863 <p>Normalized coordinates refer to those in the 19864(-1000,<wbr/>1000) range mentioned in the 19865android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 19866<p>HAL implementations should instead always use and emit 19867sensor array-relative coordinates for all region data.<wbr/> Does 19868not need to be listed in static metadata.<wbr/> Support will be 19869removed in future versions of camera service.<wbr/></p> 19870 </td> 19871 </tr> 19872 19873 19874 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19875 <!-- end of entry --> 19876 19877 19878 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 19879 <td class="entry_name 19880 entry_name_deprecated 19881 " rowspan="3"> 19882 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 19883 </td> 19884 <td class="entry_type"> 19885 <span class="entry_type_name">byte</span> 19886 19887 <span class="entry_type_visibility"> [system]</span> 19888 19889 19890 19891 <span class="entry_type_deprecated">[deprecated] </span> 19892 19893 19894 19895 </td> <!-- entry_type --> 19896 19897 <td class="entry_description"> 19898 <p>If set to 1,<wbr/> then the camera service always 19899switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 19900trigger.<wbr/></p> 19901 </td> 19902 19903 <td class="entry_units"> 19904 </td> 19905 19906 <td class="entry_range"> 19907 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 19908 </td> 19909 19910 <td class="entry_hal_version"> 19911 <p>3.<wbr/>2</p> 19912 </td> 19913 19914 <td class="entry_tags"> 19915 </td> 19916 19917 </tr> 19918 <tr class="entries_header"> 19919 <th class="th_details" colspan="6">Details</th> 19920 </tr> 19921 <tr class="entry_cont"> 19922 <td class="entry_details" colspan="6"> 19923 <p>HAL implementations should implement AF trigger 19924modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 19925CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 19926not need to be listed in static metadata.<wbr/> Support will be 19927removed in future versions of camera service</p> 19928 </td> 19929 </tr> 19930 19931 19932 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19933 <!-- end of entry --> 19934 19935 19936 <tr class="entry" id="static_android.quirks.useZslFormat"> 19937 <td class="entry_name 19938 entry_name_deprecated 19939 " rowspan="3"> 19940 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 19941 </td> 19942 <td class="entry_type"> 19943 <span class="entry_type_name">byte</span> 19944 19945 <span class="entry_type_visibility"> [system]</span> 19946 19947 19948 19949 <span class="entry_type_deprecated">[deprecated] </span> 19950 19951 19952 19953 </td> <!-- entry_type --> 19954 19955 <td class="entry_description"> 19956 <p>If set to 1,<wbr/> the camera service uses 19957CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 19958HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 19959shutter lag stream</p> 19960 </td> 19961 19962 <td class="entry_units"> 19963 </td> 19964 19965 <td class="entry_range"> 19966 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 19967 </td> 19968 19969 <td class="entry_hal_version"> 19970 <p>3.<wbr/>2</p> 19971 </td> 19972 19973 <td class="entry_tags"> 19974 </td> 19975 19976 </tr> 19977 <tr class="entries_header"> 19978 <th class="th_details" colspan="6">Details</th> 19979 </tr> 19980 <tr class="entry_cont"> 19981 <td class="entry_details" colspan="6"> 19982 <p>HAL implementations should use gralloc usage flags 19983to determine that a stream will be used for 19984zero-shutter-lag,<wbr/> instead of relying on an explicit 19985format setting.<wbr/> Does not need to be listed in static 19986metadata.<wbr/> Support will be removed in future versions of 19987camera service.<wbr/></p> 19988 </td> 19989 </tr> 19990 19991 19992 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19993 <!-- end of entry --> 19994 19995 19996 <tr class="entry" id="static_android.quirks.usePartialResult"> 19997 <td class="entry_name 19998 entry_name_deprecated 19999 " rowspan="5"> 20000 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 20001 </td> 20002 <td class="entry_type"> 20003 <span class="entry_type_name">byte</span> 20004 20005 <span class="entry_type_visibility"> [hidden]</span> 20006 20007 20008 20009 <span class="entry_type_deprecated">[deprecated] </span> 20010 20011 20012 20013 </td> <!-- entry_type --> 20014 20015 <td class="entry_description"> 20016 <p>If set to 1,<wbr/> the HAL will always split result 20017metadata for a single capture into multiple buffers,<wbr/> 20018returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 20019 </td> 20020 20021 <td class="entry_units"> 20022 </td> 20023 20024 <td class="entry_range"> 20025 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 20026 </td> 20027 20028 <td class="entry_hal_version"> 20029 <p>3.<wbr/>2</p> 20030 </td> 20031 20032 <td class="entry_tags"> 20033 </td> 20034 20035 </tr> 20036 <tr class="entries_header"> 20037 <th class="th_details" colspan="6">Details</th> 20038 </tr> 20039 <tr class="entry_cont"> 20040 <td class="entry_details" colspan="6"> 20041 <p>Does not need to be listed in static 20042metadata.<wbr/> Support for partial results will be reworked in 20043future versions of camera service.<wbr/> This quirk will stop 20044working at that point; DO NOT USE without careful 20045consideration of future support.<wbr/></p> 20046 </td> 20047 </tr> 20048 20049 <tr class="entries_header"> 20050 <th class="th_details" colspan="6">HAL Implementation Details</th> 20051 </tr> 20052 <tr class="entry_cont"> 20053 <td class="entry_details" colspan="6"> 20054 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 20055for information on how to implement partial results.<wbr/></p> 20056 </td> 20057 </tr> 20058 20059 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20060 <!-- end of entry --> 20061 20062 20063 20064 <!-- end of kind --> 20065 </tbody> 20066 <tr><td colspan="7" class="kind">dynamic</td></tr> 20067 20068 <thead class="entries_header"> 20069 <tr> 20070 <th class="th_name">Property Name</th> 20071 <th class="th_type">Type</th> 20072 <th class="th_description">Description</th> 20073 <th class="th_units">Units</th> 20074 <th class="th_range">Range</th> 20075 <th class="th_hal_version">Initial HIDL HAL version</th> 20076 <th class="th_tags">Tags</th> 20077 </tr> 20078 </thead> 20079 20080 <tbody> 20081 20082 20083 20084 20085 20086 20087 20088 20089 20090 20091 <tr class="entry" id="dynamic_android.quirks.partialResult"> 20092 <td class="entry_name 20093 entry_name_deprecated 20094 " rowspan="5"> 20095 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 20096 </td> 20097 <td class="entry_type"> 20098 <span class="entry_type_name entry_type_name_enum">byte</span> 20099 20100 <span class="entry_type_visibility"> [hidden as boolean]</span> 20101 20102 20103 20104 <span class="entry_type_deprecated">[deprecated] </span> 20105 20106 20107 <ul class="entry_type_enum"> 20108 <li> 20109 <span class="entry_type_enum_name">FINAL (v3.2)</span> 20110 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 20111for this capture.<wbr/></p></span> 20112 </li> 20113 <li> 20114 <span class="entry_type_enum_name">PARTIAL (v3.2)</span> 20115 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 20116capture.<wbr/> More result buffers for this capture will be sent 20117by the camera device,<wbr/> the last of which will be marked 20118FINAL.<wbr/></p></span> 20119 </li> 20120 </ul> 20121 20122 </td> <!-- entry_type --> 20123 20124 <td class="entry_description"> 20125 <p>Whether a result given to the framework is the 20126final one for the capture,<wbr/> or only a partial that contains a 20127subset of the full set of dynamic metadata 20128values.<wbr/></p> 20129 </td> 20130 20131 <td class="entry_units"> 20132 </td> 20133 20134 <td class="entry_range"> 20135 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 20136 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> 20137 </td> 20138 20139 <td class="entry_hal_version"> 20140 <p>3.<wbr/>2</p> 20141 </td> 20142 20143 <td class="entry_tags"> 20144 </td> 20145 20146 </tr> 20147 <tr class="entries_header"> 20148 <th class="th_details" colspan="6">Details</th> 20149 </tr> 20150 <tr class="entry_cont"> 20151 <td class="entry_details" colspan="6"> 20152 <p>The entries in the result metadata buffers for a 20153single capture may not overlap,<wbr/> except for this entry.<wbr/> The 20154FINAL buffers must retain FIFO ordering relative to the 20155requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 20156always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 20157before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 20158in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 20159capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 20160only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 20161 </td> 20162 </tr> 20163 20164 <tr class="entries_header"> 20165 <th class="th_details" colspan="6">HAL Implementation Details</th> 20166 </tr> 20167 <tr class="entry_cont"> 20168 <td class="entry_details" colspan="6"> 20169 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 20170for information on how to implement partial results.<wbr/></p> 20171 </td> 20172 </tr> 20173 20174 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20175 <!-- end of entry --> 20176 20177 20178 20179 <!-- end of kind --> 20180 </tbody> 20181 20182 <!-- end of section --> 20183 <tr><td colspan="7" id="section_request" class="section">request</td></tr> 20184 20185 20186 <tr><td colspan="7" class="kind">controls</td></tr> 20187 20188 <thead class="entries_header"> 20189 <tr> 20190 <th class="th_name">Property Name</th> 20191 <th class="th_type">Type</th> 20192 <th class="th_description">Description</th> 20193 <th class="th_units">Units</th> 20194 <th class="th_range">Range</th> 20195 <th class="th_hal_version">Initial HIDL HAL version</th> 20196 <th class="th_tags">Tags</th> 20197 </tr> 20198 </thead> 20199 20200 <tbody> 20201 20202 20203 20204 20205 20206 20207 20208 20209 20210 20211 <tr class="entry" id="controls_android.request.frameCount"> 20212 <td class="entry_name 20213 entry_name_deprecated 20214 " rowspan="1"> 20215 android.<wbr/>request.<wbr/>frame<wbr/>Count 20216 </td> 20217 <td class="entry_type"> 20218 <span class="entry_type_name">int32</span> 20219 20220 <span class="entry_type_visibility"> [system]</span> 20221 20222 20223 20224 <span class="entry_type_deprecated">[deprecated] </span> 20225 20226 20227 20228 </td> <!-- entry_type --> 20229 20230 <td class="entry_description"> 20231 <p>A frame counter set by the framework.<wbr/> Must 20232be maintained unchanged in output frame.<wbr/> This value monotonically 20233increases with every new result (that is,<wbr/> each new result has a unique 20234frameCount value).<wbr/></p> 20235 </td> 20236 20237 <td class="entry_units"> 20238 incrementing integer 20239 </td> 20240 20241 <td class="entry_range"> 20242 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 20243 <p>Any int.<wbr/></p> 20244 </td> 20245 20246 <td class="entry_hal_version"> 20247 <p>3.<wbr/>2</p> 20248 </td> 20249 20250 <td class="entry_tags"> 20251 </td> 20252 20253 </tr> 20254 20255 20256 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20257 <!-- end of entry --> 20258 20259 20260 <tr class="entry" id="controls_android.request.id"> 20261 <td class="entry_name 20262 " rowspan="1"> 20263 android.<wbr/>request.<wbr/>id 20264 </td> 20265 <td class="entry_type"> 20266 <span class="entry_type_name">int32</span> 20267 20268 <span class="entry_type_visibility"> [hidden]</span> 20269 20270 20271 20272 20273 20274 20275 </td> <!-- entry_type --> 20276 20277 <td class="entry_description"> 20278 <p>An application-specified ID for the current 20279request.<wbr/> Must be maintained unchanged in output 20280frame</p> 20281 </td> 20282 20283 <td class="entry_units"> 20284 arbitrary integer assigned by application 20285 </td> 20286 20287 <td class="entry_range"> 20288 <p>Any int</p> 20289 </td> 20290 20291 <td class="entry_hal_version"> 20292 <p>3.<wbr/>2</p> 20293 </td> 20294 20295 <td class="entry_tags"> 20296 <ul class="entry_tags"> 20297 <li><a href="#tag_V1">V1</a></li> 20298 </ul> 20299 </td> 20300 20301 </tr> 20302 20303 20304 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20305 <!-- end of entry --> 20306 20307 20308 <tr class="entry" id="controls_android.request.inputStreams"> 20309 <td class="entry_name 20310 entry_name_deprecated 20311 " rowspan="3"> 20312 android.<wbr/>request.<wbr/>input<wbr/>Streams 20313 </td> 20314 <td class="entry_type"> 20315 <span class="entry_type_name">int32</span> 20316 <span class="entry_type_container">x</span> 20317 20318 <span class="entry_type_array"> 20319 n 20320 </span> 20321 <span class="entry_type_visibility"> [system]</span> 20322 20323 20324 20325 <span class="entry_type_deprecated">[deprecated] </span> 20326 20327 20328 20329 </td> <!-- entry_type --> 20330 20331 <td class="entry_description"> 20332 <p>List which camera reprocess stream is used 20333for the source of reprocessing data.<wbr/></p> 20334 </td> 20335 20336 <td class="entry_units"> 20337 List of camera reprocess stream IDs 20338 </td> 20339 20340 <td class="entry_range"> 20341 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 20342 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 20343 </td> 20344 20345 <td class="entry_hal_version"> 20346 <p>3.<wbr/>2</p> 20347 </td> 20348 20349 <td class="entry_tags"> 20350 <ul class="entry_tags"> 20351 <li><a href="#tag_HAL2">HAL2</a></li> 20352 </ul> 20353 </td> 20354 20355 </tr> 20356 <tr class="entries_header"> 20357 <th class="th_details" colspan="6">Details</th> 20358 </tr> 20359 <tr class="entry_cont"> 20360 <td class="entry_details" colspan="6"> 20361 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 20362REPROCESS.<wbr/> Ignored otherwise</p> 20363 </td> 20364 </tr> 20365 20366 20367 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20368 <!-- end of entry --> 20369 20370 20371 <tr class="entry" id="controls_android.request.metadataMode"> 20372 <td class="entry_name 20373 " rowspan="1"> 20374 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 20375 </td> 20376 <td class="entry_type"> 20377 <span class="entry_type_name entry_type_name_enum">byte</span> 20378 20379 <span class="entry_type_visibility"> [system]</span> 20380 20381 20382 20383 20384 20385 <ul class="entry_type_enum"> 20386 <li> 20387 <span class="entry_type_enum_name">NONE (v3.2)</span> 20388 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 20389for application-bound buffer data.<wbr/> If no 20390application-bound streams exist,<wbr/> no frame should be 20391placed in the output frame queue.<wbr/> If such streams 20392exist,<wbr/> a frame should be placed on the output queue 20393with null metadata but with the necessary output buffer 20394information.<wbr/> Timestamp information should still be 20395included with any output stream buffers</p></span> 20396 </li> 20397 <li> 20398 <span class="entry_type_enum_name">FULL (v3.2)</span> 20399 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 20400only be produced if they are separately 20401enabled</p></span> 20402 </li> 20403 </ul> 20404 20405 </td> <!-- entry_type --> 20406 20407 <td class="entry_description"> 20408 <p>How much metadata to produce on 20409output</p> 20410 </td> 20411 20412 <td class="entry_units"> 20413 </td> 20414 20415 <td class="entry_range"> 20416 </td> 20417 20418 <td class="entry_hal_version"> 20419 <p>3.<wbr/>2</p> 20420 </td> 20421 20422 <td class="entry_tags"> 20423 <ul class="entry_tags"> 20424 <li><a href="#tag_FUTURE">FUTURE</a></li> 20425 </ul> 20426 </td> 20427 20428 </tr> 20429 20430 20431 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20432 <!-- end of entry --> 20433 20434 20435 <tr class="entry" id="controls_android.request.outputStreams"> 20436 <td class="entry_name 20437 entry_name_deprecated 20438 " rowspan="3"> 20439 android.<wbr/>request.<wbr/>output<wbr/>Streams 20440 </td> 20441 <td class="entry_type"> 20442 <span class="entry_type_name">int32</span> 20443 <span class="entry_type_container">x</span> 20444 20445 <span class="entry_type_array"> 20446 n 20447 </span> 20448 <span class="entry_type_visibility"> [system]</span> 20449 20450 20451 20452 <span class="entry_type_deprecated">[deprecated] </span> 20453 20454 20455 20456 </td> <!-- entry_type --> 20457 20458 <td class="entry_description"> 20459 <p>Lists which camera output streams image data 20460from this capture must be sent to</p> 20461 </td> 20462 20463 <td class="entry_units"> 20464 List of camera stream IDs 20465 </td> 20466 20467 <td class="entry_range"> 20468 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 20469 <p>List must only include streams that have been 20470created</p> 20471 </td> 20472 20473 <td class="entry_hal_version"> 20474 <p>3.<wbr/>2</p> 20475 </td> 20476 20477 <td class="entry_tags"> 20478 <ul class="entry_tags"> 20479 <li><a href="#tag_HAL2">HAL2</a></li> 20480 </ul> 20481 </td> 20482 20483 </tr> 20484 <tr class="entries_header"> 20485 <th class="th_details" colspan="6">Details</th> 20486 </tr> 20487 <tr class="entry_cont"> 20488 <td class="entry_details" colspan="6"> 20489 <p>If no output streams are listed,<wbr/> then the image 20490data should simply be discarded.<wbr/> The image data must 20491still be captured for metadata and statistics production,<wbr/> 20492and the lens and flash must operate as requested.<wbr/></p> 20493 </td> 20494 </tr> 20495 20496 20497 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20498 <!-- end of entry --> 20499 20500 20501 <tr class="entry" id="controls_android.request.type"> 20502 <td class="entry_name 20503 entry_name_deprecated 20504 " rowspan="1"> 20505 android.<wbr/>request.<wbr/>type 20506 </td> 20507 <td class="entry_type"> 20508 <span class="entry_type_name entry_type_name_enum">byte</span> 20509 20510 <span class="entry_type_visibility"> [system]</span> 20511 20512 20513 20514 <span class="entry_type_deprecated">[deprecated] </span> 20515 20516 20517 <ul class="entry_type_enum"> 20518 <li> 20519 <span class="entry_type_enum_name">CAPTURE (v3.2)</span> 20520 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 20521and process it according to the 20522settings</p></span> 20523 </li> 20524 <li> 20525 <span class="entry_type_enum_name">REPROCESS (v3.2)</span> 20526 <span class="entry_type_enum_notes"><p>Process previously captured data; the 20527<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 20528source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 20529needed for reprocessing with [RP]</p></span> 20530 </li> 20531 </ul> 20532 20533 </td> <!-- entry_type --> 20534 20535 <td class="entry_description"> 20536 <p>The type of the request; either CAPTURE or 20537REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p> 20538 </td> 20539 20540 <td class="entry_units"> 20541 </td> 20542 20543 <td class="entry_range"> 20544 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 20545 </td> 20546 20547 <td class="entry_hal_version"> 20548 <p>3.<wbr/>2</p> 20549 </td> 20550 20551 <td class="entry_tags"> 20552 <ul class="entry_tags"> 20553 <li><a href="#tag_HAL2">HAL2</a></li> 20554 </ul> 20555 </td> 20556 20557 </tr> 20558 20559 20560 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20561 <!-- end of entry --> 20562 20563 20564 20565 <!-- end of kind --> 20566 </tbody> 20567 <tr><td colspan="7" class="kind">static</td></tr> 20568 20569 <thead class="entries_header"> 20570 <tr> 20571 <th class="th_name">Property Name</th> 20572 <th class="th_type">Type</th> 20573 <th class="th_description">Description</th> 20574 <th class="th_units">Units</th> 20575 <th class="th_range">Range</th> 20576 <th class="th_hal_version">Initial HIDL HAL version</th> 20577 <th class="th_tags">Tags</th> 20578 </tr> 20579 </thead> 20580 20581 <tbody> 20582 20583 20584 20585 20586 20587 20588 20589 20590 20591 20592 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 20593 <td class="entry_name 20594 " rowspan="3"> 20595 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 20596 </td> 20597 <td class="entry_type"> 20598 <span class="entry_type_name">int32</span> 20599 <span class="entry_type_container">x</span> 20600 20601 <span class="entry_type_array"> 20602 3 20603 </span> 20604 <span class="entry_type_visibility"> [ndk_public]</span> 20605 20606 20607 <span class="entry_type_hwlevel">[legacy] </span> 20608 20609 20610 20611 20612 </td> <!-- entry_type --> 20613 20614 <td class="entry_description"> 20615 <p>The maximum numbers of different types of output streams 20616that can be configured and used simultaneously by a camera device.<wbr/></p> 20617 </td> 20618 20619 <td class="entry_units"> 20620 </td> 20621 20622 <td class="entry_range"> 20623 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> 20624<p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> 20625<p>For processed (but not stalling) format streams,<wbr/> >= 3 20626for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 20627>= 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> 20628 </td> 20629 20630 <td class="entry_hal_version"> 20631 <p>3.<wbr/>2</p> 20632 </td> 20633 20634 <td class="entry_tags"> 20635 <ul class="entry_tags"> 20636 <li><a href="#tag_BC">BC</a></li> 20637 </ul> 20638 </td> 20639 20640 </tr> 20641 <tr class="entries_header"> 20642 <th class="th_details" colspan="6">Details</th> 20643 </tr> 20644 <tr class="entry_cont"> 20645 <td class="entry_details" colspan="6"> 20646 <p>This is a 3 element tuple that contains the max number of output simultaneous 20647streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 20648formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 20649stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 20650number 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> 20651<p>This lists the upper bound of the number of output streams supported by 20652the camera device.<wbr/> Using more streams simultaneously may require more hardware and 20653CPU resources that will consume more power.<wbr/> The image format for an output stream can 20654be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 20655The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be categorized 20656into the 3 stream types as below:</p> 20657<ul> 20658<li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> 20659 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li> 20660<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 20661 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li> 20662<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> Typically 20663 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/> 20664 <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> 20665</ul> 20666 </td> 20667 </tr> 20668 20669 20670 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20671 <!-- end of entry --> 20672 20673 20674 <tr class="entry" id="static_android.request.maxNumOutputRaw"> 20675 <td class="entry_name 20676 " rowspan="3"> 20677 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw 20678 </td> 20679 <td class="entry_type"> 20680 <span class="entry_type_name">int32</span> 20681 20682 <span class="entry_type_visibility"> [java_public]</span> 20683 20684 <span class="entry_type_synthetic">[synthetic] </span> 20685 20686 <span class="entry_type_hwlevel">[legacy] </span> 20687 20688 20689 20690 20691 </td> <!-- entry_type --> 20692 20693 <td class="entry_description"> 20694 <p>The maximum numbers of different types of output streams 20695that can be configured and used simultaneously by a camera device 20696for any <code>RAW</code> formats.<wbr/></p> 20697 </td> 20698 20699 <td class="entry_units"> 20700 </td> 20701 20702 <td class="entry_range"> 20703 <p>>= 0</p> 20704 </td> 20705 20706 <td class="entry_hal_version"> 20707 <p>3.<wbr/>2</p> 20708 </td> 20709 20710 <td class="entry_tags"> 20711 </td> 20712 20713 </tr> 20714 <tr class="entries_header"> 20715 <th class="th_details" colspan="6">Details</th> 20716 </tr> 20717 <tr class="entry_cont"> 20718 <td class="entry_details" colspan="6"> 20719 <p>This value contains the max number of output simultaneous 20720streams from the raw sensor.<wbr/></p> 20721<p>This lists the upper bound of the number of output streams supported by 20722the camera device.<wbr/> Using more streams simultaneously may require more hardware and 20723CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 20724be 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> 20725<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> 20726<ul> 20727<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li> 20728<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li> 20729<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li> 20730</ul> 20731<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY) 20732never support raw streams.<wbr/></p> 20733 </td> 20734 </tr> 20735 20736 20737 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20738 <!-- end of entry --> 20739 20740 20741 <tr class="entry" id="static_android.request.maxNumOutputProc"> 20742 <td class="entry_name 20743 " rowspan="3"> 20744 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc 20745 </td> 20746 <td class="entry_type"> 20747 <span class="entry_type_name">int32</span> 20748 20749 <span class="entry_type_visibility"> [java_public]</span> 20750 20751 <span class="entry_type_synthetic">[synthetic] </span> 20752 20753 <span class="entry_type_hwlevel">[legacy] </span> 20754 20755 20756 20757 20758 </td> <!-- entry_type --> 20759 20760 <td class="entry_description"> 20761 <p>The maximum numbers of different types of output streams 20762that can be configured and used simultaneously by a camera device 20763for any processed (but not-stalling) formats.<wbr/></p> 20764 </td> 20765 20766 <td class="entry_units"> 20767 </td> 20768 20769 <td class="entry_range"> 20770 <p>>= 3 20771for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 20772>= 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> 20773 </td> 20774 20775 <td class="entry_hal_version"> 20776 <p>3.<wbr/>2</p> 20777 </td> 20778 20779 <td class="entry_tags"> 20780 </td> 20781 20782 </tr> 20783 <tr class="entries_header"> 20784 <th class="th_details" colspan="6">Details</th> 20785 </tr> 20786 <tr class="entry_cont"> 20787 <td class="entry_details" colspan="6"> 20788 <p>This value contains the max number of output simultaneous 20789streams for any processed (but not-stalling) formats.<wbr/></p> 20790<p>This lists the upper bound of the number of output streams supported by 20791the camera device.<wbr/> Using more streams simultaneously may require more hardware and 20792CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 20793be 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> 20794<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> 20795Typically:</p> 20796<ul> 20797<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li> 20798<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li> 20799<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li> 20800<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> 20801<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a></li> 20802</ul> 20803<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 20804processed format -- it will return 0 for a non-stalling stream.<wbr/></p> 20805<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p> 20806 </td> 20807 </tr> 20808 20809 20810 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20811 <!-- end of entry --> 20812 20813 20814 <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> 20815 <td class="entry_name 20816 " rowspan="3"> 20817 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling 20818 </td> 20819 <td class="entry_type"> 20820 <span class="entry_type_name">int32</span> 20821 20822 <span class="entry_type_visibility"> [java_public]</span> 20823 20824 <span class="entry_type_synthetic">[synthetic] </span> 20825 20826 <span class="entry_type_hwlevel">[legacy] </span> 20827 20828 20829 20830 20831 </td> <!-- entry_type --> 20832 20833 <td class="entry_description"> 20834 <p>The maximum numbers of different types of output streams 20835that can be configured and used simultaneously by a camera device 20836for any processed (and stalling) formats.<wbr/></p> 20837 </td> 20838 20839 <td class="entry_units"> 20840 </td> 20841 20842 <td class="entry_range"> 20843 <p>>= 1</p> 20844 </td> 20845 20846 <td class="entry_hal_version"> 20847 <p>3.<wbr/>2</p> 20848 </td> 20849 20850 <td class="entry_tags"> 20851 </td> 20852 20853 </tr> 20854 <tr class="entries_header"> 20855 <th class="th_details" colspan="6">Details</th> 20856 </tr> 20857 <tr class="entry_cont"> 20858 <td class="entry_details" colspan="6"> 20859 <p>This value contains the max number of output simultaneous 20860streams for any processed (but not-stalling) formats.<wbr/></p> 20861<p>This lists the upper bound of the number of output streams supported by 20862the camera device.<wbr/> Using more streams simultaneously may require more hardware and 20863CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 20864be 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> 20865<p>A processed and stalling format is defined as any non-RAW format with a stallDurations 20866> 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> 20867<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 20868processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> 20869<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p> 20870 </td> 20871 </tr> 20872 20873 20874 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20875 <!-- end of entry --> 20876 20877 20878 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 20879 <td class="entry_name 20880 entry_name_deprecated 20881 " rowspan="3"> 20882 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 20883 </td> 20884 <td class="entry_type"> 20885 <span class="entry_type_name">int32</span> 20886 <span class="entry_type_container">x</span> 20887 20888 <span class="entry_type_array"> 20889 1 20890 </span> 20891 <span class="entry_type_visibility"> [system]</span> 20892 20893 20894 20895 <span class="entry_type_deprecated">[deprecated] </span> 20896 20897 20898 20899 </td> <!-- entry_type --> 20900 20901 <td class="entry_description"> 20902 <p>How many reprocessing streams of any type 20903can be allocated at the same time.<wbr/></p> 20904 </td> 20905 20906 <td class="entry_units"> 20907 </td> 20908 20909 <td class="entry_range"> 20910 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 20911 <p>>= 0</p> 20912 </td> 20913 20914 <td class="entry_hal_version"> 20915 <p>3.<wbr/>2</p> 20916 </td> 20917 20918 <td class="entry_tags"> 20919 <ul class="entry_tags"> 20920 <li><a href="#tag_HAL2">HAL2</a></li> 20921 </ul> 20922 </td> 20923 20924 </tr> 20925 <tr class="entries_header"> 20926 <th class="th_details" colspan="6">Details</th> 20927 </tr> 20928 <tr class="entry_cont"> 20929 <td class="entry_details" colspan="6"> 20930 <p>Only used by HAL2.<wbr/>x.<wbr/></p> 20931<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 20932 </td> 20933 </tr> 20934 20935 20936 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20937 <!-- end of entry --> 20938 20939 20940 <tr class="entry" id="static_android.request.maxNumInputStreams"> 20941 <td class="entry_name 20942 " rowspan="5"> 20943 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 20944 </td> 20945 <td class="entry_type"> 20946 <span class="entry_type_name">int32</span> 20947 20948 <span class="entry_type_visibility"> [java_public]</span> 20949 20950 20951 <span class="entry_type_hwlevel">[full] </span> 20952 20953 20954 20955 20956 </td> <!-- entry_type --> 20957 20958 <td class="entry_description"> 20959 <p>The maximum numbers of any type of input streams 20960that can be configured and used simultaneously by a camera device.<wbr/></p> 20961 </td> 20962 20963 <td class="entry_units"> 20964 </td> 20965 20966 <td class="entry_range"> 20967 <p>0 or 1.<wbr/></p> 20968 </td> 20969 20970 <td class="entry_hal_version"> 20971 <p>3.<wbr/>2</p> 20972 </td> 20973 20974 <td class="entry_tags"> 20975 <ul class="entry_tags"> 20976 <li><a href="#tag_REPROC">REPROC</a></li> 20977 </ul> 20978 </td> 20979 20980 </tr> 20981 <tr class="entries_header"> 20982 <th class="th_details" colspan="6">Details</th> 20983 </tr> 20984 <tr class="entry_cont"> 20985 <td class="entry_details" colspan="6"> 20986 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 20987<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 20988input stream,<wbr/> there must be at least one output stream configured to to receive the 20989reprocessed images.<wbr/></p> 20990<p>When an input stream and some output streams are used in a reprocessing request,<wbr/> 20991only the input buffer will be used to produce these output stream buffers,<wbr/> and a 20992new sensor image will not be captured.<wbr/></p> 20993<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 20994stream image format will be PRIVATE,<wbr/> the associated output stream image format 20995should be JPEG.<wbr/></p> 20996 </td> 20997 </tr> 20998 20999 <tr class="entries_header"> 21000 <th class="th_details" colspan="6">HAL Implementation Details</th> 21001 </tr> 21002 <tr class="entry_cont"> 21003 <td class="entry_details" colspan="6"> 21004 <p>For the reprocessing flow and controls,<wbr/> see 21005hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p> 21006 </td> 21007 </tr> 21008 21009 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21010 <!-- end of entry --> 21011 21012 21013 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 21014 <td class="entry_name 21015 " rowspan="5"> 21016 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 21017 </td> 21018 <td class="entry_type"> 21019 <span class="entry_type_name">byte</span> 21020 21021 <span class="entry_type_visibility"> [public]</span> 21022 21023 21024 <span class="entry_type_hwlevel">[legacy] </span> 21025 21026 21027 21028 21029 </td> <!-- entry_type --> 21030 21031 <td class="entry_description"> 21032 <p>Specifies the number of maximum pipeline stages a frame 21033has to go through from when it's exposed to when it's available 21034to the framework.<wbr/></p> 21035 </td> 21036 21037 <td class="entry_units"> 21038 </td> 21039 21040 <td class="entry_range"> 21041 </td> 21042 21043 <td class="entry_hal_version"> 21044 <p>3.<wbr/>2</p> 21045 </td> 21046 21047 <td class="entry_tags"> 21048 </td> 21049 21050 </tr> 21051 <tr class="entries_header"> 21052 <th class="th_details" colspan="6">Details</th> 21053 </tr> 21054 <tr class="entry_cont"> 21055 <td class="entry_details" colspan="6"> 21056 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 21057one stage to readout) from the sensor.<wbr/> The ISP then usually adds 21058its own stages to do custom HW processing.<wbr/> Further stages may be 21059added by SW processing.<wbr/></p> 21060<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 21061processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 21062depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 21063the max pipeline depth.<wbr/></p> 21064<p>A pipeline depth of X stages is equivalent to a pipeline latency of 21065X frame intervals.<wbr/></p> 21066<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/> 21067the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p> 21068 </td> 21069 </tr> 21070 21071 <tr class="entries_header"> 21072 <th class="th_details" colspan="6">HAL Implementation Details</th> 21073 </tr> 21074 <tr class="entry_cont"> 21075 <td class="entry_details" colspan="6"> 21076 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the 21077max batch sizes may be larger than 1.<wbr/></p> 21078 </td> 21079 </tr> 21080 21081 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21082 <!-- end of entry --> 21083 21084 21085 <tr class="entry" id="static_android.request.partialResultCount"> 21086 <td class="entry_name 21087 " rowspan="3"> 21088 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 21089 </td> 21090 <td class="entry_type"> 21091 <span class="entry_type_name">int32</span> 21092 21093 <span class="entry_type_visibility"> [public]</span> 21094 21095 21096 21097 21098 21099 21100 </td> <!-- entry_type --> 21101 21102 <td class="entry_description"> 21103 <p>Defines how many sub-components 21104a result will be composed of.<wbr/></p> 21105 </td> 21106 21107 <td class="entry_units"> 21108 </td> 21109 21110 <td class="entry_range"> 21111 <p>>= 1</p> 21112 </td> 21113 21114 <td class="entry_hal_version"> 21115 <p>3.<wbr/>2</p> 21116 </td> 21117 21118 <td class="entry_tags"> 21119 </td> 21120 21121 </tr> 21122 <tr class="entries_header"> 21123 <th class="th_details" colspan="6">Details</th> 21124 </tr> 21125 <tr class="entry_cont"> 21126 <td class="entry_details" colspan="6"> 21127 <p>In order to combat the pipeline latency,<wbr/> partial results 21128may be delivered to the application layer from the camera device as 21129soon as they are available.<wbr/></p> 21130<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial 21131results are not supported,<wbr/> and only the final TotalCaptureResult will 21132be produced by the camera device.<wbr/></p> 21133<p>A typical use case for this might be: after requesting an 21134auto-focus (AF) lock the new AF state might be available 50% 21135of the way through the pipeline.<wbr/> The camera device could 21136then immediately dispatch this state via a partial result to 21137the application,<wbr/> and the rest of the metadata via later 21138partial results.<wbr/></p> 21139 </td> 21140 </tr> 21141 21142 21143 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21144 <!-- end of entry --> 21145 21146 21147 <tr class="entry" id="static_android.request.availableCapabilities"> 21148 <td class="entry_name 21149 " rowspan="5"> 21150 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 21151 </td> 21152 <td class="entry_type"> 21153 <span class="entry_type_name entry_type_name_enum">byte</span> 21154 <span class="entry_type_container">x</span> 21155 21156 <span class="entry_type_array"> 21157 n 21158 </span> 21159 <span class="entry_type_visibility"> [public]</span> 21160 21161 21162 <span class="entry_type_hwlevel">[legacy] </span> 21163 21164 21165 21166 <ul class="entry_type_enum"> 21167 <li> 21168 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span> 21169 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 21170device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 21171supports.<wbr/></p> 21172<p>This capability is listed by all normal devices,<wbr/> and 21173indicates that the camera device has a feature set 21174that's comparable to the baseline requirements for the 21175older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 21176<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this 21177capability,<wbr/> indicating that they support only depth measurement,<wbr/> 21178not standard color output.<wbr/></p></span> 21179 </li> 21180 <li> 21181 <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span> 21182 <span class="entry_type_enum_optional">[optional]</span> 21183 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 21184as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> 21185The camera device supports basic manual control of the sensor image 21186acquisition related stages.<wbr/> This means the following controls are 21187guaranteed to be supported:</p> 21188<ul> 21189<li>Manual frame duration control<ul> 21190<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> 21191<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 21192</ul> 21193</li> 21194<li>Manual exposure control<ul> 21195<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 21196<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 21197</ul> 21198</li> 21199<li>Manual sensitivity control<ul> 21200<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 21201<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 21202</ul> 21203</li> 21204<li>Manual lens control (if the lens is adjustable)<ul> 21205<li>android.<wbr/>lens.<wbr/>*</li> 21206</ul> 21207</li> 21208<li>Manual flash control (if a flash unit is present)<ul> 21209<li>android.<wbr/>flash.<wbr/>*</li> 21210</ul> 21211</li> 21212<li>Manual black level locking<ul> 21213<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 21214</ul> 21215</li> 21216<li>Auto exposure lock<ul> 21217<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 21218</ul> 21219</li> 21220</ul> 21221<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 21222device will accurately report the values applied by 3A in the 21223result.<wbr/></p> 21224<p>A given camera device may also support additional manual sensor controls,<wbr/> 21225but this capability only covers the above list of controls.<wbr/></p> 21226<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will 21227additionally return a min frame duration that is greater than 21228zero for each supported size-format combination.<wbr/></p> 21229<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when the underlying active 21230physical camera switches,<wbr/> exposureTime,<wbr/> sensitivity,<wbr/> and lens properties may change 21231even if AE/<wbr/>AF is locked.<wbr/> However,<wbr/> the overall auto exposure and auto focus experience 21232for users will be consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span> 21233 </li> 21234 <li> 21235 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span> 21236 <span class="entry_type_enum_optional">[optional]</span> 21237 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> 21238The camera device supports basic manual control of the image post-processing 21239stages.<wbr/> This means the following controls are guaranteed to be supported:</p> 21240<ul> 21241<li> 21242<p>Manual tonemap control</p> 21243<ul> 21244<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> 21245<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 21246<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 21247<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li> 21248<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li> 21249</ul> 21250</li> 21251<li> 21252<p>Manual white balance control</p> 21253<ul> 21254<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 21255<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 21256</ul> 21257</li> 21258<li>Manual lens shading map control<ul> 21259<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li> 21260<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li> 21261<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 21262<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 21263</ul> 21264</li> 21265<li>Manual aberration correction control (if aberration correction is supported)<ul> 21266<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li> 21267<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li> 21268</ul> 21269</li> 21270<li>Auto white balance lock<ul> 21271<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 21272</ul> 21273</li> 21274</ul> 21275<p>If auto white balance is enabled,<wbr/> then the camera device 21276will accurately report the values applied by AWB in the result.<wbr/></p> 21277<p>A given camera device may also support additional post-processing 21278controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p> 21279<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when underlying active 21280physical camera switches,<wbr/> tonemap,<wbr/> white balance,<wbr/> and shading map may change even if 21281awb is locked.<wbr/> However,<wbr/> the overall post-processing experience for users will be 21282consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span> 21283 </li> 21284 <li> 21285 <span class="entry_type_enum_name">RAW (v3.2)</span> 21286 <span class="entry_type_enum_optional">[optional]</span> 21287 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and 21288metadata for interpreting them.<wbr/></p> 21289<p>Devices supporting the RAW capability allow both for 21290saving DNG files,<wbr/> and for direct application processing of 21291raw sensor images.<wbr/></p> 21292<ul> 21293<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li> 21294<li>The maximum available resolution for RAW_<wbr/>SENSOR streams 21295 will match either the value in 21296 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 21297 <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> 21298<li>All DNG-related optional metadata entries are provided 21299 by the camera device.<wbr/></li> 21300</ul></span> 21301 </li> 21302 <li> 21303 <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span> 21304 <span class="entry_type_enum_optional">[optional]</span> 21305 <span class="entry_type_enum_hidden">[java_public]</span> 21306 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p> 21307<ul> 21308<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> 21309<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/> 21310 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of 21311 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> 21312<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 21313 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> 21314<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> 21315<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop 21316 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 21317<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both 21318 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and 21319 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li> 21320<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 21321 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a>.<wbr/></li> 21322<li>The maximum available resolution for PRIVATE streams 21323 (both input/<wbr/>output) will match the maximum available 21324 resolution of JPEG streams.<wbr/></li> 21325<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 21326<li>Only below controls are effective for reprocessing requests and 21327 will be present in capture results,<wbr/> other controls in reprocess 21328 requests will be ignored by the camera device.<wbr/><ul> 21329<li>android.<wbr/>jpeg.<wbr/>*</li> 21330<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 21331<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 21332</ul> 21333</li> 21334<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 21335 <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> 21336</ul></span> 21337 </li> 21338 <li> 21339 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span> 21340 <span class="entry_type_enum_optional">[optional]</span> 21341 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of 21342the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows 21343reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p> 21344<p>The values reported for the following controls are guaranteed to be available 21345in the CaptureResult,<wbr/> including when 3A is enabled:</p> 21346<ul> 21347<li>Exposure control<ul> 21348<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 21349</ul> 21350</li> 21351<li>Sensitivity control<ul> 21352<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 21353</ul> 21354</li> 21355<li>Lens controls (if the lens is adjustable)<ul> 21356<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li> 21357<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li> 21358</ul> 21359</li> 21360</ul> 21361<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will 21362always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span> 21363 </li> 21364 <li> 21365 <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span> 21366 <span class="entry_type_enum_optional">[optional]</span> 21367 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per 21368second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are 21369set to FAST.<wbr/> Additionally,<wbr/> all image resolutions less than 24 megapixels can be 21370captured at >= 10 frames per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 21371megapixels,<wbr/> or the maximum resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span> 21372 </li> 21373 <li> 21374 <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span> 21375 <span class="entry_type_enum_optional">[optional]</span> 21376 <span class="entry_type_enum_hidden">[java_public]</span> 21377 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as 21378PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the 21379following:</p> 21380<ul> 21381<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> 21382<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 21383 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> 21384<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 21385 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> 21386<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> 21387<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 21388 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 21389<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 21390 <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> 21391<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 21392 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li> 21393<li>For a MONOCHROME camera with Y8 format support,<wbr/> all the requirements mentioned 21394 above for YUV_<wbr/>420_<wbr/>888 apply for Y8 format as well.<wbr/></li> 21395<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 21396<li>Only the below controls are effective for reprocessing requests and will be present 21397 in capture results.<wbr/> The reprocess requests are from the original capture results 21398 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 21399 reprocess requests will be ignored by the camera device.<wbr/><ul> 21400<li>android.<wbr/>jpeg.<wbr/>*</li> 21401<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 21402<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 21403<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li> 21404</ul> 21405</li> 21406<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 21407 <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> 21408</ul></span> 21409 </li> 21410 <li> 21411 <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span> 21412 <span class="entry_type_enum_optional">[optional]</span> 21413 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p> 21414<p>This capability requires the camera device to support the following:</p> 21415<ul> 21416<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as 21417 an output format.<wbr/></li> 21418<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 21419 optionally supported as an output format.<wbr/></li> 21420<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 21421 list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> 21422 and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul> 21423<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 21424<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 21425<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 21426<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 21427</ul> 21428</li> 21429<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> 21430<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> 21431<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support 21432 normal YUV_<wbr/>420_<wbr/>888,<wbr/> Y8,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the 21433 DEPTH16 format.<wbr/></li> 21434</ul> 21435<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/> 21436so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that 21437should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/> 21438On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/> 21439using a repeating burst is recommended,<wbr/> where a depth-output target is only included 21440once every N frames,<wbr/> where N is the ratio between preview output rate and depth output 21441rate,<wbr/> including depth stall time.<wbr/></p></span> 21442 </li> 21443 <li> 21444 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span> 21445 <span class="entry_type_enum_optional">[optional]</span> 21446 <span class="entry_type_enum_hidden">[java_public]</span> 21447 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) use 21448case.<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 21449only 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> 21450<p>A camera device can still support high speed video streaming by advertising the high 21451speed 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 21452normal capture request per frame control and synchronization requirements will apply 21453to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability 21454describes the capability of a specialized operating mode with many limitations (see 21455below),<wbr/> which is only targeted at high speed video recording.<wbr/></p> 21456<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/> 21457To get desired output frame rates,<wbr/> the application is only allowed to select video 21458size 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 21459fps 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> 21460<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 21461ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 21462controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 21463and post-processing parameters is possible.<wbr/> All other controls operate the 21464same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 21465android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 21466<ul> 21467<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 21468<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 21469<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 21470<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 21471<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 21472<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 21473<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 21474<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 21475<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 21476<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 21477<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li> 21478</ul> 21479<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 21480<ul> 21481<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not 21482work since aeMode is ON)</li> 21483<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 21484<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 21485<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li> 21486</ul> 21487<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 21488be lower than what camera can output,<wbr/> depending on the destination Surfaces for 21489the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 21490the application need check if the video encoder is capable of supporting the 21491high frame rate for a given video size,<wbr/> or it will end up with lower recording 21492frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame 21493rate will be bounded by the screen refresh rate.<wbr/></p> 21494<p>The camera device will only support up to 2 high speed simultaneous output surfaces 21495(preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only 21496if all of below conditions are true:</p> 21497<ul> 21498<li>The application creates a camera capture session with no more than 2 surfaces via 21499<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The 21500targeted 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 21501surface(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> 21502<li>The stream sizes are selected from the sizes reported by 21503<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li> 21504<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> 21505</ul> 21506<p>When above conditions are NOT satisfied,<wbr/> 21507<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 21508will fail.<wbr/></p> 21509<p>Switching to a FPS range that has different maximum FPS may trigger some camera device 21510reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 21511the application avoids unnecessary maximum target FPS changes as much as possible 21512during high speed streaming.<wbr/></p></span> 21513 </li> 21514 <li> 21515 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> 21516 <span class="entry_type_enum_optional">[optional]</span> 21517 <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for 21518<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> 21519<p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking 21520results for use cases such as image stabilization or augmented reality.<wbr/></p></span> 21521 </li> 21522 <li> 21523 <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span> 21524 <span class="entry_type_enum_optional">[optional]</span> 21525 <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras.<wbr/></p> 21526<p>In API level 28,<wbr/> the physical cameras must also be exposed to the application via 21527<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/></p> 21528<p>Starting from API level 29:</p> 21529<ul> 21530<li>Some or all physical cameras may not be independently exposed to the application,<wbr/> 21531in which case the physical camera IDs will not be available in 21532<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/> But the 21533application can still query the physical cameras' characteristics by calling 21534<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/></li> 21535<li>If a physical camera is hidden from camera ID list,<wbr/> the mandatory stream 21536combinations for that physical camera must be supported through the logical camera 21537using physical streams.<wbr/> One exception is that in API level 30,<wbr/> a physical camera 21538may become unavailable via 21539<a href="https://developer.android.com/reference/CameraManager/AvailabilityCallback.html#onPhysicalCameraUnavailable">AvailabilityCallback#onPhysicalCameraUnavailable</a> 21540callback.<wbr/></li> 21541</ul> 21542<p>Combinations of logical and physical streams,<wbr/> or physical streams from different 21543physical cameras are not guaranteed.<wbr/> However,<wbr/> if the camera device supports 21544<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>,<wbr/> 21545application must be able to query whether a stream combination involving physical 21546streams is supported by calling 21547<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>.<wbr/></p> 21548<p>Camera application shouldn't assume that there are at most 1 rear camera and 1 front 21549camera in the system.<wbr/> For an application that switches between front and back cameras,<wbr/> 21550the recommendation is to switch between the first rear camera and the first front 21551camera in the list of supported camera devices.<wbr/></p> 21552<p>This capability requires the camera device to support the following:</p> 21553<ul> 21554<li>The IDs of underlying physical cameras are returned via 21555 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getPhysicalCameraIds">CameraCharacteristics#getPhysicalCameraIds</a>.<wbr/></li> 21556<li>This camera device must list static metadata 21557 <a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a> in 21558 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></li> 21559<li>The underlying physical cameras' static metadata must list the following entries,<wbr/> 21560 so that the application can correlate pixels from the physical streams:<ul> 21561<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li> 21562<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 21563<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 21564<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 21565<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 21566</ul> 21567</li> 21568<li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be 21569 the same.<wbr/></li> 21570<li>The logical camera must be LIMITED or higher device.<wbr/></li> 21571</ul> 21572<p>A logical camera device's dynamic metadata may contain 21573<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 21574active physical camera Id.<wbr/> An active physical camera is the physical camera from which 21575the logical camera's main image data outputs (YUV or RAW) and metadata come from.<wbr/> 21576In addition,<wbr/> this serves as an indication which physical camera is used to output to 21577a RAW stream,<wbr/> or in case only physical cameras support RAW,<wbr/> which physical RAW stream 21578the application should request.<wbr/></p> 21579<p>Logical camera's static metadata tags below describe the default active physical 21580camera.<wbr/> An active physical camera is default if it's used when application directly 21581uses requests built from a template.<wbr/> All templates will default to the same active 21582physical camera.<wbr/></p> 21583<ul> 21584<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 21585<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li> 21586<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 21587<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 21588<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li> 21589<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li> 21590<li><a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a></li> 21591<li><a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></li> 21592<li><a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a></li> 21593<li><a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a></li> 21594<li><a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a></li> 21595<li><a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a></li> 21596<li><a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a></li> 21597<li><a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a></li> 21598<li><a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a></li> 21599<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li> 21600<li><a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a></li> 21601<li><a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a></li> 21602<li><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></li> 21603<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li> 21604<li><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a></li> 21605<li><a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a></li> 21606<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 21607<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 21608<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 21609<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li> 21610<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 21611</ul> 21612<p>The field of view of non-RAW physical streams must not be smaller than that of the 21613non-RAW logical streams,<wbr/> or the maximum field-of-view of the physical camera,<wbr/> 21614whichever is smaller.<wbr/> The application should check the physical capture result 21615metadata for how the physical streams are cropped or zoomed.<wbr/> More specifically,<wbr/> given 21616the physical camera result metadata,<wbr/> the effective horizontal field-of-view of the 21617physical camera is:</p> 21618<pre><code>fov = 2 * atan2(cropW * sensorW /<wbr/> (2 * zoomRatio * activeArrayW),<wbr/> focalLength) 21619</code></pre> 21620<p>where the equation parameters are the physical camera's crop region width,<wbr/> physical 21621sensor width,<wbr/> zoom ratio,<wbr/> active array width,<wbr/> and focal length respectively.<wbr/> Typically 21622the physical stream of active physical camera has the same field-of-view as the 21623logical streams.<wbr/> However,<wbr/> the same may not be true for physical streams from 21624non-active physical cameras.<wbr/> For example,<wbr/> if the logical camera has a wide-ultrawide 21625configuration where the wide lens is the default,<wbr/> when the crop region is set to the 21626logical camera's active array size,<wbr/> (and the zoom ratio set to 1.<wbr/>0 starting from 21627Android 11),<wbr/> a physical stream for the ultrawide camera may prefer outputting images 21628with larger field-of-view than that of the wide camera for better stereo matching 21629margin or more robust motion tracking.<wbr/> At the same time,<wbr/> the physical non-RAW streams' 21630field of view must not be smaller than the requested crop region and zoom ratio,<wbr/> as 21631long as it's within the physical lens' capability.<wbr/> For example,<wbr/> for a logical camera 21632with wide-tele lens configuration where the wide lens is the default,<wbr/> if the logical 21633camera's crop region is set to maximum size,<wbr/> and zoom ratio set to 1.<wbr/>0,<wbr/> the physical 21634stream for the tele lens will be configured to its maximum size crop region (no zoom).<wbr/></p> 21635<p><em>Deprecated:</em> Prior to Android 11,<wbr/> the field of view of all non-RAW physical streams 21636cannot be larger than that of non-RAW logical streams.<wbr/> If the logical camera has a 21637wide-ultrawide lens configuration where the wide lens is the default,<wbr/> when the logical 21638camera's crop region is set to maximum size,<wbr/> the FOV of the physical streams for the 21639ultrawide lens will be the same as the logical stream,<wbr/> by making the crop region 21640smaller than its active array size to compensate for the smaller focal length.<wbr/></p> 21641<p>For a logical camera,<wbr/> typically the underlying physical cameras have different RAW 21642capabilities (such as resolution or CFA pattern).<wbr/> There are two ways for the 21643application to capture RAW images from the logical camera:</p> 21644<ul> 21645<li>If the logical camera has RAW capability,<wbr/> the application can create and use RAW 21646streams in the same way as before.<wbr/> In case a RAW stream is configured,<wbr/> to maintain 21647backward compatibility,<wbr/> the camera device makes sure the default active physical 21648camera remains active and does not switch to other physical cameras.<wbr/> (One exception 21649is that,<wbr/> if the logical camera consists of identical image sensors and advertises 21650multiple focalLength due to different lenses,<wbr/> the camera device may generate RAW 21651images from different physical cameras based on the focalLength being set by the 21652application.<wbr/>) This backward-compatible approach usually results in loss of optical 21653zoom,<wbr/> to telephoto lens or to ultrawide lens.<wbr/></li> 21654<li>Alternatively,<wbr/> if supported by the device,<wbr/> 21655<a href="https://developer.android.com/reference/android/hardware/camera2/MultiResolutionImageReader.html">MultiResolutionImageReader</a> 21656can be used to capture RAW images from one of the underlying physical cameras ( 21657depending on current zoom level).<wbr/> Because different physical cameras may have 21658different RAW characteristics,<wbr/> the application needs to use the characteristics 21659and result metadata of the active physical camera for the relevant RAW metadata.<wbr/></li> 21660</ul> 21661<p>The capture request and result metadata tags required for backward compatible camera 21662functionalities will be solely based on the logical camera capability.<wbr/> On the other 21663hand,<wbr/> the use of manual capture controls (sensor or post-processing) with a 21664logical camera may result in unexpected behavior when the HAL decides to switch 21665between physical cameras with different characteristics under the hood.<wbr/> For example,<wbr/> 21666when the application manually sets exposure time and sensitivity while zooming in,<wbr/> 21667the brightness of the camera images may suddenly change because HAL switches from one 21668physical camera to the other.<wbr/></p></span> 21669 </li> 21670 <li> 21671 <span class="entry_type_enum_name">MONOCHROME (v3.3)</span> 21672 <span class="entry_type_enum_optional">[optional]</span> 21673 <span class="entry_type_enum_notes"><p>The camera device is a monochrome camera that doesn't contain a color filter array,<wbr/> 21674and for YUV_<wbr/>420_<wbr/>888 stream,<wbr/> the pixel values on U and V planes are all 128.<wbr/></p> 21675<p>A MONOCHROME camera must support the guaranteed stream combinations required for 21676its device level and capabilities.<wbr/> Additionally,<wbr/> if the monochrome camera device 21677supports 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 21678to <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> as well.<wbr/> There are no 21679mandatory stream combination requirements with regard to 21680<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> for Bayer camera devices.<wbr/></p> 21681<p>Starting from Android Q,<wbr/> the SENSOR_<wbr/>INFO_<wbr/>COLOR_<wbr/>FILTER_<wbr/>ARRANGEMENT of a MONOCHROME 21682camera will be either MONO or NIR.<wbr/></p></span> 21683 </li> 21684 <li> 21685 <span class="entry_type_enum_name">SECURE_IMAGE_DATA (v3.4)</span> 21686 <span class="entry_type_enum_optional">[optional]</span> 21687 <span class="entry_type_enum_notes"><p>The camera device is capable of writing image data into a region of memory 21688inaccessible to Android userspace or the Android kernel,<wbr/> and only accessible to 21689trusted execution environments (TEE).<wbr/></p></span> 21690 </li> 21691 <li> 21692 <span class="entry_type_enum_name">SYSTEM_CAMERA (v3.5)</span> 21693 <span class="entry_type_enum_optional">[optional]</span> 21694 <span class="entry_type_enum_notes"><p>The camera device is only accessible by Android's system components and privileged 21695applications.<wbr/> Processes need to have the android.<wbr/>permission.<wbr/>SYSTEM_<wbr/>CAMERA in 21696addition to android.<wbr/>permission.<wbr/>CAMERA in order to connect to this camera device.<wbr/></p></span> 21697 </li> 21698 <li> 21699 <span class="entry_type_enum_name">OFFLINE_PROCESSING (v3.5)</span> 21700 <span class="entry_type_enum_optional">[optional]</span> 21701 <span class="entry_type_enum_hidden">[java_public]</span> 21702 <span class="entry_type_enum_notes"><p>The camera device supports the OFFLINE_<wbr/>PROCESSING use case.<wbr/></p> 21703<p>With OFFLINE_<wbr/>PROCESSING capability,<wbr/> the application can switch an ongoing 21704capture session to offline mode by calling the 21705CameraCaptureSession#switchToOffline method and specify streams to be kept in offline 21706mode.<wbr/> The camera will then stop currently active repeating requests,<wbr/> prepare for 21707some requests to go into offline mode,<wbr/> and return an offline session object.<wbr/> After 21708the switchToOffline call returns,<wbr/> the original capture session is in closed state as 21709if the CameraCaptureSession#close method has been called.<wbr/> 21710In the offline mode,<wbr/> all inflight requests will continue to be processed in the 21711background,<wbr/> and the application can immediately close the camera or create a new 21712capture session without losing those requests' output images and capture results.<wbr/></p> 21713<p>While the camera device is processing offline requests,<wbr/> it 21714might not be able to support all stream configurations it can support 21715without offline requests.<wbr/> When that happens,<wbr/> the createCaptureSession 21716method call will fail.<wbr/> The following stream configurations are guaranteed to work 21717without hitting the resource busy exception:</p> 21718<ul> 21719<li>One ongoing offline session: target one output surface of YUV or 21720JPEG format,<wbr/> any resolution.<wbr/></li> 21721<li>The active camera capture session:<ol> 21722<li>One preview surface (SurfaceView or SurfaceTexture) up to 1920 width</li> 21723<li>One YUV ImageReader surface up to 1920 width</li> 21724<li>One Jpeg ImageReader,<wbr/> any resolution: the camera device is 21725 allowed to slow down JPEG output speed by 50% if there is any ongoing offline 21726 session.<wbr/></li> 21727<li>If the device supports PRIVATE_<wbr/>REPROCESSING,<wbr/> one pair of ImageWriter/<wbr/>ImageReader 21728 surfaces of private format,<wbr/> with the same resolution that is larger or equal to 21729 the JPEG ImageReader resolution above.<wbr/></li> 21730</ol> 21731</li> 21732<li>Alternatively,<wbr/> the active camera session above can be replaced by an legacy 21733<a href="https://developer.android.com/reference/android/hardware/Camera.html">Camera</a> with the following parameter settings:<ol> 21734<li>Preview size up to 1920 width</li> 21735<li>Preview callback size up to 1920 width</li> 21736<li>Video size up to 1920 width</li> 21737<li>Picture size,<wbr/> any resolution: the camera device is 21738 allowed to slow down JPEG output speed by 50% if there is any ongoing offline 21739 session.<wbr/></li> 21740</ol> 21741</li> 21742</ul></span> 21743 </li> 21744 <li> 21745 <span class="entry_type_enum_name">ULTRA_HIGH_RESOLUTION_SENSOR (v3.6)</span> 21746 <span class="entry_type_enum_optional">[optional]</span> 21747 <span class="entry_type_enum_notes"><p>This camera device is capable of producing ultra high resolution images in 21748addition to the image sizes described in the 21749<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> 21750It can operate in 'default' mode and 'max resolution' mode.<wbr/> It generally does this 21751by binning pixels in 'default' mode and not binning them in 'max resolution' mode.<wbr/> 21752<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code> describes the streams supported in 'default' 21753mode.<wbr/> 21754The stream configurations supported in 'max resolution' mode are described by 21755<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/> 21756The maximum resolution mode pixel array size of a camera device 21757(<code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>) with this capability,<wbr/> 21758will be at least 24 megapixels.<wbr/></p></span> 21759 </li> 21760 <li> 21761 <span class="entry_type_enum_name">REMOSAIC_REPROCESSING (v3.6)</span> 21762 <span class="entry_type_enum_optional">[optional]</span> 21763 <span class="entry_type_enum_hidden">[java_public]</span> 21764 <span class="entry_type_enum_notes"><p>The device supports reprocessing from the <code>RAW_<wbr/>SENSOR</code> format with a bayer pattern 21765given by <a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a> (m x n group of pixels with the same 21766color filter) to a remosaiced regular bayer pattern.<wbr/></p> 21767<p>This capability will only be present for devices with 21768<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 21769capability.<wbr/> When 21770<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 21771devices do not advertise this capability,<wbr/> 21772<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> images will already have a 21773regular bayer pattern.<wbr/></p> 21774<p>If a <code>RAW_<wbr/>SENSOR</code> stream is requested along with another non-RAW stream in a 21775<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a> (if multiple streams are supported 21776when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 21777<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>),<wbr/> 21778the <code>RAW_<wbr/>SENSOR</code> stream will have a regular bayer pattern.<wbr/></p> 21779<p>This capability requires the camera device to support the following :</p> 21780<ul> 21781<li>The <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a> mentioned below 21782 refers to the one,<wbr/> described by 21783 <code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/></li> 21784<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> 21785<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> is supported as an output/<wbr/>input 21786 format,<wbr/> that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> is included in the 21787 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> 21788<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 21789 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> 21790<li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">getInputSizes(ImageFormat.<wbr/>RAW_<wbr/>SENSOR)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">getOutputSizes(ImageFormat.<wbr/>RAW_<wbr/>SENSOR)</a></li> 21791<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> does not cause a frame rate 21792 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 21793<li>No CaptureRequest controls will be applicable when a request has an input target 21794 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> format.<wbr/></li> 21795</ul></span> 21796 </li> 21797 <li> 21798 <span class="entry_type_enum_name">DYNAMIC_RANGE_TEN_BIT (v3.8)</span> 21799 <span class="entry_type_enum_optional">[optional]</span> 21800 <span class="entry_type_enum_hidden">[java_public]</span> 21801 <span class="entry_type_enum_notes"><p>The device supports one or more 10-bit camera outputs according to the dynamic range 21802profiles specified in 21803<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#getSupportedProfiles">DynamicRangeProfiles#getSupportedProfiles</a>.<wbr/> 21804They can be configured as part of the capture session initialization via 21805<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setDynamicRangeProfile">OutputConfiguration#setDynamicRangeProfile</a>.<wbr/> 21806Cameras that enable this capability must also support the following:</p> 21807<ul> 21808<li>Profile <a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#HLG10">DynamicRangeProfiles#HLG10</a></li> 21809<li>All mandatory stream combinations for this specific capability as per 21810 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#10-bit-output-additional-guaranteed-configurations">documentation</a></li> 21811<li>In case the device is not able to capture some combination of supported 21812 standard 8-bit and/<wbr/>or 10-bit dynamic range profiles within the same capture request,<wbr/> 21813 then those constraints must be listed in 21814 <a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#getProfileCaptureRequestConstraints">DynamicRangeProfiles#getProfileCaptureRequestConstraints</a></li> 21815<li>Recommended dynamic range profile listed in 21816 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE">Camera<wbr/>Characteristics#REQUEST_<wbr/>RECOMMENDED_<wbr/>TEN_<wbr/>BIT_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILE</a>.<wbr/></li> 21817</ul></span> 21818 </li> 21819 <li> 21820 <span class="entry_type_enum_name">STREAM_USE_CASE (v3.8)</span> 21821 <span class="entry_type_enum_optional">[optional]</span> 21822 <span class="entry_type_enum_notes"><p>The camera device supports selecting a per-stream use case via 21823<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setStreamUseCase">OutputConfiguration#setStreamUseCase</a> 21824so that the device can optimize camera pipeline parameters such as tuning,<wbr/> sensor 21825mode,<wbr/> or ISP settings for a specific user scenario.<wbr/> 21826Some sample usages of this capability are:</p> 21827<ul> 21828<li>Distinguish high quality YUV captures from a regular YUV stream where 21829 the image quality may not be as good as the JPEG stream,<wbr/> or</li> 21830<li>Use one stream to serve multiple purposes: viewfinder,<wbr/> video recording and 21831 still capture.<wbr/> This is common with applications that wish to apply edits equally 21832 to preview,<wbr/> saved images,<wbr/> and saved videos.<wbr/></li> 21833</ul> 21834<p>This capability requires the camera device to support the following 21835stream use cases:</p> 21836<ul> 21837<li>DEFAULT for backward compatibility where the application doesn't set 21838 a stream use case</li> 21839<li>PREVIEW for live viewfinder and in-app image analysis</li> 21840<li>STILL_<wbr/>CAPTURE for still photo capture</li> 21841<li>VIDEO_<wbr/>RECORD for recording video clips</li> 21842<li>PREVIEW_<wbr/>VIDEO_<wbr/>STILL for one single stream used for viewfinder,<wbr/> video 21843 recording,<wbr/> and still capture.<wbr/></li> 21844<li>VIDEO_<wbr/>CALL for long running video calls</li> 21845</ul> 21846<p><a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#SCALER_AVAILABLE_STREAM_USE_CASES">Camera<wbr/>Characteristics#SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>USE_<wbr/>CASES</a> 21847lists all of the supported stream use cases.<wbr/></p> 21848<p>Refer to the 21849<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#stream-use-case-capability-additional-guaranteed-configurations">guideline</a> 21850for the mandatory stream combinations involving stream use cases,<wbr/> which can also be 21851queried via <a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">MandatoryStreamCombination</a>.<wbr/></p></span> 21852 </li> 21853 <li> 21854 <span class="entry_type_enum_name">COLOR_SPACE_PROFILES (v3.9)</span> 21855 <span class="entry_type_enum_optional">[optional]</span> 21856 <span class="entry_type_enum_hidden">[java_public]</span> 21857 <span class="entry_type_enum_notes"><p>The device supports querying the possible combinations of color spaces,<wbr/> image 21858formats,<wbr/> and dynamic range profiles supported by the camera and requesting a 21859particular color space for a session via 21860<a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setColorSpace">SessionConfiguration#setColorSpace</a>.<wbr/></p> 21861<p>Cameras that enable this capability may or may not also implement dynamic range 21862profiles.<wbr/> If they don't,<wbr/> 21863<a href="https://developer.android.com/reference/android/hardware/camera2/params/ColorSpaceProfiles.html#getSupportedDynamicRangeProfiles">ColorSpaceProfiles#getSupportedDynamicRangeProfiles</a> 21864will return only 21865<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#STANDARD">DynamicRangeProfiles#STANDARD</a> and 21866<a href="https://developer.android.com/reference/android/hardware/camera2/params/ColorSpaceProfiles.html#getSupportedColorSpacesForDynamicRange">ColorSpaceProfiles#getSupportedColorSpacesForDynamicRange</a> 21867will assume support of the 21868<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#STANDARD">DynamicRangeProfiles#STANDARD</a> 21869profile in all combinations of color spaces and image formats.<wbr/></p></span> 21870 </li> 21871 </ul> 21872 21873 </td> <!-- entry_type --> 21874 21875 <td class="entry_description"> 21876 <p>List of capabilities that this camera device 21877advertises as fully supporting.<wbr/></p> 21878 </td> 21879 21880 <td class="entry_units"> 21881 </td> 21882 21883 <td class="entry_range"> 21884 </td> 21885 21886 <td class="entry_hal_version"> 21887 <p>3.<wbr/>2</p> 21888 </td> 21889 21890 <td class="entry_tags"> 21891 </td> 21892 21893 </tr> 21894 <tr class="entries_header"> 21895 <th class="th_details" colspan="6">Details</th> 21896 </tr> 21897 <tr class="entry_cont"> 21898 <td class="entry_details" colspan="6"> 21899 <p>A capability is a contract that the camera device makes in order 21900to be able to satisfy one or more use cases.<wbr/></p> 21901<p>Listing a capability guarantees that the whole set of features 21902required to support a common use will all be available.<wbr/></p> 21903<p>Using a subset of the functionality provided by an unsupported 21904capability may be possible on a specific camera device implementation; 21905to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 21906<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 21907<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 21908<p>The following capabilities are guaranteed to be available on 21909<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 21910<ul> 21911<li>MANUAL_<wbr/>SENSOR</li> 21912<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> 21913</ul> 21914<p>Other capabilities may be available on either FULL or LIMITED 21915devices,<wbr/> but the application should query this key to be sure.<wbr/></p> 21916 </td> 21917 </tr> 21918 21919 <tr class="entries_header"> 21920 <th class="th_details" colspan="6">HAL Implementation Details</th> 21921 </tr> 21922 <tr class="entry_cont"> 21923 <td class="entry_details" colspan="6"> 21924 <p>Additional constraint details per-capability will be available 21925in the Compatibility Test Suite.<wbr/></p> 21926<p>Minimum baseline requirements required for the 21927BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> 21928Instead refer to "BC" tags and the camera CTS tests in the 21929android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p> 21930<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 21931<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 21932request and the result in order to be considered to be 21933capability-compliant.<wbr/></p> 21934<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 21935then exposure time must be configurable via the request <em>and</em> 21936the actual exposure applied must be available via 21937the result.<wbr/></p> 21938<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the 21939<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p> 21940<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see 21941hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p> 21942<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the 21943CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p> 21944<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the 21945YUV_<wbr/>REPROCESSING capability must support the 21946CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p> 21947<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys 21948<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> 21949<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> 21950<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in 21951addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT 21952enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available 21953if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace 21954DEPTH).<wbr/></p> 21955<p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the 21956same way as a physical camera device based on its hardware level and capabilities.<wbr/> 21957It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p> 21958<ul> 21959<li> 21960<p>In camera1 API,<wbr/> to maintain application compatibility,<wbr/> for each camera facing,<wbr/> there 21961may 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/>} 21962combinations,<wbr/> where logical_<wbr/>camera_<wbr/>id is composed of physical_<wbr/>camera_<wbr/>N_<wbr/>id,<wbr/> camera 21963framework will only advertise one camera id 21964(within the combinations for the particular facing) that is frontmost in the HAL 21965published camera id list.<wbr/> 21966For example,<wbr/> if HAL advertises 6 back facing camera IDs (ID0 to ID5),<wbr/> among which ID4 21967and ID5 are logical cameras backed by ID0+ID1 and ID2+ID3 respectively.<wbr/> In this case,<wbr/> 21968only ID0 will be available for camera1 API to use.<wbr/></p> 21969</li> 21970<li> 21971<p>Camera HAL is strongly recommended to advertise camera devices with best feature,<wbr/> 21972power,<wbr/> performance,<wbr/> and latency tradeoffs at the front of the camera id list.<wbr/></p> 21973</li> 21974<li> 21975<p>Camera HAL may switch between physical cameras depending on focalLength,<wbr/> cropRegion,<wbr/> or 21976zoomRatio.<wbr/> If physical cameras have different sizes,<wbr/> HAL must maintain a single logical 21977camera active<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 21978mapping between logical camera and underlying physical cameras for all related metadata 21979tags,<wbr/> such as crop region,<wbr/> zoomRatio,<wbr/> 3A regions,<wbr/> and intrinsicCalibration.<wbr/></p> 21980</li> 21981<li> 21982<p>Starting from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> camera HAL must support 21983isStreamCombinationSupported for application to query whether a particular logical and 21984physical streams combination are supported.<wbr/></p> 21985</li> 21986</ul> 21987<p>A MONOCHROME camera device must also advertise BACKWARD_<wbr/>COMPATIBLE capability,<wbr/> and must 21988not advertise MANUAL_<wbr/>POST_<wbr/>PROCESSING capability.<wbr/></p> 21989<ul> 21990<li> 21991<p>To maintain backward compatibility,<wbr/> the camera device must support all 21992BACKWARD_<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 21993AUTO,<wbr/> and <a href="#dynamic_android.control.awbState">android.<wbr/>control.<wbr/>awb<wbr/>State</a> are either CONVERGED or LOCKED depending on 21994<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>.<wbr/></p> 21995</li> 21996<li> 21997<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 21998<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> must not be in available request and result keys.<wbr/> 21999As a result,<wbr/> the camera device cannot be a FULL device.<wbr/> However,<wbr/> the HAL can 22000still advertise other individual capabilities.<wbr/></p> 22001</li> 22002<li> 22003<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/> 22004CurveGreen and curveBlue are no-ops.<wbr/></p> 22005</li> 22006</ul> 22007<p>In Android API level 28,<wbr/> a MONOCHROME camera device must not have RAW capability.<wbr/> From 22008API level 29,<wbr/> a camera is allowed to have both MONOCHROME and RAW capabilities.<wbr/></p> 22009<p>To support the legacy API to ICameraDevice 3.<wbr/>x shim layer,<wbr/> devices advertising 22010OFFLINE_<wbr/>PROCESSING capability must also support configuring an input stream of the same 22011size as the picture size if:</p> 22012<ul> 22013<li>The device supports PRIVATE_<wbr/>REPROCESSING capability</li> 22014<li>The device's maximal JPEG resolution can reach 30 FPS min frame duration</li> 22015<li>The device does not support HAL based ZSL (<a href="#controls_android.control.enableZsl">android.<wbr/>control.<wbr/>enable<wbr/>Zsl</a>)</li> 22016</ul> 22017<p>For devices which support SYSTEM_<wbr/>CAMERA and LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capabilities:</p> 22018<p>Hidden physical camera ids[1] must not be be shared[2] between public camera devices 22019and camera devices advertising SYSTEM_<wbr/>CAMERA capability.<wbr/></p> 22020<p>[1] - Camera device ids which are advertised in the 22021 ANDROID_<wbr/>LOGICAL_<wbr/>MULTI_<wbr/>CAMERA_<wbr/>PHYSICAL_<wbr/>IDS list,<wbr/> and not available through 22022 ICamera<wbr/>Provider.<wbr/>get<wbr/>Camera<wbr/>Id<wbr/>List().<wbr/></p> 22023<p>[2] - The ANDROID_<wbr/>LOGICAL_<wbr/>MULTI_<wbr/>CAMERA_<wbr/>PHYSICAL_<wbr/>IDS lists,<wbr/> must not have common 22024 camera ids.<wbr/></p> 22025 </td> 22026 </tr> 22027 22028 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22029 <!-- end of entry --> 22030 22031 22032 <tr class="entry" id="static_android.request.availableRequestKeys"> 22033 <td class="entry_name 22034 " rowspan="5"> 22035 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 22036 </td> 22037 <td class="entry_type"> 22038 <span class="entry_type_name">int32</span> 22039 <span class="entry_type_container">x</span> 22040 22041 <span class="entry_type_array"> 22042 n 22043 </span> 22044 <span class="entry_type_visibility"> [ndk_public]</span> 22045 22046 22047 <span class="entry_type_hwlevel">[legacy] </span> 22048 22049 22050 22051 22052 </td> <!-- entry_type --> 22053 22054 <td class="entry_description"> 22055 <p>A list of all keys that the camera device has available 22056to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p> 22057 </td> 22058 22059 <td class="entry_units"> 22060 </td> 22061 22062 <td class="entry_range"> 22063 </td> 22064 22065 <td class="entry_hal_version"> 22066 <p>3.<wbr/>2</p> 22067 </td> 22068 22069 <td class="entry_tags"> 22070 </td> 22071 22072 </tr> 22073 <tr class="entries_header"> 22074 <th class="th_details" colspan="6">Details</th> 22075 </tr> 22076 <tr class="entry_cont"> 22077 <td class="entry_details" colspan="6"> 22078 <p>Attempting to set a key into a CaptureRequest that is not 22079listed here will result in an invalid request and will be rejected 22080by the camera device.<wbr/></p> 22081<p>This field can be used to query the feature set of a camera device 22082at a more granular level than capabilities.<wbr/> This is especially 22083important for optional keys that are not listed under any capability 22084in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 22085 </td> 22086 </tr> 22087 22088 <tr class="entries_header"> 22089 <th class="th_details" colspan="6">HAL Implementation Details</th> 22090 </tr> 22091 <tr class="entry_cont"> 22092 <td class="entry_details" colspan="6"> 22093 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 22094use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p> 22095<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 22096vendor extensions API and not against this field.<wbr/></p> 22097<p>The HAL must not consume any request tags that are not listed either 22098here or in the vendor tag list.<wbr/></p> 22099<p>The public camera2 API will always make the vendor tags visible 22100via 22101<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 22102 </td> 22103 </tr> 22104 22105 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22106 <!-- end of entry --> 22107 22108 22109 <tr class="entry" id="static_android.request.availableResultKeys"> 22110 <td class="entry_name 22111 " rowspan="5"> 22112 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 22113 </td> 22114 <td class="entry_type"> 22115 <span class="entry_type_name">int32</span> 22116 <span class="entry_type_container">x</span> 22117 22118 <span class="entry_type_array"> 22119 n 22120 </span> 22121 <span class="entry_type_visibility"> [ndk_public]</span> 22122 22123 22124 <span class="entry_type_hwlevel">[legacy] </span> 22125 22126 22127 22128 22129 </td> <!-- entry_type --> 22130 22131 <td class="entry_description"> 22132 <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> 22133 </td> 22134 22135 <td class="entry_units"> 22136 </td> 22137 22138 <td class="entry_range"> 22139 </td> 22140 22141 <td class="entry_hal_version"> 22142 <p>3.<wbr/>2</p> 22143 </td> 22144 22145 <td class="entry_tags"> 22146 </td> 22147 22148 </tr> 22149 <tr class="entries_header"> 22150 <th class="th_details" colspan="6">Details</th> 22151 </tr> 22152 <tr class="entry_cont"> 22153 <td class="entry_details" colspan="6"> 22154 <p>Attempting to get a key from a CaptureResult that is not 22155listed here will always return a <code>null</code> value.<wbr/> Getting a key from 22156a CaptureResult that is listed here will generally never return a <code>null</code> 22157value.<wbr/></p> 22158<p>The following keys may return <code>null</code> unless they are enabled:</p> 22159<ul> 22160<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> 22161</ul> 22162<p>(Those sometimes-null keys will nevertheless be listed here 22163if they are available.<wbr/>)</p> 22164<p>This field can be used to query the feature set of a camera device 22165at a more granular level than capabilities.<wbr/> This is especially 22166important for optional keys that are not listed under any capability 22167in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 22168 </td> 22169 </tr> 22170 22171 <tr class="entries_header"> 22172 <th class="th_details" colspan="6">HAL Implementation Details</th> 22173 </tr> 22174 <tr class="entry_cont"> 22175 <td class="entry_details" colspan="6"> 22176 <p>Tags listed here must always have an entry in the result metadata,<wbr/> 22177even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 22178matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 22179<p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 22180use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p> 22181<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 22182vendor extensions API and not against this field.<wbr/></p> 22183<p>The HAL must not produce any result tags that are not listed either 22184here or in the vendor tag list.<wbr/></p> 22185<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> 22186 </td> 22187 </tr> 22188 22189 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22190 <!-- end of entry --> 22191 22192 22193 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 22194 <td class="entry_name 22195 " rowspan="5"> 22196 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 22197 </td> 22198 <td class="entry_type"> 22199 <span class="entry_type_name">int32</span> 22200 <span class="entry_type_container">x</span> 22201 22202 <span class="entry_type_array"> 22203 n 22204 </span> 22205 <span class="entry_type_visibility"> [ndk_public]</span> 22206 22207 22208 <span class="entry_type_hwlevel">[legacy] </span> 22209 22210 22211 22212 22213 </td> <!-- entry_type --> 22214 22215 <td class="entry_description"> 22216 <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> 22217 </td> 22218 22219 <td class="entry_units"> 22220 </td> 22221 22222 <td class="entry_range"> 22223 </td> 22224 22225 <td class="entry_hal_version"> 22226 <p>3.<wbr/>2</p> 22227 </td> 22228 22229 <td class="entry_tags"> 22230 </td> 22231 22232 </tr> 22233 <tr class="entries_header"> 22234 <th class="th_details" colspan="6">Details</th> 22235 </tr> 22236 <tr class="entry_cont"> 22237 <td class="entry_details" colspan="6"> 22238 <p>This entry follows the same rules as 22239<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 22240CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 22241details.<wbr/></p> 22242 </td> 22243 </tr> 22244 22245 <tr class="entries_header"> 22246 <th class="th_details" colspan="6">HAL Implementation Details</th> 22247 </tr> 22248 <tr class="entry_cont"> 22249 <td class="entry_details" colspan="6"> 22250 <p>Keys listed here must always have an entry in the static info metadata,<wbr/> 22251even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 22252matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 22253<p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use 22254the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p> 22255<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 22256vendor extensions API and not against this field.<wbr/></p> 22257<p>The HAL must not have any tags in its static info that are not listed 22258either here or in the vendor tag list.<wbr/></p> 22259<p>The public camera2 API will always make the vendor tags visible 22260via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p> 22261 </td> 22262 </tr> 22263 22264 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22265 <!-- end of entry --> 22266 22267 22268 <tr class="entry" id="static_android.request.availableSessionKeys"> 22269 <td class="entry_name 22270 " rowspan="5"> 22271 android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys 22272 </td> 22273 <td class="entry_type"> 22274 <span class="entry_type_name">int32</span> 22275 <span class="entry_type_container">x</span> 22276 22277 <span class="entry_type_array"> 22278 n 22279 </span> 22280 <span class="entry_type_visibility"> [ndk_public]</span> 22281 22282 22283 <span class="entry_type_hwlevel">[legacy] </span> 22284 22285 22286 22287 22288 </td> <!-- entry_type --> 22289 22290 <td class="entry_description"> 22291 <p>A subset of the available request keys that the camera device 22292can pass as part of the capture session initialization.<wbr/></p> 22293 </td> 22294 22295 <td class="entry_units"> 22296 </td> 22297 22298 <td class="entry_range"> 22299 </td> 22300 22301 <td class="entry_hal_version"> 22302 <p>3.<wbr/>3</p> 22303 </td> 22304 22305 <td class="entry_tags"> 22306 </td> 22307 22308 </tr> 22309 <tr class="entries_header"> 22310 <th class="th_details" colspan="6">Details</th> 22311 </tr> 22312 <tr class="entry_cont"> 22313 <td class="entry_details" colspan="6"> 22314 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which 22315contains a list of keys that are difficult to apply per-frame and 22316can result in unexpected delays when modified during the capture session 22317lifetime.<wbr/> Typical examples include parameters that require a 22318time-consuming hardware re-configuration or internal camera pipeline 22319change.<wbr/> For performance reasons we advise clients to pass their initial 22320values as part of 22321<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/> 22322Once the camera capture session is enabled it is also recommended to avoid 22323changing them from their initial values set in 22324<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/> 22325Control over session parameters can still be exerted in capture requests 22326but clients should be aware and expect delays during their application.<wbr/> 22327An example usage scenario could look like this:</p> 22328<ul> 22329<li>The camera client starts by querying the session parameter key list via 22330 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li> 22331<li>Before triggering the capture session create sequence,<wbr/> a capture request 22332 must be built via 22333 <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a> 22334 using an appropriate template matching the particular use case.<wbr/></li> 22335<li>The client should go over the list of session parameters and check 22336 whether some of the keys listed matches with the parameters that 22337 they intend to modify as part of the first capture request.<wbr/></li> 22338<li>If there is no such match,<wbr/> the capture request can be passed 22339 unmodified to 22340 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li> 22341<li>If matches do exist,<wbr/> the client should update the respective values 22342 and pass the request to 22343 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li> 22344<li>After the capture session initialization completes the session parameter 22345 key list can continue to serve as reference when posting or updating 22346 further requests.<wbr/> As mentioned above further changes to session 22347 parameters should ideally be avoided,<wbr/> if updates are necessary 22348 however clients could expect a delay/<wbr/>glitch during the 22349 parameter switch.<wbr/></li> 22350</ul> 22351 </td> 22352 </tr> 22353 22354 <tr class="entries_header"> 22355 <th class="th_details" colspan="6">HAL Implementation Details</th> 22356 </tr> 22357 <tr class="entry_cont"> 22358 <td class="entry_details" colspan="6"> 22359 <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 22360speed mode is enabled,<wbr/> then only modifications of the maximum framerate value will be 22361monitored by the framework and can trigger camera re-configuration.<wbr/> For more information 22362about framerate ranges during constrained high speed sessions see 22363<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 22364Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 22365use the extensions C api (refer to 22366android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p> 22367<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 22368vendor extensions API and not against this field.<wbr/></p> 22369<p>The HAL must not consume any request tags in the session parameters that 22370are not listed either here or in the vendor tag list.<wbr/></p> 22371<p>The public camera2 API will always make the vendor tags visible 22372via 22373<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p> 22374 </td> 22375 </tr> 22376 22377 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22378 <!-- end of entry --> 22379 22380 22381 <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys"> 22382 <td class="entry_name 22383 " rowspan="5"> 22384 android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys 22385 </td> 22386 <td class="entry_type"> 22387 <span class="entry_type_name">int32</span> 22388 <span class="entry_type_container">x</span> 22389 22390 <span class="entry_type_array"> 22391 n 22392 </span> 22393 <span class="entry_type_visibility"> [ndk_public]</span> 22394 22395 22396 <span class="entry_type_hwlevel">[limited] </span> 22397 22398 22399 22400 22401 </td> <!-- entry_type --> 22402 22403 <td class="entry_description"> 22404 <p>A subset of the available request keys that can be overridden for 22405physical devices backing a logical multi-camera.<wbr/></p> 22406 </td> 22407 22408 <td class="entry_units"> 22409 </td> 22410 22411 <td class="entry_range"> 22412 </td> 22413 22414 <td class="entry_hal_version"> 22415 <p>3.<wbr/>3</p> 22416 </td> 22417 22418 <td class="entry_tags"> 22419 </td> 22420 22421 </tr> 22422 <tr class="entries_header"> 22423 <th class="th_details" colspan="6">Details</th> 22424 </tr> 22425 <tr class="entry_cont"> 22426 <td class="entry_details" colspan="6"> 22427 <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 22428of keys that can be overridden using 22429<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/> 22430The respective value of such request key can be obtained by calling 22431<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> 22432Capture requests that contain individual physical device requests must be built via 22433<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p> 22434 </td> 22435 </tr> 22436 22437 <tr class="entries_header"> 22438 <th class="th_details" colspan="6">HAL Implementation Details</th> 22439 </tr> 22440 <tr class="entry_cont"> 22441 <td class="entry_details" colspan="6"> 22442 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 22443use the extensions C api (refer to 22444android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more 22445details).<wbr/></p> 22446<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 22447vendor extensions API and not against this field.<wbr/></p> 22448<p>The HAL must not consume any request tags in the session parameters that 22449are not listed either here or in the vendor tag list.<wbr/></p> 22450<p>There should be no overlap between this set of keys and the available session keys 22451<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along 22452with any other controls that can have impact on the dual-camera sync.<wbr/></p> 22453<p>The public camera2 API will always make the vendor tags visible 22454via 22455<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p> 22456 </td> 22457 </tr> 22458 22459 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22460 <!-- end of entry --> 22461 22462 22463 <tr class="entry" id="static_android.request.characteristicKeysNeedingPermission"> 22464 <td class="entry_name 22465 " rowspan="5"> 22466 android.<wbr/>request.<wbr/>characteristic<wbr/>Keys<wbr/>Needing<wbr/>Permission 22467 </td> 22468 <td class="entry_type"> 22469 <span class="entry_type_name">int32</span> 22470 <span class="entry_type_container">x</span> 22471 22472 <span class="entry_type_array"> 22473 n 22474 </span> 22475 <span class="entry_type_visibility"> [hidden]</span> 22476 22477 22478 <span class="entry_type_hwlevel">[legacy] </span> 22479 22480 22481 22482 22483 </td> <!-- entry_type --> 22484 22485 <td class="entry_description"> 22486 <p>A list of camera characteristics keys that are only available 22487in case the camera client has camera permission.<wbr/></p> 22488 </td> 22489 22490 <td class="entry_units"> 22491 </td> 22492 22493 <td class="entry_range"> 22494 </td> 22495 22496 <td class="entry_hal_version"> 22497 <p>3.<wbr/>4</p> 22498 </td> 22499 22500 <td class="entry_tags"> 22501 </td> 22502 22503 </tr> 22504 <tr class="entries_header"> 22505 <th class="th_details" colspan="6">Details</th> 22506 </tr> 22507 <tr class="entry_cont"> 22508 <td class="entry_details" colspan="6"> 22509 <p>The entry contains a subset of 22510<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a> that require camera clients 22511to acquire the <a href="https://developer.android.com/reference/android/Manifest/permission.html#CAMERA">permission#CAMERA</a> permission before calling 22512<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/> If the 22513permission is not held by the camera client,<wbr/> then the values of the respective properties 22514will not be present in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 22515 </td> 22516 </tr> 22517 22518 <tr class="entries_header"> 22519 <th class="th_details" colspan="6">HAL Implementation Details</th> 22520 </tr> 22521 <tr class="entry_cont"> 22522 <td class="entry_details" colspan="6"> 22523 <p>Do not set this property directly,<wbr/> camera service will overwrite any previous values.<wbr/></p> 22524 </td> 22525 </tr> 22526 22527 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22528 <!-- end of entry --> 22529 22530 22531 <tr class="entry" id="static_android.request.availableDynamicRangeProfiles"> 22532 <td class="entry_name 22533 " rowspan="3"> 22534 android.<wbr/>request.<wbr/>available<wbr/>Dynamic<wbr/>Range<wbr/>Profiles 22535 </td> 22536 <td class="entry_type"> 22537 <span class="entry_type_name">int32</span> 22538 22539 <span class="entry_type_visibility"> [java_public as dynamicRangeProfiles]</span> 22540 22541 <span class="entry_type_synthetic">[synthetic] </span> 22542 22543 22544 22545 22546 22547 </td> <!-- entry_type --> 22548 22549 <td class="entry_description"> 22550 <p>Devices supporting the 10-bit output capability 22551<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a> 22552must list their supported dynamic range profiles along with capture request 22553constraints for specific profile combinations.<wbr/></p> 22554 </td> 22555 22556 <td class="entry_units"> 22557 </td> 22558 22559 <td class="entry_range"> 22560 </td> 22561 22562 <td class="entry_hal_version"> 22563 <p>3.<wbr/>2</p> 22564 </td> 22565 22566 <td class="entry_tags"> 22567 </td> 22568 22569 </tr> 22570 <tr class="entries_header"> 22571 <th class="th_details" colspan="6">Details</th> 22572 </tr> 22573 <tr class="entry_cont"> 22574 <td class="entry_details" colspan="6"> 22575 <p>Camera clients can retrieve the list of supported 10-bit dynamic range profiles by calling 22576<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#getSupportedProfiles">DynamicRangeProfiles#getSupportedProfiles</a>.<wbr/> 22577Any of them can be configured by setting OutputConfiguration dynamic range profile in 22578<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setDynamicRangeProfile">OutputConfiguration#setDynamicRangeProfile</a>.<wbr/> 22579Clients can also check if there are any constraints that limit the combination 22580of supported profiles that can be referenced within a single capture request by calling 22581<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#getProfileCaptureRequestConstraints">DynamicRangeProfiles#getProfileCaptureRequestConstraints</a>.<wbr/></p> 22582 </td> 22583 </tr> 22584 22585 22586 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22587 <!-- end of entry --> 22588 22589 22590 <tr class="entry" id="static_android.request.availableDynamicRangeProfilesMap"> 22591 <td class="entry_name 22592 " rowspan="5"> 22593 android.<wbr/>request.<wbr/>available<wbr/>Dynamic<wbr/>Range<wbr/>Profiles<wbr/>Map 22594 </td> 22595 <td class="entry_type"> 22596 <span class="entry_type_name entry_type_name_enum">int64</span> 22597 <span class="entry_type_container">x</span> 22598 22599 <span class="entry_type_array"> 22600 n x 3 22601 </span> 22602 <span class="entry_type_visibility"> [ndk_public]</span> 22603 22604 22605 22606 22607 22608 <ul class="entry_type_enum"> 22609 <li> 22610 <span class="entry_type_enum_name">STANDARD (v3.8)</span> 22611 <span class="entry_type_enum_value">0x1</span> 22612 <span class="entry_type_enum_notes"><p>8-bit SDR profile which is the default for all non 10-bit output capable devices.<wbr/></p></span> 22613 </li> 22614 <li> 22615 <span class="entry_type_enum_name">HLG10 (v3.8)</span> 22616 <span class="entry_type_enum_value">0x2</span> 22617 <span class="entry_type_enum_notes"><p>10-bit pixel samples encoded using the Hybrid log-gamma transfer function.<wbr/></p></span> 22618 </li> 22619 <li> 22620 <span class="entry_type_enum_name">HDR10 (v3.8)</span> 22621 <span class="entry_type_enum_value">0x4</span> 22622 <span class="entry_type_enum_notes"><p>10-bit pixel samples encoded using the SMPTE ST 2084 transfer function.<wbr/> 22623This profile utilizes internal static metadata to increase the quality 22624of the capture.<wbr/></p></span> 22625 </li> 22626 <li> 22627 <span class="entry_type_enum_name">HDR10_PLUS (v3.8)</span> 22628 <span class="entry_type_enum_value">0x8</span> 22629 <span class="entry_type_enum_notes"><p>10-bit pixel samples encoded using the SMPTE ST 2084 transfer function.<wbr/> 22630In contrast to HDR10,<wbr/> this profile uses internal per-frame metadata 22631to further enhance the quality of the capture.<wbr/></p></span> 22632 </li> 22633 <li> 22634 <span class="entry_type_enum_name">DOLBY_VISION_10B_HDR_REF (v3.8)</span> 22635 <span class="entry_type_enum_value">0x10</span> 22636 <span class="entry_type_enum_notes"><p>This is a camera mode for Dolby Vision capture optimized for a more scene 22637accurate capture.<wbr/> This would typically differ from what a specific device 22638might want to tune for a consumer optimized Dolby Vision general capture.<wbr/></p></span> 22639 </li> 22640 <li> 22641 <span class="entry_type_enum_name">DOLBY_VISION_10B_HDR_REF_PO (v3.8)</span> 22642 <span class="entry_type_enum_value">0x20</span> 22643 <span class="entry_type_enum_notes"><p>This is the power optimized mode for 10-bit Dolby Vision HDR Reference Mode.<wbr/></p></span> 22644 </li> 22645 <li> 22646 <span class="entry_type_enum_name">DOLBY_VISION_10B_HDR_OEM (v3.8)</span> 22647 <span class="entry_type_enum_value">0x40</span> 22648 <span class="entry_type_enum_notes"><p>This is the camera mode for the default Dolby Vision capture mode for the 22649specific device.<wbr/> This would be tuned by each specific device for consumer 22650pleasing results that resonate with their particular audience.<wbr/> We expect 22651that each specific device would have a different look for their default 22652Dolby Vision capture.<wbr/></p></span> 22653 </li> 22654 <li> 22655 <span class="entry_type_enum_name">DOLBY_VISION_10B_HDR_OEM_PO (v3.8)</span> 22656 <span class="entry_type_enum_value">0x80</span> 22657 <span class="entry_type_enum_notes"><p>This is the power optimized mode for 10-bit Dolby Vision HDR device specific 22658capture Mode.<wbr/></p></span> 22659 </li> 22660 <li> 22661 <span class="entry_type_enum_name">DOLBY_VISION_8B_HDR_REF (v3.8)</span> 22662 <span class="entry_type_enum_value">0x100</span> 22663 <span class="entry_type_enum_notes"><p>This is the 8-bit version of the Dolby Vision reference capture mode optimized 22664for scene accuracy.<wbr/></p></span> 22665 </li> 22666 <li> 22667 <span class="entry_type_enum_name">DOLBY_VISION_8B_HDR_REF_PO (v3.8)</span> 22668 <span class="entry_type_enum_value">0x200</span> 22669 <span class="entry_type_enum_notes"><p>This is the power optimized mode for 8-bit Dolby Vision HDR Reference Mode.<wbr/></p></span> 22670 </li> 22671 <li> 22672 <span class="entry_type_enum_name">DOLBY_VISION_8B_HDR_OEM (v3.8)</span> 22673 <span class="entry_type_enum_value">0x400</span> 22674 <span class="entry_type_enum_notes"><p>This is the 8-bit version of device specific tuned and optimized Dolby Vision 22675capture mode.<wbr/></p></span> 22676 </li> 22677 <li> 22678 <span class="entry_type_enum_name">DOLBY_VISION_8B_HDR_OEM_PO (v3.8)</span> 22679 <span class="entry_type_enum_value">0x800</span> 22680 <span class="entry_type_enum_notes"><p>This is the power optimized mode for 8-bit Dolby Vision HDR device specific 22681capture Mode.<wbr/></p></span> 22682 </li> 22683 <li> 22684 <span class="entry_type_enum_name">MAX (v3.8)</span> 22685 <span class="entry_type_enum_value">0x1000</span> 22686 <span class="entry_type_enum_notes"></span> 22687 </li> 22688 </ul> 22689 22690 </td> <!-- entry_type --> 22691 22692 <td class="entry_description"> 22693 <p>A map of all available 10-bit dynamic range profiles along with their 22694capture request constraints.<wbr/></p> 22695 </td> 22696 22697 <td class="entry_units"> 22698 </td> 22699 22700 <td class="entry_range"> 22701 </td> 22702 22703 <td class="entry_hal_version"> 22704 <p>3.<wbr/>8</p> 22705 </td> 22706 22707 <td class="entry_tags"> 22708 </td> 22709 22710 </tr> 22711 <tr class="entries_header"> 22712 <th class="th_details" colspan="6">Details</th> 22713 </tr> 22714 <tr class="entry_cont"> 22715 <td class="entry_details" colspan="6"> 22716 <p>Devices supporting the 10-bit output capability 22717<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a> 22718must list their supported dynamic range profiles.<wbr/> In case the camera is not able to 22719support every possible profile combination within a single capture request,<wbr/> then the 22720constraints must be listed here as well.<wbr/></p> 22721 </td> 22722 </tr> 22723 22724 <tr class="entries_header"> 22725 <th class="th_details" colspan="6">HAL Implementation Details</th> 22726 </tr> 22727 <tr class="entry_cont"> 22728 <td class="entry_details" colspan="6"> 22729 <p>The array contains three entries per supported profile: 227301) The supported dynamic profile value.<wbr/> Do note that 22731ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>STANDARD is assumed to be always 22732present and must not be listed.<wbr/> 227332) A bitmap combination of all supported profiles that can be referenced at the same 22734time within a single capture request.<wbr/> Do note that a value of 0 means that there are 22735no constraints and all combinations are supported.<wbr/> 227363) A flag indicating the presence of an internal lookahead functionality that 22737can increase the streaming latency by more than 3 buffers.<wbr/> The value 0 will indicate 22738that latency doesn't exceed 3 buffers,<wbr/> everything different than 0 will indicate 22739latency that is beyond 3 buffers.<wbr/> In case the flag is set,<wbr/> then Camera clients will be 22740advised to avoid configuring this profile for camera latency sensitive outputs such as 22741preview.<wbr/> Do note,<wbr/> that such extra latency must not be present for the HLG10 profile.<wbr/></p> 22742<p>For example if we assume that a device exists that can only support HLG10,<wbr/> HDR10 and 22743HDR10_<wbr/>PLUS from the possible 10-bit profiles with the following capture constraints: 227441) HLG10 can be included in any capture request without constraints.<wbr/> 227452) HDR10 and HDR10_<wbr/>PLUS can only be referenced together and/<wbr/>or with HLG10 but not with 22746STANDARD.<wbr/> 22747In the same example,<wbr/> HLG10 and HDR10 will not have additional lookahead latency,<wbr/> and 22748HDR10+ will have latency that exceeds 3 buffers.<wbr/> 22749The resulting array should look like this: 22750[ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HLG10,<wbr/> 0,<wbr/> 0,<wbr/> 22751ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10,<wbr/> 22752(ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10 |<wbr/> 22753ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HLG10 |<wbr/> 22754 ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10_<wbr/>PLUS),<wbr/> 0,<wbr/> 22755ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10_<wbr/>PLUS,<wbr/> 22756(ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10_<wbr/>PLUS |<wbr/> 22757ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HLG10 |<wbr/> 22758 ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10),<wbr/> 1]</p> 22759<p>Camera providers must ensure that each processed buffer from a stream configured with the 22760HDR10 dynamic range profile includes SMPTE ST 2086 static metadata by calling 22761'android::hardware::graphics::mapper::V4_<wbr/>0::IMapper::set' before returning the buffer.<wbr/></p> 22762<p>Camera providers must ensure that each processed buffer from a stream configured 22763with HDR10_<wbr/>PLUS dynamic range profile includes SMPTE ST 2094-40 dynamic 22764metadata by calling 'android::hardware::graphics::mapper::V4_<wbr/>0::IMapper::set' before 22765returning the buffer.<wbr/></p> 22766<p>Camera providers must ensure that each processed buffer from a stream configured 22767with any of the 10-bit Dolby Vision dynamic range profiles includes SMPTE ST 2094-10 22768dynamic metadata by calling 'android::hardware::graphics::mapper::V4_<wbr/>0::IMapper::set' 22769before returning the buffer.<wbr/></p> 22770 </td> 22771 </tr> 22772 22773 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22774 <!-- end of entry --> 22775 22776 22777 <tr class="entry" id="static_android.request.recommendedTenBitDynamicRangeProfile"> 22778 <td class="entry_name 22779 " rowspan="3"> 22780 android.<wbr/>request.<wbr/>recommended<wbr/>Ten<wbr/>Bit<wbr/>Dynamic<wbr/>Range<wbr/>Profile 22781 </td> 22782 <td class="entry_type"> 22783 <span class="entry_type_name">int64</span> 22784 22785 <span class="entry_type_visibility"> [java_public]</span> 22786 22787 22788 22789 22790 22791 22792 </td> <!-- entry_type --> 22793 22794 <td class="entry_description"> 22795 <p>Recommended 10-bit dynamic range profile.<wbr/></p> 22796 </td> 22797 22798 <td class="entry_units"> 22799 </td> 22800 22801 <td class="entry_range"> 22802 </td> 22803 22804 <td class="entry_hal_version"> 22805 <p>3.<wbr/>8</p> 22806 </td> 22807 22808 <td class="entry_tags"> 22809 </td> 22810 22811 </tr> 22812 <tr class="entries_header"> 22813 <th class="th_details" colspan="6">Details</th> 22814 </tr> 22815 <tr class="entry_cont"> 22816 <td class="entry_details" colspan="6"> 22817 <p>Devices supporting the 10-bit output capability 22818<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a> 22819must list a 10-bit supported dynamic range profile that is expected to perform 22820optimally in terms of image quality,<wbr/> power and performance.<wbr/> 22821The value advertised can be used as a hint by camera clients when configuring the dynamic 22822range profile when calling 22823<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setDynamicRangeProfile">OutputConfiguration#setDynamicRangeProfile</a>.<wbr/></p> 22824 </td> 22825 </tr> 22826 22827 22828 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22829 <!-- end of entry --> 22830 22831 22832 <tr class="entry" id="static_android.request.availableColorSpaceProfiles"> 22833 <td class="entry_name 22834 " rowspan="3"> 22835 android.<wbr/>request.<wbr/>available<wbr/>Color<wbr/>Space<wbr/>Profiles 22836 </td> 22837 <td class="entry_type"> 22838 <span class="entry_type_name">int32</span> 22839 22840 <span class="entry_type_visibility"> [java_public as colorSpaceProfiles]</span> 22841 22842 <span class="entry_type_synthetic">[synthetic] </span> 22843 22844 22845 22846 22847 22848 </td> <!-- entry_type --> 22849 22850 <td class="entry_description"> 22851 <p>An interface for querying the color space profiles supported by a camera device.<wbr/></p> 22852 </td> 22853 22854 <td class="entry_units"> 22855 </td> 22856 22857 <td class="entry_range"> 22858 </td> 22859 22860 <td class="entry_hal_version"> 22861 <p>3.<wbr/>9</p> 22862 </td> 22863 22864 <td class="entry_tags"> 22865 </td> 22866 22867 </tr> 22868 <tr class="entries_header"> 22869 <th class="th_details" colspan="6">Details</th> 22870 </tr> 22871 <tr class="entry_cont"> 22872 <td class="entry_details" colspan="6"> 22873 <p>A color space profile is a combination of a color space,<wbr/> an image format,<wbr/> and a dynamic 22874range profile.<wbr/> Camera clients can retrieve the list of supported color spaces by calling 22875<a href="https://developer.android.com/reference/android/hardware/camera2/params/ColorSpaceProfiles.html#getSupportedColorSpaces">ColorSpaceProfiles#getSupportedColorSpaces</a> or 22876<a href="https://developer.android.com/reference/android/hardware/camera2/params/ColorSpaceProfiles.html#getSupportedColorSpacesForDynamicRange">ColorSpaceProfiles#getSupportedColorSpacesForDynamicRange</a>.<wbr/> 22877If a camera does not support the 22878<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a> 22879capability,<wbr/> the dynamic range profile will always be 22880<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#STANDARD">DynamicRangeProfiles#STANDARD</a>.<wbr/> Color space 22881capabilities are queried in combination with an <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html">ImageFormat</a>.<wbr/> 22882If a camera client wants to know the general color space capabilities of a camera device 22883regardless of image format,<wbr/> it can specify <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#UNKNOWN">ImageFormat#UNKNOWN</a>.<wbr/> 22884The color space for a session can be configured by setting the SessionConfiguration 22885color space via <a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setColorSpace">SessionConfiguration#setColorSpace</a>.<wbr/></p> 22886 </td> 22887 </tr> 22888 22889 22890 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22891 <!-- end of entry --> 22892 22893 22894 <tr class="entry" id="static_android.request.availableColorSpaceProfilesMap"> 22895 <td class="entry_name 22896 " rowspan="5"> 22897 android.<wbr/>request.<wbr/>available<wbr/>Color<wbr/>Space<wbr/>Profiles<wbr/>Map 22898 </td> 22899 <td class="entry_type"> 22900 <span class="entry_type_name entry_type_name_enum">int64</span> 22901 <span class="entry_type_container">x</span> 22902 22903 <span class="entry_type_array"> 22904 n x 3 22905 </span> 22906 <span class="entry_type_visibility"> [ndk_public]</span> 22907 22908 22909 22910 22911 22912 <ul class="entry_type_enum"> 22913 <li> 22914 <span class="entry_type_enum_name">UNSPECIFIED (v3.9)</span> 22915 <span class="entry_type_enum_value">-1</span> 22916 <span class="entry_type_enum_notes"><p>Default value,<wbr/> when not explicitly specified.<wbr/> The Camera device will choose the color 22917space to employ.<wbr/></p></span> 22918 </li> 22919 <li> 22920 <span class="entry_type_enum_name">SRGB (v3.9)</span> 22921 <span class="entry_type_enum_hidden">[system]</span> 22922 <span class="entry_type_enum_value">0</span> 22923 <span class="entry_type_enum_notes"><p>RGB color space sRGB standardized as IEC 61966-2.<wbr/>1:1999.<wbr/></p></span> 22924 </li> 22925 <li> 22926 <span class="entry_type_enum_name">DISPLAY_P3 (v3.9)</span> 22927 <span class="entry_type_enum_hidden">[system]</span> 22928 <span class="entry_type_enum_value">7</span> 22929 <span class="entry_type_enum_notes"><p>RGB color space Display P3 based on SMPTE RP 431-2-2007 and IEC 61966-2.<wbr/>1:1999.<wbr/></p></span> 22930 </li> 22931 <li> 22932 <span class="entry_type_enum_name">BT2020_HLG (v3.9)</span> 22933 <span class="entry_type_enum_hidden">[system]</span> 22934 <span class="entry_type_enum_value">16</span> 22935 <span class="entry_type_enum_notes"><p>RGB color space BT.<wbr/>2100 standardized as Hybrid Log Gamma encoding.<wbr/></p></span> 22936 </li> 22937 </ul> 22938 22939 </td> <!-- entry_type --> 22940 22941 <td class="entry_description"> 22942 <p>A list of all possible color space profiles supported by a camera device.<wbr/></p> 22943 </td> 22944 22945 <td class="entry_units"> 22946 </td> 22947 22948 <td class="entry_range"> 22949 </td> 22950 22951 <td class="entry_hal_version"> 22952 <p>3.<wbr/>9</p> 22953 </td> 22954 22955 <td class="entry_tags"> 22956 </td> 22957 22958 </tr> 22959 <tr class="entries_header"> 22960 <th class="th_details" colspan="6">Details</th> 22961 </tr> 22962 <tr class="entry_cont"> 22963 <td class="entry_details" colspan="6"> 22964 <p>A color space profile is a combination of a color space,<wbr/> an image format,<wbr/> and a dynamic range 22965profile.<wbr/> If a camera does not support the 22966<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a> 22967capability,<wbr/> the dynamic range profile will always be 22968<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#STANDARD">DynamicRangeProfiles#STANDARD</a>.<wbr/> Camera clients can 22969use <a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setColorSpace">SessionConfiguration#setColorSpace</a> to select 22970a color space.<wbr/></p> 22971 </td> 22972 </tr> 22973 22974 <tr class="entries_header"> 22975 <th class="th_details" colspan="6">HAL Implementation Details</th> 22976 </tr> 22977 <tr class="entry_cont"> 22978 <td class="entry_details" colspan="6"> 22979 <p>The array contains three entries per supported profile:</p> 22980<p>1) The supported color space.<wbr/> 229812) An image format which can be used with this color space.<wbr/> 229823) A bitmap of all compatible dynamic range profiles,<wbr/> if the device is HDR-capable.<wbr/></p> 22983<p>The possible values for #1 are the positive values of the 22984ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>COLOR_<wbr/>SPACE_<wbr/>PROFILES_<wbr/>MAP_<wbr/><em> enum,<wbr/> which is equivalent to 22985<a href="https://developer.android.com/reference/android/graphics/ColorSpace/Named.html">Named</a> and its ordinals.<wbr/> UNSPECIFIED should not be 22986used here.<wbr/> It should be noted that not all <a href="https://developer.android.com/reference/android/graphics/ColorSpace/Named.html">Named</a> 22987values are supported,<wbr/> only those in the 22988ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>COLOR_<wbr/>SPACE_<wbr/>PROFILES_<wbr/>MAP_<wbr/></em> enum.<wbr/></p> 22989<p>The possible values for #2 consist of the public-facing image/<wbr/>pixel formats,<wbr/> found at 22990<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html">ImageFormat</a> and <a href="https://developer.android.com/reference/android/graphics/PixelFormat.html">PixelFormat</a>.<wbr/> Each map 22991to a HAL pixel format except for <a href="https://developer.android.com/reference/android/graphics/ImageFormat/JPEG.html">JPEG</a>,<wbr/> 22992<a href="https://developer.android.com/reference/android/graphics/ImageFormat/HEIC.html">HEIC</a>,<wbr/> and 22993<a href="https://developer.android.com/reference/android/graphics/ImageFormat/DEPTH_JPEG.html">DEPTH_<wbr/>JPEG</a>.<wbr/> Depth formats besides DEPTH_<wbr/>JPEG are 22994not applicable and should not be specified.<wbr/> If there are no constraints on the type of 22995image format a color space is compatible with,<wbr/> this can be 22996<a href="https://developer.android.com/reference/android/graphics/ImageFormat/UNKNOWN.html">UNKNOWN</a>.<wbr/></p> 22997<p>If the device is not HDR-capable,<wbr/> #3 should always be 22998ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>STANDARD.<wbr/> Otherwise,<wbr/> #3 should be a 22999bitmap of the compatible ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>* values.<wbr/></p> 23000 </td> 23001 </tr> 23002 23003 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23004 <!-- end of entry --> 23005 23006 23007 23008 <!-- end of kind --> 23009 </tbody> 23010 <tr><td colspan="7" class="kind">dynamic</td></tr> 23011 23012 <thead class="entries_header"> 23013 <tr> 23014 <th class="th_name">Property Name</th> 23015 <th class="th_type">Type</th> 23016 <th class="th_description">Description</th> 23017 <th class="th_units">Units</th> 23018 <th class="th_range">Range</th> 23019 <th class="th_hal_version">Initial HIDL HAL version</th> 23020 <th class="th_tags">Tags</th> 23021 </tr> 23022 </thead> 23023 23024 <tbody> 23025 23026 23027 23028 23029 23030 23031 23032 23033 23034 23035 <tr class="entry" id="dynamic_android.request.frameCount"> 23036 <td class="entry_name 23037 entry_name_deprecated 23038 " rowspan="3"> 23039 android.<wbr/>request.<wbr/>frame<wbr/>Count 23040 </td> 23041 <td class="entry_type"> 23042 <span class="entry_type_name">int32</span> 23043 23044 <span class="entry_type_visibility"> [hidden]</span> 23045 23046 23047 23048 <span class="entry_type_deprecated">[deprecated] </span> 23049 23050 23051 23052 </td> <!-- entry_type --> 23053 23054 <td class="entry_description"> 23055 <p>A frame counter set by the framework.<wbr/> This value monotonically 23056increases with every new result (that is,<wbr/> each new result has a unique 23057frameCount value).<wbr/></p> 23058 </td> 23059 23060 <td class="entry_units"> 23061 count of frames 23062 </td> 23063 23064 <td class="entry_range"> 23065 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 23066 <p>> 0</p> 23067 </td> 23068 23069 <td class="entry_hal_version"> 23070 <p>3.<wbr/>2</p> 23071 </td> 23072 23073 <td class="entry_tags"> 23074 </td> 23075 23076 </tr> 23077 <tr class="entries_header"> 23078 <th class="th_details" colspan="6">Details</th> 23079 </tr> 23080 <tr class="entry_cont"> 23081 <td class="entry_details" colspan="6"> 23082 <p>Reset on release()</p> 23083 </td> 23084 </tr> 23085 23086 23087 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23088 <!-- end of entry --> 23089 23090 23091 <tr class="entry" id="dynamic_android.request.id"> 23092 <td class="entry_name 23093 " rowspan="1"> 23094 android.<wbr/>request.<wbr/>id 23095 </td> 23096 <td class="entry_type"> 23097 <span class="entry_type_name">int32</span> 23098 23099 <span class="entry_type_visibility"> [hidden]</span> 23100 23101 23102 23103 23104 23105 23106 </td> <!-- entry_type --> 23107 23108 <td class="entry_description"> 23109 <p>An application-specified ID for the current 23110request.<wbr/> Must be maintained unchanged in output 23111frame</p> 23112 </td> 23113 23114 <td class="entry_units"> 23115 arbitrary integer assigned by application 23116 </td> 23117 23118 <td class="entry_range"> 23119 <p>Any int</p> 23120 </td> 23121 23122 <td class="entry_hal_version"> 23123 <p>3.<wbr/>2</p> 23124 </td> 23125 23126 <td class="entry_tags"> 23127 <ul class="entry_tags"> 23128 <li><a href="#tag_V1">V1</a></li> 23129 </ul> 23130 </td> 23131 23132 </tr> 23133 23134 23135 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23136 <!-- end of entry --> 23137 23138 23139 <tr class="entry" id="dynamic_android.request.metadataMode"> 23140 <td class="entry_name 23141 " rowspan="1"> 23142 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 23143 </td> 23144 <td class="entry_type"> 23145 <span class="entry_type_name entry_type_name_enum">byte</span> 23146 23147 <span class="entry_type_visibility"> [system]</span> 23148 23149 23150 23151 23152 23153 <ul class="entry_type_enum"> 23154 <li> 23155 <span class="entry_type_enum_name">NONE (v3.2)</span> 23156 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 23157for application-bound buffer data.<wbr/> If no 23158application-bound streams exist,<wbr/> no frame should be 23159placed in the output frame queue.<wbr/> If such streams 23160exist,<wbr/> a frame should be placed on the output queue 23161with null metadata but with the necessary output buffer 23162information.<wbr/> Timestamp information should still be 23163included with any output stream buffers</p></span> 23164 </li> 23165 <li> 23166 <span class="entry_type_enum_name">FULL (v3.2)</span> 23167 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 23168only be produced if they are separately 23169enabled</p></span> 23170 </li> 23171 </ul> 23172 23173 </td> <!-- entry_type --> 23174 23175 <td class="entry_description"> 23176 <p>How much metadata to produce on 23177output</p> 23178 </td> 23179 23180 <td class="entry_units"> 23181 </td> 23182 23183 <td class="entry_range"> 23184 </td> 23185 23186 <td class="entry_hal_version"> 23187 <p>3.<wbr/>2</p> 23188 </td> 23189 23190 <td class="entry_tags"> 23191 <ul class="entry_tags"> 23192 <li><a href="#tag_FUTURE">FUTURE</a></li> 23193 </ul> 23194 </td> 23195 23196 </tr> 23197 23198 23199 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23200 <!-- end of entry --> 23201 23202 23203 <tr class="entry" id="dynamic_android.request.outputStreams"> 23204 <td class="entry_name 23205 entry_name_deprecated 23206 " rowspan="3"> 23207 android.<wbr/>request.<wbr/>output<wbr/>Streams 23208 </td> 23209 <td class="entry_type"> 23210 <span class="entry_type_name">int32</span> 23211 <span class="entry_type_container">x</span> 23212 23213 <span class="entry_type_array"> 23214 n 23215 </span> 23216 <span class="entry_type_visibility"> [system]</span> 23217 23218 23219 23220 <span class="entry_type_deprecated">[deprecated] </span> 23221 23222 23223 23224 </td> <!-- entry_type --> 23225 23226 <td class="entry_description"> 23227 <p>Lists which camera output streams image data 23228from this capture must be sent to</p> 23229 </td> 23230 23231 <td class="entry_units"> 23232 List of camera stream IDs 23233 </td> 23234 23235 <td class="entry_range"> 23236 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 23237 <p>List must only include streams that have been 23238created</p> 23239 </td> 23240 23241 <td class="entry_hal_version"> 23242 <p>3.<wbr/>2</p> 23243 </td> 23244 23245 <td class="entry_tags"> 23246 <ul class="entry_tags"> 23247 <li><a href="#tag_HAL2">HAL2</a></li> 23248 </ul> 23249 </td> 23250 23251 </tr> 23252 <tr class="entries_header"> 23253 <th class="th_details" colspan="6">Details</th> 23254 </tr> 23255 <tr class="entry_cont"> 23256 <td class="entry_details" colspan="6"> 23257 <p>If no output streams are listed,<wbr/> then the image 23258data should simply be discarded.<wbr/> The image data must 23259still be captured for metadata and statistics production,<wbr/> 23260and the lens and flash must operate as requested.<wbr/></p> 23261 </td> 23262 </tr> 23263 23264 23265 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23266 <!-- end of entry --> 23267 23268 23269 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 23270 <td class="entry_name 23271 " rowspan="5"> 23272 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 23273 </td> 23274 <td class="entry_type"> 23275 <span class="entry_type_name">byte</span> 23276 23277 <span class="entry_type_visibility"> [public]</span> 23278 23279 23280 <span class="entry_type_hwlevel">[legacy] </span> 23281 23282 23283 23284 23285 </td> <!-- entry_type --> 23286 23287 <td class="entry_description"> 23288 <p>Specifies the number of pipeline stages the frame went 23289through from when it was exposed to when the final completed result 23290was available to the framework.<wbr/></p> 23291 </td> 23292 23293 <td class="entry_units"> 23294 </td> 23295 23296 <td class="entry_range"> 23297 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 23298 </td> 23299 23300 <td class="entry_hal_version"> 23301 <p>3.<wbr/>2</p> 23302 </td> 23303 23304 <td class="entry_tags"> 23305 </td> 23306 23307 </tr> 23308 <tr class="entries_header"> 23309 <th class="th_details" colspan="6">Details</th> 23310 </tr> 23311 <tr class="entry_cont"> 23312 <td class="entry_details" colspan="6"> 23313 <p>Depending on what settings are used in the request,<wbr/> and 23314what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 23315and some pipeline stages skipped.<wbr/></p> 23316<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 23317 </td> 23318 </tr> 23319 23320 <tr class="entries_header"> 23321 <th class="th_details" colspan="6">HAL Implementation Details</th> 23322 </tr> 23323 <tr class="entry_cont"> 23324 <td class="entry_details" colspan="6"> 23325 <p>This value must always represent the accurate count of how many 23326pipeline stages were actually used.<wbr/></p> 23327 </td> 23328 </tr> 23329 23330 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23331 <!-- end of entry --> 23332 23333 23334 23335 <!-- end of kind --> 23336 </tbody> 23337 23338 <!-- end of section --> 23339 <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr> 23340 23341 23342 <tr><td colspan="7" class="kind">controls</td></tr> 23343 23344 <thead class="entries_header"> 23345 <tr> 23346 <th class="th_name">Property Name</th> 23347 <th class="th_type">Type</th> 23348 <th class="th_description">Description</th> 23349 <th class="th_units">Units</th> 23350 <th class="th_range">Range</th> 23351 <th class="th_hal_version">Initial HIDL HAL version</th> 23352 <th class="th_tags">Tags</th> 23353 </tr> 23354 </thead> 23355 23356 <tbody> 23357 23358 23359 23360 23361 23362 23363 23364 23365 23366 23367 <tr class="entry" id="controls_android.scaler.cropRegion"> 23368 <td class="entry_name 23369 " rowspan="5"> 23370 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 23371 </td> 23372 <td class="entry_type"> 23373 <span class="entry_type_name">int32</span> 23374 <span class="entry_type_container">x</span> 23375 23376 <span class="entry_type_array"> 23377 4 23378 </span> 23379 <span class="entry_type_visibility"> [public as rectangle]</span> 23380 23381 23382 <span class="entry_type_hwlevel">[legacy] </span> 23383 23384 23385 23386 23387 </td> <!-- entry_type --> 23388 23389 <td class="entry_description"> 23390 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 23391 </td> 23392 23393 <td class="entry_units"> 23394 Pixel coordinates relative to 23395 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 23396 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction 23397 capability and mode 23398 </td> 23399 23400 <td class="entry_range"> 23401 </td> 23402 23403 <td class="entry_hal_version"> 23404 <p>3.<wbr/>2</p> 23405 </td> 23406 23407 <td class="entry_tags"> 23408 <ul class="entry_tags"> 23409 <li><a href="#tag_BC">BC</a></li> 23410 </ul> 23411 </td> 23412 23413 </tr> 23414 <tr class="entries_header"> 23415 <th class="th_details" colspan="6">Details</th> 23416 </tr> 23417 <tr class="entry_cont"> 23418 <td class="entry_details" colspan="6"> 23419 <p>This control can be used to implement digital zoom.<wbr/></p> 23420<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 23421system 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 23422the top-left pixel of the active array.<wbr/></p> 23423<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate system 23424depends on the mode being set.<wbr/> When the distortion correction mode is OFF,<wbr/> the 23425coordinate system follows <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 <code>(0,<wbr/> 234260)</code> being the top-left pixel of the pre-correction active array.<wbr/> When the distortion 23427correction mode is not OFF,<wbr/> the coordinate system follows 23428<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left pixel of the 23429active array.<wbr/></p> 23430<p>Output streams use this rectangle to produce their output,<wbr/> cropping to a smaller region 23431if necessary to maintain the stream's aspect ratio,<wbr/> then scaling the sensor input to 23432match the output's configured resolution.<wbr/></p> 23433<p>The crop region is usually applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV) 23434conversion.<wbr/> As a result RAW streams are not croppable unless supported by the 23435camera device.<wbr/> See <a href="#static_android.scaler.availableStreamUseCases">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Use<wbr/>Cases</a>#CROPPED_<wbr/>RAW for details.<wbr/></p> 23436<p>For non-raw streams,<wbr/> any additional per-stream cropping will be done to maximize the 23437final pixel area of the stream.<wbr/></p> 23438<p>For example,<wbr/> if the crop region is set to a 4:3 aspect ratio,<wbr/> then 4:3 streams will use 23439the exact crop region.<wbr/> 16:9 streams will further crop vertically (letterbox).<wbr/></p> 23440<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 outputs will crop horizontally 23441(pillarbox),<wbr/> and 16:9 streams will match exactly.<wbr/> These additional crops will be 23442centered within the crop region.<wbr/></p> 23443<p>To illustrate,<wbr/> here are several scenarios of different crop regions and output streams,<wbr/> 23444for a hypothetical camera device with an active array of size <code>(2000,<wbr/>1500)</code>.<wbr/> Note that 23445several of these examples use non-centered crop regions for ease of illustration; such 23446regions are only supported on devices with FREEFORM capability 23447(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>),<wbr/> but this does not affect the way the crop 23448rules work otherwise.<wbr/></p> 23449<ul> 23450<li>Camera Configuration:<ul> 23451<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li> 23452<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li> 23453<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li> 23454</ul> 23455</li> 23456<li>Case #1: 4:3 crop region with 2x digital zoom<ul> 23457<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code></li> 23458<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-ratio.png"/></li> 23459<li><code>640x480</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code> (equal to crop region)</li> 23460<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li> 23461</ul> 23462</li> 23463<li>Case #2: 16:9 crop region with ~1.<wbr/>5x digital zoom.<wbr/><ul> 23464<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code></li> 23465<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-169-ratio.png"/></li> 23466<li><code>640x480</code> stream source area: <code>(666,<wbr/> 375,<wbr/> 1666,<wbr/> 1125)</code> (pillarboxed)</li> 23467<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code> (equal to crop region)</li> 23468</ul> 23469</li> 23470<li>Case #3: 1:1 crop region with ~2.<wbr/>6x digital zoom.<wbr/><ul> 23471<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1250,<wbr/> 1125)</code></li> 23472<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-11-ratio.png"/></li> 23473<li><code>640x480</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1250,<wbr/> 1031)</code> (letterboxed)</li> 23474<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 543,<wbr/> 1250,<wbr/> 957)</code> (letterboxed)</li> 23475</ul> 23476</li> 23477<li>Case #4: Replace <code>640x480</code> stream with <code>1024x1024</code> stream,<wbr/> with 4:3 crop region:<ul> 23478<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code></li> 23479<li><img alt="Square output, 4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-square-ratio.png"/></li> 23480<li><code>1024x1024</code> stream source area: <code>(625,<wbr/> 375,<wbr/> 1375,<wbr/> 1125)</code> (pillarboxed)</li> 23481<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li> 23482<li>Note that in this case,<wbr/> neither of the two outputs is a subset of the other,<wbr/> with 23483 each containing image data the other doesn't have.<wbr/></li> 23484</ul> 23485</li> 23486</ul> 23487<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 23488of the crop region cannot be set to be smaller than 23489<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 23490<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> 23491<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 23492and height of the crop region cannot be set to be smaller than 23493<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> 23494and 23495<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/> 23496respectively.<wbr/></p> 23497<p>The camera device may adjust the crop region to account for rounding and other hardware 23498requirements; the final crop region used will be included in the output capture result.<wbr/></p> 23499<p>The camera sensor output aspect ratio depends on factors such as output stream 23500combination and <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>,<wbr/> and shouldn't be adjusted by using 23501this control.<wbr/> And the camera device will treat different camera sensor output sizes 23502(potentially with in-sensor crop) as the same crop of 23503<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> As a result,<wbr/> the application shouldn't assume the 23504maximum crop region always maps to the same aspect ratio or field of view for the 23505sensor output.<wbr/></p> 23506<p>Starting from API level 30,<wbr/> it's strongly recommended to use <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> 23507to take advantage of better support for zoom with logical multi-camera.<wbr/> The benefits 23508include better precision with optical-digital zoom combination,<wbr/> and ability to do 23509zoom-out from 1.<wbr/>0x.<wbr/> When using <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for zoom,<wbr/> the crop region in 23510the capture request should be left as the default activeArray size.<wbr/> The 23511coordinate system is post-zoom,<wbr/> meaning that the activeArraySize or 23512preCorrectionActiveArraySize covers the camera device's field of view "after" zoom.<wbr/> See 23513<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/></p> 23514<p>For camera devices with the 23515<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 23516capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 23517lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> 23518<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 23519<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the 23520coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 23521<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 23522 </td> 23523 </tr> 23524 23525 <tr class="entries_header"> 23526 <th class="th_details" colspan="6">HAL Implementation Details</th> 23527 </tr> 23528 <tr class="entry_cont"> 23529 <td class="entry_details" colspan="6"> 23530 <p>The output streams must maintain square pixels at all 23531times,<wbr/> no matter what the relative aspect ratios of the 23532crop region and the stream are.<wbr/> Negative values for 23533corner are allowed for raw output if full pixel array is 23534larger than active pixel array.<wbr/> Width and height may be 23535rounded to nearest larger supportable width,<wbr/> especially 23536for raw output,<wbr/> where only a few fixed scales may be 23537possible.<wbr/></p> 23538<p>If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is supported by the HAL,<wbr/> the HAL must report the zoom 23539ratio via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and change the coordinate system such that 23540<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>(depending on whether <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> is supported) is used to 23541represent the camera field-of-view after zoom.<wbr/> see <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for 23542details.<wbr/></p> 23543<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 23544 </td> 23545 </tr> 23546 23547 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23548 <!-- end of entry --> 23549 23550 23551 <tr class="entry" id="controls_android.scaler.rotateAndCrop"> 23552 <td class="entry_name 23553 " rowspan="5"> 23554 android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop 23555 </td> 23556 <td class="entry_type"> 23557 <span class="entry_type_name entry_type_name_enum">byte</span> 23558 23559 <span class="entry_type_visibility"> [public]</span> 23560 23561 23562 23563 23564 23565 <ul class="entry_type_enum"> 23566 <li> 23567 <span class="entry_type_enum_name">NONE (v3.5)</span> 23568 <span class="entry_type_enum_notes"><p>No rotate and crop is applied.<wbr/> Processed outputs are in the sensor orientation.<wbr/></p></span> 23569 </li> 23570 <li> 23571 <span class="entry_type_enum_name">90 (v3.5)</span> 23572 <span class="entry_type_enum_notes"><p>Processed images are rotated by 90 degrees clockwise,<wbr/> and then cropped 23573to the original aspect ratio.<wbr/></p></span> 23574 </li> 23575 <li> 23576 <span class="entry_type_enum_name">180 (v3.5)</span> 23577 <span class="entry_type_enum_notes"><p>Processed images are rotated by 180 degrees.<wbr/> Since the aspect ratio does not 23578change,<wbr/> no cropping is performed.<wbr/></p></span> 23579 </li> 23580 <li> 23581 <span class="entry_type_enum_name">270 (v3.5)</span> 23582 <span class="entry_type_enum_notes"><p>Processed images are rotated by 270 degrees clockwise,<wbr/> and then cropped 23583to the original aspect ratio.<wbr/></p></span> 23584 </li> 23585 <li> 23586 <span class="entry_type_enum_name">AUTO (v3.5)</span> 23587 <span class="entry_type_enum_notes"><p>The camera API automatically selects the best concrete value for 23588rotate-and-crop based on the application's support for resizability and the current 23589multi-window mode.<wbr/></p> 23590<p>If the application does not support resizing but the display mode for its main 23591Activity is not in a typical orientation,<wbr/> the camera API will set <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> 23592or some other supported rotation value,<wbr/> depending on device configuration,<wbr/> 23593to ensure preview and captured images are correctly shown to the user.<wbr/> Otherwise,<wbr/> 23594<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> will be selected.<wbr/></p> 23595<p>When a value other than NONE is selected,<wbr/> several metadata fields will also be parsed 23596differently to ensure that coordinates are correctly handled for features like drawing 23597face detection boxes or passing in tap-to-focus coordinates.<wbr/> The camera API will 23598convert positions in the active array coordinate system to/<wbr/>from the cropped-and-rotated 23599coordinate system to make the operation transparent for applications.<wbr/></p> 23600<p>No coordinate mapping will be done when the application selects a non-AUTO mode.<wbr/></p></span> 23601 </li> 23602 </ul> 23603 23604 </td> <!-- entry_type --> 23605 23606 <td class="entry_description"> 23607 <p>Whether a rotation-and-crop operation is applied to processed 23608outputs from the camera.<wbr/></p> 23609 </td> 23610 23611 <td class="entry_units"> 23612 </td> 23613 23614 <td class="entry_range"> 23615 <p><a href="#static_android.scaler.availableRotateAndCropModes">android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes</a></p> 23616 </td> 23617 23618 <td class="entry_hal_version"> 23619 <p>3.<wbr/>5</p> 23620 </td> 23621 23622 <td class="entry_tags"> 23623 </td> 23624 23625 </tr> 23626 <tr class="entries_header"> 23627 <th class="th_details" colspan="6">Details</th> 23628 </tr> 23629 <tr class="entry_cont"> 23630 <td class="entry_details" colspan="6"> 23631 <p>This control is primarily intended to help camera applications with no support for 23632multi-window modes to work correctly on devices where multi-window scenarios are 23633unavoidable,<wbr/> such as foldables or other devices with variable display geometry or more 23634free-form window placement (such as laptops,<wbr/> which often place portrait-orientation apps 23635in landscape with pillarboxing).<wbr/></p> 23636<p>If supported,<wbr/> the default value is <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code>,<wbr/> which allows the camera API 23637to enable backwards-compatibility support for applications that do not support resizing 23638/<wbr/> multi-window modes,<wbr/> when the device is in fact in a multi-window mode (such as inset 23639portrait on laptops,<wbr/> or on a foldable device in some fold states).<wbr/> In addition,<wbr/> 23640<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> and <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> will always be available if this control 23641is supported by the device.<wbr/> If not supported,<wbr/> devices API level 30 or higher will always 23642list only <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/></p> 23643<p>When <code>CROP_<wbr/>AUTO</code> is in use,<wbr/> and the camera API activates backward-compatibility mode,<wbr/> 23644several metadata fields will also be parsed differently to ensure that coordinates are 23645correctly handled for features like drawing face detection boxes or passing in 23646tap-to-focus coordinates.<wbr/> The camera API will convert positions in the active array 23647coordinate system to/<wbr/>from the cropped-and-rotated coordinate system to make the 23648operation transparent for applications.<wbr/> The following controls are affected:</p> 23649<ul> 23650<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 23651<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 23652<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 23653<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li> 23654</ul> 23655<p>Capture results will contain the actual value selected by the API; 23656<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> will never be seen in a capture result.<wbr/></p> 23657<p>Applications can also select their preferred cropping mode,<wbr/> either to opt out of the 23658backwards-compatibility treatment,<wbr/> or to use the cropping feature themselves as needed.<wbr/> 23659In this case,<wbr/> no coordinate translation will be done automatically,<wbr/> and all controls 23660will continue to use the normal active array coordinates.<wbr/></p> 23661<p>Cropping and rotating is done after the application of digital zoom (via either 23662<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>),<wbr/> but before each individual 23663output is further cropped and scaled.<wbr/> It only affects processed outputs such as 23664YUV,<wbr/> PRIVATE,<wbr/> and JPEG.<wbr/> It has no effect on RAW outputs.<wbr/></p> 23665<p>When <code>CROP_<wbr/>90</code> or <code>CROP_<wbr/>270</code> are selected,<wbr/> there is a significant loss to the field of 23666view.<wbr/> For example,<wbr/> with a 4:3 aspect ratio output of 1600x1200,<wbr/> <code>CROP_<wbr/>90</code> will still 23667produce 1600x1200 output,<wbr/> but these buffers are cropped from a vertical 3:4 slice at the 23668center of the 4:3 area,<wbr/> then rotated to be 4:3,<wbr/> and then upscaled to 1600x1200.<wbr/> Only 2366956.<wbr/>25% of the original FOV is still visible.<wbr/> In general,<wbr/> for an aspect ratio of <code>w:h</code>,<wbr/> 23670the crop and rotate operation leaves <code>(h/<wbr/>w)^2</code> of the field of view visible.<wbr/> For 16:9,<wbr/> 23671this is ~31.<wbr/>6%.<wbr/></p> 23672<p>As a visual example,<wbr/> the figure below shows the effect of <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> on the 23673outputs for the following parameters:</p> 23674<ul> 23675<li>Sensor active array: <code>2000x1500</code></li> 23676<li>Crop region: top-left: <code>(500,<wbr/> 375)</code>,<wbr/> size: <code>(1000,<wbr/> 750)</code> (4:3 aspect ratio)</li> 23677<li>Output streams: YUV <code>640x480</code> and YUV <code>1280x720</code></li> 23678<li><code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code></li> 23679</ul> 23680<p><img alt="Effect of ROTATE_AND_CROP_90" src="images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png"/></p> 23681<p>With these settings,<wbr/> the regions of the active array covered by the output streams are:</p> 23682<ul> 23683<li>640x480 stream crop: top-left: <code>(219,<wbr/> 375)</code>,<wbr/> size: <code>(562,<wbr/> 750)</code></li> 23684<li>1280x720 stream crop: top-left: <code>(289,<wbr/> 375)</code>,<wbr/> size: <code>(422,<wbr/> 750)</code></li> 23685</ul> 23686<p>Since the buffers are rotated,<wbr/> the buffers as seen by the application are:</p> 23687<ul> 23688<li>640x480 stream: top-left: <code>(781,<wbr/> 375)</code> on active array,<wbr/> size: <code>(640,<wbr/> 480)</code>,<wbr/> downscaled 1.<wbr/>17x from sensor pixels</li> 23689<li>1280x720 stream: top-left: <code>(711,<wbr/> 375)</code> on active array,<wbr/> size: <code>(1280,<wbr/> 720)</code>,<wbr/> upscaled 1.<wbr/>71x from sensor pixels</li> 23690</ul> 23691 </td> 23692 </tr> 23693 23694 <tr class="entries_header"> 23695 <th class="th_details" colspan="6">HAL Implementation Details</th> 23696 </tr> 23697 <tr class="entry_cont"> 23698 <td class="entry_details" colspan="6"> 23699 <p>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will never be sent to the HAL,<wbr/> though it must be set as the default 23700value in all the capture request templates by the HAL.<wbr/> The camera service will 23701translate AUTO to a specific rotation value based on the current application's 23702multi-window state and its support of resizability.<wbr/></p> 23703<p>The HAL also does not need to consider coordinate transforms for ROTATE_<wbr/>AND_<wbr/>CROP - all 23704capture request and result fields should be kept in the active array coordinate frame.<wbr/> 23705Any translation required to implement ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will be handled by the camera 23706service.<wbr/></p> 23707 </td> 23708 </tr> 23709 23710 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23711 <!-- end of entry --> 23712 23713 23714 <tr class="entry" id="controls_android.scaler.cropRegionSet"> 23715 <td class="entry_name 23716 " rowspan="3"> 23717 android.<wbr/>scaler.<wbr/>crop<wbr/>Region<wbr/>Set 23718 </td> 23719 <td class="entry_type"> 23720 <span class="entry_type_name entry_type_name_enum">byte</span> 23721 23722 <span class="entry_type_visibility"> [fwk_only as boolean]</span> 23723 23724 23725 23726 23727 23728 <ul class="entry_type_enum"> 23729 <li> 23730 <span class="entry_type_enum_name">FALSE (v3.2)</span> 23731 <span class="entry_type_enum_notes"><p>Crop region (<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) has not been set by the 23732camera client.<wbr/></p></span> 23733 </li> 23734 <li> 23735 <span class="entry_type_enum_name">TRUE (v3.2)</span> 23736 <span class="entry_type_enum_notes"><p>Scaler crop regions (<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) has been set by the camera 23737client.<wbr/></p></span> 23738 </li> 23739 </ul> 23740 23741 </td> <!-- entry_type --> 23742 23743 <td class="entry_description"> 23744 <p>Framework-only private key which informs camera fwk that the scaler crop region 23745(<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) has been set by the client and it need 23746not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p> 23747 </td> 23748 23749 <td class="entry_units"> 23750 </td> 23751 23752 <td class="entry_range"> 23753 </td> 23754 23755 <td class="entry_hal_version"> 23756 <p>3.<wbr/>2</p> 23757 </td> 23758 23759 <td class="entry_tags"> 23760 </td> 23761 23762 </tr> 23763 <tr class="entries_header"> 23764 <th class="th_details" colspan="6">Details</th> 23765 </tr> 23766 <tr class="entry_cont"> 23767 <td class="entry_details" colspan="6"> 23768 <p>This must be set to TRUE by the camera2 java fwk when the camera client sets 23769<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 23770 </td> 23771 </tr> 23772 23773 23774 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23775 <!-- end of entry --> 23776 23777 23778 23779 <!-- end of kind --> 23780 </tbody> 23781 <tr><td colspan="7" class="kind">static</td></tr> 23782 23783 <thead class="entries_header"> 23784 <tr> 23785 <th class="th_name">Property Name</th> 23786 <th class="th_type">Type</th> 23787 <th class="th_description">Description</th> 23788 <th class="th_units">Units</th> 23789 <th class="th_range">Range</th> 23790 <th class="th_hal_version">Initial HIDL HAL version</th> 23791 <th class="th_tags">Tags</th> 23792 </tr> 23793 </thead> 23794 23795 <tbody> 23796 23797 23798 23799 23800 23801 23802 23803 23804 23805 23806 <tr class="entry" id="static_android.scaler.availableFormats"> 23807 <td class="entry_name 23808 entry_name_deprecated 23809 " rowspan="5"> 23810 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 23811 </td> 23812 <td class="entry_type"> 23813 <span class="entry_type_name entry_type_name_enum">int32</span> 23814 <span class="entry_type_container">x</span> 23815 23816 <span class="entry_type_array"> 23817 n 23818 </span> 23819 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 23820 23821 23822 23823 <span class="entry_type_deprecated">[deprecated] </span> 23824 23825 23826 <ul class="entry_type_enum"> 23827 <li> 23828 <span class="entry_type_enum_name">RAW16 (v3.2)</span> 23829 <span class="entry_type_enum_optional">[optional]</span> 23830 <span class="entry_type_enum_value">0x20</span> 23831 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 23832buffers with 16-bit pixels.<wbr/></p> 23833<p>Buffers of this format are typically expected to have a 23834Color Filter Array (CFA) layout,<wbr/> which is given in 23835<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with 23836CFAs that are not representable by a format in 23837<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not 23838use this format.<wbr/></p> 23839<p>Buffers of this format will also follow the constraints given for 23840RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 23841<p>This format is intended to give users access to the full contents 23842of the buffers coming directly from the image sensor prior to any 23843cropping or scaling operations,<wbr/> and all coordinate systems for 23844metadata used for this format are relative to the size of the 23845active region of the image sensor before any geometric distortion 23846correction has been applied (i.<wbr/>e.<wbr/> 23847<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 23848dimensions for this format are limited to the full dimensions of 23849the 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 23850<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 23851only supported output size).<wbr/></p> 23852<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 23853the full set of performance guarantees.<wbr/></p></span> 23854 </li> 23855 <li> 23856 <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span> 23857 <span class="entry_type_enum_optional">[optional]</span> 23858 <span class="entry_type_enum_value">0x24</span> 23859 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or 23860<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a> 23861as referred in public API) is a format for raw image buffers 23862coming from an image sensor.<wbr/></p> 23863<p>The actual structure of buffers of this format is 23864platform-specific,<wbr/> but must follow several constraints:</p> 23865<ol> 23866<li>No image post-processing operations may have been applied to 23867buffers of this type.<wbr/> These buffers contain raw image data coming 23868directly from the image sensor.<wbr/></li> 23869<li>If a buffer of this format is passed to the camera device for 23870reprocessing,<wbr/> the resulting images will be identical to the images 23871produced if the buffer had come directly from the sensor and was 23872processed with the same settings.<wbr/></li> 23873</ol> 23874<p>The intended use for this format is to allow access to the native 23875raw format buffers coming directly from the camera sensor without 23876any additional conversions or decrease in framerate.<wbr/></p> 23877<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 23878performance guarantees.<wbr/></p></span> 23879 </li> 23880 <li> 23881 <span class="entry_type_enum_name">YV12 (v3.2)</span> 23882 <span class="entry_type_enum_optional">[optional]</span> 23883 <span class="entry_type_enum_value">0x32315659</span> 23884 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 23885 </li> 23886 <li> 23887 <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span> 23888 <span class="entry_type_enum_optional">[optional]</span> 23889 <span class="entry_type_enum_value">0x11</span> 23890 <span class="entry_type_enum_notes"><p>NV21</p></span> 23891 </li> 23892 <li> 23893 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span> 23894 <span class="entry_type_enum_value">0x22</span> 23895 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 23896 </li> 23897 <li> 23898 <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span> 23899 <span class="entry_type_enum_value">0x23</span> 23900 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 23901 </li> 23902 <li> 23903 <span class="entry_type_enum_name">BLOB (v3.2)</span> 23904 <span class="entry_type_enum_value">0x21</span> 23905 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 23906 </li> 23907 <li> 23908 <span class="entry_type_enum_name">RAW10 (v3.4)</span> 23909 <span class="entry_type_enum_value">0x25</span> 23910 <span class="entry_type_enum_notes"><p>RAW10</p></span> 23911 </li> 23912 <li> 23913 <span class="entry_type_enum_name">RAW12 (v3.4)</span> 23914 <span class="entry_type_enum_value">0x26</span> 23915 <span class="entry_type_enum_notes"><p>RAW12</p></span> 23916 </li> 23917 <li> 23918 <span class="entry_type_enum_name">Y8 (v3.4)</span> 23919 <span class="entry_type_enum_value">0x20203859</span> 23920 <span class="entry_type_enum_notes"><p>Y8</p></span> 23921 </li> 23922 </ul> 23923 23924 </td> <!-- entry_type --> 23925 23926 <td class="entry_description"> 23927 <p>The list of image formats that are supported by this 23928camera device for output streams.<wbr/></p> 23929 </td> 23930 23931 <td class="entry_units"> 23932 </td> 23933 23934 <td class="entry_range"> 23935 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 23936 </td> 23937 23938 <td class="entry_hal_version"> 23939 <p>3.<wbr/>2</p> 23940 </td> 23941 23942 <td class="entry_tags"> 23943 <ul class="entry_tags"> 23944 <li><a href="#tag_BC">BC</a></li> 23945 </ul> 23946 </td> 23947 23948 </tr> 23949 <tr class="entries_header"> 23950 <th class="th_details" colspan="6">Details</th> 23951 </tr> 23952 <tr class="entry_cont"> 23953 <td class="entry_details" colspan="6"> 23954 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 23955<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 23956 </td> 23957 </tr> 23958 23959 <tr class="entries_header"> 23960 <th class="th_details" colspan="6">HAL Implementation Details</th> 23961 </tr> 23962 <tr class="entry_cont"> 23963 <td class="entry_details" colspan="6"> 23964 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 23965system/<wbr/>core/<wbr/>libsystem/<wbr/>include/<wbr/>system/<wbr/>graphics-base.<wbr/>h.<wbr/></p> 23966<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 23967gralloc module will select a format based on the usage flags provided 23968by the camera HAL device and the other endpoint of the stream.<wbr/> It is 23969usually used by preview and recording streams,<wbr/> where the application doesn't 23970need access the image data.<wbr/></p> 23971<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 23972needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/> For a MONOCHROME 23973camera device,<wbr/> the pixel value of Cb and Cr planes is 128.<wbr/></p> 23974<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 23975<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 23976recommended that any information used by the camera device when 23977processing images is fully expressed by the result metadata 23978for that image buffer.<wbr/></p> 23979 </td> 23980 </tr> 23981 23982 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23983 <!-- end of entry --> 23984 23985 23986 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 23987 <td class="entry_name 23988 entry_name_deprecated 23989 " rowspan="3"> 23990 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 23991 </td> 23992 <td class="entry_type"> 23993 <span class="entry_type_name">int64</span> 23994 <span class="entry_type_container">x</span> 23995 23996 <span class="entry_type_array"> 23997 n 23998 </span> 23999 <span class="entry_type_visibility"> [hidden]</span> 24000 24001 24002 24003 <span class="entry_type_deprecated">[deprecated] </span> 24004 24005 24006 24007 </td> <!-- entry_type --> 24008 24009 <td class="entry_description"> 24010 <p>The minimum frame duration that is supported 24011for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 24012 </td> 24013 24014 <td class="entry_units"> 24015 Nanoseconds 24016 </td> 24017 24018 <td class="entry_range"> 24019 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 24020 <p>TODO: Remove property.<wbr/></p> 24021 </td> 24022 24023 <td class="entry_hal_version"> 24024 <p>3.<wbr/>2</p> 24025 </td> 24026 24027 <td class="entry_tags"> 24028 <ul class="entry_tags"> 24029 <li><a href="#tag_BC">BC</a></li> 24030 </ul> 24031 </td> 24032 24033 </tr> 24034 <tr class="entries_header"> 24035 <th class="th_details" colspan="6">Details</th> 24036 </tr> 24037 <tr class="entry_cont"> 24038 <td class="entry_details" colspan="6"> 24039 <p>This corresponds to the minimum steady-state frame duration when only 24040that JPEG stream is active and captured in a burst,<wbr/> with all 24041processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 24042<p>When multiple streams are configured,<wbr/> the minimum 24043frame duration will be >= max(individual stream min 24044durations)</p> 24045 </td> 24046 </tr> 24047 24048 24049 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24050 <!-- end of entry --> 24051 24052 24053 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 24054 <td class="entry_name 24055 entry_name_deprecated 24056 " rowspan="5"> 24057 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 24058 </td> 24059 <td class="entry_type"> 24060 <span class="entry_type_name">int32</span> 24061 <span class="entry_type_container">x</span> 24062 24063 <span class="entry_type_array"> 24064 n x 2 24065 </span> 24066 <span class="entry_type_visibility"> [hidden as size]</span> 24067 24068 24069 24070 <span class="entry_type_deprecated">[deprecated] </span> 24071 24072 24073 24074 </td> <!-- entry_type --> 24075 24076 <td class="entry_description"> 24077 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 24078 </td> 24079 24080 <td class="entry_units"> 24081 </td> 24082 24083 <td class="entry_range"> 24084 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 24085 <p>TODO: Remove property.<wbr/></p> 24086 </td> 24087 24088 <td class="entry_hal_version"> 24089 <p>3.<wbr/>2</p> 24090 </td> 24091 24092 <td class="entry_tags"> 24093 <ul class="entry_tags"> 24094 <li><a href="#tag_BC">BC</a></li> 24095 </ul> 24096 </td> 24097 24098 </tr> 24099 <tr class="entries_header"> 24100 <th class="th_details" colspan="6">Details</th> 24101 </tr> 24102 <tr class="entry_cont"> 24103 <td class="entry_details" colspan="6"> 24104 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 24105sensor 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> 24106 </td> 24107 </tr> 24108 24109 <tr class="entries_header"> 24110 <th class="th_details" colspan="6">HAL Implementation Details</th> 24111 </tr> 24112 <tr class="entry_cont"> 24113 <td class="entry_details" colspan="6"> 24114 <p>The HAL must include sensor maximum resolution 24115(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 24116and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 24117 </td> 24118 </tr> 24119 24120 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24121 <!-- end of entry --> 24122 24123 24124 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 24125 <td class="entry_name 24126 " rowspan="5"> 24127 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 24128 </td> 24129 <td class="entry_type"> 24130 <span class="entry_type_name">float</span> 24131 24132 <span class="entry_type_visibility"> [public]</span> 24133 24134 24135 <span class="entry_type_hwlevel">[legacy] </span> 24136 24137 24138 24139 24140 </td> <!-- entry_type --> 24141 24142 <td class="entry_description"> 24143 <p>The maximum ratio between both active area width 24144and crop region width,<wbr/> and active area height and 24145crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 24146 </td> 24147 24148 <td class="entry_units"> 24149 Zoom scale factor 24150 </td> 24151 24152 <td class="entry_range"> 24153 <p>>=1</p> 24154 </td> 24155 24156 <td class="entry_hal_version"> 24157 <p>3.<wbr/>2</p> 24158 </td> 24159 24160 <td class="entry_tags"> 24161 <ul class="entry_tags"> 24162 <li><a href="#tag_BC">BC</a></li> 24163 </ul> 24164 </td> 24165 24166 </tr> 24167 <tr class="entries_header"> 24168 <th class="th_details" colspan="6">Details</th> 24169 </tr> 24170 <tr class="entry_cont"> 24171 <td class="entry_details" colspan="6"> 24172 <p>This represents the maximum amount of zooming possible by 24173the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping 24174window size.<wbr/></p> 24175<p>Crop regions that have a width or height that is smaller 24176than this ratio allows will be rounded up to the minimum 24177allowed size by the camera device.<wbr/></p> 24178<p>Starting from API level 30,<wbr/> when using <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to zoom in or out,<wbr/> 24179the application must use <a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a> to query both the minimum and 24180maximum zoom ratio.<wbr/></p> 24181 </td> 24182 </tr> 24183 24184 <tr class="entries_header"> 24185 <th class="th_details" colspan="6">HAL Implementation Details</th> 24186 </tr> 24187 <tr class="entry_cont"> 24188 <td class="entry_details" colspan="6"> 24189 <p>If the HAL supports <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> this value must be equal to or less than 24190the maximum supported zoomRatio specified in <a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a>.<wbr/></p> 24191 </td> 24192 </tr> 24193 24194 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24195 <!-- end of entry --> 24196 24197 24198 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 24199 <td class="entry_name 24200 entry_name_deprecated 24201 " rowspan="3"> 24202 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 24203 </td> 24204 <td class="entry_type"> 24205 <span class="entry_type_name">int64</span> 24206 <span class="entry_type_container">x</span> 24207 24208 <span class="entry_type_array"> 24209 n 24210 </span> 24211 <span class="entry_type_visibility"> [hidden]</span> 24212 24213 24214 24215 <span class="entry_type_deprecated">[deprecated] </span> 24216 24217 24218 24219 </td> <!-- entry_type --> 24220 24221 <td class="entry_description"> 24222 <p>For each available processed output size (defined in 24223<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 24224minimum supportable frame duration for that size.<wbr/></p> 24225 </td> 24226 24227 <td class="entry_units"> 24228 Nanoseconds 24229 </td> 24230 24231 <td class="entry_range"> 24232 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 24233 </td> 24234 24235 <td class="entry_hal_version"> 24236 <p>3.<wbr/>2</p> 24237 </td> 24238 24239 <td class="entry_tags"> 24240 <ul class="entry_tags"> 24241 <li><a href="#tag_BC">BC</a></li> 24242 </ul> 24243 </td> 24244 24245 </tr> 24246 <tr class="entries_header"> 24247 <th class="th_details" colspan="6">Details</th> 24248 </tr> 24249 <tr class="entry_cont"> 24250 <td class="entry_details" colspan="6"> 24251 <p>This should correspond to the frame duration when only that processed 24252stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 24253set to FAST.<wbr/></p> 24254<p>When multiple streams are configured,<wbr/> the minimum frame duration will 24255be >= max(individual stream min durations).<wbr/></p> 24256 </td> 24257 </tr> 24258 24259 24260 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24261 <!-- end of entry --> 24262 24263 24264 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 24265 <td class="entry_name 24266 entry_name_deprecated 24267 " rowspan="5"> 24268 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 24269 </td> 24270 <td class="entry_type"> 24271 <span class="entry_type_name">int32</span> 24272 <span class="entry_type_container">x</span> 24273 24274 <span class="entry_type_array"> 24275 n x 2 24276 </span> 24277 <span class="entry_type_visibility"> [hidden as size]</span> 24278 24279 24280 24281 <span class="entry_type_deprecated">[deprecated] </span> 24282 24283 24284 24285 </td> <!-- entry_type --> 24286 24287 <td class="entry_description"> 24288 <p>The resolutions available for use with 24289processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 24290platform opaque YUV/<wbr/>RGB streams to the GPU or video 24291encoders.<wbr/></p> 24292 </td> 24293 24294 <td class="entry_units"> 24295 </td> 24296 24297 <td class="entry_range"> 24298 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 24299 </td> 24300 24301 <td class="entry_hal_version"> 24302 <p>3.<wbr/>2</p> 24303 </td> 24304 24305 <td class="entry_tags"> 24306 <ul class="entry_tags"> 24307 <li><a href="#tag_BC">BC</a></li> 24308 </ul> 24309 </td> 24310 24311 </tr> 24312 <tr class="entries_header"> 24313 <th class="th_details" colspan="6">Details</th> 24314 </tr> 24315 <tr class="entry_cont"> 24316 <td class="entry_details" colspan="6"> 24317 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 24318<p>For a given use case,<wbr/> the actual maximum supported resolution 24319may be lower than what is listed here,<wbr/> depending on the destination 24320Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 24321the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 24322smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 24323can provide.<wbr/></p> 24324<p>Please reference the documentation for the image data destination to 24325check if it limits the maximum size for image data.<wbr/></p> 24326 </td> 24327 </tr> 24328 24329 <tr class="entries_header"> 24330 <th class="th_details" colspan="6">HAL Implementation Details</th> 24331 </tr> 24332 <tr class="entry_cont"> 24333 <td class="entry_details" colspan="6"> 24334 <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/> 24335the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 24336and each below resolution if it is smaller than or equal to the sensor 24337maximum resolution (if they are not listed in JPEG sizes already):</p> 24338<ul> 24339<li>240p (320 x 240)</li> 24340<li>480p (640 x 480)</li> 24341<li>720p (1280 x 720)</li> 24342<li>1080p (1920 x 1080)</li> 24343</ul> 24344<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/> 24345the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 24346 </td> 24347 </tr> 24348 24349 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24350 <!-- end of entry --> 24351 24352 24353 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 24354 <td class="entry_name 24355 entry_name_deprecated 24356 " rowspan="3"> 24357 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 24358 </td> 24359 <td class="entry_type"> 24360 <span class="entry_type_name">int64</span> 24361 <span class="entry_type_container">x</span> 24362 24363 <span class="entry_type_array"> 24364 n 24365 </span> 24366 <span class="entry_type_visibility"> [system]</span> 24367 24368 24369 24370 <span class="entry_type_deprecated">[deprecated] </span> 24371 24372 24373 24374 </td> <!-- entry_type --> 24375 24376 <td class="entry_description"> 24377 <p>For each available raw output size (defined in 24378<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 24379supportable frame duration for that size.<wbr/></p> 24380 </td> 24381 24382 <td class="entry_units"> 24383 Nanoseconds 24384 </td> 24385 24386 <td class="entry_range"> 24387 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 24388 </td> 24389 24390 <td class="entry_hal_version"> 24391 <p>3.<wbr/>2</p> 24392 </td> 24393 24394 <td class="entry_tags"> 24395 <ul class="entry_tags"> 24396 <li><a href="#tag_BC">BC</a></li> 24397 </ul> 24398 </td> 24399 24400 </tr> 24401 <tr class="entries_header"> 24402 <th class="th_details" colspan="6">Details</th> 24403 </tr> 24404 <tr class="entry_cont"> 24405 <td class="entry_details" colspan="6"> 24406 <p>Should correspond to the frame duration when only the raw stream is 24407active.<wbr/></p> 24408<p>When multiple streams are configured,<wbr/> the minimum 24409frame duration will be >= max(individual stream min 24410durations)</p> 24411 </td> 24412 </tr> 24413 24414 24415 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24416 <!-- end of entry --> 24417 24418 24419 <tr class="entry" id="static_android.scaler.availableRawSizes"> 24420 <td class="entry_name 24421 entry_name_deprecated 24422 " rowspan="1"> 24423 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 24424 </td> 24425 <td class="entry_type"> 24426 <span class="entry_type_name">int32</span> 24427 <span class="entry_type_container">x</span> 24428 24429 <span class="entry_type_array"> 24430 n x 2 24431 </span> 24432 <span class="entry_type_visibility"> [system as size]</span> 24433 24434 24435 24436 <span class="entry_type_deprecated">[deprecated] </span> 24437 24438 24439 24440 </td> <!-- entry_type --> 24441 24442 <td class="entry_description"> 24443 <p>The resolutions available for use with raw 24444sensor output streams,<wbr/> listed as width,<wbr/> 24445height</p> 24446 </td> 24447 24448 <td class="entry_units"> 24449 </td> 24450 24451 <td class="entry_range"> 24452 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 24453 </td> 24454 24455 <td class="entry_hal_version"> 24456 <p>3.<wbr/>2</p> 24457 </td> 24458 24459 <td class="entry_tags"> 24460 </td> 24461 24462 </tr> 24463 24464 24465 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24466 <!-- end of entry --> 24467 24468 24469 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 24470 <td class="entry_name 24471 " rowspan="5"> 24472 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 24473 </td> 24474 <td class="entry_type"> 24475 <span class="entry_type_name">int32</span> 24476 24477 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> 24478 24479 24480 24481 24482 24483 24484 </td> <!-- entry_type --> 24485 24486 <td class="entry_description"> 24487 <p>The mapping of image formats that are supported by this 24488camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 24489 </td> 24490 24491 <td class="entry_units"> 24492 </td> 24493 24494 <td class="entry_range"> 24495 </td> 24496 24497 <td class="entry_hal_version"> 24498 <p>3.<wbr/>2</p> 24499 </td> 24500 24501 <td class="entry_tags"> 24502 <ul class="entry_tags"> 24503 <li><a href="#tag_REPROC">REPROC</a></li> 24504 </ul> 24505 </td> 24506 24507 </tr> 24508 <tr class="entries_header"> 24509 <th class="th_details" colspan="6">Details</th> 24510 </tr> 24511 <tr class="entry_cont"> 24512 <td class="entry_details" colspan="6"> 24513 <p>All camera devices with at least 1 24514<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 24515available input format.<wbr/></p> 24516<p>The camera device will support the following map of formats,<wbr/> 24517if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 24518<table> 24519<thead> 24520<tr> 24521<th style="text-align: left;">Input Format</th> 24522<th style="text-align: left;">Output Format</th> 24523<th style="text-align: left;">Capability</th> 24524</tr> 24525</thead> 24526<tbody> 24527<tr> 24528<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 24529<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 24530<td style="text-align: left;">PRIVATE_<wbr/>REPROCESSING</td> 24531</tr> 24532<tr> 24533<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 24534<td style="text-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> 24535<td style="text-align: left;">PRIVATE_<wbr/>REPROCESSING</td> 24536</tr> 24537<tr> 24538<td style="text-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> 24539<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 24540<td style="text-align: left;">YUV_<wbr/>REPROCESSING</td> 24541</tr> 24542<tr> 24543<td style="text-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> 24544<td style="text-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> 24545<td style="text-align: left;">YUV_<wbr/>REPROCESSING</td> 24546</tr> 24547</tbody> 24548</table> 24549<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A 24550PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a> 24551with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p> 24552<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input 24553or 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> 24554<p>Attempting to configure an input stream with output streams not 24555listed as available in this map is not valid.<wbr/></p> 24556<p>Additionally,<wbr/> if the camera device is MONOCHROME with Y8 support,<wbr/> it will also support 24557the following map of formats if its dependent capability 24558(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 24559<table> 24560<thead> 24561<tr> 24562<th style="text-align: left;">Input Format</th> 24563<th style="text-align: left;">Output Format</th> 24564<th style="text-align: left;">Capability</th> 24565</tr> 24566</thead> 24567<tbody> 24568<tr> 24569<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 24570<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td> 24571<td style="text-align: left;">PRIVATE_<wbr/>REPROCESSING</td> 24572</tr> 24573<tr> 24574<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td> 24575<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 24576<td style="text-align: left;">YUV_<wbr/>REPROCESSING</td> 24577</tr> 24578<tr> 24579<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td> 24580<td style="text-align: left;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td> 24581<td style="text-align: left;">YUV_<wbr/>REPROCESSING</td> 24582</tr> 24583</tbody> 24584</table> 24585 </td> 24586 </tr> 24587 24588 <tr class="entries_header"> 24589 <th class="th_details" colspan="6">HAL Implementation Details</th> 24590 </tr> 24591 <tr class="entry_cont"> 24592 <td class="entry_details" colspan="6"> 24593 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>libsystem/<wbr/>include/<wbr/>system/<wbr/>graphics-base.<wbr/>h</code> for a 24594definition of the image format enumerations.<wbr/> The PRIVATE format refers to the 24595HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine 24596the actual format by using the gralloc usage flags.<wbr/> 24597For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially 24598processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/> 24599See camera3.<wbr/>h for more details.<wbr/></p> 24600<p>This value is encoded as a variable-size array-of-arrays.<wbr/> 24601The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 24602<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 24603inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 24604<p>A code sample to read/<wbr/>write this encoding (with a device that 24605supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 24606and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 24607<pre><code>//<wbr/> reading 24608int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 24609for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 24610 int32_<wbr/>t format = contents[i++]; 24611 int32_<wbr/>t length = contents[i++]; 24612 int32_<wbr/>t output_<wbr/>formats[length]; 24613 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 24614 length * sizeof(int32_<wbr/>t)); 24615 i += length; 24616} 24617 24618//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING) 24619int32_<wbr/>t[] contents = { 24620 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 24621 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 24622}; 24623update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 24624 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 24625</code></pre> 24626<p>If the HAL claims to support any of the capabilities listed in the 24627above details,<wbr/> then it must also support all the input-output 24628combinations listed for that capability.<wbr/> It can optionally support 24629additional formats if it so chooses.<wbr/></p> 24630 </td> 24631 </tr> 24632 24633 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24634 <!-- end of entry --> 24635 24636 24637 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 24638 <td class="entry_name 24639 " rowspan="5"> 24640 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 24641 </td> 24642 <td class="entry_type"> 24643 <span class="entry_type_name entry_type_name_enum">int32</span> 24644 <span class="entry_type_container">x</span> 24645 24646 <span class="entry_type_array"> 24647 n x 4 24648 </span> 24649 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 24650 24651 24652 <span class="entry_type_hwlevel">[legacy] </span> 24653 24654 24655 24656 <ul class="entry_type_enum"> 24657 <li> 24658 <span class="entry_type_enum_name">OUTPUT (v3.2)</span> 24659 </li> 24660 <li> 24661 <span class="entry_type_enum_name">INPUT (v3.2)</span> 24662 </li> 24663 </ul> 24664 24665 </td> <!-- entry_type --> 24666 24667 <td class="entry_description"> 24668 <p>The available stream configurations that this 24669camera device supports 24670(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 24671 </td> 24672 24673 <td class="entry_units"> 24674 </td> 24675 24676 <td class="entry_range"> 24677 </td> 24678 24679 <td class="entry_hal_version"> 24680 <p>3.<wbr/>2</p> 24681 </td> 24682 24683 <td class="entry_tags"> 24684 </td> 24685 24686 </tr> 24687 <tr class="entries_header"> 24688 <th class="th_details" colspan="6">Details</th> 24689 </tr> 24690 <tr class="entry_cont"> 24691 <td class="entry_details" colspan="6"> 24692 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 24693tuples.<wbr/></p> 24694<p>For a given use case,<wbr/> the actual maximum supported resolution 24695may be lower than what is listed here,<wbr/> depending on the destination 24696Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 24697the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 24698smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 24699can provide.<wbr/></p> 24700<p>Please reference the documentation for the image data destination to 24701check if it limits the maximum size for image data.<wbr/></p> 24702<p>Not all output formats may be supported in a configuration with 24703an input stream of a particular format.<wbr/> For more details,<wbr/> see 24704<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 24705<p>For applications targeting SDK version older than 31,<wbr/> the following table 24706describes the minimum required output stream configurations based on the hardware level 24707(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 24708<table> 24709<thead> 24710<tr> 24711<th style="text-align: center;">Format</th> 24712<th style="text-align: center;">Size</th> 24713<th style="text-align: center;">Hardware Level</th> 24714<th style="text-align: center;">Notes</th> 24715</tr> 24716</thead> 24717<tbody> 24718<tr> 24719<td style="text-align: center;">JPEG</td> 24720<td style="text-align: center;"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 24721<td style="text-align: center;">Any</td> 24722<td style="text-align: center;"></td> 24723</tr> 24724<tr> 24725<td style="text-align: center;">JPEG</td> 24726<td style="text-align: center;">1920x1080 (1080p)</td> 24727<td style="text-align: center;">Any</td> 24728<td style="text-align: center;">if 1080p <= activeArraySize</td> 24729</tr> 24730<tr> 24731<td style="text-align: center;">JPEG</td> 24732<td style="text-align: center;">1280x720 (720)</td> 24733<td style="text-align: center;">Any</td> 24734<td style="text-align: center;">if 720p <= activeArraySize</td> 24735</tr> 24736<tr> 24737<td style="text-align: center;">JPEG</td> 24738<td style="text-align: center;">640x480 (480p)</td> 24739<td style="text-align: center;">Any</td> 24740<td style="text-align: center;">if 480p <= activeArraySize</td> 24741</tr> 24742<tr> 24743<td style="text-align: center;">JPEG</td> 24744<td style="text-align: center;">320x240 (240p)</td> 24745<td style="text-align: center;">Any</td> 24746<td style="text-align: center;">if 240p <= activeArraySize</td> 24747</tr> 24748<tr> 24749<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td> 24750<td style="text-align: center;">all output sizes available for JPEG</td> 24751<td style="text-align: center;">FULL</td> 24752<td style="text-align: center;"></td> 24753</tr> 24754<tr> 24755<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td> 24756<td style="text-align: center;">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 24757<td style="text-align: center;">LIMITED</td> 24758<td style="text-align: center;"></td> 24759</tr> 24760<tr> 24761<td style="text-align: center;">IMPLEMENTATION_<wbr/>DEFINED</td> 24762<td style="text-align: center;">same as YUV_<wbr/>420_<wbr/>888</td> 24763<td style="text-align: center;">Any</td> 24764<td style="text-align: center;"></td> 24765</tr> 24766</tbody> 24767</table> 24768<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device declares to be 24769media performance class 12 or higher by setting 24770<a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/> 24771the primary camera devices (first rear/<wbr/>front camera in the camera ID list) will not 24772support JPEG sizes smaller than 1080p.<wbr/> If the application configures a JPEG stream 24773smaller than 1080p,<wbr/> the camera device will round up the JPEG image size to at least 247741080p.<wbr/> The requirements for IMPLEMENTATION_<wbr/>DEFINED and YUV_<wbr/>420_<wbr/>888 stay the same.<wbr/> 24775This new minimum required output stream configurations are illustrated by the table below:</p> 24776<table> 24777<thead> 24778<tr> 24779<th style="text-align: center;">Format</th> 24780<th style="text-align: center;">Size</th> 24781<th style="text-align: center;">Hardware Level</th> 24782<th style="text-align: center;">Notes</th> 24783</tr> 24784</thead> 24785<tbody> 24786<tr> 24787<td style="text-align: center;">JPEG</td> 24788<td style="text-align: center;"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 24789<td style="text-align: center;">Any</td> 24790<td style="text-align: center;"></td> 24791</tr> 24792<tr> 24793<td style="text-align: center;">JPEG</td> 24794<td style="text-align: center;">1920x1080 (1080p)</td> 24795<td style="text-align: center;">Any</td> 24796<td style="text-align: center;">if 1080p <= activeArraySize</td> 24797</tr> 24798<tr> 24799<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td> 24800<td style="text-align: center;"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 24801<td style="text-align: center;">FULL</td> 24802<td style="text-align: center;"></td> 24803</tr> 24804<tr> 24805<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td> 24806<td style="text-align: center;">1920x1080 (1080p)</td> 24807<td style="text-align: center;">FULL</td> 24808<td style="text-align: center;">if 1080p <= activeArraySize</td> 24809</tr> 24810<tr> 24811<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td> 24812<td style="text-align: center;">1280x720 (720)</td> 24813<td style="text-align: center;">FULL</td> 24814<td style="text-align: center;">if 720p <= activeArraySize</td> 24815</tr> 24816<tr> 24817<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td> 24818<td style="text-align: center;">640x480 (480p)</td> 24819<td style="text-align: center;">FULL</td> 24820<td style="text-align: center;">if 480p <= activeArraySize</td> 24821</tr> 24822<tr> 24823<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td> 24824<td style="text-align: center;">320x240 (240p)</td> 24825<td style="text-align: center;">FULL</td> 24826<td style="text-align: center;">if 240p <= activeArraySize</td> 24827</tr> 24828<tr> 24829<td style="text-align: center;">YUV_<wbr/>420_<wbr/>888</td> 24830<td style="text-align: center;">all output sizes available for FULL hardware level,<wbr/> up to the maximum video size</td> 24831<td style="text-align: center;">LIMITED</td> 24832<td style="text-align: center;"></td> 24833</tr> 24834<tr> 24835<td style="text-align: center;">IMPLEMENTATION_<wbr/>DEFINED</td> 24836<td style="text-align: center;">same as YUV_<wbr/>420_<wbr/>888</td> 24837<td style="text-align: center;">Any</td> 24838<td style="text-align: center;"></td> 24839</tr> 24840</tbody> 24841</table> 24842<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device doesn't declare 24843to be media performance class 12 or better by setting 24844<a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/> 24845or if the camera device isn't a primary rear/<wbr/>front camera,<wbr/> the minimum required output 24846stream configurations are the same as for applications targeting SDK version older than 2484731.<wbr/></p> 24848<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 24849mandatory stream configurations on a per-capability basis.<wbr/></p> 24850<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability for 24851downscaling from larger resolution to smaller,<wbr/> and the QCIF resolution sometimes is not 24852fully supported due to this limitation on devices with high-resolution image sensors.<wbr/> 24853Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other 24854stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/> 24855and capture session creation will fail if it is not.<wbr/></p> 24856 </td> 24857 </tr> 24858 24859 <tr class="entries_header"> 24860 <th class="th_details" colspan="6">HAL Implementation Details</th> 24861 </tr> 24862 <tr class="entry_cont"> 24863 <td class="entry_details" colspan="6"> 24864 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 24865of sensor maximum resolution for JPEG formats (regardless of hardware 24866level).<wbr/></p> 24867<p>(The following is a rewording of the above required table):</p> 24868<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 24869<ul> 24870<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 24871(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 24872(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/> 24873it does not have to be included in the supported JPEG sizes.<wbr/></li> 24874<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 24875the dimensions being a multiple of 16.<wbr/></li> 24876</ul> 24877<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 24878However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 24879resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 24880additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 24881if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 24882ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 248833264x2448.<wbr/></p> 24884<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/> 24885the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 24886here as output streams.<wbr/></p> 24887<p>It must also include each below resolution if it is smaller than or 24888equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 24889formats),<wbr/> as output streams:</p> 24890<ul> 24891<li>240p (320 x 240)</li> 24892<li>480p (640 x 480)</li> 24893<li>720p (1280 x 720)</li> 24894<li>1080p (1920 x 1080)</li> 24895</ul> 24896<p>Note that for primary cameras (first rear/<wbr/>front facing camera in the camera ID list) 24897on a device with <a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> set to 2489831 or larger,<wbr/> camera framework filters out JPEG sizes smaller than 1080p depending on 24899applications' targetSdkLevel.<wbr/> The camera HAL must still support the smaller JPEG sizes 24900to maintain backward compatibility.<wbr/></p> 24901<p>For LIMITED capability devices 24902(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 24903the HAL only has to list up to the maximum video size 24904supported by the device.<wbr/></p> 24905<p>Regardless of hardware level,<wbr/> every output resolution available for 24906YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 24907<p>This supersedes the following fields,<wbr/> which are now deprecated:</p> 24908<ul> 24909<li>availableFormats</li> 24910<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 24911</ul> 24912 </td> 24913 </tr> 24914 24915 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24916 <!-- end of entry --> 24917 24918 24919 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 24920 <td class="entry_name 24921 " rowspan="3"> 24922 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 24923 </td> 24924 <td class="entry_type"> 24925 <span class="entry_type_name">int64</span> 24926 <span class="entry_type_container">x</span> 24927 24928 <span class="entry_type_array"> 24929 4 x n 24930 </span> 24931 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 24932 24933 24934 <span class="entry_type_hwlevel">[legacy] </span> 24935 24936 24937 24938 24939 </td> <!-- entry_type --> 24940 24941 <td class="entry_description"> 24942 <p>This lists the minimum frame duration for each 24943format/<wbr/>size combination.<wbr/></p> 24944 </td> 24945 24946 <td class="entry_units"> 24947 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 24948 </td> 24949 24950 <td class="entry_range"> 24951 </td> 24952 24953 <td class="entry_hal_version"> 24954 <p>3.<wbr/>2</p> 24955 </td> 24956 24957 <td class="entry_tags"> 24958 <ul class="entry_tags"> 24959 <li><a href="#tag_V1">V1</a></li> 24960 </ul> 24961 </td> 24962 24963 </tr> 24964 <tr class="entries_header"> 24965 <th class="th_details" colspan="6">Details</th> 24966 </tr> 24967 <tr class="entry_cont"> 24968 <td class="entry_details" colspan="6"> 24969 <p>This should correspond to the frame duration when only that 24970stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 24971set to either OFF or FAST.<wbr/></p> 24972<p>When multiple streams are used in a request,<wbr/> the minimum frame 24973duration will be max(individual stream min durations).<wbr/></p> 24974<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 24975<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 24976calculating the max frame rate.<wbr/></p> 24977 </td> 24978 </tr> 24979 24980 24981 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24982 <!-- end of entry --> 24983 24984 24985 <tr class="entry" id="static_android.scaler.availableStallDurations"> 24986 <td class="entry_name 24987 " rowspan="5"> 24988 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 24989 </td> 24990 <td class="entry_type"> 24991 <span class="entry_type_name">int64</span> 24992 <span class="entry_type_container">x</span> 24993 24994 <span class="entry_type_array"> 24995 4 x n 24996 </span> 24997 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 24998 24999 25000 <span class="entry_type_hwlevel">[legacy] </span> 25001 25002 25003 25004 25005 </td> <!-- entry_type --> 25006 25007 <td class="entry_description"> 25008 <p>This lists the maximum stall duration for each 25009output format/<wbr/>size combination.<wbr/></p> 25010 </td> 25011 25012 <td class="entry_units"> 25013 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 25014 </td> 25015 25016 <td class="entry_range"> 25017 </td> 25018 25019 <td class="entry_hal_version"> 25020 <p>3.<wbr/>2</p> 25021 </td> 25022 25023 <td class="entry_tags"> 25024 <ul class="entry_tags"> 25025 <li><a href="#tag_V1">V1</a></li> 25026 </ul> 25027 </td> 25028 25029 </tr> 25030 <tr class="entries_header"> 25031 <th class="th_details" colspan="6">Details</th> 25032 </tr> 25033 <tr class="entry_cont"> 25034 <td class="entry_details" colspan="6"> 25035 <p>A stall duration is how much extra time would get added 25036to the normal minimum frame duration for a repeating request 25037that has streams with non-zero stall.<wbr/></p> 25038<p>For example,<wbr/> consider JPEG captures which have the following 25039characteristics:</p> 25040<ul> 25041<li>JPEG streams act like processed YUV streams in requests for which 25042they are not included; in requests in which they are directly 25043referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 25044JPEG stream requires the underlying YUV data to always be ready for 25045use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 25046frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 25047<li>The JPEG processor can run concurrently to the rest of the camera 25048pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 25049</ul> 25050<p>In other words,<wbr/> using a repeating YUV request would result 25051in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 25052JPEG request is submitted periodically,<wbr/> the frame rate will stay 25053at 30 FPS (as long as we wait for the previous JPEG to return each 25054time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 25055the frame rate will drop from 30 FPS.<wbr/></p> 25056<p>In general,<wbr/> submitting a new request with a non-0 stall time 25057stream will <em>not</em> cause a frame rate drop unless there are still 25058outstanding buffers for that stream from previous requests.<wbr/></p> 25059<p>Submitting a repeating request with streams (call this <code>S</code>) 25060is the same as setting the minimum frame duration from 25061the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 25062the maximum stall duration for <code>S</code>.<wbr/></p> 25063<p>If interleaving requests with and without a stall duration,<wbr/> 25064a request will stall by the maximum of the remaining times 25065for each can-stall stream with outstanding buffers.<wbr/></p> 25066<p>This means that a stalling request will not have an exposure start 25067until the stall has completed.<wbr/></p> 25068<p>This should correspond to the stall duration when only that stream is 25069active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 25070or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 25071effectively results in an indeterminate stall duration for all 25072streams in a request (the regular stall calculation rules are 25073ignored).<wbr/></p> 25074<p>The following formats may always have a stall duration:</p> 25075<ul> 25076<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li> 25077<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li> 25078</ul> 25079<p>The following formats will never have a stall duration:</p> 25080<ul> 25081<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> 25082<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li> 25083<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li> 25084<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></li> 25085</ul> 25086<p>All other formats may or may not have an allowed stall duration on 25087a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 25088for more details.<wbr/></p> 25089<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 25090calculating the max frame rate (absent stalls).<wbr/></p> 25091 </td> 25092 </tr> 25093 25094 <tr class="entries_header"> 25095 <th class="th_details" colspan="6">HAL Implementation Details</th> 25096 </tr> 25097 <tr class="entry_cont"> 25098 <td class="entry_details" colspan="6"> 25099 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 25100(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE 25101and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 25102 </td> 25103 </tr> 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="static_android.scaler.streamConfigurationMap"> 25110 <td class="entry_name 25111 " rowspan="5"> 25112 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map 25113 </td> 25114 <td class="entry_type"> 25115 <span class="entry_type_name">int32</span> 25116 25117 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span> 25118 25119 <span class="entry_type_synthetic">[synthetic] </span> 25120 25121 <span class="entry_type_hwlevel">[legacy] </span> 25122 25123 25124 25125 25126 </td> <!-- entry_type --> 25127 25128 <td class="entry_description"> 25129 <p>The available stream configurations that this 25130camera device supports; also includes the minimum frame durations 25131and the stall durations for each format/<wbr/>size combination.<wbr/></p> 25132 </td> 25133 25134 <td class="entry_units"> 25135 </td> 25136 25137 <td class="entry_range"> 25138 </td> 25139 25140 <td class="entry_hal_version"> 25141 <p>3.<wbr/>2</p> 25142 </td> 25143 25144 <td class="entry_tags"> 25145 </td> 25146 25147 </tr> 25148 <tr class="entries_header"> 25149 <th class="th_details" colspan="6">Details</th> 25150 </tr> 25151 <tr class="entry_cont"> 25152 <td class="entry_details" colspan="6"> 25153 <p>All camera devices will support sensor maximum resolution (defined by 25154<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> 25155<p>For a given use case,<wbr/> the actual maximum supported resolution 25156may be lower than what is listed here,<wbr/> depending on the destination 25157Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 25158the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 25159smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 25160can provide.<wbr/></p> 25161<p>Please reference the documentation for the image data destination to 25162check if it limits the maximum size for image data.<wbr/></p> 25163<p>For applications targeting SDK version older than 31,<wbr/> the following table 25164describes the minimum required output stream configurations based on the 25165hardware level (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 25166<table> 25167<thead> 25168<tr> 25169<th style="text-align: center;">Format</th> 25170<th style="text-align: center;">Size</th> 25171<th style="text-align: center;">Hardware Level</th> 25172<th style="text-align: center;">Notes</th> 25173</tr> 25174</thead> 25175<tbody> 25176<tr> 25177<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 25178<td style="text-align: center;"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td> 25179<td style="text-align: center;">Any</td> 25180<td style="text-align: center;"></td> 25181</tr> 25182<tr> 25183<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 25184<td style="text-align: center;">1920x1080 (1080p)</td> 25185<td style="text-align: center;">Any</td> 25186<td style="text-align: center;">if 1080p <= activeArraySize</td> 25187</tr> 25188<tr> 25189<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 25190<td style="text-align: center;">1280x720 (720p)</td> 25191<td style="text-align: center;">Any</td> 25192<td style="text-align: center;">if 720p <= activeArraySize</td> 25193</tr> 25194<tr> 25195<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 25196<td style="text-align: center;">640x480 (480p)</td> 25197<td style="text-align: center;">Any</td> 25198<td style="text-align: center;">if 480p <= activeArraySize</td> 25199</tr> 25200<tr> 25201<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 25202<td style="text-align: center;">320x240 (240p)</td> 25203<td style="text-align: center;">Any</td> 25204<td style="text-align: center;">if 240p <= activeArraySize</td> 25205</tr> 25206<tr> 25207<td style="text-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> 25208<td style="text-align: center;">all output sizes available for JPEG</td> 25209<td style="text-align: center;">FULL</td> 25210<td style="text-align: center;"></td> 25211</tr> 25212<tr> 25213<td style="text-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> 25214<td style="text-align: center;">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 25215<td style="text-align: center;">LIMITED</td> 25216<td style="text-align: center;"></td> 25217</tr> 25218<tr> 25219<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 25220<td style="text-align: center;">same as YUV_<wbr/>420_<wbr/>888</td> 25221<td style="text-align: center;">Any</td> 25222<td style="text-align: center;"></td> 25223</tr> 25224</tbody> 25225</table> 25226<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device declares to be 25227media performance class 12 or higher by setting 25228<a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/> 25229the primary camera devices (first rear/<wbr/>front camera in the camera ID list) will not 25230support JPEG sizes smaller than 1080p.<wbr/> If the application configures a JPEG stream 25231smaller than 1080p,<wbr/> the camera device will round up the JPEG image size to at least 252321080p.<wbr/> The requirements for IMPLEMENTATION_<wbr/>DEFINED and YUV_<wbr/>420_<wbr/>888 stay the same.<wbr/> 25233This new minimum required output stream configurations are illustrated by the table below:</p> 25234<table> 25235<thead> 25236<tr> 25237<th style="text-align: center;">Format</th> 25238<th style="text-align: center;">Size</th> 25239<th style="text-align: center;">Hardware Level</th> 25240<th style="text-align: center;">Notes</th> 25241</tr> 25242</thead> 25243<tbody> 25244<tr> 25245<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 25246<td style="text-align: center;"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td> 25247<td style="text-align: center;">Any</td> 25248<td style="text-align: center;"></td> 25249</tr> 25250<tr> 25251<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 25252<td style="text-align: center;">1920x1080 (1080p)</td> 25253<td style="text-align: center;">Any</td> 25254<td style="text-align: center;">if 1080p <= activeArraySize</td> 25255</tr> 25256<tr> 25257<td style="text-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> 25258<td style="text-align: center;"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 25259<td style="text-align: center;">FULL</td> 25260<td style="text-align: center;"></td> 25261</tr> 25262<tr> 25263<td style="text-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> 25264<td style="text-align: center;">1920x1080 (1080p)</td> 25265<td style="text-align: center;">FULL</td> 25266<td style="text-align: center;">if 1080p <= activeArraySize</td> 25267</tr> 25268<tr> 25269<td style="text-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> 25270<td style="text-align: center;">1280x720 (720)</td> 25271<td style="text-align: center;">FULL</td> 25272<td style="text-align: center;">if 720p <= activeArraySize</td> 25273</tr> 25274<tr> 25275<td style="text-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> 25276<td style="text-align: center;">640x480 (480p)</td> 25277<td style="text-align: center;">FULL</td> 25278<td style="text-align: center;">if 480p <= activeArraySize</td> 25279</tr> 25280<tr> 25281<td style="text-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> 25282<td style="text-align: center;">320x240 (240p)</td> 25283<td style="text-align: center;">FULL</td> 25284<td style="text-align: center;">if 240p <= activeArraySize</td> 25285</tr> 25286<tr> 25287<td style="text-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> 25288<td style="text-align: center;">all output sizes available for FULL hardware level,<wbr/> up to the maximum video size</td> 25289<td style="text-align: center;">LIMITED</td> 25290<td style="text-align: center;"></td> 25291</tr> 25292<tr> 25293<td style="text-align: center;"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 25294<td style="text-align: center;">same as YUV_<wbr/>420_<wbr/>888</td> 25295<td style="text-align: center;">Any</td> 25296<td style="text-align: center;"></td> 25297</tr> 25298</tbody> 25299</table> 25300<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device doesn't declare 25301to be media performance class 12 or better by setting 25302<a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/> 25303or if the camera device isn't a primary rear/<wbr/>front camera,<wbr/> the minimum required output 25304stream configurations are the same as for applications targeting SDK version older than 2530531.<wbr/></p> 25306<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> and 25307<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-guaranteed-configurations">the table</a> 25308for additional mandatory stream configurations on a per-capability basis.<wbr/></p> 25309<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 25310<ul> 25311<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 25312(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 25313(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/> 25314it does not have to be included in the supported JPEG sizes.<wbr/></li> 25315<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 25316the dimensions being a multiple of 16.<wbr/> 25317Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 25318However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum 25319resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 25320additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 25321if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 25322ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 253233264x2448.<wbr/></li> 25324</ul> 25325<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability on 25326downscaling from larger resolution to smaller ones,<wbr/> and the QCIF resolution can sometimes 25327not be fully supported due to this limitation on devices with high-resolution image 25328sensors.<wbr/> Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other 25329stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/> 25330and capture session creation will fail if it is not.<wbr/></p> 25331 </td> 25332 </tr> 25333 25334 <tr class="entries_header"> 25335 <th class="th_details" colspan="6">HAL Implementation Details</th> 25336 </tr> 25337 <tr class="entry_cont"> 25338 <td class="entry_details" colspan="6"> 25339 <p>Do not set this property directly 25340(it is synthetic and will not be available at the HAL layer); 25341set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> 25342<p>Not all output formats may be supported in a configuration with 25343an input stream of a particular format.<wbr/> For more details,<wbr/> see 25344<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 25345<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 25346of sensor maximum resolution for JPEG formats (regardless of hardware 25347level).<wbr/></p> 25348<p>(The following is a rewording of the above required table):</p> 25349<p>The HAL must include sensor maximum resolution (defined by 25350<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 25351<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/> 25352the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 25353here as output streams.<wbr/></p> 25354<p>It must also include each below resolution if it is smaller than or 25355equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 25356formats),<wbr/> as output streams:</p> 25357<ul> 25358<li>240p (320 x 240)</li> 25359<li>480p (640 x 480)</li> 25360<li>720p (1280 x 720)</li> 25361<li>1080p (1920 x 1080)</li> 25362</ul> 25363<p>Note that for Performance Class 12 or higher primary cameras (first rear/<wbr/>front facing 25364camera in the camera ID list),<wbr/> camera framework filters out JPEG sizes smaller than 253651080p depending on applications' targetSdkLevel.<wbr/> The camera HAL must still support the 25366smaller JPEG sizes to maintain backward compatibility.<wbr/></p> 25367<p>For LIMITED capability devices 25368(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 25369the HAL only has to list up to the maximum video size 25370supported by the device.<wbr/></p> 25371<p>Regardless of hardware level,<wbr/> every output resolution available for 25372YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 25373<p>This supersedes the following fields,<wbr/> which are now deprecated:</p> 25374<ul> 25375<li>availableFormats</li> 25376<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 25377</ul> 25378 </td> 25379 </tr> 25380 25381 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25382 <!-- end of entry --> 25383 25384 25385 <tr class="entry" id="static_android.scaler.croppingType"> 25386 <td class="entry_name 25387 " rowspan="5"> 25388 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type 25389 </td> 25390 <td class="entry_type"> 25391 <span class="entry_type_name entry_type_name_enum">byte</span> 25392 25393 <span class="entry_type_visibility"> [public]</span> 25394 25395 25396 <span class="entry_type_hwlevel">[legacy] </span> 25397 25398 25399 25400 <ul class="entry_type_enum"> 25401 <li> 25402 <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span> 25403 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span> 25404 </li> 25405 <li> 25406 <span class="entry_type_enum_name">FREEFORM (v3.2)</span> 25407 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span> 25408 </li> 25409 </ul> 25410 25411 </td> <!-- entry_type --> 25412 25413 <td class="entry_description"> 25414 <p>The crop type that this camera device supports.<wbr/></p> 25415 </td> 25416 25417 <td class="entry_units"> 25418 </td> 25419 25420 <td class="entry_range"> 25421 </td> 25422 25423 <td class="entry_hal_version"> 25424 <p>3.<wbr/>2</p> 25425 </td> 25426 25427 <td class="entry_tags"> 25428 </td> 25429 25430 </tr> 25431 <tr class="entries_header"> 25432 <th class="th_details" colspan="6">Details</th> 25433 </tr> 25434 <tr class="entry_cont"> 25435 <td class="entry_details" colspan="6"> 25436 <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 25437device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 25438crop 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>) 25439and keep the crop region width and height unchanged.<wbr/> The camera device will return the 25440final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 25441<p>Camera devices that support FREEFORM cropping will support any crop region that 25442is inside of the active array.<wbr/> The camera device will apply the same crop region and 25443return 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> 25444<p>Starting from API level 30,<wbr/></p> 25445<ul> 25446<li>If the camera device supports FREEFORM cropping,<wbr/> in order to do FREEFORM cropping,<wbr/> the 25447application must set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0,<wbr/> and use <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> 25448for zoom.<wbr/></li> 25449<li>To do CENTER_<wbr/>ONLY zoom,<wbr/> the application has below 2 options:<ol> 25450<li>Set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0; adjust zoom by <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li> 25451<li>Adjust zoom by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>; use <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to crop 25452the field of view vertically (letterboxing) or horizontally (pillarboxing),<wbr/> but not 25453windowboxing.<wbr/></li> 25454</ol> 25455</li> 25456<li>Setting <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to values different than 1.<wbr/>0 and 25457<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be windowboxing at the same time are not supported.<wbr/> In this 25458case,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be the active 25459array.<wbr/></li> 25460</ul> 25461<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p> 25462 </td> 25463 </tr> 25464 25465 <tr class="entries_header"> 25466 <th class="th_details" colspan="6">HAL Implementation Details</th> 25467 </tr> 25468 <tr class="entry_cont"> 25469 <td class="entry_details" colspan="6"> 25470 <p>If the HAL supports <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> this tag must be set to CENTER_<wbr/>ONLY.<wbr/></p> 25471 </td> 25472 </tr> 25473 25474 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25475 <!-- end of entry --> 25476 25477 25478 <tr class="entry" id="static_android.scaler.availableRecommendedStreamConfigurations"> 25479 <td class="entry_name 25480 " rowspan="5"> 25481 android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations 25482 </td> 25483 <td class="entry_type"> 25484 <span class="entry_type_name entry_type_name_enum">int32</span> 25485 <span class="entry_type_container">x</span> 25486 25487 <span class="entry_type_array"> 25488 n x 5 25489 </span> 25490 <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span> 25491 25492 25493 25494 25495 25496 <ul class="entry_type_enum"> 25497 <li> 25498 <span class="entry_type_enum_name">PREVIEW (v3.4)</span> 25499 <span class="entry_type_enum_value">0x0</span> 25500 <span class="entry_type_enum_notes"><p>Preview must only include non-stalling processed stream configurations with 25501output formats like 25502<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a>,<wbr/> 25503<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a>,<wbr/> etc.<wbr/></p></span> 25504 </li> 25505 <li> 25506 <span class="entry_type_enum_name">RECORD (v3.4)</span> 25507 <span class="entry_type_enum_value">0x1</span> 25508 <span class="entry_type_enum_notes"><p>Video record must include stream configurations that match the advertised 25509supported media profiles <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> with 25510IMPLEMENTATION_<wbr/>DEFINED format.<wbr/></p></span> 25511 </li> 25512 <li> 25513 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.4)</span> 25514 <span class="entry_type_enum_value">0x2</span> 25515 <span class="entry_type_enum_notes"><p>Video snapshot must include stream configurations at least as big as 25516the maximum RECORD resolutions and only with 25517<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/> 25518Additionally the configurations shouldn't cause preview glitches and also be able to 25519run at 30 fps.<wbr/></p></span> 25520 </li> 25521 <li> 25522 <span class="entry_type_enum_name">SNAPSHOT (v3.4)</span> 25523 <span class="entry_type_enum_value">0x3</span> 25524 <span class="entry_type_enum_notes"><p>Recommended snapshot stream configurations must include at least one with 25525size close to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> and 25526<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/> 25527Taking into account restrictions on aspect ratio,<wbr/> alignment etc.<wbr/> the area of the 25528maximum suggested size shouldn’t be less than 97% of the sensor array size area.<wbr/></p></span> 25529 </li> 25530 <li> 25531 <span class="entry_type_enum_name">ZSL (v3.4)</span> 25532 <span class="entry_type_enum_value">0x4</span> 25533 <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended input stream configurations must only be advertised with 25534ZSL along with other processed and/<wbr/>or stalling output formats.<wbr/></p></span> 25535 </li> 25536 <li> 25537 <span class="entry_type_enum_name">RAW (v3.4)</span> 25538 <span class="entry_type_enum_value">0x5</span> 25539 <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended raw stream configurations must only include RAW based 25540output formats.<wbr/></p></span> 25541 </li> 25542 <li> 25543 <span class="entry_type_enum_name">LOW_LATENCY_SNAPSHOT (v3.4)</span> 25544 <span class="entry_type_enum_value">0x6</span> 25545 <span class="entry_type_enum_notes"><p>If supported,<wbr/> the recommended low latency stream configurations must have 25546end-to-end latency that does not exceed 200 ms.<wbr/> under standard operating conditions 25547(reasonable light levels,<wbr/> not loaded system) and using template 25548TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE.<wbr/> This is primarily for listing configurations for the 25549<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a> 25550however other supported output formats can be added as well.<wbr/></p></span> 25551 </li> 25552 <li> 25553 <span class="entry_type_enum_name">PUBLIC_END (v3.4)</span> 25554 <span class="entry_type_enum_value">0x7</span> 25555 </li> 25556 <li> 25557 <span class="entry_type_enum_name">10BIT_OUTPUT (v3.8)</span> 25558 <span class="entry_type_enum_value">0x8</span> 25559 <span class="entry_type_enum_notes"><p>If supported,<wbr/> the recommended 10-bit output stream configurations must include 25560a subset of the advertised <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YCBCR_P010">ImageFormat#YCBCR_<wbr/>P010</a> and 25561<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> outputs that are optimized for power 25562and performance when registered along with a supported 10-bit dynamic range profile.<wbr/> 25563see android.<wbr/>hardware.<wbr/>camera2.<wbr/>params.<wbr/>Output<wbr/>Configuration#set<wbr/>Dynamic<wbr/>Range<wbr/>Profile for 25564details.<wbr/></p></span> 25565 </li> 25566 <li> 25567 <span class="entry_type_enum_name">PUBLIC_END_3_8 (v3.8)</span> 25568 <span class="entry_type_enum_value">0x9</span> 25569 </li> 25570 <li> 25571 <span class="entry_type_enum_name">VENDOR_START (v3.4)</span> 25572 <span class="entry_type_enum_value">0x18</span> 25573 <span class="entry_type_enum_notes"><p>Vendor defined use cases.<wbr/> These depend on the vendor implementation.<wbr/></p></span> 25574 </li> 25575 </ul> 25576 25577 </td> <!-- entry_type --> 25578 25579 <td class="entry_description"> 25580 <p>Recommended stream configurations for common client use cases.<wbr/></p> 25581 </td> 25582 25583 <td class="entry_units"> 25584 </td> 25585 25586 <td class="entry_range"> 25587 </td> 25588 25589 <td class="entry_hal_version"> 25590 <p>3.<wbr/>4</p> 25591 </td> 25592 25593 <td class="entry_tags"> 25594 </td> 25595 25596 </tr> 25597 <tr class="entries_header"> 25598 <th class="th_details" colspan="6">Details</th> 25599 </tr> 25600 <tr class="entry_cont"> 25601 <td class="entry_details" colspan="6"> 25602 <p>Optional subset of the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> that contains 25603similar tuples listed as 25604(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/> 25605Camera devices will be able to suggest particular stream configurations which are 25606power and performance efficient for specific use cases.<wbr/> For more information about 25607retrieving the suggestions see 25608<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p> 25609 </td> 25610 </tr> 25611 25612 <tr class="entries_header"> 25613 <th class="th_details" colspan="6">HAL Implementation Details</th> 25614 </tr> 25615 <tr class="entry_cont"> 25616 <td class="entry_details" colspan="6"> 25617 <p>There are some requirements that need to be considered regarding the usecases and the 25618suggested configurations:</p> 25619<ul> 25620<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 25621stream configurations must be present for all mandatory usecases PREVIEW,<wbr/> 25622SNAPSHOT,<wbr/> RECORD,<wbr/> VIDEO_<wbr/>SNAPSHOT.<wbr/> ZSL and RAW are 25623required depending on device capabilities see <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></li> 25624<li>Non-existing usecases and non-vendor usecases within the range 25625(RAW : VENDOR_<wbr/>START] are prohibited as well as stream configurations not 25626present in the exhaustive <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> list.<wbr/></li> 25627</ul> 25628<p>For example,<wbr/> in case the camera device supports only 4K and 1080p and both resolutions are 25629recommended for the mandatory usecases except preview which can run efficiently only 25630on 1080p.<wbr/> The array may look like this:</p> 25631<p>[3840,<wbr/> 2160,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 25632 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/> 25633 (1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/> 25634 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/> 25635 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT),<wbr/></p> 25636<p>1920,<wbr/> 1080,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 25637 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/> 25638 (1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>PREVIEW |<wbr/> 25639 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/> 25640 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/> 25641 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT)]</p> 25642 </td> 25643 </tr> 25644 25645 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25646 <!-- end of entry --> 25647 25648 25649 <tr class="entry" id="static_android.scaler.availableRecommendedInputOutputFormatsMap"> 25650 <td class="entry_name 25651 " rowspan="5"> 25652 android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 25653 </td> 25654 <td class="entry_type"> 25655 <span class="entry_type_name">int32</span> 25656 25657 <span class="entry_type_visibility"> [ndk_public as reprocessFormatsMap]</span> 25658 25659 25660 25661 25662 25663 25664 </td> <!-- entry_type --> 25665 25666 <td class="entry_description"> 25667 <p>Recommended mappings of image formats that are supported by this 25668camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 25669 </td> 25670 25671 <td class="entry_units"> 25672 </td> 25673 25674 <td class="entry_range"> 25675 </td> 25676 25677 <td class="entry_hal_version"> 25678 <p>3.<wbr/>4</p> 25679 </td> 25680 25681 <td class="entry_tags"> 25682 <ul class="entry_tags"> 25683 <li><a href="#tag_REPROC">REPROC</a></li> 25684 </ul> 25685 </td> 25686 25687 </tr> 25688 <tr class="entries_header"> 25689 <th class="th_details" colspan="6">Details</th> 25690 </tr> 25691 <tr class="entry_cont"> 25692 <td class="entry_details" colspan="6"> 25693 <p>This is a recommended subset of the complete list of mappings found in 25694<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/> 25695The list however doesn't need to contain all available and supported mappings.<wbr/> Instead of 25696this developers must list only recommended and efficient entries.<wbr/> 25697If set,<wbr/> the information will be available in the ZERO_<wbr/>SHUTTER_<wbr/>LAG recommended stream 25698configuration see 25699<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p> 25700 </td> 25701 </tr> 25702 25703 <tr class="entries_header"> 25704 <th class="th_details" colspan="6">HAL Implementation Details</th> 25705 </tr> 25706 <tr class="entry_cont"> 25707 <td class="entry_details" colspan="6"> 25708 <p>For a code sample of the required data encoding please check 25709<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 25710 </td> 25711 </tr> 25712 25713 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25714 <!-- end of entry --> 25715 25716 25717 <tr class="entry" id="static_android.scaler.mandatoryStreamCombinations"> 25718 <td class="entry_name 25719 " rowspan="5"> 25720 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Stream<wbr/>Combinations 25721 </td> 25722 <td class="entry_type"> 25723 <span class="entry_type_name">int32</span> 25724 <span class="entry_type_container">x</span> 25725 25726 <span class="entry_type_array"> 25727 n 25728 </span> 25729 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span> 25730 25731 <span class="entry_type_synthetic">[synthetic] </span> 25732 25733 <span class="entry_type_hwlevel">[limited] </span> 25734 25735 25736 25737 25738 </td> <!-- entry_type --> 25739 25740 <td class="entry_description"> 25741 <p>An array of mandatory stream combinations generated according to the camera device 25742<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> 25743and <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/> 25744This is an app-readable conversion of the mandatory stream combination 25745<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-guaranteed-configurations">tables</a>.<wbr/></p> 25746 </td> 25747 25748 <td class="entry_units"> 25749 </td> 25750 25751 <td class="entry_range"> 25752 </td> 25753 25754 <td class="entry_hal_version"> 25755 <p>3.<wbr/>2</p> 25756 </td> 25757 25758 <td class="entry_tags"> 25759 </td> 25760 25761 </tr> 25762 <tr class="entries_header"> 25763 <th class="th_details" colspan="6">Details</th> 25764 </tr> 25765 <tr class="entry_cont"> 25766 <td class="entry_details" colspan="6"> 25767 <p>The array of 25768<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is 25769generated according to the documented 25770<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-guaranteed-configurations">guideline</a>.<wbr/> 25771based on specific device level and capabilities.<wbr/> 25772Clients can use the array as a quick reference to find an appropriate camera stream 25773combination.<wbr/> 25774As per documentation,<wbr/> the stream combinations with given PREVIEW,<wbr/> RECORD and 25775MAXIMUM resolutions and anything smaller from the list given by 25776<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> are 25777guaranteed to work.<wbr/> 25778For a physical camera not independently exposed in 25779<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>,<wbr/> the mandatory stream 25780combinations for that physical camera Id are also generated,<wbr/> so that the application can 25781configure them as physical streams via the logical camera.<wbr/> 25782The mandatory stream combination array will be {@code null} in case the device is not 25783backward compatible.<wbr/></p> 25784 </td> 25785 </tr> 25786 25787 <tr class="entries_header"> 25788 <th class="th_details" colspan="6">HAL Implementation Details</th> 25789 </tr> 25790 <tr class="entry_cont"> 25791 <td class="entry_details" colspan="6"> 25792 <p>Do not set this property directly 25793(it is synthetic and will not be available at the HAL layer).<wbr/></p> 25794 </td> 25795 </tr> 25796 25797 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25798 <!-- end of entry --> 25799 25800 25801 <tr class="entry" id="static_android.scaler.mandatoryConcurrentStreamCombinations"> 25802 <td class="entry_name 25803 " rowspan="5"> 25804 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Concurrent<wbr/>Stream<wbr/>Combinations 25805 </td> 25806 <td class="entry_type"> 25807 <span class="entry_type_name">int32</span> 25808 <span class="entry_type_container">x</span> 25809 25810 <span class="entry_type_array"> 25811 n 25812 </span> 25813 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span> 25814 25815 <span class="entry_type_synthetic">[synthetic] </span> 25816 25817 25818 25819 25820 25821 </td> <!-- entry_type --> 25822 25823 <td class="entry_description"> 25824 <p>An array of mandatory concurrent stream combinations.<wbr/> 25825This is an app-readable conversion of the concurrent mandatory stream combination 25826<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#concurrent-stream-guaranteed-configurations">tables</a>.<wbr/></p> 25827 </td> 25828 25829 <td class="entry_units"> 25830 </td> 25831 25832 <td class="entry_range"> 25833 </td> 25834 25835 <td class="entry_hal_version"> 25836 <p>3.<wbr/>2</p> 25837 </td> 25838 25839 <td class="entry_tags"> 25840 </td> 25841 25842 </tr> 25843 <tr class="entries_header"> 25844 <th class="th_details" colspan="6">Details</th> 25845 </tr> 25846 <tr class="entry_cont"> 25847 <td class="entry_details" colspan="6"> 25848 <p>The array of 25849<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is 25850generated according to the documented 25851<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#concurrent-stream-guaranteed-configurations">guideline</a> 25852for each device which has its Id present in the set returned by 25853<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getConcurrentCameraIds">CameraManager#getConcurrentCameraIds</a>.<wbr/> 25854Clients can use the array as a quick reference to find an appropriate camera stream 25855combination.<wbr/> 25856The mandatory stream combination array will be {@code null} in case the device is not a 25857part of at least one set of combinations returned by 25858<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getConcurrentCameraIds">CameraManager#getConcurrentCameraIds</a>.<wbr/></p> 25859 </td> 25860 </tr> 25861 25862 <tr class="entries_header"> 25863 <th class="th_details" colspan="6">HAL Implementation Details</th> 25864 </tr> 25865 <tr class="entry_cont"> 25866 <td class="entry_details" colspan="6"> 25867 <p>Do not set this property directly 25868(it is synthetic and will not be available at the HAL layer).<wbr/></p> 25869 </td> 25870 </tr> 25871 25872 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25873 <!-- end of entry --> 25874 25875 25876 <tr class="entry" id="static_android.scaler.availableRotateAndCropModes"> 25877 <td class="entry_name 25878 " rowspan="3"> 25879 android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes 25880 </td> 25881 <td class="entry_type"> 25882 <span class="entry_type_name">byte</span> 25883 <span class="entry_type_container">x</span> 25884 25885 <span class="entry_type_array"> 25886 n 25887 </span> 25888 <span class="entry_type_visibility"> [public as enumList]</span> 25889 25890 25891 25892 25893 <div class="entry_type_notes">list of enums</div> 25894 25895 25896 </td> <!-- entry_type --> 25897 25898 <td class="entry_description"> 25899 <p>List of rotate-and-crop modes for <a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a> that are supported by this camera device.<wbr/></p> 25900 </td> 25901 25902 <td class="entry_units"> 25903 </td> 25904 25905 <td class="entry_range"> 25906 <p>Any value listed in <a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a></p> 25907 </td> 25908 25909 <td class="entry_hal_version"> 25910 <p>3.<wbr/>5</p> 25911 </td> 25912 25913 <td class="entry_tags"> 25914 </td> 25915 25916 </tr> 25917 <tr class="entries_header"> 25918 <th class="th_details" colspan="6">Details</th> 25919 </tr> 25920 <tr class="entry_cont"> 25921 <td class="entry_details" colspan="6"> 25922 <p>This entry lists the valid modes for <a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a> for this camera device.<wbr/></p> 25923<p>Starting with API level 30,<wbr/> all devices will list at least <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/> 25924Devices with support for rotate-and-crop will additionally list at least 25925<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> and <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code>.<wbr/></p> 25926 </td> 25927 </tr> 25928 25929 25930 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25931 <!-- end of entry --> 25932 25933 25934 <tr class="entry" id="static_android.scaler.defaultSecureImageSize"> 25935 <td class="entry_name 25936 " rowspan="3"> 25937 android.<wbr/>scaler.<wbr/>default<wbr/>Secure<wbr/>Image<wbr/>Size 25938 </td> 25939 <td class="entry_type"> 25940 <span class="entry_type_name">int32</span> 25941 <span class="entry_type_container">x</span> 25942 25943 <span class="entry_type_array"> 25944 2 25945 </span> 25946 <span class="entry_type_visibility"> [public as size]</span> 25947 25948 25949 25950 25951 <div class="entry_type_notes">width/<wbr/>height for the default secure image data size</div> 25952 25953 25954 </td> <!-- entry_type --> 25955 25956 <td class="entry_description"> 25957 <p>Default YUV/<wbr/>PRIVATE size to use for requesting secure image buffers.<wbr/></p> 25958 </td> 25959 25960 <td class="entry_units"> 25961 Pixels 25962 </td> 25963 25964 <td class="entry_range"> 25965 </td> 25966 25967 <td class="entry_hal_version"> 25968 <p>3.<wbr/>6</p> 25969 </td> 25970 25971 <td class="entry_tags"> 25972 </td> 25973 25974 </tr> 25975 <tr class="entries_header"> 25976 <th class="th_details" colspan="6">Details</th> 25977 </tr> 25978 <tr class="entry_cont"> 25979 <td class="entry_details" colspan="6"> 25980 <p>This entry lists the default size supported in the secure camera mode.<wbr/> This entry is 25981optional on devices support the SECURE_<wbr/>IMAGE_<wbr/>DATA capability.<wbr/> This entry will be null 25982if the camera device does not list SECURE_<wbr/>IMAGE_<wbr/>DATA capability.<wbr/></p> 25983<p>When the key is present,<wbr/> only a PRIVATE/<wbr/>YUV output of the specified size is guaranteed 25984to be supported by the camera HAL in the secure camera mode.<wbr/> Any other format or 25985resolutions might not be supported.<wbr/> Use 25986<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a> 25987API to query if a secure session configuration is supported if the device supports this 25988API.<wbr/></p> 25989<p>If this key returns null on a device with SECURE_<wbr/>IMAGE_<wbr/>DATA capability,<wbr/> the application 25990can assume all output sizes listed in the 25991<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a> 25992are supported.<wbr/></p> 25993 </td> 25994 </tr> 25995 25996 25997 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25998 <!-- end of entry --> 25999 26000 26001 <tr class="entry" id="static_android.scaler.physicalCameraMultiResolutionStreamConfigurations"> 26002 <td class="entry_name 26003 " rowspan="5"> 26004 android.<wbr/>scaler.<wbr/>physical<wbr/>Camera<wbr/>Multi<wbr/>Resolution<wbr/>Stream<wbr/>Configurations 26005 </td> 26006 <td class="entry_type"> 26007 <span class="entry_type_name entry_type_name_enum">int32</span> 26008 <span class="entry_type_container">x</span> 26009 26010 <span class="entry_type_array"> 26011 n x 4 26012 </span> 26013 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 26014 26015 26016 <span class="entry_type_hwlevel">[limited] </span> 26017 26018 26019 26020 <ul class="entry_type_enum"> 26021 <li> 26022 <span class="entry_type_enum_name">OUTPUT (v3.6)</span> 26023 </li> 26024 <li> 26025 <span class="entry_type_enum_name">INPUT (v3.6)</span> 26026 </li> 26027 </ul> 26028 26029 </td> <!-- entry_type --> 26030 26031 <td class="entry_description"> 26032 <p>The available multi-resolution stream configurations that this 26033physical camera device supports 26034(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 26035 </td> 26036 26037 <td class="entry_units"> 26038 </td> 26039 26040 <td class="entry_range"> 26041 </td> 26042 26043 <td class="entry_hal_version"> 26044 <p>3.<wbr/>6</p> 26045 </td> 26046 26047 <td class="entry_tags"> 26048 </td> 26049 26050 </tr> 26051 <tr class="entries_header"> 26052 <th class="th_details" colspan="6">Details</th> 26053 </tr> 26054 <tr class="entry_cont"> 26055 <td class="entry_details" colspan="6"> 26056 <p>This list contains a subset of the parent logical camera's multi-resolution stream 26057configurations which belong to this physical camera,<wbr/> and it will advertise and will only 26058advertise the maximum supported resolutions for a particular format.<wbr/></p> 26059<p>If this camera device isn't a physical camera device constituting a logical camera,<wbr/> 26060but a standalone <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 26061camera,<wbr/> this field represents the multi-resolution input/<wbr/>output stream configurations of 26062default mode and max resolution modes.<wbr/> The sizes will be the maximum resolution of a 26063particular format for default mode and max resolution mode.<wbr/></p> 26064<p>This field will only be advertised if the device is a physical camera of a 26065logical multi-camera device or an ultra high resolution sensor camera.<wbr/> For a logical 26066multi-camera,<wbr/> the camera API will derive the logical camera’s multi-resolution stream 26067configurations from all physical cameras.<wbr/> For an ultra high resolution sensor camera,<wbr/> this 26068is used directly as the camera’s multi-resolution stream configurations.<wbr/></p> 26069 </td> 26070 </tr> 26071 26072 <tr class="entries_header"> 26073 <th class="th_details" colspan="6">HAL Implementation Details</th> 26074 </tr> 26075 <tr class="entry_cont"> 26076 <td class="entry_details" colspan="6"> 26077 <p>If this field contains input stream configurations,<wbr/> and the camera device is a physical 26078camera (not a standalone ultra-high resolution camera),<wbr/> the 26079<a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id</a> tag must be set to the physical camera Id in 26080the physical camera result metadata.<wbr/> This is to make sure during multi-resolution 26081reprocessing,<wbr/> the camera HAL is notified of which physical camera the reprocessing 26082request comes from.<wbr/></p> 26083 </td> 26084 </tr> 26085 26086 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26087 <!-- end of entry --> 26088 26089 26090 <tr class="entry" id="static_android.scaler.multiResolutionStreamConfigurationMap"> 26091 <td class="entry_name 26092 " rowspan="5"> 26093 android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map 26094 </td> 26095 <td class="entry_type"> 26096 <span class="entry_type_name">int32</span> 26097 26098 <span class="entry_type_visibility"> [java_public as multiResolutionStreamConfigurationMap]</span> 26099 26100 <span class="entry_type_synthetic">[synthetic] </span> 26101 26102 26103 26104 26105 26106 </td> <!-- entry_type --> 26107 26108 <td class="entry_description"> 26109 <p>The multi-resolution stream configurations supported by this logical camera 26110or ultra high resolution sensor camera device.<wbr/></p> 26111 </td> 26112 26113 <td class="entry_units"> 26114 </td> 26115 26116 <td class="entry_range"> 26117 </td> 26118 26119 <td class="entry_hal_version"> 26120 <p>3.<wbr/>2</p> 26121 </td> 26122 26123 <td class="entry_tags"> 26124 </td> 26125 26126 </tr> 26127 <tr class="entries_header"> 26128 <th class="th_details" colspan="6">Details</th> 26129 </tr> 26130 <tr class="entry_cont"> 26131 <td class="entry_details" colspan="6"> 26132 <p>Multi-resolution streams can be used by a LOGICAL_<wbr/>MULTI_<wbr/>CAMERA or an 26133ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR camera where the images sent or received can vary in 26134resolution per frame.<wbr/> This is useful in cases where the camera device's effective full 26135resolution changes depending on factors such as the current zoom level,<wbr/> lighting 26136condition,<wbr/> focus distance,<wbr/> or pixel mode.<wbr/></p> 26137<ul> 26138<li>For a logical multi-camera implementing optical zoom,<wbr/> at different zoom level,<wbr/> a 26139different physical camera may be active,<wbr/> resulting in different full-resolution image 26140sizes.<wbr/></li> 26141<li>For an ultra high resolution camera,<wbr/> depending on whether the camera operates in default 26142mode,<wbr/> or maximum resolution mode,<wbr/> the output full-size images may be of either binned 26143resolution or maximum resolution.<wbr/></li> 26144</ul> 26145<p>To use multi-resolution output streams,<wbr/> the supported formats can be queried by <a href="https://developer.android.com/reference/android/hardware/camera2/params/MultiResolutionStreamConfigurationMap.html#getOutputFormats">MultiResolutionStreamConfigurationMap#getOutputFormats</a>.<wbr/> 26146A <a href="https://developer.android.com/reference/android/hardware/camera2/MultiResolutionImageReader.html">MultiResolutionImageReader</a> can then be created for a 26147supported format with the MultiResolutionStreamInfo group queried by <a href="https://developer.android.com/reference/android/hardware/camera2/params/MultiResolutionStreamConfigurationMap.html#getOutputInfo">MultiResolutionStreamConfigurationMap#getOutputInfo</a>.<wbr/></p> 26148<p>If a camera device supports multi-resolution output streams for a particular format,<wbr/> for 26149each of its mandatory stream combinations,<wbr/> the camera device will support using a 26150MultiResolutionImageReader for the MAXIMUM stream of supported formats.<wbr/> Refer to 26151<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-additional-guaranteed-combinations-with-multiresolutionoutputs">the table</a> 26152for additional details.<wbr/></p> 26153<p>To use multi-resolution input streams,<wbr/> the supported formats can be queried by <a href="https://developer.android.com/reference/android/hardware/camera2/params/MultiResolutionStreamConfigurationMap.html#getInputFormats">MultiResolutionStreamConfigurationMap#getInputFormats</a>.<wbr/> 26154A reprocessable CameraCaptureSession can then be created using an <a href="https://developer.android.com/reference/android/hardware/camera2/params/InputConfiguration.html">InputConfiguration</a> constructed with 26155the input MultiResolutionStreamInfo group,<wbr/> queried by <a href="https://developer.android.com/reference/android/hardware/camera2/params/MultiResolutionStreamConfigurationMap.html#getInputInfo">MultiResolutionStreamConfigurationMap#getInputInfo</a>.<wbr/></p> 26156<p>If a camera device supports multi-resolution {@code YUV} input and multi-resolution 26157{@code YUV} output,<wbr/> or multi-resolution {@code PRIVATE} input and multi-resolution 26158{@code PRIVATE} output,<wbr/> {@code JPEG} and {@code YUV} are guaranteed to be supported 26159multi-resolution output stream formats.<wbr/> Refer to 26160<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-additional-guaranteed-combinations-with-multiresolutionoutputs">the table</a> 26161for details about the additional mandatory stream combinations in this case.<wbr/></p> 26162 </td> 26163 </tr> 26164 26165 <tr class="entries_header"> 26166 <th class="th_details" colspan="6">HAL Implementation Details</th> 26167 </tr> 26168 <tr class="entry_cont"> 26169 <td class="entry_details" colspan="6"> 26170 <p>Do not set this property directly 26171(it is synthetic and will not be available at the HAL layer).<wbr/></p> 26172 </td> 26173 </tr> 26174 26175 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26176 <!-- end of entry --> 26177 26178 26179 <tr class="entry" id="static_android.scaler.availableStreamConfigurationsMaximumResolution"> 26180 <td class="entry_name 26181 " rowspan="5"> 26182 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution 26183 </td> 26184 <td class="entry_type"> 26185 <span class="entry_type_name entry_type_name_enum">int32</span> 26186 <span class="entry_type_container">x</span> 26187 26188 <span class="entry_type_array"> 26189 n x 4 26190 </span> 26191 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 26192 26193 26194 26195 26196 26197 <ul class="entry_type_enum"> 26198 <li> 26199 <span class="entry_type_enum_name">OUTPUT (v3.6)</span> 26200 </li> 26201 <li> 26202 <span class="entry_type_enum_name">INPUT (v3.6)</span> 26203 </li> 26204 </ul> 26205 26206 </td> <!-- entry_type --> 26207 26208 <td class="entry_description"> 26209 <p>The available stream configurations that this 26210camera device supports (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream) for a 26211CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to 26212<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 26213 </td> 26214 26215 <td class="entry_units"> 26216 </td> 26217 26218 <td class="entry_range"> 26219 </td> 26220 26221 <td class="entry_hal_version"> 26222 <p>3.<wbr/>6</p> 26223 </td> 26224 26225 <td class="entry_tags"> 26226 </td> 26227 26228 </tr> 26229 <tr class="entries_header"> 26230 <th class="th_details" colspan="6">Details</th> 26231 </tr> 26232 <tr class="entry_cont"> 26233 <td class="entry_details" colspan="6"> 26234 <p>Analogous to <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>,<wbr/> for configurations 26235which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 26236<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 26237<p>Not all output formats may be supported in a configuration with 26238an input stream of a particular format.<wbr/> For more details,<wbr/> see 26239<a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></p> 26240 </td> 26241 </tr> 26242 26243 <tr class="entries_header"> 26244 <th class="th_details" colspan="6">HAL Implementation Details</th> 26245 </tr> 26246 <tr class="entry_cont"> 26247 <td class="entry_details" colspan="6"> 26248 <p>Refer to hal_<wbr/>details for <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p> 26249 </td> 26250 </tr> 26251 26252 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26253 <!-- end of entry --> 26254 26255 26256 <tr class="entry" id="static_android.scaler.availableMinFrameDurationsMaximumResolution"> 26257 <td class="entry_name 26258 " rowspan="3"> 26259 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 26260 </td> 26261 <td class="entry_type"> 26262 <span class="entry_type_name">int64</span> 26263 <span class="entry_type_container">x</span> 26264 26265 <span class="entry_type_array"> 26266 4 x n 26267 </span> 26268 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 26269 26270 26271 26272 26273 26274 26275 </td> <!-- entry_type --> 26276 26277 <td class="entry_description"> 26278 <p>This lists the minimum frame duration for each 26279format/<wbr/>size combination when the camera device is sent a CaptureRequest with 26280<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to 26281<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 26282 </td> 26283 26284 <td class="entry_units"> 26285 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 26286 </td> 26287 26288 <td class="entry_range"> 26289 </td> 26290 26291 <td class="entry_hal_version"> 26292 <p>3.<wbr/>6</p> 26293 </td> 26294 26295 <td class="entry_tags"> 26296 </td> 26297 26298 </tr> 26299 <tr class="entries_header"> 26300 <th class="th_details" colspan="6">Details</th> 26301 </tr> 26302 <tr class="entry_cont"> 26303 <td class="entry_details" colspan="6"> 26304 <p>Analogous to <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations 26305which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 26306<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 26307<p>When multiple streams are used in a request (if supported,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> 26308is set to 26309<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>),<wbr/> the 26310minimum frame duration will be max(individual stream min durations).<wbr/></p> 26311<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 26312<a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution</a> for more details about 26313calculating the max frame rate.<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="static_android.scaler.availableStallDurationsMaximumResolution"> 26323 <td class="entry_name 26324 " rowspan="5"> 26325 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 26326 </td> 26327 <td class="entry_type"> 26328 <span class="entry_type_name">int64</span> 26329 <span class="entry_type_container">x</span> 26330 26331 <span class="entry_type_array"> 26332 4 x n 26333 </span> 26334 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 26335 26336 26337 26338 26339 26340 26341 </td> <!-- entry_type --> 26342 26343 <td class="entry_description"> 26344 <p>This lists the maximum stall duration for each 26345output format/<wbr/>size combination when CaptureRequests are submitted with 26346<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to 26347<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a></p> 26348 </td> 26349 26350 <td class="entry_units"> 26351 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 26352 </td> 26353 26354 <td class="entry_range"> 26355 </td> 26356 26357 <td class="entry_hal_version"> 26358 <p>3.<wbr/>6</p> 26359 </td> 26360 26361 <td class="entry_tags"> 26362 </td> 26363 26364 </tr> 26365 <tr class="entries_header"> 26366 <th class="th_details" colspan="6">Details</th> 26367 </tr> 26368 <tr class="entry_cont"> 26369 <td class="entry_details" colspan="6"> 26370 <p>Analogous to <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations 26371which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 26372<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 26373 </td> 26374 </tr> 26375 26376 <tr class="entries_header"> 26377 <th class="th_details" colspan="6">HAL Implementation Details</th> 26378 </tr> 26379 <tr class="entry_cont"> 26380 <td class="entry_details" colspan="6"> 26381 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 26382(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE 26383and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 26384 </td> 26385 </tr> 26386 26387 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26388 <!-- end of entry --> 26389 26390 26391 <tr class="entry" id="static_android.scaler.streamConfigurationMapMaximumResolution"> 26392 <td class="entry_name 26393 " rowspan="5"> 26394 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution 26395 </td> 26396 <td class="entry_type"> 26397 <span class="entry_type_name">int32</span> 26398 26399 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span> 26400 26401 <span class="entry_type_synthetic">[synthetic] </span> 26402 26403 26404 26405 26406 26407 </td> <!-- entry_type --> 26408 26409 <td class="entry_description"> 26410 <p>The available stream configurations that this 26411camera device supports when given a CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> 26412set to 26413<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>; 26414also includes the minimum frame durations 26415and the stall durations for each format/<wbr/>size combination.<wbr/></p> 26416 </td> 26417 26418 <td class="entry_units"> 26419 </td> 26420 26421 <td class="entry_range"> 26422 </td> 26423 26424 <td class="entry_hal_version"> 26425 <p>3.<wbr/>2</p> 26426 </td> 26427 26428 <td class="entry_tags"> 26429 </td> 26430 26431 </tr> 26432 <tr class="entries_header"> 26433 <th class="th_details" colspan="6">Details</th> 26434 </tr> 26435 <tr class="entry_cont"> 26436 <td class="entry_details" colspan="6"> 26437 <p>Analogous to <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> for CaptureRequests where 26438<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is 26439<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 26440 </td> 26441 </tr> 26442 26443 <tr class="entries_header"> 26444 <th class="th_details" colspan="6">HAL Implementation Details</th> 26445 </tr> 26446 <tr class="entry_cont"> 26447 <td class="entry_details" colspan="6"> 26448 <p>Do not set this property directly 26449(it is synthetic and will not be available at the HAL layer); 26450set the <a href="#static_android.scaler.availableStreamConfigurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution</a> instead.<wbr/></p> 26451<p>Not all output formats may be supported in a configuration with 26452an input stream of a particular format.<wbr/> For more details,<wbr/> see 26453<a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></p> 26454 </td> 26455 </tr> 26456 26457 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26458 <!-- end of entry --> 26459 26460 26461 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMapMaximumResolution"> 26462 <td class="entry_name 26463 " rowspan="5"> 26464 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution 26465 </td> 26466 <td class="entry_type"> 26467 <span class="entry_type_name">int32</span> 26468 26469 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> 26470 26471 26472 26473 26474 26475 26476 </td> <!-- entry_type --> 26477 26478 <td class="entry_description"> 26479 <p>The mapping of image formats that are supported by this 26480camera device for input streams,<wbr/> to their corresponding output formats,<wbr/> when 26481<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 26482<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 26483 </td> 26484 26485 <td class="entry_units"> 26486 </td> 26487 26488 <td class="entry_range"> 26489 </td> 26490 26491 <td class="entry_hal_version"> 26492 <p>3.<wbr/>6</p> 26493 </td> 26494 26495 <td class="entry_tags"> 26496 <ul class="entry_tags"> 26497 <li><a href="#tag_REPROC">REPROC</a></li> 26498 </ul> 26499 </td> 26500 26501 </tr> 26502 <tr class="entries_header"> 26503 <th class="th_details" colspan="6">Details</th> 26504 </tr> 26505 <tr class="entry_cont"> 26506 <td class="entry_details" colspan="6"> 26507 <p>Analogous to <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for CaptureRequests where 26508<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is 26509<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 26510 </td> 26511 </tr> 26512 26513 <tr class="entries_header"> 26514 <th class="th_details" colspan="6">HAL Implementation Details</th> 26515 </tr> 26516 <tr class="entry_cont"> 26517 <td class="entry_details" colspan="6"> 26518 <p>Refer to hal details for <a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></p> 26519 </td> 26520 </tr> 26521 26522 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26523 <!-- end of entry --> 26524 26525 26526 <tr class="entry" id="static_android.scaler.mandatoryMaximumResolutionStreamCombinations"> 26527 <td class="entry_name 26528 " rowspan="5"> 26529 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Maximum<wbr/>Resolution<wbr/>Stream<wbr/>Combinations 26530 </td> 26531 <td class="entry_type"> 26532 <span class="entry_type_name">int32</span> 26533 <span class="entry_type_container">x</span> 26534 26535 <span class="entry_type_array"> 26536 n 26537 </span> 26538 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span> 26539 26540 <span class="entry_type_synthetic">[synthetic] </span> 26541 26542 26543 26544 26545 26546 </td> <!-- entry_type --> 26547 26548 <td class="entry_description"> 26549 <p>An array of mandatory stream combinations which are applicable when 26550<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a> has <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set 26551to <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/> 26552This is an app-readable conversion of the maximum resolution mandatory stream combination 26553<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#additional-guaranteed-combinations-for-ultra-high-resolution-sensors">tables</a>.<wbr/></p> 26554 </td> 26555 26556 <td class="entry_units"> 26557 </td> 26558 26559 <td class="entry_range"> 26560 </td> 26561 26562 <td class="entry_hal_version"> 26563 <p>3.<wbr/>2</p> 26564 </td> 26565 26566 <td class="entry_tags"> 26567 </td> 26568 26569 </tr> 26570 <tr class="entries_header"> 26571 <th class="th_details" colspan="6">Details</th> 26572 </tr> 26573 <tr class="entry_cont"> 26574 <td class="entry_details" colspan="6"> 26575 <p>The array of 26576<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is 26577generated according to the documented 26578<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#additional-guaranteed-combinations-for-ultra-high-resolution-sensors">guideline</a> 26579for each device which has the 26580<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 26581capability.<wbr/> 26582Clients can use the array as a quick reference to find an appropriate camera stream 26583combination.<wbr/> 26584The mandatory stream combination array will be {@code null} in case the device is not an 26585<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 26586device.<wbr/></p> 26587 </td> 26588 </tr> 26589 26590 <tr class="entries_header"> 26591 <th class="th_details" colspan="6">HAL Implementation Details</th> 26592 </tr> 26593 <tr class="entry_cont"> 26594 <td class="entry_details" colspan="6"> 26595 <p>Do not set this property directly 26596(it is synthetic and will not be available at the HAL layer).<wbr/></p> 26597 </td> 26598 </tr> 26599 26600 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26601 <!-- end of entry --> 26602 26603 26604 <tr class="entry" id="static_android.scaler.mandatoryTenBitOutputStreamCombinations"> 26605 <td class="entry_name 26606 " rowspan="5"> 26607 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Ten<wbr/>Bit<wbr/>Output<wbr/>Stream<wbr/>Combinations 26608 </td> 26609 <td class="entry_type"> 26610 <span class="entry_type_name">int32</span> 26611 <span class="entry_type_container">x</span> 26612 26613 <span class="entry_type_array"> 26614 n 26615 </span> 26616 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span> 26617 26618 <span class="entry_type_synthetic">[synthetic] </span> 26619 26620 26621 26622 26623 26624 </td> <!-- entry_type --> 26625 26626 <td class="entry_description"> 26627 <p>An array of mandatory stream combinations which are applicable when device support the 2662810-bit output capability 26629<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a> 26630This is an app-readable conversion of the 10 bit output mandatory stream combination 26631<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#10-bit-output-additional-guaranteed-configurations">tables</a>.<wbr/></p> 26632 </td> 26633 26634 <td class="entry_units"> 26635 </td> 26636 26637 <td class="entry_range"> 26638 </td> 26639 26640 <td class="entry_hal_version"> 26641 <p>3.<wbr/>2</p> 26642 </td> 26643 26644 <td class="entry_tags"> 26645 </td> 26646 26647 </tr> 26648 <tr class="entries_header"> 26649 <th class="th_details" colspan="6">Details</th> 26650 </tr> 26651 <tr class="entry_cont"> 26652 <td class="entry_details" colspan="6"> 26653 <p>The array of 26654<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is 26655generated according to the documented 26656<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#10-bit-output-additional-guaranteed-configurations">guideline</a> 26657for each device which has the 26658<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a> 26659capability.<wbr/> 26660Clients can use the array as a quick reference to find an appropriate camera stream 26661combination.<wbr/> 26662The mandatory stream combination array will be {@code null} in case the device is not an 26663<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a> 26664device.<wbr/></p> 26665 </td> 26666 </tr> 26667 26668 <tr class="entries_header"> 26669 <th class="th_details" colspan="6">HAL Implementation Details</th> 26670 </tr> 26671 <tr class="entry_cont"> 26672 <td class="entry_details" colspan="6"> 26673 <p>Do not set this property directly 26674(it is synthetic and will not be available at the HAL layer).<wbr/></p> 26675 </td> 26676 </tr> 26677 26678 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26679 <!-- end of entry --> 26680 26681 26682 <tr class="entry" id="static_android.scaler.mandatoryPreviewStabilizationOutputStreamCombinations"> 26683 <td class="entry_name 26684 " rowspan="5"> 26685 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Preview<wbr/>Stabilization<wbr/>Output<wbr/>Stream<wbr/>Combinations 26686 </td> 26687 <td class="entry_type"> 26688 <span class="entry_type_name">int32</span> 26689 <span class="entry_type_container">x</span> 26690 26691 <span class="entry_type_array"> 26692 n 26693 </span> 26694 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span> 26695 26696 <span class="entry_type_synthetic">[synthetic] </span> 26697 26698 26699 26700 26701 26702 </td> <!-- entry_type --> 26703 26704 <td class="entry_description"> 26705 <p>An array of mandatory stream combinations which are applicable when device lists 26706{@code PREVIEW_<wbr/>STABILIZATION} in <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>.<wbr/> 26707This is an app-readable conversion of the preview stabilization mandatory stream 26708combination 26709<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#preview-stabilization-guaranteed-stream-configurations">tables</a>.<wbr/></p> 26710 </td> 26711 26712 <td class="entry_units"> 26713 </td> 26714 26715 <td class="entry_range"> 26716 </td> 26717 26718 <td class="entry_hal_version"> 26719 <p>3.<wbr/>2</p> 26720 </td> 26721 26722 <td class="entry_tags"> 26723 </td> 26724 26725 </tr> 26726 <tr class="entries_header"> 26727 <th class="th_details" colspan="6">Details</th> 26728 </tr> 26729 <tr class="entry_cont"> 26730 <td class="entry_details" colspan="6"> 26731 <p>The array of 26732<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is 26733generated according to the documented 26734<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#preview-stabilization-guaranteed-stream-configurations">guideline</a> 26735for each device which supports {@code PREVIEW_<wbr/>STABILIZATION} 26736Clients can use the array as a quick reference to find an appropriate camera stream 26737combination.<wbr/> 26738The mandatory stream combination array will be {@code null} in case the device does not 26739list {@code PREVIEW_<wbr/>STABILIZATION} in <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>.<wbr/></p> 26740 </td> 26741 </tr> 26742 26743 <tr class="entries_header"> 26744 <th class="th_details" colspan="6">HAL Implementation Details</th> 26745 </tr> 26746 <tr class="entry_cont"> 26747 <td class="entry_details" colspan="6"> 26748 <p>Do not set this property directly 26749(it is synthetic and will not be available at the HAL layer).<wbr/></p> 26750 </td> 26751 </tr> 26752 26753 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26754 <!-- end of entry --> 26755 26756 26757 <tr class="entry" id="static_android.scaler.multiResolutionStreamSupported"> 26758 <td class="entry_name 26759 " rowspan="5"> 26760 android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Supported 26761 </td> 26762 <td class="entry_type"> 26763 <span class="entry_type_name entry_type_name_enum">byte</span> 26764 26765 <span class="entry_type_visibility"> [ndk_public as boolean]</span> 26766 26767 26768 <span class="entry_type_hwlevel">[limited] </span> 26769 26770 26771 26772 <ul class="entry_type_enum"> 26773 <li> 26774 <span class="entry_type_enum_name">FALSE (v3.6)</span> 26775 </li> 26776 <li> 26777 <span class="entry_type_enum_name">TRUE (v3.6)</span> 26778 </li> 26779 </ul> 26780 26781 </td> <!-- entry_type --> 26782 26783 <td class="entry_description"> 26784 <p>Whether the camera device supports multi-resolution input or output streams</p> 26785 </td> 26786 26787 <td class="entry_units"> 26788 </td> 26789 26790 <td class="entry_range"> 26791 </td> 26792 26793 <td class="entry_hal_version"> 26794 <p>3.<wbr/>6</p> 26795 </td> 26796 26797 <td class="entry_tags"> 26798 </td> 26799 26800 </tr> 26801 <tr class="entries_header"> 26802 <th class="th_details" colspan="6">Details</th> 26803 </tr> 26804 <tr class="entry_cont"> 26805 <td class="entry_details" colspan="6"> 26806 <p>A logical multi-camera or an ultra high resolution camera may support multi-resolution 26807input or output streams.<wbr/> With multi-resolution output streams,<wbr/> the camera device is able 26808to output different resolution images depending on the current active physical camera or 26809pixel mode.<wbr/> With multi-resolution input streams,<wbr/> the camera device can reprocess images 26810of different resolutions from different physical cameras or sensor pixel modes.<wbr/></p> 26811<p>When set to TRUE:</p> 26812<ul> 26813<li>For a logical multi-camera,<wbr/> the camera framework derives 26814<a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map</a> by combining the 26815<a href="#static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">android.<wbr/>scaler.<wbr/>physical<wbr/>Camera<wbr/>Multi<wbr/>Resolution<wbr/>Stream<wbr/>Configurations</a> from its physical 26816cameras.<wbr/></li> 26817<li>For an ultra-high resolution sensor camera,<wbr/> the camera framework directly copies 26818the value of <a href="#static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">android.<wbr/>scaler.<wbr/>physical<wbr/>Camera<wbr/>Multi<wbr/>Resolution<wbr/>Stream<wbr/>Configurations</a> to 26819<a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></li> 26820</ul> 26821 </td> 26822 </tr> 26823 26824 <tr class="entries_header"> 26825 <th class="th_details" colspan="6">HAL Implementation Details</th> 26826 </tr> 26827 <tr class="entry_cont"> 26828 <td class="entry_details" colspan="6"> 26829 <p>For the HAL to claim support for multi-resolution streams:</p> 26830<ul> 26831<li>The HAL must support the buffer management API by setting 26832supportedBufferManagementVersion to HIDL_<wbr/>DEVICE_<wbr/>3_<wbr/>5.<wbr/></li> 26833<li>For a logical multi-camera,<wbr/> when combined from all its physical cameras,<wbr/> there must be 26834at a minimum one input or output stream format with at least two different 26835physicalCameraMultiResolutionStreamConfigurations entries for that format.<wbr/></li> 26836<li>For an ultra high resolution sensor camera,<wbr/> for each supported multi-resolution format,<wbr/> 26837the physicalCameraMultiResolutionStreamConfigurations must contain both the largest stream 26838configuration within the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> and the largest stream 26839configuration within the <a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></li> 26840<li>If the HAL advertises multi-resolution input stream support for a particular format 26841(namely PRIVATE,<wbr/> or YUV),<wbr/> the logical multi-camera or ultra high resolution sensor camera 26842must have the corresponding reprocessing capabilities (PRIVATE_<wbr/>REPROCESSING,<wbr/> 26843or YUV_<wbr/>REPROCESSING respectively).<wbr/> The camera HAL must support reprocessing the 26844multi-resolution input stream to the output formats specified in the camera's 26845<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></li> 26846</ul> 26847 </td> 26848 </tr> 26849 26850 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26851 <!-- end of entry --> 26852 26853 26854 <tr class="entry" id="static_android.scaler.availableStreamUseCases"> 26855 <td class="entry_name 26856 " rowspan="5"> 26857 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Use<wbr/>Cases 26858 </td> 26859 <td class="entry_type"> 26860 <span class="entry_type_name entry_type_name_enum">int64</span> 26861 <span class="entry_type_container">x</span> 26862 26863 <span class="entry_type_array"> 26864 n 26865 </span> 26866 <span class="entry_type_visibility"> [public]</span> 26867 26868 26869 26870 26871 26872 <ul class="entry_type_enum"> 26873 <li> 26874 <span class="entry_type_enum_name">DEFAULT (v3.8)</span> 26875 <span class="entry_type_enum_optional">[optional]</span> 26876 <span class="entry_type_enum_value">0x0</span> 26877 <span class="entry_type_enum_notes"><p>Default stream use case.<wbr/></p> 26878<p>This use case is the same as when the application doesn't set any use case for 26879the stream.<wbr/> The camera device uses the properties of the output target,<wbr/> such as 26880format,<wbr/> dataSpace,<wbr/> or surface class type,<wbr/> to optimize the image processing pipeline.<wbr/></p></span> 26881 </li> 26882 <li> 26883 <span class="entry_type_enum_name">PREVIEW (v3.8)</span> 26884 <span class="entry_type_enum_optional">[optional]</span> 26885 <span class="entry_type_enum_value">0x1</span> 26886 <span class="entry_type_enum_notes"><p>Live stream shown to the user.<wbr/></p> 26887<p>Optimized for performance and usability as a viewfinder,<wbr/> but not necessarily for 26888image quality.<wbr/> The output is not meant to be persisted as saved images or video.<wbr/></p> 26889<p>No stall if android.<wbr/>control.<wbr/>* are set to FAST.<wbr/> There may be stall if 26890they are set to HIGH_<wbr/>QUALITY.<wbr/> This use case has the same behavior as the 26891default SurfaceView and SurfaceTexture targets.<wbr/> Additionally,<wbr/> this use case can be 26892used for in-app image analysis.<wbr/></p></span> 26893 </li> 26894 <li> 26895 <span class="entry_type_enum_name">STILL_CAPTURE (v3.8)</span> 26896 <span class="entry_type_enum_optional">[optional]</span> 26897 <span class="entry_type_enum_value">0x2</span> 26898 <span class="entry_type_enum_notes"><p>Still photo capture.<wbr/></p> 26899<p>Optimized for high-quality high-resolution capture,<wbr/> and not expected to maintain 26900preview-like frame rates.<wbr/></p> 26901<p>The stream may have stalls regardless of whether android.<wbr/>control.<wbr/>* is HIGH_<wbr/>QUALITY.<wbr/> 26902This use case has the same behavior as the default JPEG and RAW related formats.<wbr/></p></span> 26903 </li> 26904 <li> 26905 <span class="entry_type_enum_name">VIDEO_RECORD (v3.8)</span> 26906 <span class="entry_type_enum_optional">[optional]</span> 26907 <span class="entry_type_enum_value">0x3</span> 26908 <span class="entry_type_enum_notes"><p>Recording video clips.<wbr/></p> 26909<p>Optimized for high-quality video capture,<wbr/> including high-quality image stabilization 26910if supported by the device and enabled by the application.<wbr/> As a result,<wbr/> may produce 26911output frames with a substantial lag from real time,<wbr/> to allow for highest-quality 26912stabilization or other processing.<wbr/> As such,<wbr/> such an output is not suitable for drawing 26913to screen directly,<wbr/> and is expected to be persisted to disk or similar for later 26914playback or processing.<wbr/> Only streams that set the VIDEO_<wbr/>RECORD use case are guaranteed 26915to have video stabilization applied when the video stabilization control is set 26916to ON,<wbr/> as opposed to PREVIEW_<wbr/>STABILIZATION.<wbr/></p> 26917<p>This use case has the same behavior as the default MediaRecorder and MediaCodec 26918targets.<wbr/></p></span> 26919 </li> 26920 <li> 26921 <span class="entry_type_enum_name">PREVIEW_VIDEO_STILL (v3.8)</span> 26922 <span class="entry_type_enum_optional">[optional]</span> 26923 <span class="entry_type_enum_value">0x4</span> 26924 <span class="entry_type_enum_notes"><p>One single stream used for combined purposes of preview,<wbr/> video,<wbr/> and still capture.<wbr/></p> 26925<p>For such multi-purpose streams,<wbr/> the camera device aims to make the best tradeoff 26926between the individual use cases.<wbr/> For example,<wbr/> the STILL_<wbr/>CAPTURE use case by itself 26927may have stalls for achieving best image quality.<wbr/> But if combined with PREVIEW and 26928VIDEO_<wbr/>RECORD,<wbr/> the camera device needs to trade off the additional image processing 26929for speed so that preview and video recording aren't slowed down.<wbr/></p> 26930<p>Similarly,<wbr/> VIDEO_<wbr/>RECORD may produce frames with a substantial lag,<wbr/> but 26931PREVIEW_<wbr/>VIDEO_<wbr/>STILL must have minimal output delay.<wbr/> This means that to enable video 26932stabilization with this use case,<wbr/> the device must support and the app must select the 26933PREVIEW_<wbr/>STABILIZATION mode for video stabilization.<wbr/></p></span> 26934 </li> 26935 <li> 26936 <span class="entry_type_enum_name">VIDEO_CALL (v3.8)</span> 26937 <span class="entry_type_enum_optional">[optional]</span> 26938 <span class="entry_type_enum_value">0x5</span> 26939 <span class="entry_type_enum_notes"><p>Long-running video call optimized for both power efficiency and video quality.<wbr/></p> 26940<p>The camera sensor may run in a lower-resolution mode to reduce power consumption 26941at the cost of some image and digital zoom quality.<wbr/> Unlike VIDEO_<wbr/>RECORD,<wbr/> VIDEO_<wbr/>CALL 26942outputs are expected to work in dark conditions,<wbr/> so are usually accompanied with 26943variable frame rate settings to allow sufficient exposure time in low light.<wbr/></p></span> 26944 </li> 26945 <li> 26946 <span class="entry_type_enum_name">CROPPED_RAW (v3.9)</span> 26947 <span class="entry_type_enum_optional">[optional]</span> 26948 <span class="entry_type_enum_value">0x6</span> 26949 <span class="entry_type_enum_notes"><p>Cropped RAW stream when the client chooses to crop the field of view.<wbr/></p> 26950<p>Certain types of image sensors can run in binned modes in order to improve signal to 26951noise ratio while capturing frames.<wbr/> However,<wbr/> at certain zoom levels and /<wbr/> or when 26952other scene conditions are deemed fit,<wbr/> the camera sub-system may choose to un-bin and 26953remosaic the sensor's output.<wbr/> This results in a RAW frame which is cropped in field 26954of view and yet has the same number of pixels as full field of view RAW,<wbr/> thereby 26955improving image detail.<wbr/></p> 26956<p>The resultant field of view of the RAW stream will be greater than or equal to 26957croppable non-RAW streams.<wbr/> The effective crop region for this RAW stream will be 26958reflected in the CaptureResult key <a href="#dynamic_android.scaler.rawCropRegion">android.<wbr/>scaler.<wbr/>raw<wbr/>Crop<wbr/>Region</a>.<wbr/></p> 26959<p>If this stream use case is set on a non-RAW stream,<wbr/> i.<wbr/>e.<wbr/> not one of :</p> 26960<ul> 26961<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li> 26962<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li> 26963<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li> 26964</ul> 26965<p>session configuration is not guaranteed to succeed.<wbr/></p> 26966<p>This stream use case may not be supported on some devices.<wbr/></p></span> 26967 </li> 26968 <li> 26969 <span class="entry_type_enum_name">VENDOR_START (v3.8)</span> 26970 <span class="entry_type_enum_optional">[optional]</span> 26971 <span class="entry_type_enum_hidden">[hidden]</span> 26972 <span class="entry_type_enum_value">0x10000</span> 26973 <span class="entry_type_enum_notes"><p>Vendor defined use cases.<wbr/> These depend on the vendor implementation.<wbr/></p></span> 26974 </li> 26975 </ul> 26976 26977 </td> <!-- entry_type --> 26978 26979 <td class="entry_description"> 26980 <p>The stream use cases supported by this camera device.<wbr/></p> 26981 </td> 26982 26983 <td class="entry_units"> 26984 </td> 26985 26986 <td class="entry_range"> 26987 </td> 26988 26989 <td class="entry_hal_version"> 26990 <p>3.<wbr/>8</p> 26991 </td> 26992 26993 <td class="entry_tags"> 26994 </td> 26995 26996 </tr> 26997 <tr class="entries_header"> 26998 <th class="th_details" colspan="6">Details</th> 26999 </tr> 27000 <tr class="entry_cont"> 27001 <td class="entry_details" colspan="6"> 27002 <p>The stream use case indicates the purpose of a particular camera stream from 27003the end-user perspective.<wbr/> Some examples of camera use cases are: preview stream for 27004live viewfinder shown to the user,<wbr/> still capture for generating high quality photo 27005capture,<wbr/> video record for encoding the camera output for the purpose of future playback,<wbr/> 27006and video call for live realtime video conferencing.<wbr/></p> 27007<p>With this flag,<wbr/> the camera device can optimize the image processing pipeline 27008parameters,<wbr/> such as tuning,<wbr/> sensor mode,<wbr/> and ISP settings,<wbr/> independent of 27009the properties of the immediate camera output surface.<wbr/> For example,<wbr/> if the output 27010surface is a SurfaceTexture,<wbr/> the stream use case flag can be used to indicate whether 27011the camera frames eventually go to display,<wbr/> video encoder,<wbr/> 27012still image capture,<wbr/> or all of them combined.<wbr/></p> 27013<p>The application sets the use case of a camera stream by calling 27014<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setStreamUseCase">OutputConfiguration#setStreamUseCase</a>.<wbr/></p> 27015<p>A camera device with 27016<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>STREAM_<wbr/>USE_<wbr/>CASE</a> 27017capability must support the following stream use cases:</p> 27018<ul> 27019<li>DEFAULT</li> 27020<li>PREVIEW</li> 27021<li>STILL_<wbr/>CAPTURE</li> 27022<li>VIDEO_<wbr/>RECORD</li> 27023<li>PREVIEW_<wbr/>VIDEO_<wbr/>STILL</li> 27024<li>VIDEO_<wbr/>CALL</li> 27025</ul> 27026<p>The guaranteed stream combinations related to stream use case for a camera device with 27027<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>STREAM_<wbr/>USE_<wbr/>CASE</a> 27028capability is documented in the camera device 27029<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#stream-use-case-capability-additional-guaranteed-configurations">guideline</a>.<wbr/> 27030The application is strongly recommended to use one of the guaranteed stream combinations.<wbr/> 27031If the application creates a session with a stream combination not in the guaranteed 27032list,<wbr/> or with mixed DEFAULT and non-DEFAULT use cases within the same session,<wbr/> 27033the camera device may ignore some stream use cases due to hardware constraints 27034and implementation details.<wbr/></p> 27035<p>For stream combinations not covered by the stream use case mandatory lists,<wbr/> such as 27036reprocessable session,<wbr/> constrained high speed session,<wbr/> or RAW stream combinations,<wbr/> the 27037application should leave stream use cases within the session as DEFAULT.<wbr/></p> 27038 </td> 27039 </tr> 27040 27041 <tr class="entries_header"> 27042 <th class="th_details" colspan="6">HAL Implementation Details</th> 27043 </tr> 27044 <tr class="entry_cont"> 27045 <td class="entry_details" colspan="6"> 27046 <p>The camera HAL must support DEFAULT stream use case to handle scenarios where the 27047application doesn't explicitly set a stream's use case flag,<wbr/> in which case the camera 27048framework sets it to DEFAULT.<wbr/></p> 27049 </td> 27050 </tr> 27051 27052 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27053 <!-- end of entry --> 27054 27055 27056 <tr class="entry" id="static_android.scaler.mandatoryUseCaseStreamCombinations"> 27057 <td class="entry_name 27058 " rowspan="5"> 27059 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Use<wbr/>Case<wbr/>Stream<wbr/>Combinations 27060 </td> 27061 <td class="entry_type"> 27062 <span class="entry_type_name">int32</span> 27063 <span class="entry_type_container">x</span> 27064 27065 <span class="entry_type_array"> 27066 n 27067 </span> 27068 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span> 27069 27070 <span class="entry_type_synthetic">[synthetic] </span> 27071 27072 27073 27074 27075 27076 </td> <!-- entry_type --> 27077 27078 <td class="entry_description"> 27079 <p>An array of mandatory stream combinations with stream use cases.<wbr/> 27080This is an app-readable conversion of the mandatory stream combination 27081<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#stream-use-case-capability-additional-guaranteed-configurations">tables</a> 27082with each stream's use case being set.<wbr/></p> 27083 </td> 27084 27085 <td class="entry_units"> 27086 </td> 27087 27088 <td class="entry_range"> 27089 </td> 27090 27091 <td class="entry_hal_version"> 27092 <p>3.<wbr/>2</p> 27093 </td> 27094 27095 <td class="entry_tags"> 27096 </td> 27097 27098 </tr> 27099 <tr class="entries_header"> 27100 <th class="th_details" colspan="6">Details</th> 27101 </tr> 27102 <tr class="entry_cont"> 27103 <td class="entry_details" colspan="6"> 27104 <p>The array of 27105<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is 27106generated according to the documented 27107<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#stream-use-case-capability-additional-guaranteed-configurations">guildeline</a> 27108for a camera device with 27109<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>STREAM_<wbr/>USE_<wbr/>CASE</a> 27110capability.<wbr/> 27111The mandatory stream combination array will be {@code null} in case the device doesn't 27112have <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>STREAM_<wbr/>USE_<wbr/>CASE</a> 27113capability.<wbr/></p> 27114 </td> 27115 </tr> 27116 27117 <tr class="entries_header"> 27118 <th class="th_details" colspan="6">HAL Implementation Details</th> 27119 </tr> 27120 <tr class="entry_cont"> 27121 <td class="entry_details" colspan="6"> 27122 <p>Do not set this property directly 27123(it is synthetic and will not be available at the HAL layer).<wbr/></p> 27124 </td> 27125 </tr> 27126 27127 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27128 <!-- end of entry --> 27129 27130 27131 27132 <!-- end of kind --> 27133 </tbody> 27134 <tr><td colspan="7" class="kind">dynamic</td></tr> 27135 27136 <thead class="entries_header"> 27137 <tr> 27138 <th class="th_name">Property Name</th> 27139 <th class="th_type">Type</th> 27140 <th class="th_description">Description</th> 27141 <th class="th_units">Units</th> 27142 <th class="th_range">Range</th> 27143 <th class="th_hal_version">Initial HIDL HAL version</th> 27144 <th class="th_tags">Tags</th> 27145 </tr> 27146 </thead> 27147 27148 <tbody> 27149 27150 27151 27152 27153 27154 27155 27156 27157 27158 27159 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 27160 <td class="entry_name 27161 " rowspan="5"> 27162 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 27163 </td> 27164 <td class="entry_type"> 27165 <span class="entry_type_name">int32</span> 27166 <span class="entry_type_container">x</span> 27167 27168 <span class="entry_type_array"> 27169 4 27170 </span> 27171 <span class="entry_type_visibility"> [public as rectangle]</span> 27172 27173 27174 <span class="entry_type_hwlevel">[legacy] </span> 27175 27176 27177 27178 27179 </td> <!-- entry_type --> 27180 27181 <td class="entry_description"> 27182 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 27183 </td> 27184 27185 <td class="entry_units"> 27186 Pixel coordinates relative to 27187 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 27188 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction 27189 capability and mode 27190 </td> 27191 27192 <td class="entry_range"> 27193 </td> 27194 27195 <td class="entry_hal_version"> 27196 <p>3.<wbr/>2</p> 27197 </td> 27198 27199 <td class="entry_tags"> 27200 <ul class="entry_tags"> 27201 <li><a href="#tag_BC">BC</a></li> 27202 </ul> 27203 </td> 27204 27205 </tr> 27206 <tr class="entries_header"> 27207 <th class="th_details" colspan="6">Details</th> 27208 </tr> 27209 <tr class="entry_cont"> 27210 <td class="entry_details" colspan="6"> 27211 <p>This control can be used to implement digital zoom.<wbr/></p> 27212<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 27213system 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 27214the top-left pixel of the active array.<wbr/></p> 27215<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate system 27216depends on the mode being set.<wbr/> When the distortion correction mode is OFF,<wbr/> the 27217coordinate system follows <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 <code>(0,<wbr/> 272180)</code> being the top-left pixel of the pre-correction active array.<wbr/> When the distortion 27219correction mode is not OFF,<wbr/> the coordinate system follows 27220<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left pixel of the 27221active array.<wbr/></p> 27222<p>Output streams use this rectangle to produce their output,<wbr/> cropping to a smaller region 27223if necessary to maintain the stream's aspect ratio,<wbr/> then scaling the sensor input to 27224match the output's configured resolution.<wbr/></p> 27225<p>The crop region is usually applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV) 27226conversion.<wbr/> As a result RAW streams are not croppable unless supported by the 27227camera device.<wbr/> See <a href="#static_android.scaler.availableStreamUseCases">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Use<wbr/>Cases</a>#CROPPED_<wbr/>RAW for details.<wbr/></p> 27228<p>For non-raw streams,<wbr/> any additional per-stream cropping will be done to maximize the 27229final pixel area of the stream.<wbr/></p> 27230<p>For example,<wbr/> if the crop region is set to a 4:3 aspect ratio,<wbr/> then 4:3 streams will use 27231the exact crop region.<wbr/> 16:9 streams will further crop vertically (letterbox).<wbr/></p> 27232<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 outputs will crop horizontally 27233(pillarbox),<wbr/> and 16:9 streams will match exactly.<wbr/> These additional crops will be 27234centered within the crop region.<wbr/></p> 27235<p>To illustrate,<wbr/> here are several scenarios of different crop regions and output streams,<wbr/> 27236for a hypothetical camera device with an active array of size <code>(2000,<wbr/>1500)</code>.<wbr/> Note that 27237several of these examples use non-centered crop regions for ease of illustration; such 27238regions are only supported on devices with FREEFORM capability 27239(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>),<wbr/> but this does not affect the way the crop 27240rules work otherwise.<wbr/></p> 27241<ul> 27242<li>Camera Configuration:<ul> 27243<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li> 27244<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li> 27245<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li> 27246</ul> 27247</li> 27248<li>Case #1: 4:3 crop region with 2x digital zoom<ul> 27249<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code></li> 27250<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-ratio.png"/></li> 27251<li><code>640x480</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code> (equal to crop region)</li> 27252<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li> 27253</ul> 27254</li> 27255<li>Case #2: 16:9 crop region with ~1.<wbr/>5x digital zoom.<wbr/><ul> 27256<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code></li> 27257<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-169-ratio.png"/></li> 27258<li><code>640x480</code> stream source area: <code>(666,<wbr/> 375,<wbr/> 1666,<wbr/> 1125)</code> (pillarboxed)</li> 27259<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code> (equal to crop region)</li> 27260</ul> 27261</li> 27262<li>Case #3: 1:1 crop region with ~2.<wbr/>6x digital zoom.<wbr/><ul> 27263<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1250,<wbr/> 1125)</code></li> 27264<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-11-ratio.png"/></li> 27265<li><code>640x480</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1250,<wbr/> 1031)</code> (letterboxed)</li> 27266<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 543,<wbr/> 1250,<wbr/> 957)</code> (letterboxed)</li> 27267</ul> 27268</li> 27269<li>Case #4: Replace <code>640x480</code> stream with <code>1024x1024</code> stream,<wbr/> with 4:3 crop region:<ul> 27270<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code></li> 27271<li><img alt="Square output, 4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-square-ratio.png"/></li> 27272<li><code>1024x1024</code> stream source area: <code>(625,<wbr/> 375,<wbr/> 1375,<wbr/> 1125)</code> (pillarboxed)</li> 27273<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li> 27274<li>Note that in this case,<wbr/> neither of the two outputs is a subset of the other,<wbr/> with 27275 each containing image data the other doesn't have.<wbr/></li> 27276</ul> 27277</li> 27278</ul> 27279<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 27280of the crop region cannot be set to be smaller than 27281<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 27282<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> 27283<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 27284and height of the crop region cannot be set to be smaller than 27285<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> 27286and 27287<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/> 27288respectively.<wbr/></p> 27289<p>The camera device may adjust the crop region to account for rounding and other hardware 27290requirements; the final crop region used will be included in the output capture result.<wbr/></p> 27291<p>The camera sensor output aspect ratio depends on factors such as output stream 27292combination and <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>,<wbr/> and shouldn't be adjusted by using 27293this control.<wbr/> And the camera device will treat different camera sensor output sizes 27294(potentially with in-sensor crop) as the same crop of 27295<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> As a result,<wbr/> the application shouldn't assume the 27296maximum crop region always maps to the same aspect ratio or field of view for the 27297sensor output.<wbr/></p> 27298<p>Starting from API level 30,<wbr/> it's strongly recommended to use <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> 27299to take advantage of better support for zoom with logical multi-camera.<wbr/> The benefits 27300include better precision with optical-digital zoom combination,<wbr/> and ability to do 27301zoom-out from 1.<wbr/>0x.<wbr/> When using <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for zoom,<wbr/> the crop region in 27302the capture request should be left as the default activeArray size.<wbr/> The 27303coordinate system is post-zoom,<wbr/> meaning that the activeArraySize or 27304preCorrectionActiveArraySize covers the camera device's field of view "after" zoom.<wbr/> See 27305<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/></p> 27306<p>For camera devices with the 27307<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 27308capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 27309lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> 27310<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 27311<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the 27312coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 27313<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 27314 </td> 27315 </tr> 27316 27317 <tr class="entries_header"> 27318 <th class="th_details" colspan="6">HAL Implementation Details</th> 27319 </tr> 27320 <tr class="entry_cont"> 27321 <td class="entry_details" colspan="6"> 27322 <p>The output streams must maintain square pixels at all 27323times,<wbr/> no matter what the relative aspect ratios of the 27324crop region and the stream are.<wbr/> Negative values for 27325corner are allowed for raw output if full pixel array is 27326larger than active pixel array.<wbr/> Width and height may be 27327rounded to nearest larger supportable width,<wbr/> especially 27328for raw output,<wbr/> where only a few fixed scales may be 27329possible.<wbr/></p> 27330<p>If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is supported by the HAL,<wbr/> the HAL must report the zoom 27331ratio via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and change the coordinate system such that 27332<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>(depending on whether <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> is supported) is used to 27333represent the camera field-of-view after zoom.<wbr/> see <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for 27334details.<wbr/></p> 27335<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 27336 </td> 27337 </tr> 27338 27339 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27340 <!-- end of entry --> 27341 27342 27343 <tr class="entry" id="dynamic_android.scaler.rotateAndCrop"> 27344 <td class="entry_name 27345 " rowspan="5"> 27346 android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop 27347 </td> 27348 <td class="entry_type"> 27349 <span class="entry_type_name entry_type_name_enum">byte</span> 27350 27351 <span class="entry_type_visibility"> [public]</span> 27352 27353 27354 27355 27356 27357 <ul class="entry_type_enum"> 27358 <li> 27359 <span class="entry_type_enum_name">NONE (v3.5)</span> 27360 <span class="entry_type_enum_notes"><p>No rotate and crop is applied.<wbr/> Processed outputs are in the sensor orientation.<wbr/></p></span> 27361 </li> 27362 <li> 27363 <span class="entry_type_enum_name">90 (v3.5)</span> 27364 <span class="entry_type_enum_notes"><p>Processed images are rotated by 90 degrees clockwise,<wbr/> and then cropped 27365to the original aspect ratio.<wbr/></p></span> 27366 </li> 27367 <li> 27368 <span class="entry_type_enum_name">180 (v3.5)</span> 27369 <span class="entry_type_enum_notes"><p>Processed images are rotated by 180 degrees.<wbr/> Since the aspect ratio does not 27370change,<wbr/> no cropping is performed.<wbr/></p></span> 27371 </li> 27372 <li> 27373 <span class="entry_type_enum_name">270 (v3.5)</span> 27374 <span class="entry_type_enum_notes"><p>Processed images are rotated by 270 degrees clockwise,<wbr/> and then cropped 27375to the original aspect ratio.<wbr/></p></span> 27376 </li> 27377 <li> 27378 <span class="entry_type_enum_name">AUTO (v3.5)</span> 27379 <span class="entry_type_enum_notes"><p>The camera API automatically selects the best concrete value for 27380rotate-and-crop based on the application's support for resizability and the current 27381multi-window mode.<wbr/></p> 27382<p>If the application does not support resizing but the display mode for its main 27383Activity is not in a typical orientation,<wbr/> the camera API will set <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> 27384or some other supported rotation value,<wbr/> depending on device configuration,<wbr/> 27385to ensure preview and captured images are correctly shown to the user.<wbr/> Otherwise,<wbr/> 27386<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> will be selected.<wbr/></p> 27387<p>When a value other than NONE is selected,<wbr/> several metadata fields will also be parsed 27388differently to ensure that coordinates are correctly handled for features like drawing 27389face detection boxes or passing in tap-to-focus coordinates.<wbr/> The camera API will 27390convert positions in the active array coordinate system to/<wbr/>from the cropped-and-rotated 27391coordinate system to make the operation transparent for applications.<wbr/></p> 27392<p>No coordinate mapping will be done when the application selects a non-AUTO mode.<wbr/></p></span> 27393 </li> 27394 </ul> 27395 27396 </td> <!-- entry_type --> 27397 27398 <td class="entry_description"> 27399 <p>Whether a rotation-and-crop operation is applied to processed 27400outputs from the camera.<wbr/></p> 27401 </td> 27402 27403 <td class="entry_units"> 27404 </td> 27405 27406 <td class="entry_range"> 27407 <p><a href="#static_android.scaler.availableRotateAndCropModes">android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes</a></p> 27408 </td> 27409 27410 <td class="entry_hal_version"> 27411 <p>3.<wbr/>5</p> 27412 </td> 27413 27414 <td class="entry_tags"> 27415 </td> 27416 27417 </tr> 27418 <tr class="entries_header"> 27419 <th class="th_details" colspan="6">Details</th> 27420 </tr> 27421 <tr class="entry_cont"> 27422 <td class="entry_details" colspan="6"> 27423 <p>This control is primarily intended to help camera applications with no support for 27424multi-window modes to work correctly on devices where multi-window scenarios are 27425unavoidable,<wbr/> such as foldables or other devices with variable display geometry or more 27426free-form window placement (such as laptops,<wbr/> which often place portrait-orientation apps 27427in landscape with pillarboxing).<wbr/></p> 27428<p>If supported,<wbr/> the default value is <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code>,<wbr/> which allows the camera API 27429to enable backwards-compatibility support for applications that do not support resizing 27430/<wbr/> multi-window modes,<wbr/> when the device is in fact in a multi-window mode (such as inset 27431portrait on laptops,<wbr/> or on a foldable device in some fold states).<wbr/> In addition,<wbr/> 27432<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> and <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> will always be available if this control 27433is supported by the device.<wbr/> If not supported,<wbr/> devices API level 30 or higher will always 27434list only <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/></p> 27435<p>When <code>CROP_<wbr/>AUTO</code> is in use,<wbr/> and the camera API activates backward-compatibility mode,<wbr/> 27436several metadata fields will also be parsed differently to ensure that coordinates are 27437correctly handled for features like drawing face detection boxes or passing in 27438tap-to-focus coordinates.<wbr/> The camera API will convert positions in the active array 27439coordinate system to/<wbr/>from the cropped-and-rotated coordinate system to make the 27440operation transparent for applications.<wbr/> The following controls are affected:</p> 27441<ul> 27442<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 27443<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 27444<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 27445<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li> 27446</ul> 27447<p>Capture results will contain the actual value selected by the API; 27448<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> will never be seen in a capture result.<wbr/></p> 27449<p>Applications can also select their preferred cropping mode,<wbr/> either to opt out of the 27450backwards-compatibility treatment,<wbr/> or to use the cropping feature themselves as needed.<wbr/> 27451In this case,<wbr/> no coordinate translation will be done automatically,<wbr/> and all controls 27452will continue to use the normal active array coordinates.<wbr/></p> 27453<p>Cropping and rotating is done after the application of digital zoom (via either 27454<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>),<wbr/> but before each individual 27455output is further cropped and scaled.<wbr/> It only affects processed outputs such as 27456YUV,<wbr/> PRIVATE,<wbr/> and JPEG.<wbr/> It has no effect on RAW outputs.<wbr/></p> 27457<p>When <code>CROP_<wbr/>90</code> or <code>CROP_<wbr/>270</code> are selected,<wbr/> there is a significant loss to the field of 27458view.<wbr/> For example,<wbr/> with a 4:3 aspect ratio output of 1600x1200,<wbr/> <code>CROP_<wbr/>90</code> will still 27459produce 1600x1200 output,<wbr/> but these buffers are cropped from a vertical 3:4 slice at the 27460center of the 4:3 area,<wbr/> then rotated to be 4:3,<wbr/> and then upscaled to 1600x1200.<wbr/> Only 2746156.<wbr/>25% of the original FOV is still visible.<wbr/> In general,<wbr/> for an aspect ratio of <code>w:h</code>,<wbr/> 27462the crop and rotate operation leaves <code>(h/<wbr/>w)^2</code> of the field of view visible.<wbr/> For 16:9,<wbr/> 27463this is ~31.<wbr/>6%.<wbr/></p> 27464<p>As a visual example,<wbr/> the figure below shows the effect of <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> on the 27465outputs for the following parameters:</p> 27466<ul> 27467<li>Sensor active array: <code>2000x1500</code></li> 27468<li>Crop region: top-left: <code>(500,<wbr/> 375)</code>,<wbr/> size: <code>(1000,<wbr/> 750)</code> (4:3 aspect ratio)</li> 27469<li>Output streams: YUV <code>640x480</code> and YUV <code>1280x720</code></li> 27470<li><code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code></li> 27471</ul> 27472<p><img alt="Effect of ROTATE_AND_CROP_90" src="images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png"/></p> 27473<p>With these settings,<wbr/> the regions of the active array covered by the output streams are:</p> 27474<ul> 27475<li>640x480 stream crop: top-left: <code>(219,<wbr/> 375)</code>,<wbr/> size: <code>(562,<wbr/> 750)</code></li> 27476<li>1280x720 stream crop: top-left: <code>(289,<wbr/> 375)</code>,<wbr/> size: <code>(422,<wbr/> 750)</code></li> 27477</ul> 27478<p>Since the buffers are rotated,<wbr/> the buffers as seen by the application are:</p> 27479<ul> 27480<li>640x480 stream: top-left: <code>(781,<wbr/> 375)</code> on active array,<wbr/> size: <code>(640,<wbr/> 480)</code>,<wbr/> downscaled 1.<wbr/>17x from sensor pixels</li> 27481<li>1280x720 stream: top-left: <code>(711,<wbr/> 375)</code> on active array,<wbr/> size: <code>(1280,<wbr/> 720)</code>,<wbr/> upscaled 1.<wbr/>71x from sensor pixels</li> 27482</ul> 27483 </td> 27484 </tr> 27485 27486 <tr class="entries_header"> 27487 <th class="th_details" colspan="6">HAL Implementation Details</th> 27488 </tr> 27489 <tr class="entry_cont"> 27490 <td class="entry_details" colspan="6"> 27491 <p>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will never be sent to the HAL,<wbr/> though it must be set as the default 27492value in all the capture request templates by the HAL.<wbr/> The camera service will 27493translate AUTO to a specific rotation value based on the current application's 27494multi-window state and its support of resizability.<wbr/></p> 27495<p>The HAL also does not need to consider coordinate transforms for ROTATE_<wbr/>AND_<wbr/>CROP - all 27496capture request and result fields should be kept in the active array coordinate frame.<wbr/> 27497Any translation required to implement ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will be handled by the camera 27498service.<wbr/></p> 27499 </td> 27500 </tr> 27501 27502 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27503 <!-- end of entry --> 27504 27505 27506 <tr class="entry" id="dynamic_android.scaler.rawCropRegion"> 27507 <td class="entry_name 27508 " rowspan="3"> 27509 android.<wbr/>scaler.<wbr/>raw<wbr/>Crop<wbr/>Region 27510 </td> 27511 <td class="entry_type"> 27512 <span class="entry_type_name">int32</span> 27513 <span class="entry_type_container">x</span> 27514 27515 <span class="entry_type_array"> 27516 4 27517 </span> 27518 <span class="entry_type_visibility"> [public as rectangle]</span> 27519 27520 27521 27522 27523 27524 27525 </td> <!-- entry_type --> 27526 27527 <td class="entry_description"> 27528 <p>The region of the sensor that corresponds to the RAW read out for this 27529capture when the stream use case of a RAW stream is set to CROPPED_<wbr/>RAW.<wbr/></p> 27530 </td> 27531 27532 <td class="entry_units"> 27533 Pixel coordinates relative to 27534 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 27535 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction 27536 capability and mode 27537 </td> 27538 27539 <td class="entry_range"> 27540 </td> 27541 27542 <td class="entry_hal_version"> 27543 <p>3.<wbr/>9</p> 27544 </td> 27545 27546 <td class="entry_tags"> 27547 </td> 27548 27549 </tr> 27550 <tr class="entries_header"> 27551 <th class="th_details" colspan="6">Details</th> 27552 </tr> 27553 <tr class="entry_cont"> 27554 <td class="entry_details" colspan="6"> 27555 <p>The coordinate system follows that of <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> 27556<p>This CaptureResult key will be set when the corresponding CaptureRequest has a RAW target 27557with stream use case set to 27558<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW">Camera<wbr/>Metadata#SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>USE_<wbr/>CASES_<wbr/>CROPPED_<wbr/>RAW</a>,<wbr/> 27559otherwise it will be {@code null}.<wbr/> 27560The value of this key specifies the region of the sensor used for the RAW capture and can 27561be used to calculate the corresponding field of view of RAW streams.<wbr/> 27562This field of view will always be >= field of view for (processed) non-RAW streams for the 27563capture.<wbr/> Note: The region specified may not necessarily be centered.<wbr/></p> 27564<p>For example: Assume a camera device has a pre correction active array size of 27565{@code {0,<wbr/> 0,<wbr/> 1500,<wbr/> 2000}}.<wbr/> If the RAW_<wbr/>CROP_<wbr/>REGION is {@code {500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125}},<wbr/> that 27566corresponds to a centered crop of 1/<wbr/>4th of the full field of view RAW stream.<wbr/></p> 27567<p>The metadata keys which describe properties of RAW frames:</p> 27568<ul> 27569<li><a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a></li> 27570<li><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a></li> 27571<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 27572<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 27573<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 27574<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 27575<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 27576</ul> 27577<p>should be interpreted in the effective after raw crop field-of-view coordinate system.<wbr/> 27578In this coordinate system,<wbr/> 27579{<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>left,<wbr/> 27580 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>top} corresponds to the 27581the top left corner of the cropped RAW frame and 27582{<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>right,<wbr/> 27583 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>bottom} corresponds to 27584the bottom right corner.<wbr/> Client applications must use the values of the keys 27585in the CaptureResult metadata if present.<wbr/></p> 27586<p>Crop regions <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> AE/<wbr/>AWB/<wbr/>AF regions and face coordinates still 27587use the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate system as usual.<wbr/></p> 27588 </td> 27589 </tr> 27590 27591 27592 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27593 <!-- end of entry --> 27594 27595 27596 27597 <!-- end of kind --> 27598 </tbody> 27599 27600 <!-- end of section --> 27601 <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr> 27602 27603 27604 <tr><td colspan="7" class="kind">controls</td></tr> 27605 27606 <thead class="entries_header"> 27607 <tr> 27608 <th class="th_name">Property Name</th> 27609 <th class="th_type">Type</th> 27610 <th class="th_description">Description</th> 27611 <th class="th_units">Units</th> 27612 <th class="th_range">Range</th> 27613 <th class="th_hal_version">Initial HIDL HAL version</th> 27614 <th class="th_tags">Tags</th> 27615 </tr> 27616 </thead> 27617 27618 <tbody> 27619 27620 27621 27622 27623 27624 27625 27626 27627 27628 27629 <tr class="entry" id="controls_android.sensor.exposureTime"> 27630 <td class="entry_name 27631 " rowspan="3"> 27632 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 27633 </td> 27634 <td class="entry_type"> 27635 <span class="entry_type_name">int64</span> 27636 27637 <span class="entry_type_visibility"> [public]</span> 27638 27639 27640 <span class="entry_type_hwlevel">[full] </span> 27641 27642 27643 27644 27645 </td> <!-- entry_type --> 27646 27647 <td class="entry_description"> 27648 <p>Duration each pixel is exposed to 27649light.<wbr/></p> 27650 </td> 27651 27652 <td class="entry_units"> 27653 Nanoseconds 27654 </td> 27655 27656 <td class="entry_range"> 27657 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 27658 </td> 27659 27660 <td class="entry_hal_version"> 27661 <p>3.<wbr/>2</p> 27662 </td> 27663 27664 <td class="entry_tags"> 27665 <ul class="entry_tags"> 27666 <li><a href="#tag_V1">V1</a></li> 27667 </ul> 27668 </td> 27669 27670 </tr> 27671 <tr class="entries_header"> 27672 <th class="th_details" colspan="6">Details</th> 27673 </tr> 27674 <tr class="entry_cont"> 27675 <td class="entry_details" colspan="6"> 27676 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 27677duration exposed to the nearest possible value (rather than expose longer).<wbr/> 27678The final exposure time used will be available in the output capture result.<wbr/></p> 27679<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 27680OFF; otherwise the auto-exposure algorithm will override this value.<wbr/> However,<wbr/> in the 27681case that <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is set to SENSOR_<wbr/>EXPOSURE_<wbr/>TIME_<wbr/>PRIORITY,<wbr/> this 27682control will be effective and not controlled by the auto-exposure algorithm.<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.sensor.frameDuration"> 27692 <td class="entry_name 27693 " rowspan="5"> 27694 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 27695 </td> 27696 <td class="entry_type"> 27697 <span class="entry_type_name">int64</span> 27698 27699 <span class="entry_type_visibility"> [public]</span> 27700 27701 27702 <span class="entry_type_hwlevel">[full] </span> 27703 27704 27705 27706 27707 </td> <!-- entry_type --> 27708 27709 <td class="entry_description"> 27710 <p>Duration from start of frame readout to 27711start of next frame readout.<wbr/></p> 27712 </td> 27713 27714 <td class="entry_units"> 27715 Nanoseconds 27716 </td> 27717 27718 <td class="entry_range"> 27719 <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/> 27720The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 27721 </td> 27722 27723 <td class="entry_hal_version"> 27724 <p>3.<wbr/>2</p> 27725 </td> 27726 27727 <td class="entry_tags"> 27728 <ul class="entry_tags"> 27729 <li><a href="#tag_V1">V1</a></li> 27730 </ul> 27731 </td> 27732 27733 </tr> 27734 <tr class="entries_header"> 27735 <th class="th_details" colspan="6">Details</th> 27736 </tr> 27737 <tr class="entry_cont"> 27738 <td class="entry_details" colspan="6"> 27739 <p>The maximum frame rate that can be supported by a camera subsystem is 27740a function of many factors:</p> 27741<ul> 27742<li>Requested resolutions of output image streams</li> 27743<li>Availability of binning /<wbr/> skipping modes on the imager</li> 27744<li>The bandwidth of the imager interface</li> 27745<li>The bandwidth of the various ISP processing blocks</li> 27746</ul> 27747<p>Since these factors can vary greatly between different ISPs and 27748sensors,<wbr/> the camera abstraction tries to represent the bandwidth 27749restrictions with as simple a model as possible.<wbr/></p> 27750<p>The model presented has the following characteristics:</p> 27751<ul> 27752<li>The image sensor is always configured to output the smallest 27753resolution possible given the application's requested output stream 27754sizes.<wbr/> The smallest resolution is defined as being at least as large 27755as the largest requested output stream size; the camera pipeline must 27756never digitally upsample sensor data when the crop region covers the 27757whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 27758resolutions are configured,<wbr/> the sensor can provide a higher frame 27759rate.<wbr/></li> 27760<li>Since any request may use any or all the currently configured 27761output streams,<wbr/> the sensor and ISP must be configured to support 27762scaling a single capture to all the streams at the same time.<wbr/> This 27763means the camera pipeline must be ready to produce the largest 27764requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 27765frame rate of a given configured stream set is governed only by the 27766largest requested stream resolution.<wbr/></li> 27767<li>Using more than one output stream in a request does not affect the 27768frame duration.<wbr/></li> 27769<li>Certain format-streams may need to do additional background processing 27770before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 27771can run concurrently to the rest of the camera pipeline,<wbr/> but 27772cannot process more than 1 capture at a time.<wbr/></li> 27773</ul> 27774<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via 27775<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 27776These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is 27777possible for a given stream configuration.<wbr/></p> 27778<p>Specifically,<wbr/> the application can use the following rules to 27779determine the minimum frame duration it can request from the camera 27780device:</p> 27781<ol> 27782<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li> 27783<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> 27784(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li> 27785<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum 27786out 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> 27787</ol> 27788<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> 27789using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady 27790state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let 27791this special kind of request be called <code>Rsimple</code>.<wbr/></p> 27792<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a 27793new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if 27794<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all 27795buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p> 27796<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> 27797<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 27798OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 27799<p><em>Note:</em> Prior to Android 13,<wbr/> this field was described as measuring the duration from 27800start of frame exposure to start of next frame exposure,<wbr/> which doesn't reflect the 27801definition from sensor manufacturer.<wbr/> A mobile sensor defines the frame duration as 27802intervals between sensor readouts.<wbr/></p> 27803 </td> 27804 </tr> 27805 27806 <tr class="entries_header"> 27807 <th class="th_details" colspan="6">HAL Implementation Details</th> 27808 </tr> 27809 <tr class="entry_cont"> 27810 <td class="entry_details" colspan="6"> 27811 <p>For more details about stalling,<wbr/> see 27812<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 27813 </td> 27814 </tr> 27815 27816 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27817 <!-- end of entry --> 27818 27819 27820 <tr class="entry" id="controls_android.sensor.sensitivity"> 27821 <td class="entry_name 27822 " rowspan="5"> 27823 android.<wbr/>sensor.<wbr/>sensitivity 27824 </td> 27825 <td class="entry_type"> 27826 <span class="entry_type_name">int32</span> 27827 27828 <span class="entry_type_visibility"> [public]</span> 27829 27830 27831 <span class="entry_type_hwlevel">[full] </span> 27832 27833 27834 27835 27836 </td> <!-- entry_type --> 27837 27838 <td class="entry_description"> 27839 <p>The amount of gain applied to sensor data 27840before processing.<wbr/></p> 27841 </td> 27842 27843 <td class="entry_units"> 27844 ISO arithmetic units 27845 </td> 27846 27847 <td class="entry_range"> 27848 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 27849 </td> 27850 27851 <td class="entry_hal_version"> 27852 <p>3.<wbr/>2</p> 27853 </td> 27854 27855 <td class="entry_tags"> 27856 <ul class="entry_tags"> 27857 <li><a href="#tag_V1">V1</a></li> 27858 </ul> 27859 </td> 27860 27861 </tr> 27862 <tr class="entries_header"> 27863 <th class="th_details" colspan="6">Details</th> 27864 </tr> 27865 <tr class="entry_cont"> 27866 <td class="entry_details" colspan="6"> 27867 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 27868as defined in ISO 12232:2006.<wbr/></p> 27869<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 27870if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 27871is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 27872<p>If the camera device cannot apply the exact sensitivity 27873requested,<wbr/> it will reduce the gain to the nearest supported 27874value.<wbr/> The final sensitivity used will be available in the 27875output capture result.<wbr/></p> 27876<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 27877OFF; otherwise the auto-exposure algorithm will override this value.<wbr/> However,<wbr/> in the 27878case that <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is set to SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY,<wbr/> this 27879control will be effective and not controlled by the auto-exposure algorithm.<wbr/></p> 27880<p>Note that for devices supporting postRawSensitivityBoost,<wbr/> the total sensitivity applied 27881to the final processed image is the combination of <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 27882<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a>.<wbr/> In case the application uses the sensor 27883sensitivity from last capture result of an auto request for a manual request,<wbr/> in order 27884to achieve the same brightness in the output image,<wbr/> the application should also 27885set postRawSensitivityBoost.<wbr/></p> 27886 </td> 27887 </tr> 27888 27889 <tr class="entries_header"> 27890 <th class="th_details" colspan="6">HAL Implementation Details</th> 27891 </tr> 27892 <tr class="entry_cont"> 27893 <td class="entry_details" colspan="6"> 27894 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 27895 </td> 27896 </tr> 27897 27898 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27899 <!-- end of entry --> 27900 27901 27902 <tr class="entry" id="controls_android.sensor.testPatternData"> 27903 <td class="entry_name 27904 " rowspan="5"> 27905 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 27906 </td> 27907 <td class="entry_type"> 27908 <span class="entry_type_name">int32</span> 27909 <span class="entry_type_container">x</span> 27910 27911 <span class="entry_type_array"> 27912 4 27913 </span> 27914 <span class="entry_type_visibility"> [public]</span> 27915 27916 27917 27918 27919 27920 27921 </td> <!-- entry_type --> 27922 27923 <td class="entry_description"> 27924 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 27925when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 27926 </td> 27927 27928 <td class="entry_units"> 27929 </td> 27930 27931 <td class="entry_range"> 27932 </td> 27933 27934 <td class="entry_hal_version"> 27935 <p>3.<wbr/>2</p> 27936 </td> 27937 27938 <td class="entry_tags"> 27939 </td> 27940 27941 </tr> 27942 <tr class="entries_header"> 27943 <th class="th_details" colspan="6">Details</th> 27944 </tr> 27945 <tr class="entry_cont"> 27946 <td class="entry_details" colspan="6"> 27947 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 27948The camera device then uses the most significant X bits 27949that correspond to how many bits are in its Bayer raw sensor 27950output.<wbr/></p> 27951<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 2795210 most significant bits from each color channel.<wbr/></p> 27953 </td> 27954 </tr> 27955 27956 <tr class="entries_header"> 27957 <th class="th_details" colspan="6">HAL Implementation Details</th> 27958 </tr> 27959 <tr class="entry_cont"> 27960 <td class="entry_details" colspan="6"> 27961 27962 </td> 27963 </tr> 27964 27965 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27966 <!-- end of entry --> 27967 27968 27969 <tr class="entry" id="controls_android.sensor.testPatternMode"> 27970 <td class="entry_name 27971 " rowspan="5"> 27972 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 27973 </td> 27974 <td class="entry_type"> 27975 <span class="entry_type_name entry_type_name_enum">int32</span> 27976 27977 <span class="entry_type_visibility"> [public]</span> 27978 27979 27980 27981 27982 27983 <ul class="entry_type_enum"> 27984 <li> 27985 <span class="entry_type_enum_name">OFF (v3.2)</span> 27986 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 27987device returns captures from the image sensor.<wbr/></p> 27988<p>This is the default if the key is not set.<wbr/></p></span> 27989 </li> 27990 <li> 27991 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span> 27992 <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 27993respective color channel provided in 27994<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 27995<p>For example:</p> 27996<pre><code><a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a> = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 27997</code></pre> 27998<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 27999<pre><code><a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a> = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 28000</code></pre> 28001<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 28002are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 28003 </li> 28004 <li> 28005 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span> 28006 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 28007<p>The vertical bars (left-to-right) are as follows:</p> 28008<ul> 28009<li>100% white</li> 28010<li>yellow</li> 28011<li>cyan</li> 28012<li>green</li> 28013<li>magenta</li> 28014<li>red</li> 28015<li>blue</li> 28016<li>black</li> 28017</ul> 28018<p>In general the image would look like the following:</p> 28019<pre><code>W Y C G M R B K 28020W Y C G M R B K 28021W Y C G M R B K 28022W Y C G M R B K 28023W Y C G M R B K 28024.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 28025.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 28026.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 28027 28028(B = Blue,<wbr/> K = Black) 28029</code></pre> 28030<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 28031When this is not possible,<wbr/> the bar size should be rounded 28032down to the nearest integer and the pattern can repeat 28033on the right side.<wbr/></p> 28034<p>Each bar's height must always take up the full sensor 28035pixel array height.<wbr/></p> 28036<p>Each pixel in this test pattern must be set to either 280370% intensity or 100% intensity.<wbr/></p></span> 28038 </li> 28039 <li> 28040 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span> 28041 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 28042each bar should start at its specified color at the top,<wbr/> 28043and fade to gray at the bottom.<wbr/></p> 28044<p>Furthermore each bar is further subdivided into a left and 28045right half.<wbr/> The left half should have a smooth gradient,<wbr/> 28046and the right half should have a quantized gradient.<wbr/></p> 28047<p>In particular,<wbr/> the right half's should consist of blocks of the 28048same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 28049<p>The least significant bits in the quantized gradient should 28050be copied from the most significant bits of the smooth gradient.<wbr/></p> 28051<p>The height of each bar should always be a multiple of 128.<wbr/> 28052When this is not the case,<wbr/> the pattern should repeat at the bottom 28053of the image.<wbr/></p></span> 28054 </li> 28055 <li> 28056 <span class="entry_type_enum_name">PN9 (v3.2)</span> 28057 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 28058generated from a PN9 512-bit sequence (typically implemented 28059in hardware with a linear feedback shift register).<wbr/></p> 28060<p>The generator should be reset at the beginning of each frame,<wbr/> 28061and thus each subsequent raw frame with this test pattern should 28062be exactly the same as the last.<wbr/></p></span> 28063 </li> 28064 <li> 28065 <span class="entry_type_enum_name">BLACK (v3.6)</span> 28066 <span class="entry_type_enum_hidden">[test]</span> 28067 <span class="entry_type_enum_notes"><p>All pixel data is replaced by 0% intensity (black) values.<wbr/></p> 28068<p>This test pattern is identical to SOLID_<wbr/>COLOR with a value of <code>[0,<wbr/> 0,<wbr/> 0,<wbr/> 0]</code> for 28069<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/> It is recommended that devices implement full 28070SOLID_<wbr/>COLOR support instead,<wbr/> but BLACK can be used to provide minimal support for a 28071test pattern suitable for privacy use cases.<wbr/></p></span> 28072 </li> 28073 <li> 28074 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span> 28075 <span class="entry_type_enum_value">256</span> 28076 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 28077available only on this camera device are at least this numeric 28078value.<wbr/></p> 28079<p>All of the custom test patterns will be static 28080(that is the raw image must not vary from frame to frame).<wbr/></p></span> 28081 </li> 28082 </ul> 28083 28084 </td> <!-- entry_type --> 28085 28086 <td class="entry_description"> 28087 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 28088doing a real exposure from the camera.<wbr/></p> 28089 </td> 28090 28091 <td class="entry_units"> 28092 </td> 28093 28094 <td class="entry_range"> 28095 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 28096 </td> 28097 28098 <td class="entry_hal_version"> 28099 <p>3.<wbr/>2</p> 28100 </td> 28101 28102 <td class="entry_tags"> 28103 </td> 28104 28105 </tr> 28106 <tr class="entries_header"> 28107 <th class="th_details" colspan="6">Details</th> 28108 </tr> 28109 <tr class="entry_cont"> 28110 <td class="entry_details" colspan="6"> 28111 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 28112by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 28113work as normal.<wbr/></p> 28114<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 28115occur (and that the test pattern remain unmodified,<wbr/> since the flash 28116would not actually affect it).<wbr/></p> 28117<p>Defaults to OFF.<wbr/></p> 28118 </td> 28119 </tr> 28120 28121 <tr class="entries_header"> 28122 <th class="th_details" colspan="6">HAL Implementation Details</th> 28123 </tr> 28124 <tr class="entry_cont"> 28125 <td class="entry_details" colspan="6"> 28126 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 28127<p>The HAL may choose to substitute test patterns from the sensor 28128with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 28129indistinguishable to the ISP whether the data came from the 28130sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 28131<p>For privacy use cases,<wbr/> if the camera device:</p> 28132<ul> 28133<li>supports SOLID_<wbr/>COLOR or BLACK test patterns,<wbr/></li> 28134<li>is a logical multi-camera,<wbr/> and</li> 28135<li>lists testPatternMode as a physical request key,<wbr/></li> 28136</ul> 28137<p>Each physical camera must support the same SOLID_<wbr/>COLOR and/<wbr/>or BLACK test patterns 28138as the logical camera.<wbr/></p> 28139 </td> 28140 </tr> 28141 28142 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28143 <!-- end of entry --> 28144 28145 28146 <tr class="entry" id="controls_android.sensor.pixelMode"> 28147 <td class="entry_name 28148 " rowspan="3"> 28149 android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode 28150 </td> 28151 <td class="entry_type"> 28152 <span class="entry_type_name entry_type_name_enum">byte</span> 28153 28154 <span class="entry_type_visibility"> [public]</span> 28155 28156 28157 28158 28159 28160 <ul class="entry_type_enum"> 28161 <li> 28162 <span class="entry_type_enum_name">DEFAULT (v3.6)</span> 28163 <span class="entry_type_enum_notes"><p>This is the default sensor pixel mode.<wbr/></p></span> 28164 </li> 28165 <li> 28166 <span class="entry_type_enum_name">MAXIMUM_RESOLUTION (v3.6)</span> 28167 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> sensors typically do not bin pixels,<wbr/> as a result can offer larger 28168image sizes.<wbr/></p></span> 28169 </li> 28170 </ul> 28171 28172 </td> <!-- entry_type --> 28173 28174 <td class="entry_description"> 28175 <p>Switches sensor pixel mode between maximum resolution mode and default mode.<wbr/></p> 28176 </td> 28177 28178 <td class="entry_units"> 28179 </td> 28180 28181 <td class="entry_range"> 28182 </td> 28183 28184 <td class="entry_hal_version"> 28185 <p>3.<wbr/>6</p> 28186 </td> 28187 28188 <td class="entry_tags"> 28189 </td> 28190 28191 </tr> 28192 <tr class="entries_header"> 28193 <th class="th_details" colspan="6">Details</th> 28194 </tr> 28195 <tr class="entry_cont"> 28196 <td class="entry_details" colspan="6"> 28197 <p>This key controls whether the camera sensor operates in 28198<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a> 28199mode or not.<wbr/> By default,<wbr/> all camera devices operate in 28200<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode.<wbr/> 28201When operating in 28202<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode,<wbr/> sensors 28203would typically perform pixel binning in order to improve low light 28204performance,<wbr/> noise reduction etc.<wbr/> However,<wbr/> in 28205<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a> 28206mode,<wbr/> sensors typically operate in unbinned mode allowing for a larger image size.<wbr/> 28207The stream configurations supported in 28208<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a> 28209mode are also different from those of 28210<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode.<wbr/> 28211They can be queried through 28212<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> with 28213<a href="https://developer.android.com/reference/CameraCharacteristics.html#SCALER_STREAM_CONFIGURATION_MAP_MAXIMUM_RESOLUTION">Camera<wbr/>Characteristics#SCALER_<wbr/>STREAM_<wbr/>CONFIGURATION_<wbr/>MAP_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/> 28214Unless reported by both 28215<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>s,<wbr/> the outputs from 28216<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code> and 28217<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code> 28218must not be mixed in the same CaptureRequest.<wbr/> In other words,<wbr/> these outputs are 28219exclusive to each other.<wbr/> 28220This key does not need to be set for reprocess requests.<wbr/> 28221This key will be be present on devices supporting the 28222<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 28223capability.<wbr/> It may also be present on devices which do not support the aforementioned 28224capability.<wbr/> In that case:</p> 28225<ul> 28226<li> 28227<p>The mandatory stream combinations listed in 28228 <a href="#static_android.scaler.mandatoryMaximumResolutionStreamCombinations">android.<wbr/>scaler.<wbr/>mandatory<wbr/>Maximum<wbr/>Resolution<wbr/>Stream<wbr/>Combinations</a> would not apply.<wbr/></p> 28229</li> 28230<li> 28231<p>The bayer pattern of {@code RAW} streams when 28232 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a> 28233 is selected will be the one listed in <a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a>.<wbr/></p> 28234</li> 28235<li> 28236<p>The following keys will always be present:</p> 28237<ul> 28238<li><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></li> 28239<li><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></li> 28240<li><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></li> 28241<li><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></li> 28242</ul> 28243</li> 28244</ul> 28245 </td> 28246 </tr> 28247 28248 28249 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28250 <!-- end of entry --> 28251 28252 28253 28254 <!-- end of kind --> 28255 </tbody> 28256 <tr><td colspan="7" class="kind">static</td></tr> 28257 28258 <thead class="entries_header"> 28259 <tr> 28260 <th class="th_name">Property Name</th> 28261 <th class="th_type">Type</th> 28262 <th class="th_description">Description</th> 28263 <th class="th_units">Units</th> 28264 <th class="th_range">Range</th> 28265 <th class="th_hal_version">Initial HIDL HAL version</th> 28266 <th class="th_tags">Tags</th> 28267 </tr> 28268 </thead> 28269 28270 <tbody> 28271 28272 28273 28274 28275 28276 28277 28278 28279 28280 28281 28282 28283 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 28284 <td class="entry_name 28285 " rowspan="5"> 28286 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 28287 </td> 28288 <td class="entry_type"> 28289 <span class="entry_type_name">int32</span> 28290 <span class="entry_type_container">x</span> 28291 28292 <span class="entry_type_array"> 28293 4 28294 </span> 28295 <span class="entry_type_visibility"> [public as rectangle]</span> 28296 28297 28298 <span class="entry_type_hwlevel">[legacy] </span> 28299 28300 28301 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 28302 28303 28304 </td> <!-- entry_type --> 28305 28306 <td class="entry_description"> 28307 <p>The area of the image sensor which corresponds to active pixels after any geometric 28308distortion correction has been applied.<wbr/></p> 28309 </td> 28310 28311 <td class="entry_units"> 28312 Pixel coordinates on the image sensor 28313 </td> 28314 28315 <td class="entry_range"> 28316 </td> 28317 28318 <td class="entry_hal_version"> 28319 <p>3.<wbr/>2</p> 28320 </td> 28321 28322 <td class="entry_tags"> 28323 <ul class="entry_tags"> 28324 <li><a href="#tag_RAW">RAW</a></li> 28325 </ul> 28326 </td> 28327 28328 </tr> 28329 <tr class="entries_header"> 28330 <th class="th_details" colspan="6">Details</th> 28331 </tr> 28332 <tr class="entry_cont"> 28333 <td class="entry_details" colspan="6"> 28334 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 28335the region that actually receives light from the scene) after any geometric correction 28336has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the 28337image output formats aside from the raw formats.<wbr/></p> 28338<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 28339the full pixel array,<wbr/> and the size of the full pixel array is given by 28340<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 28341<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including 28342<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 28343this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p> 28344<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may 28345include black calibration pixels or other inactive regions.<wbr/></p> 28346<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 28347array 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> 28348<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 28349be 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 28350pre-correction active array and active array accounts for scaling or cropping caused 28351by lens geometric distortion correction.<wbr/></p> 28352<p>In general,<wbr/> application should always refer to active array size for controls like 28353metering regions or crop region.<wbr/> Two exceptions are when the application is dealing with 28354RAW image buffers (RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 etc),<wbr/> or when application explicitly set 28355<a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> to OFF.<wbr/> In these cases,<wbr/> application should refer 28356to <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> 28357 </td> 28358 </tr> 28359 28360 <tr class="entries_header"> 28361 <th class="th_details" colspan="6">HAL Implementation Details</th> 28362 </tr> 28363 <tr class="entry_cont"> 28364 <td class="entry_details" colspan="6"> 28365 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 28366>= <code>(0,<wbr/>0)</code>.<wbr/> 28367The <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> 28368 </td> 28369 </tr> 28370 28371 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28372 <!-- end of entry --> 28373 28374 28375 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 28376 <td class="entry_name 28377 " rowspan="3"> 28378 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 28379 </td> 28380 <td class="entry_type"> 28381 <span class="entry_type_name">int32</span> 28382 <span class="entry_type_container">x</span> 28383 28384 <span class="entry_type_array"> 28385 2 28386 </span> 28387 <span class="entry_type_visibility"> [public as rangeInt]</span> 28388 28389 28390 <span class="entry_type_hwlevel">[full] </span> 28391 28392 28393 <div class="entry_type_notes">Range of supported sensitivities</div> 28394 28395 28396 </td> <!-- entry_type --> 28397 28398 <td class="entry_description"> 28399 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this 28400camera device.<wbr/></p> 28401 </td> 28402 28403 <td class="entry_units"> 28404 </td> 28405 28406 <td class="entry_range"> 28407 <p>Min <= 100,<wbr/> Max >= 800</p> 28408 </td> 28409 28410 <td class="entry_hal_version"> 28411 <p>3.<wbr/>2</p> 28412 </td> 28413 28414 <td class="entry_tags"> 28415 <ul class="entry_tags"> 28416 <li><a href="#tag_BC">BC</a></li> 28417 <li><a href="#tag_V1">V1</a></li> 28418 </ul> 28419 </td> 28420 28421 </tr> 28422 <tr class="entries_header"> 28423 <th class="th_details" colspan="6">Details</th> 28424 </tr> 28425 <tr class="entry_cont"> 28426 <td class="entry_details" colspan="6"> 28427 <p>The values are the standard ISO sensitivity values,<wbr/> 28428as defined in ISO 12232:2006.<wbr/></p> 28429 </td> 28430 </tr> 28431 28432 28433 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28434 <!-- end of entry --> 28435 28436 28437 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 28438 <td class="entry_name 28439 " rowspan="3"> 28440 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 28441 </td> 28442 <td class="entry_type"> 28443 <span class="entry_type_name entry_type_name_enum">byte</span> 28444 28445 <span class="entry_type_visibility"> [public]</span> 28446 28447 28448 <span class="entry_type_hwlevel">[full] </span> 28449 28450 28451 28452 <ul class="entry_type_enum"> 28453 <li> 28454 <span class="entry_type_enum_name">RGGB (v3.2)</span> 28455 </li> 28456 <li> 28457 <span class="entry_type_enum_name">GRBG (v3.2)</span> 28458 </li> 28459 <li> 28460 <span class="entry_type_enum_name">GBRG (v3.2)</span> 28461 </li> 28462 <li> 28463 <span class="entry_type_enum_name">BGGR (v3.2)</span> 28464 </li> 28465 <li> 28466 <span class="entry_type_enum_name">RGB (v3.2)</span> 28467 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 28468values for each pixel,<wbr/> instead of just 1 16-bit value 28469per pixel.<wbr/></p></span> 28470 </li> 28471 <li> 28472 <span class="entry_type_enum_name">MONO (v3.4)</span> 28473 <span class="entry_type_enum_notes"><p>Sensor doesn't have any Bayer color filter.<wbr/> 28474Such sensor captures visible light in monochrome.<wbr/> The exact weighting and 28475wavelengths captured is not specified,<wbr/> but generally only includes the visible 28476frequencies.<wbr/> This value implies a MONOCHROME camera.<wbr/></p></span> 28477 </li> 28478 <li> 28479 <span class="entry_type_enum_name">NIR (v3.4)</span> 28480 <span class="entry_type_enum_notes"><p>Sensor has a near infrared filter capturing light with wavelength between 28481roughly 750nm and 1400nm,<wbr/> and the same filter covers the whole sensor array.<wbr/> This 28482value implies a MONOCHROME camera.<wbr/></p></span> 28483 </li> 28484 </ul> 28485 28486 </td> <!-- entry_type --> 28487 28488 <td class="entry_description"> 28489 <p>The arrangement of color filters on sensor; 28490represents the colors in the top-left 2x2 section of 28491the sensor,<wbr/> in reading order,<wbr/> for a Bayer camera,<wbr/> or the 28492light spectrum it captures for MONOCHROME camera.<wbr/></p> 28493 </td> 28494 28495 <td class="entry_units"> 28496 </td> 28497 28498 <td class="entry_range"> 28499 </td> 28500 28501 <td class="entry_hal_version"> 28502 <p>3.<wbr/>2</p> 28503 </td> 28504 28505 <td class="entry_tags"> 28506 <ul class="entry_tags"> 28507 <li><a href="#tag_RAW">RAW</a></li> 28508 </ul> 28509 </td> 28510 28511 </tr> 28512 28513 <tr class="entries_header"> 28514 <th class="th_details" colspan="6">HAL Implementation Details</th> 28515 </tr> 28516 <tr class="entry_cont"> 28517 <td class="entry_details" colspan="6"> 28518 <p>Starting from Android Q,<wbr/> the colorFilterArrangement for a MONOCHROME camera must be 28519single color patterns,<wbr/> such as MONO or NIR.<wbr/></p> 28520 </td> 28521 </tr> 28522 28523 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28524 <!-- end of entry --> 28525 28526 28527 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 28528 <td class="entry_name 28529 " rowspan="3"> 28530 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 28531 </td> 28532 <td class="entry_type"> 28533 <span class="entry_type_name">int64</span> 28534 <span class="entry_type_container">x</span> 28535 28536 <span class="entry_type_array"> 28537 2 28538 </span> 28539 <span class="entry_type_visibility"> [public as rangeLong]</span> 28540 28541 28542 <span class="entry_type_hwlevel">[full] </span> 28543 28544 28545 <div class="entry_type_notes">nanoseconds</div> 28546 28547 28548 </td> <!-- entry_type --> 28549 28550 <td class="entry_description"> 28551 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported 28552by this camera device.<wbr/></p> 28553 </td> 28554 28555 <td class="entry_units"> 28556 Nanoseconds 28557 </td> 28558 28559 <td class="entry_range"> 28560 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL 28561capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 28562the maximum exposure time will be greater than 100ms.<wbr/></p> 28563 </td> 28564 28565 <td class="entry_hal_version"> 28566 <p>3.<wbr/>2</p> 28567 </td> 28568 28569 <td class="entry_tags"> 28570 <ul class="entry_tags"> 28571 <li><a href="#tag_V1">V1</a></li> 28572 </ul> 28573 </td> 28574 28575 </tr> 28576 28577 <tr class="entries_header"> 28578 <th class="th_details" colspan="6">HAL Implementation Details</th> 28579 </tr> 28580 <tr class="entry_cont"> 28581 <td class="entry_details" colspan="6"> 28582 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 28583The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least 28584100ms.<wbr/></p> 28585 </td> 28586 </tr> 28587 28588 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28589 <!-- end of entry --> 28590 28591 28592 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 28593 <td class="entry_name 28594 " rowspan="5"> 28595 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 28596 </td> 28597 <td class="entry_type"> 28598 <span class="entry_type_name">int64</span> 28599 28600 <span class="entry_type_visibility"> [public]</span> 28601 28602 28603 <span class="entry_type_hwlevel">[full] </span> 28604 28605 28606 28607 28608 </td> <!-- entry_type --> 28609 28610 <td class="entry_description"> 28611 <p>The maximum possible frame duration (minimum frame rate) for 28612<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p> 28613 </td> 28614 28615 <td class="entry_units"> 28616 Nanoseconds 28617 </td> 28618 28619 <td class="entry_range"> 28620 <p>For FULL capability devices 28621(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p> 28622 </td> 28623 28624 <td class="entry_hal_version"> 28625 <p>3.<wbr/>2</p> 28626 </td> 28627 28628 <td class="entry_tags"> 28629 <ul class="entry_tags"> 28630 <li><a href="#tag_V1">V1</a></li> 28631 </ul> 28632 </td> 28633 28634 </tr> 28635 <tr class="entries_header"> 28636 <th class="th_details" colspan="6">Details</th> 28637 </tr> 28638 <tr class="entry_cont"> 28639 <td class="entry_details" colspan="6"> 28640 <p>Attempting to use frame durations beyond the maximum will result in the frame 28641duration being clipped to the maximum.<wbr/> See that control for a full definition of frame 28642durations.<wbr/></p> 28643<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 28644for the minimum frame duration values.<wbr/></p> 28645 </td> 28646 </tr> 28647 28648 <tr class="entries_header"> 28649 <th class="th_details" colspan="6">HAL Implementation Details</th> 28650 </tr> 28651 <tr class="entry_cont"> 28652 <td class="entry_details" colspan="6"> 28653 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 28654The maximum of the range SHOULD be at least 286551 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 28656<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 28657equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 28658value (since exposure time overrides frame duration).<wbr/></p> 28659<p>Available minimum frame durations for JPEG must be no greater 28660than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 28661minimum frame durations (for that respective size).<wbr/></p> 28662<p>Since JPEG processing is considered offline and can take longer than 28663a single uncompressed capture,<wbr/> refer to 28664<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 28665for details about encoding this scenario.<wbr/></p> 28666 </td> 28667 </tr> 28668 28669 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28670 <!-- end of entry --> 28671 28672 28673 <tr class="entry" id="static_android.sensor.info.physicalSize"> 28674 <td class="entry_name 28675 " rowspan="5"> 28676 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 28677 </td> 28678 <td class="entry_type"> 28679 <span class="entry_type_name">float</span> 28680 <span class="entry_type_container">x</span> 28681 28682 <span class="entry_type_array"> 28683 2 28684 </span> 28685 <span class="entry_type_visibility"> [public as sizeF]</span> 28686 28687 28688 <span class="entry_type_hwlevel">[legacy] </span> 28689 28690 28691 <div class="entry_type_notes">width x height</div> 28692 28693 28694 </td> <!-- entry_type --> 28695 28696 <td class="entry_description"> 28697 <p>The physical dimensions of the full pixel 28698array.<wbr/></p> 28699 </td> 28700 28701 <td class="entry_units"> 28702 Millimeters 28703 </td> 28704 28705 <td class="entry_range"> 28706 </td> 28707 28708 <td class="entry_hal_version"> 28709 <p>3.<wbr/>2</p> 28710 </td> 28711 28712 <td class="entry_tags"> 28713 <ul class="entry_tags"> 28714 <li><a href="#tag_V1">V1</a></li> 28715 <li><a href="#tag_BC">BC</a></li> 28716 </ul> 28717 </td> 28718 28719 </tr> 28720 <tr class="entries_header"> 28721 <th class="th_details" colspan="6">Details</th> 28722 </tr> 28723 <tr class="entry_cont"> 28724 <td class="entry_details" colspan="6"> 28725 <p>This is the physical size of the sensor pixel 28726array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 28727 </td> 28728 </tr> 28729 28730 <tr class="entries_header"> 28731 <th class="th_details" colspan="6">HAL Implementation Details</th> 28732 </tr> 28733 <tr class="entry_cont"> 28734 <td class="entry_details" colspan="6"> 28735 <p>Needed for FOV calculation for old API</p> 28736 </td> 28737 </tr> 28738 28739 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28740 <!-- end of entry --> 28741 28742 28743 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 28744 <td class="entry_name 28745 " rowspan="3"> 28746 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 28747 </td> 28748 <td class="entry_type"> 28749 <span class="entry_type_name">int32</span> 28750 <span class="entry_type_container">x</span> 28751 28752 <span class="entry_type_array"> 28753 2 28754 </span> 28755 <span class="entry_type_visibility"> [public as size]</span> 28756 28757 28758 <span class="entry_type_hwlevel">[legacy] </span> 28759 28760 28761 28762 28763 </td> <!-- entry_type --> 28764 28765 <td class="entry_description"> 28766 <p>Dimensions of the full pixel array,<wbr/> possibly 28767including black calibration pixels.<wbr/></p> 28768 </td> 28769 28770 <td class="entry_units"> 28771 Pixels 28772 </td> 28773 28774 <td class="entry_range"> 28775 </td> 28776 28777 <td class="entry_hal_version"> 28778 <p>3.<wbr/>2</p> 28779 </td> 28780 28781 <td class="entry_tags"> 28782 <ul class="entry_tags"> 28783 <li><a href="#tag_RAW">RAW</a></li> 28784 <li><a href="#tag_BC">BC</a></li> 28785 </ul> 28786 </td> 28787 28788 </tr> 28789 <tr class="entries_header"> 28790 <th class="th_details" colspan="6">Details</th> 28791 </tr> 28792 <tr class="entry_cont"> 28793 <td class="entry_details" colspan="6"> 28794 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers 28795<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 28796the raw buffers produced by this sensor.<wbr/></p> 28797<p>If a camera device supports raw sensor formats,<wbr/> either this or 28798<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 28799output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a> 28800(this depends on whether or not the image sensor returns buffers containing pixels that 28801are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p> 28802<p>Some parts of the full pixel array may not receive light from the scene,<wbr/> 28803or 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 28804defines the rectangle of active pixels that will be included in processed image 28805formats.<wbr/></p> 28806 </td> 28807 </tr> 28808 28809 28810 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28811 <!-- end of entry --> 28812 28813 28814 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 28815 <td class="entry_name 28816 " rowspan="5"> 28817 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 28818 </td> 28819 <td class="entry_type"> 28820 <span class="entry_type_name">int32</span> 28821 28822 <span class="entry_type_visibility"> [public]</span> 28823 28824 28825 28826 28827 28828 28829 </td> <!-- entry_type --> 28830 28831 <td class="entry_description"> 28832 <p>Maximum raw value output by sensor.<wbr/></p> 28833 </td> 28834 28835 <td class="entry_units"> 28836 </td> 28837 28838 <td class="entry_range"> 28839 <p>> 255 (8-bit output)</p> 28840 </td> 28841 28842 <td class="entry_hal_version"> 28843 <p>3.<wbr/>2</p> 28844 </td> 28845 28846 <td class="entry_tags"> 28847 <ul class="entry_tags"> 28848 <li><a href="#tag_RAW">RAW</a></li> 28849 </ul> 28850 </td> 28851 28852 </tr> 28853 <tr class="entries_header"> 28854 <th class="th_details" colspan="6">Details</th> 28855 </tr> 28856 <tr class="entry_cont"> 28857 <td class="entry_details" colspan="6"> 28858 <p>This specifies the fully-saturated encoding level for the raw 28859sample values from the sensor.<wbr/> This is typically caused by the 28860sensor becoming highly non-linear or clipping.<wbr/> The minimum for 28861each channel is specified by the offset in the 28862<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p> 28863<p>The white level is typically determined either by sensor bit depth 28864(8-14 bits is expected),<wbr/> or by the point where the sensor response 28865becomes too non-linear to be useful.<wbr/> The default value for this is 28866maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 28867<p>The white level values of captured images may vary for different 28868capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 28869represents a coarse approximation for such case.<wbr/> It is recommended 28870to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported 28871by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p> 28872 </td> 28873 </tr> 28874 28875 <tr class="entries_header"> 28876 <th class="th_details" colspan="6">HAL Implementation Details</th> 28877 </tr> 28878 <tr class="entry_cont"> 28879 <td class="entry_details" colspan="6"> 28880 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 28881so the value for linear sensors should not be significantly lower 28882than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 28883 </td> 28884 </tr> 28885 28886 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28887 <!-- end of entry --> 28888 28889 28890 <tr class="entry" id="static_android.sensor.info.timestampSource"> 28891 <td class="entry_name 28892 " rowspan="5"> 28893 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source 28894 </td> 28895 <td class="entry_type"> 28896 <span class="entry_type_name entry_type_name_enum">byte</span> 28897 28898 <span class="entry_type_visibility"> [public]</span> 28899 28900 28901 <span class="entry_type_hwlevel">[legacy] </span> 28902 28903 28904 28905 <ul class="entry_type_enum"> 28906 <li> 28907 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span> 28908 <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/> but can 28909not be compared to timestamps from other subsystems (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> 28910or other instances of the same or different camera devices in the same system with 28911accuracy.<wbr/> However,<wbr/> the timestamps are roughly in the same timebase as 28912<a href="https://developer.android.com/reference/android/os/SystemClock.html#uptimeMillis">SystemClock#uptimeMillis</a>.<wbr/> The accuracy is sufficient for tasks 28913like A/<wbr/>V synchronization for video recording,<wbr/> at least,<wbr/> and the timestamps can be 28914directly used together with timestamps from the audio subsystem for that task.<wbr/></p> 28915<p>Timestamps between streams and results for a single camera instance are comparable,<wbr/> 28916and the timestamps for all buffers and the result metadata generated by a single 28917capture are identical.<wbr/></p></span> 28918 </li> 28919 <li> 28920 <span class="entry_type_enum_name">REALTIME (v3.2)</span> 28921 <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 28922<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> 28923and they can be compared to other timestamps using that base.<wbr/></p> 28924<p>When buffers from a REALTIME device are passed directly to a video encoder from the 28925camera,<wbr/> automatic compensation is done to account for differing timebases of the 28926audio and camera subsystems.<wbr/> If the application is receiving buffers and then later 28927sending them to a video encoder or other application where they are compared with 28928audio subsystem timestamps or similar,<wbr/> this compensation is not present.<wbr/> In those 28929cases,<wbr/> applications need to adjust the timestamps themselves.<wbr/> Since <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a> and <a href="https://developer.android.com/reference/android/os/SystemClock.html#uptimeMillis">SystemClock#uptimeMillis</a> only diverge while the device is asleep,<wbr/> an 28930offset between the two sources can be measured once per active session and applied 28931to timestamps for sufficient accuracy for A/<wbr/>V sync.<wbr/></p></span> 28932 </li> 28933 </ul> 28934 28935 </td> <!-- entry_type --> 28936 28937 <td class="entry_description"> 28938 <p>The time base source for sensor capture start timestamps.<wbr/></p> 28939 </td> 28940 28941 <td class="entry_units"> 28942 </td> 28943 28944 <td class="entry_range"> 28945 </td> 28946 28947 <td class="entry_hal_version"> 28948 <p>3.<wbr/>2</p> 28949 </td> 28950 28951 <td class="entry_tags"> 28952 <ul class="entry_tags"> 28953 <li><a href="#tag_V1">V1</a></li> 28954 </ul> 28955 </td> 28956 28957 </tr> 28958 <tr class="entries_header"> 28959 <th class="th_details" colspan="6">Details</th> 28960 </tr> 28961 <tr class="entry_cont"> 28962 <td class="entry_details" colspan="6"> 28963 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but 28964may not based on a time source that can be compared to other system time sources.<wbr/></p> 28965<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they 28966can be compared against other system time sources/<wbr/>timestamps.<wbr/></p> 28967 </td> 28968 </tr> 28969 28970 <tr class="entries_header"> 28971 <th class="th_details" colspan="6">HAL Implementation Details</th> 28972 </tr> 28973 <tr class="entry_cont"> 28974 <td class="entry_details" colspan="6"> 28975 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp 28976source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera 28977framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See 28978system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and 28979SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video 28980recording might suffer unexpected behavior.<wbr/></p> 28981<p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which 28982tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p> 28983 </td> 28984 </tr> 28985 28986 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28987 <!-- end of entry --> 28988 28989 28990 <tr class="entry" id="static_android.sensor.info.lensShadingApplied"> 28991 <td class="entry_name 28992 " rowspan="3"> 28993 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied 28994 </td> 28995 <td class="entry_type"> 28996 <span class="entry_type_name entry_type_name_enum">byte</span> 28997 28998 <span class="entry_type_visibility"> [public as boolean]</span> 28999 29000 29001 29002 29003 29004 <ul class="entry_type_enum"> 29005 <li> 29006 <span class="entry_type_enum_name">FALSE (v3.2)</span> 29007 </li> 29008 <li> 29009 <span class="entry_type_enum_name">TRUE (v3.2)</span> 29010 </li> 29011 </ul> 29012 29013 </td> <!-- entry_type --> 29014 29015 <td class="entry_description"> 29016 <p>Whether the RAW images output from this camera device are subject to 29017lens shading correction.<wbr/></p> 29018 </td> 29019 29020 <td class="entry_units"> 29021 </td> 29022 29023 <td class="entry_range"> 29024 </td> 29025 29026 <td class="entry_hal_version"> 29027 <p>3.<wbr/>2</p> 29028 </td> 29029 29030 <td class="entry_tags"> 29031 </td> 29032 29033 </tr> 29034 <tr class="entries_header"> 29035 <th class="th_details" colspan="6">Details</th> 29036 </tr> 29037 <tr class="entry_cont"> 29038 <td class="entry_details" colspan="6"> 29039 <p>If <code>true</code>,<wbr/> all images produced by the camera device in the <code>RAW</code> image formats will have 29040at least some lens shading correction already applied to it.<wbr/> If <code>false</code>,<wbr/> the images will 29041not be adjusted for lens shading correction.<wbr/> See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a 29042list of RAW image formats.<wbr/></p> 29043<p>When <code>true</code>,<wbr/> the <code>lensShadingCorrectionMap</code> key may still have values greater than 1.<wbr/>0,<wbr/> 29044and those will need to be applied to any captured RAW frames for them to match the shading 29045correction of processed buffers such as <code>YUV</code> or <code>JPEG</code> images.<wbr/> This may occur,<wbr/> for 29046example,<wbr/> when some basic fixed lens shading correction is applied by hardware to RAW data,<wbr/> 29047and additional correction is done dynamically in the camera processing pipeline after 29048demosaicing.<wbr/></p> 29049<p>This key will be <code>null</code> for all devices do not report this information.<wbr/> 29050Devices with RAW capability will always report this information in this key.<wbr/></p> 29051 </td> 29052 </tr> 29053 29054 29055 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29056 <!-- end of entry --> 29057 29058 29059 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize"> 29060 <td class="entry_name 29061 " rowspan="5"> 29062 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 29063 </td> 29064 <td class="entry_type"> 29065 <span class="entry_type_name">int32</span> 29066 <span class="entry_type_container">x</span> 29067 29068 <span class="entry_type_array"> 29069 4 29070 </span> 29071 <span class="entry_type_visibility"> [public as rectangle]</span> 29072 29073 29074 <span class="entry_type_hwlevel">[legacy] </span> 29075 29076 29077 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 29078 29079 29080 </td> <!-- entry_type --> 29081 29082 <td class="entry_description"> 29083 <p>The area of the image sensor which corresponds to active pixels prior to the 29084application of any geometric distortion correction.<wbr/></p> 29085 </td> 29086 29087 <td class="entry_units"> 29088 Pixel coordinates on the image sensor 29089 </td> 29090 29091 <td class="entry_range"> 29092 </td> 29093 29094 <td class="entry_hal_version"> 29095 <p>3.<wbr/>2</p> 29096 </td> 29097 29098 <td class="entry_tags"> 29099 <ul class="entry_tags"> 29100 <li><a href="#tag_RAW">RAW</a></li> 29101 </ul> 29102 </td> 29103 29104 </tr> 29105 <tr class="entries_header"> 29106 <th class="th_details" colspan="6">Details</th> 29107 </tr> 29108 <tr class="entry_cont"> 29109 <td class="entry_details" colspan="6"> 29110 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 29111the region that actually receives light from the scene) before any geometric correction 29112has been applied,<wbr/> and should be treated as the active region rectangle for any of the 29113raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading 29114correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as 29115the origin,<wbr/> (0,<wbr/>0).<wbr/></p> 29116<p>The size of this region determines the maximum field of view and the maximum number of 29117pixels that an image from this sensor can contain,<wbr/> prior to the application of 29118geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a 29119post-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> 29120field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image 29121can be calculated by applying the geometric distortion correction fields to this 29122rectangle,<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> 29123<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the 29124dimensions 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/> 29125(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions given in 29126<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p> 29127<ol> 29128<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in 29129<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 29130to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li> 29131<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/> 29132(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw 29133buffers is defined relative to the top,<wbr/> left of the 29134<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> 29135<li>If the resulting corrected pixel coordinate is within the region given in 29136<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 29137processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/> 29138when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li> 29139</ol> 29140<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> 29141is (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/> 29142<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 29143correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in 29144pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer 29145with 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) 29146relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in 29147<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 29148<p>The currently supported fields that correct for geometric distortion are:</p> 29149<ol> 29150<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li> 29151</ol> 29152<p>If the camera device doesn't support geometric distortion correction,<wbr/> or all of the 29153geometric distortion fields are no-ops,<wbr/> this rectangle will be the same as the 29154post-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> 29155<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 29156the full pixel array,<wbr/> and the size of the full pixel array is given by 29157<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 29158<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the 29159full array may include black calibration pixels or other inactive regions.<wbr/></p> 29160 </td> 29161 </tr> 29162 29163 <tr class="entries_header"> 29164 <th class="th_details" colspan="6">HAL Implementation Details</th> 29165 </tr> 29166 <tr class="entry_cont"> 29167 <td class="entry_details" colspan="6"> 29168 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 29169>= <code>(0,<wbr/>0)</code>.<wbr/> 29170The <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> 29171<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is 29172the same as the post-correction active array region given in 29173<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 29174 </td> 29175 </tr> 29176 29177 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29178 <!-- end of entry --> 29179 29180 29181 <tr class="entry" id="static_android.sensor.info.activeArraySizeMaximumResolution"> 29182 <td class="entry_name 29183 " rowspan="5"> 29184 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution 29185 </td> 29186 <td class="entry_type"> 29187 <span class="entry_type_name">int32</span> 29188 <span class="entry_type_container">x</span> 29189 29190 <span class="entry_type_array"> 29191 4 29192 </span> 29193 <span class="entry_type_visibility"> [public as rectangle]</span> 29194 29195 29196 29197 29198 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 29199 29200 29201 </td> <!-- entry_type --> 29202 29203 <td class="entry_description"> 29204 <p>The area of the image sensor which corresponds to active pixels after any geometric 29205distortion correction has been applied,<wbr/> when the sensor runs in maximum resolution mode.<wbr/></p> 29206 </td> 29207 29208 <td class="entry_units"> 29209 Pixel coordinates on the image sensor 29210 </td> 29211 29212 <td class="entry_range"> 29213 </td> 29214 29215 <td class="entry_hal_version"> 29216 <p>3.<wbr/>6</p> 29217 </td> 29218 29219 <td class="entry_tags"> 29220 <ul class="entry_tags"> 29221 <li><a href="#tag_RAW">RAW</a></li> 29222 </ul> 29223 </td> 29224 29225 </tr> 29226 <tr class="entries_header"> 29227 <th class="th_details" colspan="6">Details</th> 29228 </tr> 29229 <tr class="entry_cont"> 29230 <td class="entry_details" colspan="6"> 29231 <p>Analogous to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> 29232is set to 29233<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/> 29234Refer to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> for details,<wbr/> with sensor array related keys 29235replaced with their 29236<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a> 29237counterparts.<wbr/> 29238This key will only be present for devices which advertise the 29239<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 29240capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 29241lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>.<wbr/></p> 29242 </td> 29243 </tr> 29244 29245 <tr class="entries_header"> 29246 <th class="th_details" colspan="6">HAL Implementation Details</th> 29247 </tr> 29248 <tr class="entry_cont"> 29249 <td class="entry_details" colspan="6"> 29250 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 29251>= <code>(0,<wbr/>0)</code>.<wbr/> 29252The <code>(width,<wbr/> height)</code> must be <= <code><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/></p> 29253 </td> 29254 </tr> 29255 29256 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29257 <!-- end of entry --> 29258 29259 29260 <tr class="entry" id="static_android.sensor.info.pixelArraySizeMaximumResolution"> 29261 <td class="entry_name 29262 " rowspan="3"> 29263 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution 29264 </td> 29265 <td class="entry_type"> 29266 <span class="entry_type_name">int32</span> 29267 <span class="entry_type_container">x</span> 29268 29269 <span class="entry_type_array"> 29270 2 29271 </span> 29272 <span class="entry_type_visibility"> [public as size]</span> 29273 29274 29275 29276 29277 29278 29279 </td> <!-- entry_type --> 29280 29281 <td class="entry_description"> 29282 <p>Dimensions of the full pixel array,<wbr/> possibly 29283including black calibration pixels,<wbr/> when the sensor runs in maximum resolution mode.<wbr/> 29284Analogous to <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is 29285set to 29286<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 29287 </td> 29288 29289 <td class="entry_units"> 29290 Pixels 29291 </td> 29292 29293 <td class="entry_range"> 29294 </td> 29295 29296 <td class="entry_hal_version"> 29297 <p>3.<wbr/>6</p> 29298 </td> 29299 29300 <td class="entry_tags"> 29301 <ul class="entry_tags"> 29302 <li><a href="#tag_RAW">RAW</a></li> 29303 </ul> 29304 </td> 29305 29306 </tr> 29307 <tr class="entries_header"> 29308 <th class="th_details" colspan="6">Details</th> 29309 </tr> 29310 <tr class="entry_cont"> 29311 <td class="entry_details" colspan="6"> 29312 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers 29313<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 29314the raw buffers produced by this sensor,<wbr/> when it runs in maximum resolution mode.<wbr/> That 29315is,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 29316<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/> 29317This key will only be present for devices which advertise the 29318<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 29319capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 29320lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>.<wbr/></p> 29321 </td> 29322 </tr> 29323 29324 29325 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29326 <!-- end of entry --> 29327 29328 29329 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution"> 29330 <td class="entry_name 29331 " rowspan="5"> 29332 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution 29333 </td> 29334 <td class="entry_type"> 29335 <span class="entry_type_name">int32</span> 29336 <span class="entry_type_container">x</span> 29337 29338 <span class="entry_type_array"> 29339 4 29340 </span> 29341 <span class="entry_type_visibility"> [public as rectangle]</span> 29342 29343 29344 29345 29346 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 29347 29348 29349 </td> <!-- entry_type --> 29350 29351 <td class="entry_description"> 29352 <p>The area of the image sensor which corresponds to active pixels prior to the 29353application of any geometric distortion correction,<wbr/> when the sensor runs in maximum 29354resolution mode.<wbr/> This key must be used for crop /<wbr/> metering regions,<wbr/> only when 29355<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 29356<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 29357 </td> 29358 29359 <td class="entry_units"> 29360 Pixel coordinates on the image sensor 29361 </td> 29362 29363 <td class="entry_range"> 29364 </td> 29365 29366 <td class="entry_hal_version"> 29367 <p>3.<wbr/>6</p> 29368 </td> 29369 29370 <td class="entry_tags"> 29371 <ul class="entry_tags"> 29372 <li><a href="#tag_RAW">RAW</a></li> 29373 </ul> 29374 </td> 29375 29376 </tr> 29377 <tr class="entries_header"> 29378 <th class="th_details" colspan="6">Details</th> 29379 </tr> 29380 <tr class="entry_cont"> 29381 <td class="entry_details" colspan="6"> 29382 <p>Analogous 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/> 29383when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 29384<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/> 29385This key will only be present for devices which advertise the 29386<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 29387capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 29388lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>.<wbr/></p> 29389 </td> 29390 </tr> 29391 29392 <tr class="entries_header"> 29393 <th class="th_details" colspan="6">HAL Implementation Details</th> 29394 </tr> 29395 <tr class="entry_cont"> 29396 <td class="entry_details" colspan="6"> 29397 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 29398>= <code>(0,<wbr/>0)</code>.<wbr/> 29399The <code>(width,<wbr/> height)</code> must be <= <code><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/></p> 29400<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is 29401the same as the post-correction active array region given in 29402<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></p> 29403 </td> 29404 </tr> 29405 29406 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29407 <!-- end of entry --> 29408 29409 29410 <tr class="entry" id="static_android.sensor.info.binningFactor"> 29411 <td class="entry_name 29412 " rowspan="3"> 29413 android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor 29414 </td> 29415 <td class="entry_type"> 29416 <span class="entry_type_name">int32</span> 29417 <span class="entry_type_container">x</span> 29418 29419 <span class="entry_type_array"> 29420 2 29421 </span> 29422 <span class="entry_type_visibility"> [public as size]</span> 29423 29424 29425 29426 29427 29428 29429 </td> <!-- entry_type --> 29430 29431 <td class="entry_description"> 29432 <p>Dimensions of the group of pixels which are under the same color filter.<wbr/> 29433This specifies the width and height (pair of integers) of the group of pixels which fall 29434under the same color filter for ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION sensors.<wbr/></p> 29435 </td> 29436 29437 <td class="entry_units"> 29438 Pixels 29439 </td> 29440 29441 <td class="entry_range"> 29442 </td> 29443 29444 <td class="entry_hal_version"> 29445 <p>3.<wbr/>6</p> 29446 </td> 29447 29448 <td class="entry_tags"> 29449 </td> 29450 29451 </tr> 29452 <tr class="entries_header"> 29453 <th class="th_details" colspan="6">Details</th> 29454 </tr> 29455 <tr class="entry_cont"> 29456 <td class="entry_details" colspan="6"> 29457 <p>Sensors can have pixels grouped together under the same color filter in order 29458to improve various aspects of imaging such as noise reduction,<wbr/> low light 29459performance etc.<wbr/> These groups can be of various sizes such as 2X2 (quad bayer),<wbr/> 294603X3 (nona-bayer).<wbr/> This key specifies the length and width of the pixels grouped under 29461the same color filter.<wbr/> 29462In case the device has the 29463<a href="https://developer.android.com/reference/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 29464capability :</p> 29465<ul> 29466<li>This key will not be present if REMOSAIC_<wbr/>REPROCESSING is not supported,<wbr/> since RAW 29467 images will have a regular bayer pattern.<wbr/></li> 29468</ul> 29469<p>In case the device does not have the 29470<a href="https://developer.android.com/reference/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 29471capability :</p> 29472<ul> 29473<li>This key will be present if 29474 <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 29475 lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> since RAW 29476 images may not necessarily have a regular bayer pattern when 29477 <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE"><a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a></a> is set to 29478 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></li> 29479</ul> 29480 </td> 29481 </tr> 29482 29483 29484 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29485 <!-- end of entry --> 29486 29487 29488 29489 29490 29491 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 29492 <td class="entry_name 29493 " rowspan="5"> 29494 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 29495 </td> 29496 <td class="entry_type"> 29497 <span class="entry_type_name entry_type_name_enum">byte</span> 29498 29499 <span class="entry_type_visibility"> [public]</span> 29500 29501 29502 29503 29504 29505 <ul class="entry_type_enum"> 29506 <li> 29507 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> 29508 <span class="entry_type_enum_value">1</span> 29509 </li> 29510 <li> 29511 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> 29512 <span class="entry_type_enum_value">2</span> 29513 </li> 29514 <li> 29515 <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span> 29516 <span class="entry_type_enum_value">3</span> 29517 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 29518 </li> 29519 <li> 29520 <span class="entry_type_enum_name">FLASH (v3.2)</span> 29521 <span class="entry_type_enum_value">4</span> 29522 </li> 29523 <li> 29524 <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span> 29525 <span class="entry_type_enum_value">9</span> 29526 </li> 29527 <li> 29528 <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span> 29529 <span class="entry_type_enum_value">10</span> 29530 </li> 29531 <li> 29532 <span class="entry_type_enum_name">SHADE (v3.2)</span> 29533 <span class="entry_type_enum_value">11</span> 29534 </li> 29535 <li> 29536 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span> 29537 <span class="entry_type_enum_value">12</span> 29538 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 29539 </li> 29540 <li> 29541 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span> 29542 <span class="entry_type_enum_value">13</span> 29543 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 29544 </li> 29545 <li> 29546 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span> 29547 <span class="entry_type_enum_value">14</span> 29548 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 29549 </li> 29550 <li> 29551 <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span> 29552 <span class="entry_type_enum_value">15</span> 29553 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 29554 </li> 29555 <li> 29556 <span class="entry_type_enum_name">STANDARD_A (v3.2)</span> 29557 <span class="entry_type_enum_value">17</span> 29558 </li> 29559 <li> 29560 <span class="entry_type_enum_name">STANDARD_B (v3.2)</span> 29561 <span class="entry_type_enum_value">18</span> 29562 </li> 29563 <li> 29564 <span class="entry_type_enum_name">STANDARD_C (v3.2)</span> 29565 <span class="entry_type_enum_value">19</span> 29566 </li> 29567 <li> 29568 <span class="entry_type_enum_name">D55 (v3.2)</span> 29569 <span class="entry_type_enum_value">20</span> 29570 </li> 29571 <li> 29572 <span class="entry_type_enum_name">D65 (v3.2)</span> 29573 <span class="entry_type_enum_value">21</span> 29574 </li> 29575 <li> 29576 <span class="entry_type_enum_name">D75 (v3.2)</span> 29577 <span class="entry_type_enum_value">22</span> 29578 </li> 29579 <li> 29580 <span class="entry_type_enum_name">D50 (v3.2)</span> 29581 <span class="entry_type_enum_value">23</span> 29582 </li> 29583 <li> 29584 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span> 29585 <span class="entry_type_enum_value">24</span> 29586 </li> 29587 </ul> 29588 29589 </td> <!-- entry_type --> 29590 29591 <td class="entry_description"> 29592 <p>The standard reference illuminant used as the scene light source when 29593calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 29594<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 29595<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> 29596 </td> 29597 29598 <td class="entry_units"> 29599 </td> 29600 29601 <td class="entry_range"> 29602 </td> 29603 29604 <td class="entry_hal_version"> 29605 <p>3.<wbr/>2</p> 29606 </td> 29607 29608 <td class="entry_tags"> 29609 <ul class="entry_tags"> 29610 <li><a href="#tag_RAW">RAW</a></li> 29611 </ul> 29612 </td> 29613 29614 </tr> 29615 <tr class="entries_header"> 29616 <th class="th_details" colspan="6">Details</th> 29617 </tr> 29618 <tr class="entry_cont"> 29619 <td class="entry_details" colspan="6"> 29620 <p>The values in this key correspond to the values defined for the 29621EXIF LightSource tag.<wbr/> These illuminants are standard light sources 29622that are often used calibrating camera devices.<wbr/></p> 29623<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 29624<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 29625<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> 29626<p>Some devices may choose to provide a second set of calibration 29627information for improved quality,<wbr/> including 29628<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> 29629<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 29630the camera device has RAW capability.<wbr/></p> 29631 </td> 29632 </tr> 29633 29634 <tr class="entries_header"> 29635 <th class="th_details" colspan="6">HAL Implementation Details</th> 29636 </tr> 29637 <tr class="entry_cont"> 29638 <td class="entry_details" colspan="6"> 29639 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 29640and corresponding matrices must be present to support the RAW capability 29641and DNG output.<wbr/></p> 29642<p>When producing raw images with a color profile that has only been 29643calibrated against a single light source,<wbr/> it is valid to omit 29644<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the 29645<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/> 29646and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 29647<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be 29648chosen so that it is representative of typical scene lighting.<wbr/> In 29649general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> 29650<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and 29651<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be 29652chosen to represent the typical range of scene lighting conditions.<wbr/> 29653In general,<wbr/> low color temperature illuminant such as Standard-A will 29654be chosen for the first reference illuminant and a higher color 29655temperature illuminant such as D65 will be chosen for the second 29656reference illuminant.<wbr/></p> 29657 </td> 29658 </tr> 29659 29660 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29661 <!-- end of entry --> 29662 29663 29664 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 29665 <td class="entry_name 29666 " rowspan="3"> 29667 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 29668 </td> 29669 <td class="entry_type"> 29670 <span class="entry_type_name">byte</span> 29671 29672 <span class="entry_type_visibility"> [public]</span> 29673 29674 29675 29676 29677 29678 29679 </td> <!-- entry_type --> 29680 29681 <td class="entry_description"> 29682 <p>The standard reference illuminant used as the scene light source when 29683calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 29684<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 29685<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 29686 </td> 29687 29688 <td class="entry_units"> 29689 </td> 29690 29691 <td class="entry_range"> 29692 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p> 29693 </td> 29694 29695 <td class="entry_hal_version"> 29696 <p>3.<wbr/>2</p> 29697 </td> 29698 29699 <td class="entry_tags"> 29700 <ul class="entry_tags"> 29701 <li><a href="#tag_RAW">RAW</a></li> 29702 </ul> 29703 </td> 29704 29705 </tr> 29706 <tr class="entries_header"> 29707 <th class="th_details" colspan="6">Details</th> 29708 </tr> 29709 <tr class="entry_cont"> 29710 <td class="entry_details" colspan="6"> 29711 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p> 29712<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 29713<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 29714<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> 29715<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 29716the camera device has RAW capability.<wbr/></p> 29717 </td> 29718 </tr> 29719 29720 29721 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29722 <!-- end of entry --> 29723 29724 29725 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 29726 <td class="entry_name 29727 " rowspan="3"> 29728 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 29729 </td> 29730 <td class="entry_type"> 29731 <span class="entry_type_name">rational</span> 29732 <span class="entry_type_container">x</span> 29733 29734 <span class="entry_type_array"> 29735 3 x 3 29736 </span> 29737 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 29738 29739 29740 29741 29742 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 29743 29744 29745 </td> <!-- entry_type --> 29746 29747 <td class="entry_description"> 29748 <p>A per-device calibration transform matrix that maps from the 29749reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> 29750 </td> 29751 29752 <td class="entry_units"> 29753 </td> 29754 29755 <td class="entry_range"> 29756 </td> 29757 29758 <td class="entry_hal_version"> 29759 <p>3.<wbr/>2</p> 29760 </td> 29761 29762 <td class="entry_tags"> 29763 <ul class="entry_tags"> 29764 <li><a href="#tag_RAW">RAW</a></li> 29765 </ul> 29766 </td> 29767 29768 </tr> 29769 <tr class="entries_header"> 29770 <th class="th_details" colspan="6">Details</th> 29771 </tr> 29772 <tr class="entry_cont"> 29773 <td class="entry_details" colspan="6"> 29774 <p>This matrix is used to correct for per-device variations in the 29775sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 29776<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 29777contains a per-device calibration transform that maps colors 29778from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 29779colorspace) into this camera device's native sensor color 29780space under the first reference illuminant 29781(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 29782<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 29783the camera device has RAW capability.<wbr/></p> 29784 </td> 29785 </tr> 29786 29787 29788 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29789 <!-- end of entry --> 29790 29791 29792 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 29793 <td class="entry_name 29794 " rowspan="3"> 29795 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 29796 </td> 29797 <td class="entry_type"> 29798 <span class="entry_type_name">rational</span> 29799 <span class="entry_type_container">x</span> 29800 29801 <span class="entry_type_array"> 29802 3 x 3 29803 </span> 29804 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 29805 29806 29807 29808 29809 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 29810 29811 29812 </td> <!-- entry_type --> 29813 29814 <td class="entry_description"> 29815 <p>A per-device calibration transform matrix that maps from the 29816reference sensor colorspace to the actual device sensor colorspace 29817(this is the colorspace of the raw buffer data).<wbr/></p> 29818 </td> 29819 29820 <td class="entry_units"> 29821 </td> 29822 29823 <td class="entry_range"> 29824 </td> 29825 29826 <td class="entry_hal_version"> 29827 <p>3.<wbr/>2</p> 29828 </td> 29829 29830 <td class="entry_tags"> 29831 <ul class="entry_tags"> 29832 <li><a href="#tag_RAW">RAW</a></li> 29833 </ul> 29834 </td> 29835 29836 </tr> 29837 <tr class="entries_header"> 29838 <th class="th_details" colspan="6">Details</th> 29839 </tr> 29840 <tr class="entry_cont"> 29841 <td class="entry_details" colspan="6"> 29842 <p>This matrix is used to correct for per-device variations in the 29843sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 29844<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 29845contains a per-device calibration transform that maps colors 29846from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 29847colorspace) into this camera device's native sensor color 29848space under the second reference illuminant 29849(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 29850<p>This matrix will only be present if the second reference 29851illuminant is present.<wbr/></p> 29852<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 29853the camera device has RAW capability.<wbr/></p> 29854 </td> 29855 </tr> 29856 29857 29858 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29859 <!-- end of entry --> 29860 29861 29862 <tr class="entry" id="static_android.sensor.colorTransform1"> 29863 <td class="entry_name 29864 " rowspan="3"> 29865 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 29866 </td> 29867 <td class="entry_type"> 29868 <span class="entry_type_name">rational</span> 29869 <span class="entry_type_container">x</span> 29870 29871 <span class="entry_type_array"> 29872 3 x 3 29873 </span> 29874 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 29875 29876 29877 29878 29879 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 29880 29881 29882 </td> <!-- entry_type --> 29883 29884 <td class="entry_description"> 29885 <p>A matrix that transforms color values from CIE XYZ color space to 29886reference sensor color space.<wbr/></p> 29887 </td> 29888 29889 <td class="entry_units"> 29890 </td> 29891 29892 <td class="entry_range"> 29893 </td> 29894 29895 <td class="entry_hal_version"> 29896 <p>3.<wbr/>2</p> 29897 </td> 29898 29899 <td class="entry_tags"> 29900 <ul class="entry_tags"> 29901 <li><a href="#tag_RAW">RAW</a></li> 29902 </ul> 29903 </td> 29904 29905 </tr> 29906 <tr class="entries_header"> 29907 <th class="th_details" colspan="6">Details</th> 29908 </tr> 29909 <tr class="entry_cont"> 29910 <td class="entry_details" colspan="6"> 29911 <p>This matrix is used to convert from the standard CIE XYZ color 29912space to the reference sensor colorspace,<wbr/> and is used when processing 29913raw buffer data.<wbr/></p> 29914<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 29915contains a color transform matrix that maps colors from the CIE 29916XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 29917"golden module" colorspace) under the first reference illuminant 29918(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 29919<p>The white points chosen in both the reference sensor color space 29920and the CIE XYZ colorspace when calculating this transform will 29921match the standard white point for the first reference illuminant 29922(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 29923<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 29924the camera device has RAW capability.<wbr/></p> 29925 </td> 29926 </tr> 29927 29928 29929 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29930 <!-- end of entry --> 29931 29932 29933 <tr class="entry" id="static_android.sensor.colorTransform2"> 29934 <td class="entry_name 29935 " rowspan="3"> 29936 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 29937 </td> 29938 <td class="entry_type"> 29939 <span class="entry_type_name">rational</span> 29940 <span class="entry_type_container">x</span> 29941 29942 <span class="entry_type_array"> 29943 3 x 3 29944 </span> 29945 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 29946 29947 29948 29949 29950 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 29951 29952 29953 </td> <!-- entry_type --> 29954 29955 <td class="entry_description"> 29956 <p>A matrix that transforms color values from CIE XYZ color space to 29957reference sensor color space.<wbr/></p> 29958 </td> 29959 29960 <td class="entry_units"> 29961 </td> 29962 29963 <td class="entry_range"> 29964 </td> 29965 29966 <td class="entry_hal_version"> 29967 <p>3.<wbr/>2</p> 29968 </td> 29969 29970 <td class="entry_tags"> 29971 <ul class="entry_tags"> 29972 <li><a href="#tag_RAW">RAW</a></li> 29973 </ul> 29974 </td> 29975 29976 </tr> 29977 <tr class="entries_header"> 29978 <th class="th_details" colspan="6">Details</th> 29979 </tr> 29980 <tr class="entry_cont"> 29981 <td class="entry_details" colspan="6"> 29982 <p>This matrix is used to convert from the standard CIE XYZ color 29983space to the reference sensor colorspace,<wbr/> and is used when processing 29984raw buffer data.<wbr/></p> 29985<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 29986contains a color transform matrix that maps colors from the CIE 29987XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 29988"golden module" colorspace) under the second reference illuminant 29989(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 29990<p>The white points chosen in both the reference sensor color space 29991and the CIE XYZ colorspace when calculating this transform will 29992match the standard white point for the second reference illuminant 29993(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 29994<p>This matrix will only be present if the second reference 29995illuminant is present.<wbr/></p> 29996<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 29997the camera device has RAW capability.<wbr/></p> 29998 </td> 29999 </tr> 30000 30001 30002 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30003 <!-- end of entry --> 30004 30005 30006 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 30007 <td class="entry_name 30008 " rowspan="3"> 30009 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 30010 </td> 30011 <td class="entry_type"> 30012 <span class="entry_type_name">rational</span> 30013 <span class="entry_type_container">x</span> 30014 30015 <span class="entry_type_array"> 30016 3 x 3 30017 </span> 30018 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 30019 30020 30021 30022 30023 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 30024 30025 30026 </td> <!-- entry_type --> 30027 30028 <td class="entry_description"> 30029 <p>A matrix that transforms white balanced camera colors from the reference 30030sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 30031 </td> 30032 30033 <td class="entry_units"> 30034 </td> 30035 30036 <td class="entry_range"> 30037 </td> 30038 30039 <td class="entry_hal_version"> 30040 <p>3.<wbr/>2</p> 30041 </td> 30042 30043 <td class="entry_tags"> 30044 <ul class="entry_tags"> 30045 <li><a href="#tag_RAW">RAW</a></li> 30046 </ul> 30047 </td> 30048 30049 </tr> 30050 <tr class="entries_header"> 30051 <th class="th_details" colspan="6">Details</th> 30052 </tr> 30053 <tr class="entry_cont"> 30054 <td class="entry_details" colspan="6"> 30055 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 30056is used when processing raw buffer data.<wbr/></p> 30057<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 30058a color transform matrix that maps white balanced colors from the 30059reference sensor color space to the CIE XYZ color space with a D50 white 30060point.<wbr/></p> 30061<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 30062this matrix is chosen so that the standard white point for this reference 30063illuminant in the reference sensor colorspace is mapped to D50 in the 30064CIE XYZ colorspace.<wbr/></p> 30065<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 30066the camera device has RAW capability.<wbr/></p> 30067 </td> 30068 </tr> 30069 30070 30071 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30072 <!-- end of entry --> 30073 30074 30075 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 30076 <td class="entry_name 30077 " rowspan="3"> 30078 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 30079 </td> 30080 <td class="entry_type"> 30081 <span class="entry_type_name">rational</span> 30082 <span class="entry_type_container">x</span> 30083 30084 <span class="entry_type_array"> 30085 3 x 3 30086 </span> 30087 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 30088 30089 30090 30091 30092 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 30093 30094 30095 </td> <!-- entry_type --> 30096 30097 <td class="entry_description"> 30098 <p>A matrix that transforms white balanced camera colors from the reference 30099sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 30100 </td> 30101 30102 <td class="entry_units"> 30103 </td> 30104 30105 <td class="entry_range"> 30106 </td> 30107 30108 <td class="entry_hal_version"> 30109 <p>3.<wbr/>2</p> 30110 </td> 30111 30112 <td class="entry_tags"> 30113 <ul class="entry_tags"> 30114 <li><a href="#tag_RAW">RAW</a></li> 30115 </ul> 30116 </td> 30117 30118 </tr> 30119 <tr class="entries_header"> 30120 <th class="th_details" colspan="6">Details</th> 30121 </tr> 30122 <tr class="entry_cont"> 30123 <td class="entry_details" colspan="6"> 30124 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 30125is used when processing raw buffer data.<wbr/></p> 30126<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 30127a color transform matrix that maps white balanced colors from the 30128reference sensor color space to the CIE XYZ color space with a D50 white 30129point.<wbr/></p> 30130<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 30131this matrix is chosen so that the standard white point for this reference 30132illuminant in the reference sensor colorspace is mapped to D50 in the 30133CIE XYZ colorspace.<wbr/></p> 30134<p>This matrix will only be present if the second reference 30135illuminant is present.<wbr/></p> 30136<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 30137the camera device has RAW capability.<wbr/></p> 30138 </td> 30139 </tr> 30140 30141 30142 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30143 <!-- end of entry --> 30144 30145 30146 <tr class="entry" id="static_android.sensor.baseGainFactor"> 30147 <td class="entry_name 30148 " rowspan="1"> 30149 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 30150 </td> 30151 <td class="entry_type"> 30152 <span class="entry_type_name">rational</span> 30153 30154 <span class="entry_type_visibility"> [system]</span> 30155 30156 30157 30158 30159 30160 30161 </td> <!-- entry_type --> 30162 30163 <td class="entry_description"> 30164 <p>Gain factor from electrons to raw units when 30165ISO=100</p> 30166 </td> 30167 30168 <td class="entry_units"> 30169 </td> 30170 30171 <td class="entry_range"> 30172 </td> 30173 30174 <td class="entry_hal_version"> 30175 <p>3.<wbr/>2</p> 30176 </td> 30177 30178 <td class="entry_tags"> 30179 <ul class="entry_tags"> 30180 <li><a href="#tag_FUTURE">FUTURE</a></li> 30181 </ul> 30182 </td> 30183 30184 </tr> 30185 30186 30187 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30188 <!-- end of entry --> 30189 30190 30191 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 30192 <td class="entry_name 30193 " rowspan="5"> 30194 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 30195 </td> 30196 <td class="entry_type"> 30197 <span class="entry_type_name">int32</span> 30198 <span class="entry_type_container">x</span> 30199 30200 <span class="entry_type_array"> 30201 4 30202 </span> 30203 <span class="entry_type_visibility"> [public as blackLevelPattern]</span> 30204 30205 30206 30207 30208 <div class="entry_type_notes">2x2 raw count block</div> 30209 30210 30211 </td> <!-- entry_type --> 30212 30213 <td class="entry_description"> 30214 <p>A fixed black level offset for each of the color filter arrangement 30215(CFA) mosaic channels.<wbr/></p> 30216 </td> 30217 30218 <td class="entry_units"> 30219 </td> 30220 30221 <td class="entry_range"> 30222 <p>>= 0 for each.<wbr/></p> 30223 </td> 30224 30225 <td class="entry_hal_version"> 30226 <p>3.<wbr/>2</p> 30227 </td> 30228 30229 <td class="entry_tags"> 30230 <ul class="entry_tags"> 30231 <li><a href="#tag_RAW">RAW</a></li> 30232 </ul> 30233 </td> 30234 30235 </tr> 30236 <tr class="entries_header"> 30237 <th class="th_details" colspan="6">Details</th> 30238 </tr> 30239 <tr class="entry_cont"> 30240 <td class="entry_details" colspan="6"> 30241 <p>This key specifies the zero light value for each of the CFA mosaic 30242channels in the camera sensor.<wbr/> The maximal value output by the 30243sensor 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> 30244<p>The values are given in the same order as channels listed for the CFA 30245layout 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 30246nth value given corresponds to the black level offset for the nth 30247color channel listed in the CFA.<wbr/></p> 30248<p>The black level values of captured images may vary for different 30249capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 30250represents a coarse approximation for such case.<wbr/> It is recommended to 30251use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from 30252<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when 30253supported by the camera device,<wbr/> which provides more accurate black 30254level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use 30255pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black 30256level values for each frame.<wbr/></p> 30257<p>For a MONOCHROME camera device,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p> 30258 </td> 30259 </tr> 30260 30261 <tr class="entries_header"> 30262 <th class="th_details" colspan="6">HAL Implementation Details</th> 30263 </tr> 30264 <tr class="entry_cont"> 30265 <td class="entry_details" colspan="6"> 30266 <p>The values are given in row-column scan order,<wbr/> with the first value 30267corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 30268 </td> 30269 </tr> 30270 30271 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30272 <!-- end of entry --> 30273 30274 30275 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 30276 <td class="entry_name 30277 " rowspan="3"> 30278 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 30279 </td> 30280 <td class="entry_type"> 30281 <span class="entry_type_name">int32</span> 30282 30283 <span class="entry_type_visibility"> [public]</span> 30284 30285 30286 <span class="entry_type_hwlevel">[full] </span> 30287 30288 30289 30290 30291 </td> <!-- entry_type --> 30292 30293 <td class="entry_description"> 30294 <p>Maximum sensitivity that is implemented 30295purely through analog gain.<wbr/></p> 30296 </td> 30297 30298 <td class="entry_units"> 30299 </td> 30300 30301 <td class="entry_range"> 30302 </td> 30303 30304 <td class="entry_hal_version"> 30305 <p>3.<wbr/>2</p> 30306 </td> 30307 30308 <td class="entry_tags"> 30309 <ul class="entry_tags"> 30310 <li><a href="#tag_V1">V1</a></li> 30311 <li><a href="#tag_FULL">FULL</a></li> 30312 </ul> 30313 </td> 30314 30315 </tr> 30316 <tr class="entries_header"> 30317 <th class="th_details" colspan="6">Details</th> 30318 </tr> 30319 <tr class="entry_cont"> 30320 <td class="entry_details" colspan="6"> 30321 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 30322equal to this,<wbr/> all applied gain must be analog.<wbr/> For 30323values above this,<wbr/> the gain applied can be a mix of analog and 30324digital.<wbr/></p> 30325 </td> 30326 </tr> 30327 30328 30329 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30330 <!-- end of entry --> 30331 30332 30333 <tr class="entry" id="static_android.sensor.orientation"> 30334 <td class="entry_name 30335 " rowspan="3"> 30336 android.<wbr/>sensor.<wbr/>orientation 30337 </td> 30338 <td class="entry_type"> 30339 <span class="entry_type_name">int32</span> 30340 30341 <span class="entry_type_visibility"> [public]</span> 30342 30343 30344 <span class="entry_type_hwlevel">[legacy] </span> 30345 30346 30347 30348 30349 </td> <!-- entry_type --> 30350 30351 <td class="entry_description"> 30352 <p>Clockwise angle through which the output image needs to be rotated to be 30353upright on the device screen in its native orientation.<wbr/></p> 30354 </td> 30355 30356 <td class="entry_units"> 30357 Degrees of clockwise rotation; always a multiple of 30358 90 30359 </td> 30360 30361 <td class="entry_range"> 30362 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 30363 </td> 30364 30365 <td class="entry_hal_version"> 30366 <p>3.<wbr/>2</p> 30367 </td> 30368 30369 <td class="entry_tags"> 30370 <ul class="entry_tags"> 30371 <li><a href="#tag_BC">BC</a></li> 30372 </ul> 30373 </td> 30374 30375 </tr> 30376 <tr class="entries_header"> 30377 <th class="th_details" colspan="6">Details</th> 30378 </tr> 30379 <tr class="entry_cont"> 30380 <td class="entry_details" colspan="6"> 30381 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in 30382the sensor's coordinate system.<wbr/></p> 30383<p>Starting with Android API level 32,<wbr/> camera clients that query the orientation via 30384<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> on foldable devices which 30385include logical cameras can receive a value that can dynamically change depending on the 30386device/<wbr/>fold state.<wbr/> 30387Clients are advised to not cache or store the orientation value of such logical sensors.<wbr/> 30388In case repeated queries to CameraCharacteristics are not preferred,<wbr/> then clients can 30389also access the entire mapping from device state to sensor orientation in 30390<a href="https://developer.android.com/reference/android/hardware/camera2/params/DeviceStateSensorOrientationMap.html">DeviceStateSensorOrientationMap</a>.<wbr/> 30391Do note that a dynamically changing sensor orientation value in camera characteristics 30392will not be the best way to establish the orientation per frame.<wbr/> Clients that want to 30393know the sensor orientation of a particular captured frame should query the 30394<a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id</a> from the corresponding capture result and 30395check the respective physical camera orientation.<wbr/></p> 30396 </td> 30397 </tr> 30398 30399 30400 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30401 <!-- end of entry --> 30402 30403 30404 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 30405 <td class="entry_name 30406 " rowspan="3"> 30407 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 30408 </td> 30409 <td class="entry_type"> 30410 <span class="entry_type_name">int32</span> 30411 <span class="entry_type_container">x</span> 30412 30413 <span class="entry_type_array"> 30414 3 30415 </span> 30416 <span class="entry_type_visibility"> [system]</span> 30417 30418 30419 30420 30421 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 30422 30423 30424 </td> <!-- entry_type --> 30425 30426 <td class="entry_description"> 30427 <p>The number of input samples for each dimension of 30428<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 30429 </td> 30430 30431 <td class="entry_units"> 30432 </td> 30433 30434 <td class="entry_range"> 30435 <p>Hue >= 1,<wbr/> 30436Saturation >= 2,<wbr/> 30437Value >= 1</p> 30438 </td> 30439 30440 <td class="entry_hal_version"> 30441 <p>3.<wbr/>2</p> 30442 </td> 30443 30444 <td class="entry_tags"> 30445 <ul class="entry_tags"> 30446 <li><a href="#tag_RAW">RAW</a></li> 30447 </ul> 30448 </td> 30449 30450 </tr> 30451 <tr class="entries_header"> 30452 <th class="th_details" colspan="6">Details</th> 30453 </tr> 30454 <tr class="entry_cont"> 30455 <td class="entry_details" colspan="6"> 30456 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 30457dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 30458dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 30459element.<wbr/></p> 30460 </td> 30461 </tr> 30462 30463 30464 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30465 <!-- end of entry --> 30466 30467 30468 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 30469 <td class="entry_name 30470 " rowspan="5"> 30471 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 30472 </td> 30473 <td class="entry_type"> 30474 <span class="entry_type_name">int32</span> 30475 <span class="entry_type_container">x</span> 30476 30477 <span class="entry_type_array"> 30478 n 30479 </span> 30480 <span class="entry_type_visibility"> [public]</span> 30481 30482 30483 30484 30485 <div class="entry_type_notes">list of enums</div> 30486 30487 30488 </td> <!-- entry_type --> 30489 30490 <td class="entry_description"> 30491 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> 30492supported by this camera device.<wbr/></p> 30493 </td> 30494 30495 <td class="entry_units"> 30496 </td> 30497 30498 <td class="entry_range"> 30499 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p> 30500 </td> 30501 30502 <td class="entry_hal_version"> 30503 <p>3.<wbr/>2</p> 30504 </td> 30505 30506 <td class="entry_tags"> 30507 </td> 30508 30509 </tr> 30510 <tr class="entries_header"> 30511 <th class="th_details" colspan="6">Details</th> 30512 </tr> 30513 <tr class="entry_cont"> 30514 <td class="entry_details" colspan="6"> 30515 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p> 30516 </td> 30517 </tr> 30518 30519 <tr class="entries_header"> 30520 <th class="th_details" colspan="6">HAL Implementation Details</th> 30521 </tr> 30522 <tr class="entry_cont"> 30523 <td class="entry_details" colspan="6"> 30524 <p>All custom modes must be >= CUSTOM1.<wbr/></p> 30525 </td> 30526 </tr> 30527 30528 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30529 <!-- end of entry --> 30530 30531 30532 <tr class="entry" id="static_android.sensor.opticalBlackRegions"> 30533 <td class="entry_name 30534 " rowspan="5"> 30535 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions 30536 </td> 30537 <td class="entry_type"> 30538 <span class="entry_type_name">int32</span> 30539 <span class="entry_type_container">x</span> 30540 30541 <span class="entry_type_array"> 30542 4 x num_regions 30543 </span> 30544 <span class="entry_type_visibility"> [public as rectangle]</span> 30545 30546 30547 30548 30549 30550 30551 </td> <!-- entry_type --> 30552 30553 <td class="entry_description"> 30554 <p>List of disjoint rectangles indicating the sensor 30555optically shielded black pixel regions.<wbr/></p> 30556 </td> 30557 30558 <td class="entry_units"> 30559 </td> 30560 30561 <td class="entry_range"> 30562 </td> 30563 30564 <td class="entry_hal_version"> 30565 <p>3.<wbr/>2</p> 30566 </td> 30567 30568 <td class="entry_tags"> 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>In most camera sensors,<wbr/> the active array is surrounded by some 30578optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels 30579provides a reliable black reference for black level compensation 30580in active array region.<wbr/></p> 30581<p>This key provides a list of disjoint rectangles specifying the 30582regions of optically shielded (with metal shield) black pixel 30583regions if the camera device is capable of reading out these black 30584pixels in the output raw images.<wbr/> In comparison to the fixed black 30585level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key 30586may provide a more accurate way for the application to calculate 30587black level of each captured raw images.<wbr/></p> 30588<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 30589<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p> 30590 </td> 30591 </tr> 30592 30593 <tr class="entries_header"> 30594 <th class="th_details" colspan="6">HAL Implementation Details</th> 30595 </tr> 30596 <tr class="entry_cont"> 30597 <td class="entry_details" colspan="6"> 30598 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin) 30599must be >= (0,<wbr/>0) and <= 30600<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 30601<= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be 30602outside the region reported by 30603<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> 30604<p>The HAL must report minimal number of disjoint regions for the 30605optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can 30606be covered by one rectangle,<wbr/> the HAL must not split this region into 30607multiple rectangles.<wbr/></p> 30608 </td> 30609 </tr> 30610 30611 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30612 <!-- end of entry --> 30613 30614 30615 <tr class="entry" id="static_android.sensor.opaqueRawSize"> 30616 <td class="entry_name 30617 " rowspan="5"> 30618 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size 30619 </td> 30620 <td class="entry_type"> 30621 <span class="entry_type_name">int32</span> 30622 <span class="entry_type_container">x</span> 30623 30624 <span class="entry_type_array"> 30625 n x 3 30626 </span> 30627 <span class="entry_type_visibility"> [system]</span> 30628 30629 30630 30631 30632 30633 30634 </td> <!-- entry_type --> 30635 30636 <td class="entry_description"> 30637 <p>Size in bytes for all the listed opaque RAW buffer sizes</p> 30638 </td> 30639 30640 <td class="entry_units"> 30641 </td> 30642 30643 <td class="entry_range"> 30644 <p>Must be large enough to fit the opaque RAW of corresponding size produced by 30645the camera</p> 30646 </td> 30647 30648 <td class="entry_hal_version"> 30649 <p>3.<wbr/>2</p> 30650 </td> 30651 30652 <td class="entry_tags"> 30653 </td> 30654 30655 </tr> 30656 <tr class="entries_header"> 30657 <th class="th_details" colspan="6">Details</th> 30658 </tr> 30659 <tr class="entry_cont"> 30660 <td class="entry_details" colspan="6"> 30661 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/> 30662This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/> 30663All RAW_<wbr/>OPAQUE output stream configuration listed in 30664<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in 30665this key.<wbr/></p> 30666 </td> 30667 </tr> 30668 30669 <tr class="entries_header"> 30670 <th class="th_details" colspan="6">HAL Implementation Details</th> 30671 </tr> 30672 <tr class="entry_cont"> 30673 <td class="entry_details" colspan="6"> 30674 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p> 30675<p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this 30676key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera 30677framework will derive this key by assuming each pixel takes two bytes and no padding bytes 30678between rows.<wbr/></p> 30679 </td> 30680 </tr> 30681 30682 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30683 <!-- end of entry --> 30684 30685 30686 <tr class="entry" id="static_android.sensor.opaqueRawSizeMaximumResolution"> 30687 <td class="entry_name 30688 " rowspan="5"> 30689 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size<wbr/>Maximum<wbr/>Resolution 30690 </td> 30691 <td class="entry_type"> 30692 <span class="entry_type_name">int32</span> 30693 <span class="entry_type_container">x</span> 30694 30695 <span class="entry_type_array"> 30696 n x 3 30697 </span> 30698 <span class="entry_type_visibility"> [system]</span> 30699 30700 30701 30702 30703 30704 30705 </td> <!-- entry_type --> 30706 30707 <td class="entry_description"> 30708 <p>Size in bytes for all the listed opaque RAW buffer sizes when 30709<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 30710<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 30711 </td> 30712 30713 <td class="entry_units"> 30714 </td> 30715 30716 <td class="entry_range"> 30717 <p>Must be large enough to fit the opaque RAW of corresponding size produced by 30718the camera</p> 30719 </td> 30720 30721 <td class="entry_hal_version"> 30722 <p>3.<wbr/>6</p> 30723 </td> 30724 30725 <td class="entry_tags"> 30726 </td> 30727 30728 </tr> 30729 <tr class="entries_header"> 30730 <th class="th_details" colspan="6">Details</th> 30731 </tr> 30732 <tr class="entry_cont"> 30733 <td class="entry_details" colspan="6"> 30734 <p>Refer to <a href="#static_android.sensor.opaqueRawSize">android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size</a> for details.<wbr/></p> 30735 </td> 30736 </tr> 30737 30738 <tr class="entries_header"> 30739 <th class="th_details" colspan="6">HAL Implementation Details</th> 30740 </tr> 30741 <tr class="entry_cont"> 30742 <td class="entry_details" colspan="6"> 30743 <p>Refer to <a href="#static_android.sensor.opaqueRawSize">android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size</a> for details.<wbr/></p> 30744 </td> 30745 </tr> 30746 30747 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30748 <!-- end of entry --> 30749 30750 30751 <tr class="entry" id="static_android.sensor.readoutTimestamp"> 30752 <td class="entry_name 30753 " rowspan="5"> 30754 android.<wbr/>sensor.<wbr/>readout<wbr/>Timestamp 30755 </td> 30756 <td class="entry_type"> 30757 <span class="entry_type_name entry_type_name_enum">byte</span> 30758 30759 <span class="entry_type_visibility"> [java_public]</span> 30760 30761 30762 <span class="entry_type_hwlevel">[legacy] </span> 30763 30764 30765 30766 <ul class="entry_type_enum"> 30767 <li> 30768 <span class="entry_type_enum_name">NOT_SUPPORTED (v3.8)</span> 30769 <span class="entry_type_enum_notes"><p>This camera device doesn't support readout timestamp and onReadoutStarted 30770callback.<wbr/></p></span> 30771 </li> 30772 <li> 30773 <span class="entry_type_enum_name">HARDWARE (v3.8)</span> 30774 <span class="entry_type_enum_notes"><p>This camera device supports the onReadoutStarted callback as well as outputting 30775readout timestamps.<wbr/> The readout timestamp is generated by the camera hardware and it 30776has the same accuracy and timing characteristics of the start-of-exposure time.<wbr/></p></span> 30777 </li> 30778 </ul> 30779 30780 </td> <!-- entry_type --> 30781 30782 <td class="entry_description"> 30783 <p>Whether or not the camera device supports readout timestamp and 30784{@code onReadoutStarted} callback.<wbr/></p> 30785 </td> 30786 30787 <td class="entry_units"> 30788 </td> 30789 30790 <td class="entry_range"> 30791 </td> 30792 30793 <td class="entry_hal_version"> 30794 <p>3.<wbr/>8</p> 30795 </td> 30796 30797 <td class="entry_tags"> 30798 </td> 30799 30800 </tr> 30801 <tr class="entries_header"> 30802 <th class="th_details" colspan="6">Details</th> 30803 </tr> 30804 <tr class="entry_cont"> 30805 <td class="entry_details" colspan="6"> 30806 <p>If this tag is {@code HARDWARE},<wbr/> the camera device calls 30807<a href="https://developer.android.com/reference/CameraCaptureSession/CaptureCallback.html#onReadoutStarted">CaptureCallback#onReadoutStarted</a> in addition to the 30808<a href="https://developer.android.com/reference/CameraCaptureSession/CaptureCallback.html#onCaptureStarted">CaptureCallback#onCaptureStarted</a> callback for each capture.<wbr/> 30809The timestamp passed into the callback is the start of camera image readout rather than 30810the start of the exposure.<wbr/> The timestamp source of 30811<a href="https://developer.android.com/reference/CameraCaptureSession/CaptureCallback.html#onReadoutStarted">CaptureCallback#onReadoutStarted</a> is the same as that of 30812<a href="https://developer.android.com/reference/CameraCaptureSession/CaptureCallback.html#onCaptureStarted">CaptureCallback#onCaptureStarted</a>.<wbr/></p> 30813<p>In addition,<wbr/> the application can switch an output surface's timestamp from start of 30814exposure to start of readout by calling 30815<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setReadoutTimestampEnabled">OutputConfiguration#setReadoutTimestampEnabled</a>.<wbr/></p> 30816<p>The readout timestamp is beneficial for video recording,<wbr/> because the encoder favors 30817uniform timestamps,<wbr/> and the readout timestamps better reflect the cadence camera sensors 30818output data.<wbr/></p> 30819<p>Note that the camera device produces the start-of-exposure and start-of-readout callbacks 30820together.<wbr/> As a result,<wbr/> the <a href="https://developer.android.com/reference/CameraCaptureSession/CaptureCallback.html#onReadoutStarted">CaptureCallback#onReadoutStarted</a> 30821is called right after <a href="https://developer.android.com/reference/CameraCaptureSession/CaptureCallback.html#onCaptureStarted">CaptureCallback#onCaptureStarted</a>.<wbr/> The 30822difference in start-of-readout and start-of-exposure is the sensor exposure time,<wbr/> plus 30823certain constant offset.<wbr/> The offset is usually due to camera sensor level crop,<wbr/> and it is 30824generally constant over time for the same set of output resolutions and capture settings.<wbr/></p> 30825 </td> 30826 </tr> 30827 30828 <tr class="entries_header"> 30829 <th class="th_details" colspan="6">HAL Implementation Details</th> 30830 </tr> 30831 <tr class="entry_cont"> 30832 <td class="entry_details" colspan="6"> 30833 <p>This property may be set by HAL layers that implement the AIDL interface.<wbr/> If not set 30834camera framework will implicitly set it to HARDWARE for all AIDL HALs.<wbr/> Camera framework 30835will force set this to NOT_<wbr/>SUPPORTED for all HIDL HALs,<wbr/> regerdless of whether the HAL 30836provided a value or not.<wbr/></p> 30837 </td> 30838 </tr> 30839 30840 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30841 <!-- end of entry --> 30842 30843 30844 30845 <!-- end of kind --> 30846 </tbody> 30847 <tr><td colspan="7" class="kind">dynamic</td></tr> 30848 30849 <thead class="entries_header"> 30850 <tr> 30851 <th class="th_name">Property Name</th> 30852 <th class="th_type">Type</th> 30853 <th class="th_description">Description</th> 30854 <th class="th_units">Units</th> 30855 <th class="th_range">Range</th> 30856 <th class="th_hal_version">Initial HIDL HAL version</th> 30857 <th class="th_tags">Tags</th> 30858 </tr> 30859 </thead> 30860 30861 <tbody> 30862 30863 30864 30865 30866 30867 30868 30869 30870 30871 30872 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 30873 <td class="entry_name 30874 " rowspan="3"> 30875 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 30876 </td> 30877 <td class="entry_type"> 30878 <span class="entry_type_name">int64</span> 30879 30880 <span class="entry_type_visibility"> [public]</span> 30881 30882 30883 <span class="entry_type_hwlevel">[full] </span> 30884 30885 30886 30887 30888 </td> <!-- entry_type --> 30889 30890 <td class="entry_description"> 30891 <p>Duration each pixel is exposed to 30892light.<wbr/></p> 30893 </td> 30894 30895 <td class="entry_units"> 30896 Nanoseconds 30897 </td> 30898 30899 <td class="entry_range"> 30900 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 30901 </td> 30902 30903 <td class="entry_hal_version"> 30904 <p>3.<wbr/>2</p> 30905 </td> 30906 30907 <td class="entry_tags"> 30908 <ul class="entry_tags"> 30909 <li><a href="#tag_V1">V1</a></li> 30910 </ul> 30911 </td> 30912 30913 </tr> 30914 <tr class="entries_header"> 30915 <th class="th_details" colspan="6">Details</th> 30916 </tr> 30917 <tr class="entry_cont"> 30918 <td class="entry_details" colspan="6"> 30919 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 30920duration exposed to the nearest possible value (rather than expose longer).<wbr/> 30921The final exposure time used will be available in the output capture result.<wbr/></p> 30922<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 30923OFF; otherwise the auto-exposure algorithm will override this value.<wbr/> However,<wbr/> in the 30924case that <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is set to SENSOR_<wbr/>EXPOSURE_<wbr/>TIME_<wbr/>PRIORITY,<wbr/> this 30925control will be effective and not controlled by the auto-exposure algorithm.<wbr/></p> 30926 </td> 30927 </tr> 30928 30929 30930 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30931 <!-- end of entry --> 30932 30933 30934 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 30935 <td class="entry_name 30936 " rowspan="5"> 30937 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 30938 </td> 30939 <td class="entry_type"> 30940 <span class="entry_type_name">int64</span> 30941 30942 <span class="entry_type_visibility"> [public]</span> 30943 30944 30945 <span class="entry_type_hwlevel">[full] </span> 30946 30947 30948 30949 30950 </td> <!-- entry_type --> 30951 30952 <td class="entry_description"> 30953 <p>Duration from start of frame readout to 30954start of next frame readout.<wbr/></p> 30955 </td> 30956 30957 <td class="entry_units"> 30958 Nanoseconds 30959 </td> 30960 30961 <td class="entry_range"> 30962 <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/> 30963The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 30964 </td> 30965 30966 <td class="entry_hal_version"> 30967 <p>3.<wbr/>2</p> 30968 </td> 30969 30970 <td class="entry_tags"> 30971 <ul class="entry_tags"> 30972 <li><a href="#tag_V1">V1</a></li> 30973 </ul> 30974 </td> 30975 30976 </tr> 30977 <tr class="entries_header"> 30978 <th class="th_details" colspan="6">Details</th> 30979 </tr> 30980 <tr class="entry_cont"> 30981 <td class="entry_details" colspan="6"> 30982 <p>The maximum frame rate that can be supported by a camera subsystem is 30983a function of many factors:</p> 30984<ul> 30985<li>Requested resolutions of output image streams</li> 30986<li>Availability of binning /<wbr/> skipping modes on the imager</li> 30987<li>The bandwidth of the imager interface</li> 30988<li>The bandwidth of the various ISP processing blocks</li> 30989</ul> 30990<p>Since these factors can vary greatly between different ISPs and 30991sensors,<wbr/> the camera abstraction tries to represent the bandwidth 30992restrictions with as simple a model as possible.<wbr/></p> 30993<p>The model presented has the following characteristics:</p> 30994<ul> 30995<li>The image sensor is always configured to output the smallest 30996resolution possible given the application's requested output stream 30997sizes.<wbr/> The smallest resolution is defined as being at least as large 30998as the largest requested output stream size; the camera pipeline must 30999never digitally upsample sensor data when the crop region covers the 31000whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 31001resolutions are configured,<wbr/> the sensor can provide a higher frame 31002rate.<wbr/></li> 31003<li>Since any request may use any or all the currently configured 31004output streams,<wbr/> the sensor and ISP must be configured to support 31005scaling a single capture to all the streams at the same time.<wbr/> This 31006means the camera pipeline must be ready to produce the largest 31007requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 31008frame rate of a given configured stream set is governed only by the 31009largest requested stream resolution.<wbr/></li> 31010<li>Using more than one output stream in a request does not affect the 31011frame duration.<wbr/></li> 31012<li>Certain format-streams may need to do additional background processing 31013before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 31014can run concurrently to the rest of the camera pipeline,<wbr/> but 31015cannot process more than 1 capture at a time.<wbr/></li> 31016</ul> 31017<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via 31018<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 31019These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is 31020possible for a given stream configuration.<wbr/></p> 31021<p>Specifically,<wbr/> the application can use the following rules to 31022determine the minimum frame duration it can request from the camera 31023device:</p> 31024<ol> 31025<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li> 31026<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> 31027(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li> 31028<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum 31029out 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> 31030</ol> 31031<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> 31032using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady 31033state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let 31034this special kind of request be called <code>Rsimple</code>.<wbr/></p> 31035<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a 31036new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if 31037<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all 31038buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p> 31039<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> 31040<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 31041OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 31042<p><em>Note:</em> Prior to Android 13,<wbr/> this field was described as measuring the duration from 31043start of frame exposure to start of next frame exposure,<wbr/> which doesn't reflect the 31044definition from sensor manufacturer.<wbr/> A mobile sensor defines the frame duration as 31045intervals between sensor readouts.<wbr/></p> 31046 </td> 31047 </tr> 31048 31049 <tr class="entries_header"> 31050 <th class="th_details" colspan="6">HAL Implementation Details</th> 31051 </tr> 31052 <tr class="entry_cont"> 31053 <td class="entry_details" colspan="6"> 31054 <p>For more details about stalling,<wbr/> see 31055<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 31056 </td> 31057 </tr> 31058 31059 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31060 <!-- end of entry --> 31061 31062 31063 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 31064 <td class="entry_name 31065 " rowspan="5"> 31066 android.<wbr/>sensor.<wbr/>sensitivity 31067 </td> 31068 <td class="entry_type"> 31069 <span class="entry_type_name">int32</span> 31070 31071 <span class="entry_type_visibility"> [public]</span> 31072 31073 31074 <span class="entry_type_hwlevel">[full] </span> 31075 31076 31077 31078 31079 </td> <!-- entry_type --> 31080 31081 <td class="entry_description"> 31082 <p>The amount of gain applied to sensor data 31083before processing.<wbr/></p> 31084 </td> 31085 31086 <td class="entry_units"> 31087 ISO arithmetic units 31088 </td> 31089 31090 <td class="entry_range"> 31091 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 31092 </td> 31093 31094 <td class="entry_hal_version"> 31095 <p>3.<wbr/>2</p> 31096 </td> 31097 31098 <td class="entry_tags"> 31099 <ul class="entry_tags"> 31100 <li><a href="#tag_V1">V1</a></li> 31101 </ul> 31102 </td> 31103 31104 </tr> 31105 <tr class="entries_header"> 31106 <th class="th_details" colspan="6">Details</th> 31107 </tr> 31108 <tr class="entry_cont"> 31109 <td class="entry_details" colspan="6"> 31110 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 31111as defined in ISO 12232:2006.<wbr/></p> 31112<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 31113if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 31114is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 31115<p>If the camera device cannot apply the exact sensitivity 31116requested,<wbr/> it will reduce the gain to the nearest supported 31117value.<wbr/> The final sensitivity used will be available in the 31118output capture result.<wbr/></p> 31119<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 31120OFF; otherwise the auto-exposure algorithm will override this value.<wbr/> However,<wbr/> in the 31121case that <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is set to SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY,<wbr/> this 31122control will be effective and not controlled by the auto-exposure algorithm.<wbr/></p> 31123<p>Note that for devices supporting postRawSensitivityBoost,<wbr/> the total sensitivity applied 31124to the final processed image is the combination of <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 31125<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a>.<wbr/> In case the application uses the sensor 31126sensitivity from last capture result of an auto request for a manual request,<wbr/> in order 31127to achieve the same brightness in the output image,<wbr/> the application should also 31128set postRawSensitivityBoost.<wbr/></p> 31129 </td> 31130 </tr> 31131 31132 <tr class="entries_header"> 31133 <th class="th_details" colspan="6">HAL Implementation Details</th> 31134 </tr> 31135 <tr class="entry_cont"> 31136 <td class="entry_details" colspan="6"> 31137 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 31138 </td> 31139 </tr> 31140 31141 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31142 <!-- end of entry --> 31143 31144 31145 <tr class="entry" id="dynamic_android.sensor.timestamp"> 31146 <td class="entry_name 31147 " rowspan="5"> 31148 android.<wbr/>sensor.<wbr/>timestamp 31149 </td> 31150 <td class="entry_type"> 31151 <span class="entry_type_name">int64</span> 31152 31153 <span class="entry_type_visibility"> [public]</span> 31154 31155 31156 <span class="entry_type_hwlevel">[legacy] </span> 31157 31158 31159 31160 31161 </td> <!-- entry_type --> 31162 31163 <td class="entry_description"> 31164 <p>Time at start of exposure of first 31165row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p> 31166 </td> 31167 31168 <td class="entry_units"> 31169 Nanoseconds 31170 </td> 31171 31172 <td class="entry_range"> 31173 <p>> 0</p> 31174 </td> 31175 31176 <td class="entry_hal_version"> 31177 <p>3.<wbr/>2</p> 31178 </td> 31179 31180 <td class="entry_tags"> 31181 <ul class="entry_tags"> 31182 <li><a href="#tag_BC">BC</a></li> 31183 </ul> 31184 </td> 31185 31186 </tr> 31187 <tr class="entries_header"> 31188 <th class="th_details" colspan="6">Details</th> 31189 </tr> 31190 <tr class="entry_cont"> 31191 <td class="entry_details" colspan="6"> 31192 <p>The timestamps are also included in all image 31193buffers produced for the same capture,<wbr/> and will be identical 31194on all the outputs.<wbr/></p> 31195<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/> 31196the timestamps measure time since an unspecified starting point,<wbr/> 31197and are monotonically increasing.<wbr/> They can be compared with the 31198timestamps for other captures from the same camera device,<wbr/> but are 31199not guaranteed to be comparable to any other time source.<wbr/></p> 31200<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the 31201timestamps 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 31202be compared to other timestamps from other subsystems that 31203are using that base.<wbr/></p> 31204<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of 31205the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the 31206timestamp</a> in the TotalCaptureResult that was used to create the 31207reprocess capture request.<wbr/></p> 31208 </td> 31209 </tr> 31210 31211 <tr class="entries_header"> 31212 <th class="th_details" colspan="6">HAL Implementation Details</th> 31213 </tr> 31214 <tr class="entry_cont"> 31215 <td class="entry_details" colspan="6"> 31216 <p>All timestamps must be in reference to the kernel's 31217CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for 31218time spent asleep.<wbr/> This allows for synchronization with 31219sensors that continue to operate while the system is 31220otherwise asleep.<wbr/></p> 31221<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 31222The timestamp must be synchronized with the timestamps from other 31223sensor subsystems that are using the same timebase.<wbr/></p> 31224<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up 31225with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the 31226capture request.<wbr/></p> 31227 </td> 31228 </tr> 31229 31230 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31231 <!-- end of entry --> 31232 31233 31234 <tr class="entry" id="dynamic_android.sensor.temperature"> 31235 <td class="entry_name 31236 " rowspan="1"> 31237 android.<wbr/>sensor.<wbr/>temperature 31238 </td> 31239 <td class="entry_type"> 31240 <span class="entry_type_name">float</span> 31241 31242 <span class="entry_type_visibility"> [system]</span> 31243 31244 31245 31246 31247 31248 31249 </td> <!-- entry_type --> 31250 31251 <td class="entry_description"> 31252 <p>The temperature of the sensor,<wbr/> sampled at the time 31253exposure began for this frame.<wbr/></p> 31254<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 31255somewhere close to it.<wbr/></p> 31256 </td> 31257 31258 <td class="entry_units"> 31259 Celsius 31260 </td> 31261 31262 <td class="entry_range"> 31263 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 31264 </td> 31265 31266 <td class="entry_hal_version"> 31267 <p>3.<wbr/>2</p> 31268 </td> 31269 31270 <td class="entry_tags"> 31271 <ul class="entry_tags"> 31272 <li><a href="#tag_FUTURE">FUTURE</a></li> 31273 </ul> 31274 </td> 31275 31276 </tr> 31277 31278 31279 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31280 <!-- end of entry --> 31281 31282 31283 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 31284 <td class="entry_name 31285 " rowspan="3"> 31286 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 31287 </td> 31288 <td class="entry_type"> 31289 <span class="entry_type_name">rational</span> 31290 <span class="entry_type_container">x</span> 31291 31292 <span class="entry_type_array"> 31293 3 31294 </span> 31295 <span class="entry_type_visibility"> [public]</span> 31296 31297 31298 31299 31300 31301 31302 </td> <!-- entry_type --> 31303 31304 <td class="entry_description"> 31305 <p>The estimated camera neutral color in the native sensor colorspace at 31306the time of capture.<wbr/></p> 31307 </td> 31308 31309 <td class="entry_units"> 31310 </td> 31311 31312 <td class="entry_range"> 31313 </td> 31314 31315 <td class="entry_hal_version"> 31316 <p>3.<wbr/>2</p> 31317 </td> 31318 31319 <td class="entry_tags"> 31320 <ul class="entry_tags"> 31321 <li><a href="#tag_RAW">RAW</a></li> 31322 </ul> 31323 </td> 31324 31325 </tr> 31326 <tr class="entries_header"> 31327 <th class="th_details" colspan="6">Details</th> 31328 </tr> 31329 <tr class="entry_cont"> 31330 <td class="entry_details" colspan="6"> 31331 <p>This value gives the neutral color point encoded as an RGB value in the 31332native sensor color space.<wbr/> The neutral color point indicates the 31333currently estimated white point of the scene illumination.<wbr/> It can be 31334used to interpolate between the provided color transforms when 31335processing raw sensor data.<wbr/></p> 31336<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 31337<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 31338the camera device has RAW capability.<wbr/></p> 31339 </td> 31340 </tr> 31341 31342 31343 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31344 <!-- end of entry --> 31345 31346 31347 <tr class="entry" id="dynamic_android.sensor.noiseProfile"> 31348 <td class="entry_name 31349 " rowspan="5"> 31350 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile 31351 </td> 31352 <td class="entry_type"> 31353 <span class="entry_type_name">double</span> 31354 <span class="entry_type_container">x</span> 31355 31356 <span class="entry_type_array"> 31357 2 x CFA Channels 31358 </span> 31359 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span> 31360 31361 31362 31363 31364 <div class="entry_type_notes">Pairs of noise model coefficients</div> 31365 31366 31367 </td> <!-- entry_type --> 31368 31369 <td class="entry_description"> 31370 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p> 31371 </td> 31372 31373 <td class="entry_units"> 31374 </td> 31375 31376 <td class="entry_range"> 31377 </td> 31378 31379 <td class="entry_hal_version"> 31380 <p>3.<wbr/>2</p> 31381 </td> 31382 31383 <td class="entry_tags"> 31384 <ul class="entry_tags"> 31385 <li><a href="#tag_RAW">RAW</a></li> 31386 </ul> 31387 </td> 31388 31389 </tr> 31390 <tr class="entries_header"> 31391 <th class="th_details" colspan="6">Details</th> 31392 </tr> 31393 <tr class="entry_cont"> 31394 <td class="entry_details" colspan="6"> 31395 <p>This key contains two noise model coefficients for each CFA channel 31396corresponding to the sensor amplification (S) and sensor readout 31397noise (O).<wbr/> These are given as pairs of coefficients for each channel 31398in the same order as channels listed for the CFA layout key 31399(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is 31400represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where 31401the first member of the Pair at index n is the S coefficient and the 31402second member is the O coefficient for the nth color channel in the CFA.<wbr/></p> 31403<p>These coefficients are used in a two parameter noise model to describe 31404the amount of noise present in the image for each CFA channel.<wbr/> The 31405noise model used here is:</p> 31406<p>N(x) = sqrt(Sx + O)</p> 31407<p>Where x represents the recorded signal of a CFA channel normalized to 31408the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coefficients for 31409that channel.<wbr/></p> 31410<p>A more detailed description of the noise model can be found in the 31411Adobe DNG specification for the NoiseProfile tag.<wbr/></p> 31412<p>For a MONOCHROME camera,<wbr/> there is only one color channel.<wbr/> So the noise model coefficients 31413will only contain one S and one O.<wbr/></p> 31414 </td> 31415 </tr> 31416 31417 <tr class="entries_header"> 31418 <th class="th_details" colspan="6">HAL Implementation Details</th> 31419 </tr> 31420 <tr class="entry_cont"> 31421 <td class="entry_details" colspan="6"> 31422 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as 31423an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients 31424for the red channel,<wbr/> S1 and O1 are the coefficients for the first green 31425channel,<wbr/> etc.<wbr/></p> 31426 </td> 31427 </tr> 31428 31429 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31430 <!-- end of entry --> 31431 31432 31433 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 31434 <td class="entry_name 31435 " rowspan="3"> 31436 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 31437 </td> 31438 <td class="entry_type"> 31439 <span class="entry_type_name">float</span> 31440 <span class="entry_type_container">x</span> 31441 31442 <span class="entry_type_array"> 31443 hue_samples x saturation_samples x value_samples x 3 31444 </span> 31445 <span class="entry_type_visibility"> [system]</span> 31446 31447 31448 31449 31450 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 31451 31452 31453 </td> <!-- entry_type --> 31454 31455 <td class="entry_description"> 31456 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 31457for each pixel.<wbr/></p> 31458 </td> 31459 31460 <td class="entry_units"> 31461 31462 The hue shift is given in degrees; saturation and value scale factors are 31463 unitless and are between 0 and 1 inclusive 31464 31465 </td> 31466 31467 <td class="entry_range"> 31468 </td> 31469 31470 <td class="entry_hal_version"> 31471 <p>3.<wbr/>2</p> 31472 </td> 31473 31474 <td class="entry_tags"> 31475 <ul class="entry_tags"> 31476 <li><a href="#tag_RAW">RAW</a></li> 31477 </ul> 31478 </td> 31479 31480 </tr> 31481 <tr class="entries_header"> 31482 <th class="th_details" colspan="6">Details</th> 31483 </tr> 31484 <tr class="entry_cont"> 31485 <td class="entry_details" colspan="6"> 31486 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 31487<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 31488<p>Each entry of this map contains three floats corresponding to the 31489hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 31490hue shift has the lowest index.<wbr/> The map entries are stored in the key 31491in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 31492hue divisions in the middle loop,<wbr/> and the saturation divisions in the 31493inner loop.<wbr/> All zero input saturation entries are required to have a 31494value scale factor of 1.<wbr/>0.<wbr/></p> 31495 </td> 31496 </tr> 31497 31498 31499 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31500 <!-- end of entry --> 31501 31502 31503 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 31504 <td class="entry_name 31505 " rowspan="3"> 31506 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 31507 </td> 31508 <td class="entry_type"> 31509 <span class="entry_type_name">float</span> 31510 <span class="entry_type_container">x</span> 31511 31512 <span class="entry_type_array"> 31513 samples x 2 31514 </span> 31515 <span class="entry_type_visibility"> [system]</span> 31516 31517 31518 31519 31520 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 31521 31522 31523 </td> <!-- entry_type --> 31524 31525 <td class="entry_description"> 31526 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 31527 </td> 31528 31529 <td class="entry_units"> 31530 </td> 31531 31532 <td class="entry_range"> 31533 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 31534<code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 31535sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 31536 </td> 31537 31538 <td class="entry_hal_version"> 31539 <p>3.<wbr/>2</p> 31540 </td> 31541 31542 <td class="entry_tags"> 31543 <ul class="entry_tags"> 31544 <li><a href="#tag_RAW">RAW</a></li> 31545 </ul> 31546 </td> 31547 31548 </tr> 31549 <tr class="entries_header"> 31550 <th class="th_details" colspan="6">Details</th> 31551 </tr> 31552 <tr class="entry_cont"> 31553 <td class="entry_details" colspan="6"> 31554 <p>This key contains a default tone curve that can be applied while 31555processing the image as a starting point for user adjustments.<wbr/> 31556The curve is specified as a list of value pairs in linear gamma.<wbr/> 31557The curve is interpolated using a cubic spline.<wbr/></p> 31558 </td> 31559 </tr> 31560 31561 31562 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31563 <!-- end of entry --> 31564 31565 31566 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 31567 <td class="entry_name 31568 " rowspan="5"> 31569 android.<wbr/>sensor.<wbr/>green<wbr/>Split 31570 </td> 31571 <td class="entry_type"> 31572 <span class="entry_type_name">float</span> 31573 31574 <span class="entry_type_visibility"> [public]</span> 31575 31576 31577 31578 31579 31580 31581 </td> <!-- entry_type --> 31582 31583 <td class="entry_description"> 31584 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 31585 </td> 31586 31587 <td class="entry_units"> 31588 </td> 31589 31590 <td class="entry_range"> 31591 <p>>= 0</p> 31592 </td> 31593 31594 <td class="entry_hal_version"> 31595 <p>3.<wbr/>2</p> 31596 </td> 31597 31598 <td class="entry_tags"> 31599 <ul class="entry_tags"> 31600 <li><a href="#tag_RAW">RAW</a></li> 31601 </ul> 31602 </td> 31603 31604 </tr> 31605 <tr class="entries_header"> 31606 <th class="th_details" colspan="6">Details</th> 31607 </tr> 31608 <tr class="entry_cont"> 31609 <td class="entry_details" colspan="6"> 31610 <p>This value is an estimate of the worst case split between the 31611Bayer green channels in the red and blue rows in the sensor color 31612filter array.<wbr/></p> 31613<p>The green split is calculated as follows:</p> 31614<ol> 31615<li>A 5x5 pixel (or larger) window W within the active sensor array is 31616chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 31617mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 31618chosen is implementation defined,<wbr/> and should be chosen to provide a 31619green split estimate that is both representative of the entire image 31620for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 31621<li>The arithmetic mean of the green channels from the red 31622rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 31623<li>The arithmetic mean of the green channels from the blue 31624rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 31625<li>The maximum ratio R of the two means is computed as follows: 31626<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 31627</ol> 31628<p>The ratio R is the green split divergence reported for this property,<wbr/> 31629which represents how much the green channels differ in the mosaic 31630pattern.<wbr/> This value is typically used to determine the treatment of 31631the green mosaic channels when demosaicing.<wbr/></p> 31632<p>The green split value can be roughly interpreted as follows:</p> 31633<ul> 31634<li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 31635<li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 31636correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 31637<li>R > 1.<wbr/>20 will require strong software correction to produce 31638a usable image (>20% divergence).<wbr/></li> 31639</ul> 31640<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 31641the camera device has RAW capability.<wbr/></p> 31642 </td> 31643 </tr> 31644 31645 <tr class="entries_header"> 31646 <th class="th_details" colspan="6">HAL Implementation Details</th> 31647 </tr> 31648 <tr class="entry_cont"> 31649 <td class="entry_details" colspan="6"> 31650 <p>The green split given may be a static value based on prior 31651characterization of the camera sensor using the green split 31652calculation method given here over a large,<wbr/> representative,<wbr/> sample 31653set of images.<wbr/> Other methods of calculation that produce equivalent 31654results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 31655 </td> 31656 </tr> 31657 31658 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31659 <!-- end of entry --> 31660 31661 31662 <tr class="entry" id="dynamic_android.sensor.testPatternData"> 31663 <td class="entry_name 31664 " rowspan="5"> 31665 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 31666 </td> 31667 <td class="entry_type"> 31668 <span class="entry_type_name">int32</span> 31669 <span class="entry_type_container">x</span> 31670 31671 <span class="entry_type_array"> 31672 4 31673 </span> 31674 <span class="entry_type_visibility"> [public]</span> 31675 31676 31677 31678 31679 31680 31681 </td> <!-- entry_type --> 31682 31683 <td class="entry_description"> 31684 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 31685when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 31686 </td> 31687 31688 <td class="entry_units"> 31689 </td> 31690 31691 <td class="entry_range"> 31692 </td> 31693 31694 <td class="entry_hal_version"> 31695 <p>3.<wbr/>2</p> 31696 </td> 31697 31698 <td class="entry_tags"> 31699 </td> 31700 31701 </tr> 31702 <tr class="entries_header"> 31703 <th class="th_details" colspan="6">Details</th> 31704 </tr> 31705 <tr class="entry_cont"> 31706 <td class="entry_details" colspan="6"> 31707 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 31708The camera device then uses the most significant X bits 31709that correspond to how many bits are in its Bayer raw sensor 31710output.<wbr/></p> 31711<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 3171210 most significant bits from each color channel.<wbr/></p> 31713 </td> 31714 </tr> 31715 31716 <tr class="entries_header"> 31717 <th class="th_details" colspan="6">HAL Implementation Details</th> 31718 </tr> 31719 <tr class="entry_cont"> 31720 <td class="entry_details" colspan="6"> 31721 31722 </td> 31723 </tr> 31724 31725 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31726 <!-- end of entry --> 31727 31728 31729 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 31730 <td class="entry_name 31731 " rowspan="5"> 31732 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 31733 </td> 31734 <td class="entry_type"> 31735 <span class="entry_type_name entry_type_name_enum">int32</span> 31736 31737 <span class="entry_type_visibility"> [public]</span> 31738 31739 31740 31741 31742 31743 <ul class="entry_type_enum"> 31744 <li> 31745 <span class="entry_type_enum_name">OFF (v3.2)</span> 31746 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 31747device returns captures from the image sensor.<wbr/></p> 31748<p>This is the default if the key is not set.<wbr/></p></span> 31749 </li> 31750 <li> 31751 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span> 31752 <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 31753respective color channel provided in 31754<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 31755<p>For example:</p> 31756<pre><code><a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a> = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 31757</code></pre> 31758<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 31759<pre><code><a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a> = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 31760</code></pre> 31761<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 31762are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 31763 </li> 31764 <li> 31765 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span> 31766 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 31767<p>The vertical bars (left-to-right) are as follows:</p> 31768<ul> 31769<li>100% white</li> 31770<li>yellow</li> 31771<li>cyan</li> 31772<li>green</li> 31773<li>magenta</li> 31774<li>red</li> 31775<li>blue</li> 31776<li>black</li> 31777</ul> 31778<p>In general the image would look like the following:</p> 31779<pre><code>W Y C G M R B K 31780W Y C G M R B K 31781W Y C G M R B K 31782W Y C G M R B K 31783W Y C G M R B K 31784.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 31785.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 31786.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 31787 31788(B = Blue,<wbr/> K = Black) 31789</code></pre> 31790<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 31791When this is not possible,<wbr/> the bar size should be rounded 31792down to the nearest integer and the pattern can repeat 31793on the right side.<wbr/></p> 31794<p>Each bar's height must always take up the full sensor 31795pixel array height.<wbr/></p> 31796<p>Each pixel in this test pattern must be set to either 317970% intensity or 100% intensity.<wbr/></p></span> 31798 </li> 31799 <li> 31800 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span> 31801 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 31802each bar should start at its specified color at the top,<wbr/> 31803and fade to gray at the bottom.<wbr/></p> 31804<p>Furthermore each bar is further subdivided into a left and 31805right half.<wbr/> The left half should have a smooth gradient,<wbr/> 31806and the right half should have a quantized gradient.<wbr/></p> 31807<p>In particular,<wbr/> the right half's should consist of blocks of the 31808same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 31809<p>The least significant bits in the quantized gradient should 31810be copied from the most significant bits of the smooth gradient.<wbr/></p> 31811<p>The height of each bar should always be a multiple of 128.<wbr/> 31812When this is not the case,<wbr/> the pattern should repeat at the bottom 31813of the image.<wbr/></p></span> 31814 </li> 31815 <li> 31816 <span class="entry_type_enum_name">PN9 (v3.2)</span> 31817 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 31818generated from a PN9 512-bit sequence (typically implemented 31819in hardware with a linear feedback shift register).<wbr/></p> 31820<p>The generator should be reset at the beginning of each frame,<wbr/> 31821and thus each subsequent raw frame with this test pattern should 31822be exactly the same as the last.<wbr/></p></span> 31823 </li> 31824 <li> 31825 <span class="entry_type_enum_name">BLACK (v3.6)</span> 31826 <span class="entry_type_enum_hidden">[test]</span> 31827 <span class="entry_type_enum_notes"><p>All pixel data is replaced by 0% intensity (black) values.<wbr/></p> 31828<p>This test pattern is identical to SOLID_<wbr/>COLOR with a value of <code>[0,<wbr/> 0,<wbr/> 0,<wbr/> 0]</code> for 31829<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/> It is recommended that devices implement full 31830SOLID_<wbr/>COLOR support instead,<wbr/> but BLACK can be used to provide minimal support for a 31831test pattern suitable for privacy use cases.<wbr/></p></span> 31832 </li> 31833 <li> 31834 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span> 31835 <span class="entry_type_enum_value">256</span> 31836 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 31837available only on this camera device are at least this numeric 31838value.<wbr/></p> 31839<p>All of the custom test patterns will be static 31840(that is the raw image must not vary from frame to frame).<wbr/></p></span> 31841 </li> 31842 </ul> 31843 31844 </td> <!-- entry_type --> 31845 31846 <td class="entry_description"> 31847 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 31848doing a real exposure from the camera.<wbr/></p> 31849 </td> 31850 31851 <td class="entry_units"> 31852 </td> 31853 31854 <td class="entry_range"> 31855 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 31856 </td> 31857 31858 <td class="entry_hal_version"> 31859 <p>3.<wbr/>2</p> 31860 </td> 31861 31862 <td class="entry_tags"> 31863 </td> 31864 31865 </tr> 31866 <tr class="entries_header"> 31867 <th class="th_details" colspan="6">Details</th> 31868 </tr> 31869 <tr class="entry_cont"> 31870 <td class="entry_details" colspan="6"> 31871 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 31872by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 31873work as normal.<wbr/></p> 31874<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 31875occur (and that the test pattern remain unmodified,<wbr/> since the flash 31876would not actually affect it).<wbr/></p> 31877<p>Defaults to OFF.<wbr/></p> 31878 </td> 31879 </tr> 31880 31881 <tr class="entries_header"> 31882 <th class="th_details" colspan="6">HAL Implementation Details</th> 31883 </tr> 31884 <tr class="entry_cont"> 31885 <td class="entry_details" colspan="6"> 31886 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 31887<p>The HAL may choose to substitute test patterns from the sensor 31888with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 31889indistinguishable to the ISP whether the data came from the 31890sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 31891<p>For privacy use cases,<wbr/> if the camera device:</p> 31892<ul> 31893<li>supports SOLID_<wbr/>COLOR or BLACK test patterns,<wbr/></li> 31894<li>is a logical multi-camera,<wbr/> and</li> 31895<li>lists testPatternMode as a physical request key,<wbr/></li> 31896</ul> 31897<p>Each physical camera must support the same SOLID_<wbr/>COLOR and/<wbr/>or BLACK test patterns 31898as the logical camera.<wbr/></p> 31899 </td> 31900 </tr> 31901 31902 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31903 <!-- end of entry --> 31904 31905 31906 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew"> 31907 <td class="entry_name 31908 " rowspan="5"> 31909 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew 31910 </td> 31911 <td class="entry_type"> 31912 <span class="entry_type_name">int64</span> 31913 31914 <span class="entry_type_visibility"> [public]</span> 31915 31916 31917 <span class="entry_type_hwlevel">[limited] </span> 31918 31919 31920 31921 31922 </td> <!-- entry_type --> 31923 31924 <td class="entry_description"> 31925 <p>Duration between the start of exposure for the first row of the image sensor,<wbr/> 31926and the start of exposure for one past the last row of the image sensor.<wbr/></p> 31927 </td> 31928 31929 <td class="entry_units"> 31930 Nanoseconds 31931 </td> 31932 31933 <td class="entry_range"> 31934 <p>>= 0 and < 31935<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p> 31936 </td> 31937 31938 <td class="entry_hal_version"> 31939 <p>3.<wbr/>2</p> 31940 </td> 31941 31942 <td class="entry_tags"> 31943 <ul class="entry_tags"> 31944 <li><a href="#tag_V1">V1</a></li> 31945 </ul> 31946 </td> 31947 31948 </tr> 31949 <tr class="entries_header"> 31950 <th class="th_details" colspan="6">Details</th> 31951 </tr> 31952 <tr class="entry_cont"> 31953 <td class="entry_details" colspan="6"> 31954 <p>This is the exposure time skew between the first and <code>(last+1)</code> row exposure start times.<wbr/> The 31955first row and the last row are the first and last rows inside of the 31956<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 31957<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent to the frame 31958readout time.<wbr/></p> 31959<p>If the image sensor is operating in a binned or cropped mode due to the current output 31960target resolutions,<wbr/> it's possible this skew is reported to be larger than the exposure 31961time,<wbr/> for example,<wbr/> since it is based on the full array even if a partial array is read 31962out.<wbr/> Be sure to scale the number to cover the section of the sensor actually being used 31963for the outputs you care about.<wbr/> So if your output covers N rows of the active array of 31964height H,<wbr/> scale this value by N/<wbr/>H to get the total skew for that viewport.<wbr/></p> 31965<p><em>Note:</em> Prior to Android 11,<wbr/> this field was described as measuring duration from 31966first to last row of the image sensor,<wbr/> which is not equal to the frame readout time for a 31967rolling shutter sensor.<wbr/> Implementations generally reported the latter value,<wbr/> so to resolve 31968the inconsistency,<wbr/> the description has been updated to range from (first,<wbr/> last+1) row 31969exposure start,<wbr/> instead.<wbr/></p> 31970 </td> 31971 </tr> 31972 31973 <tr class="entries_header"> 31974 <th class="th_details" colspan="6">HAL Implementation Details</th> 31975 </tr> 31976 <tr class="entry_cont"> 31977 <td class="entry_details" colspan="6"> 31978 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin 31979exposure at the same time.<wbr/></p> 31980 </td> 31981 </tr> 31982 31983 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31984 <!-- end of entry --> 31985 31986 31987 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel"> 31988 <td class="entry_name 31989 " rowspan="5"> 31990 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level 31991 </td> 31992 <td class="entry_type"> 31993 <span class="entry_type_name">float</span> 31994 <span class="entry_type_container">x</span> 31995 31996 <span class="entry_type_array"> 31997 4 31998 </span> 31999 <span class="entry_type_visibility"> [public]</span> 32000 32001 32002 32003 32004 <div class="entry_type_notes">2x2 raw count block</div> 32005 32006 32007 </td> <!-- entry_type --> 32008 32009 <td class="entry_description"> 32010 <p>A per-frame dynamic black level offset for each of the color filter 32011arrangement (CFA) mosaic channels.<wbr/></p> 32012 </td> 32013 32014 <td class="entry_units"> 32015 </td> 32016 32017 <td class="entry_range"> 32018 <p>>= 0 for each.<wbr/></p> 32019 </td> 32020 32021 <td class="entry_hal_version"> 32022 <p>3.<wbr/>2</p> 32023 </td> 32024 32025 <td class="entry_tags"> 32026 <ul class="entry_tags"> 32027 <li><a href="#tag_RAW">RAW</a></li> 32028 </ul> 32029 </td> 32030 32031 </tr> 32032 <tr class="entries_header"> 32033 <th class="th_details" colspan="6">Details</th> 32034 </tr> 32035 <tr class="entry_cont"> 32036 <td class="entry_details" colspan="6"> 32037 <p>Camera sensor black levels may vary dramatically for different 32038capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black 32039level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too 32040inaccurate to represent the actual value on a per-frame basis.<wbr/> The 32041camera device internal pipeline relies on reliable black level values 32042to process the raw images appropriately.<wbr/> To get the best image 32043quality,<wbr/> the camera device may choose to estimate the per frame black 32044level values either based on optically shielded black regions 32045(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p> 32046<p>This key reports the camera device estimated per-frame zero light 32047value for each of the CFA mosaic channels in the camera sensor.<wbr/> The 32048<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse 32049approximation of the actual black level values.<wbr/> This value is the 32050black level used in camera device internal image processing pipeline 32051and generally more accurate than the fixed black level values.<wbr/> 32052However,<wbr/> since they are estimated values by the camera device,<wbr/> they 32053may not be as accurate as the black level values calculated from the 32054optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p> 32055<p>The values are given in the same order as channels listed for the CFA 32056layout 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 32057nth value given corresponds to the black level offset for the nth 32058color channel listed in the CFA.<wbr/></p> 32059<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p> 32060<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 32061camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p> 32062 </td> 32063 </tr> 32064 32065 <tr class="entries_header"> 32066 <th class="th_details" colspan="6">HAL Implementation Details</th> 32067 </tr> 32068 <tr class="entry_cont"> 32069 <td class="entry_details" colspan="6"> 32070 <p>The values are given in row-column scan order,<wbr/> with the first value 32071corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 32072 </td> 32073 </tr> 32074 32075 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32076 <!-- end of entry --> 32077 32078 32079 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel"> 32080 <td class="entry_name 32081 " rowspan="5"> 32082 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level 32083 </td> 32084 <td class="entry_type"> 32085 <span class="entry_type_name">int32</span> 32086 32087 <span class="entry_type_visibility"> [public]</span> 32088 32089 32090 32091 32092 32093 32094 </td> <!-- entry_type --> 32095 32096 <td class="entry_description"> 32097 <p>Maximum raw value output by sensor for this frame.<wbr/></p> 32098 </td> 32099 32100 <td class="entry_units"> 32101 </td> 32102 32103 <td class="entry_range"> 32104 <p>>= 0</p> 32105 </td> 32106 32107 <td class="entry_hal_version"> 32108 <p>3.<wbr/>2</p> 32109 </td> 32110 32111 <td class="entry_tags"> 32112 <ul class="entry_tags"> 32113 <li><a href="#tag_RAW">RAW</a></li> 32114 </ul> 32115 </td> 32116 32117 </tr> 32118 <tr class="entries_header"> 32119 <th class="th_details" colspan="6">Details</th> 32120 </tr> 32121 <tr class="entry_cont"> 32122 <td class="entry_details" colspan="6"> 32123 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different 32124capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white 32125level will change accordingly.<wbr/> This key is similar to 32126<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device 32127estimated white level for each frame.<wbr/></p> 32128<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is 32129available or the camera device advertises this key via 32130<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 32131 </td> 32132 </tr> 32133 32134 <tr class="entries_header"> 32135 <th class="th_details" colspan="6">HAL Implementation Details</th> 32136 </tr> 32137 <tr class="entry_cont"> 32138 <td class="entry_details" colspan="6"> 32139 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 32140so the value for linear sensors should not be significantly lower 32141than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 32142 </td> 32143 </tr> 32144 32145 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32146 <!-- end of entry --> 32147 32148 32149 <tr class="entry" id="dynamic_android.sensor.pixelMode"> 32150 <td class="entry_name 32151 " rowspan="3"> 32152 android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode 32153 </td> 32154 <td class="entry_type"> 32155 <span class="entry_type_name entry_type_name_enum">byte</span> 32156 32157 <span class="entry_type_visibility"> [public]</span> 32158 32159 32160 32161 32162 32163 <ul class="entry_type_enum"> 32164 <li> 32165 <span class="entry_type_enum_name">DEFAULT (v3.6)</span> 32166 <span class="entry_type_enum_notes"><p>This is the default sensor pixel mode.<wbr/></p></span> 32167 </li> 32168 <li> 32169 <span class="entry_type_enum_name">MAXIMUM_RESOLUTION (v3.6)</span> 32170 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> sensors typically do not bin pixels,<wbr/> as a result can offer larger 32171image sizes.<wbr/></p></span> 32172 </li> 32173 </ul> 32174 32175 </td> <!-- entry_type --> 32176 32177 <td class="entry_description"> 32178 <p>Switches sensor pixel mode between maximum resolution mode and default mode.<wbr/></p> 32179 </td> 32180 32181 <td class="entry_units"> 32182 </td> 32183 32184 <td class="entry_range"> 32185 </td> 32186 32187 <td class="entry_hal_version"> 32188 <p>3.<wbr/>6</p> 32189 </td> 32190 32191 <td class="entry_tags"> 32192 </td> 32193 32194 </tr> 32195 <tr class="entries_header"> 32196 <th class="th_details" colspan="6">Details</th> 32197 </tr> 32198 <tr class="entry_cont"> 32199 <td class="entry_details" colspan="6"> 32200 <p>This key controls whether the camera sensor operates in 32201<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a> 32202mode or not.<wbr/> By default,<wbr/> all camera devices operate in 32203<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode.<wbr/> 32204When operating in 32205<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode,<wbr/> sensors 32206would typically perform pixel binning in order to improve low light 32207performance,<wbr/> noise reduction etc.<wbr/> However,<wbr/> in 32208<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a> 32209mode,<wbr/> sensors typically operate in unbinned mode allowing for a larger image size.<wbr/> 32210The stream configurations supported in 32211<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a> 32212mode are also different from those of 32213<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode.<wbr/> 32214They can be queried through 32215<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> with 32216<a href="https://developer.android.com/reference/CameraCharacteristics.html#SCALER_STREAM_CONFIGURATION_MAP_MAXIMUM_RESOLUTION">Camera<wbr/>Characteristics#SCALER_<wbr/>STREAM_<wbr/>CONFIGURATION_<wbr/>MAP_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/> 32217Unless reported by both 32218<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>s,<wbr/> the outputs from 32219<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code> and 32220<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code> 32221must not be mixed in the same CaptureRequest.<wbr/> In other words,<wbr/> these outputs are 32222exclusive to each other.<wbr/> 32223This key does not need to be set for reprocess requests.<wbr/> 32224This key will be be present on devices supporting the 32225<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 32226capability.<wbr/> It may also be present on devices which do not support the aforementioned 32227capability.<wbr/> In that case:</p> 32228<ul> 32229<li> 32230<p>The mandatory stream combinations listed in 32231 <a href="#static_android.scaler.mandatoryMaximumResolutionStreamCombinations">android.<wbr/>scaler.<wbr/>mandatory<wbr/>Maximum<wbr/>Resolution<wbr/>Stream<wbr/>Combinations</a> would not apply.<wbr/></p> 32232</li> 32233<li> 32234<p>The bayer pattern of {@code RAW} streams when 32235 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a> 32236 is selected will be the one listed in <a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a>.<wbr/></p> 32237</li> 32238<li> 32239<p>The following keys will always be present:</p> 32240<ul> 32241<li><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></li> 32242<li><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></li> 32243<li><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></li> 32244<li><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></li> 32245</ul> 32246</li> 32247</ul> 32248 </td> 32249 </tr> 32250 32251 32252 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32253 <!-- end of entry --> 32254 32255 32256 <tr class="entry" id="dynamic_android.sensor.rawBinningFactorUsed"> 32257 <td class="entry_name 32258 " rowspan="3"> 32259 android.<wbr/>sensor.<wbr/>raw<wbr/>Binning<wbr/>Factor<wbr/>Used 32260 </td> 32261 <td class="entry_type"> 32262 <span class="entry_type_name entry_type_name_enum">byte</span> 32263 32264 <span class="entry_type_visibility"> [public as boolean]</span> 32265 32266 32267 32268 32269 32270 <ul class="entry_type_enum"> 32271 <li> 32272 <span class="entry_type_enum_name">TRUE (v3.6)</span> 32273 <span class="entry_type_enum_notes"><p>The <code>RAW</code> targets in this capture have <a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a> as the 32274bayer pattern.<wbr/></p></span> 32275 </li> 32276 <li> 32277 <span class="entry_type_enum_name">FALSE (v3.6)</span> 32278 <span class="entry_type_enum_notes"><p>The <code>RAW</code> targets have a regular bayer pattern in this capture.<wbr/></p></span> 32279 </li> 32280 </ul> 32281 32282 </td> <!-- entry_type --> 32283 32284 <td class="entry_description"> 32285 <p>Whether <code>RAW</code> images requested have their bayer pattern as described by 32286<a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a>.<wbr/></p> 32287 </td> 32288 32289 <td class="entry_units"> 32290 </td> 32291 32292 <td class="entry_range"> 32293 </td> 32294 32295 <td class="entry_hal_version"> 32296 <p>3.<wbr/>6</p> 32297 </td> 32298 32299 <td class="entry_tags"> 32300 </td> 32301 32302 </tr> 32303 <tr class="entries_header"> 32304 <th class="th_details" colspan="6">Details</th> 32305 </tr> 32306 <tr class="entry_cont"> 32307 <td class="entry_details" colspan="6"> 32308 <p>This key will only be present in devices advertising the 32309<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 32310capability which also advertise <code>REMOSAIC_<wbr/>REPROCESSING</code> capability.<wbr/> On all other devices 32311RAW targets will have a regular bayer pattern.<wbr/></p> 32312 </td> 32313 </tr> 32314 32315 32316 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32317 <!-- end of entry --> 32318 32319 32320 32321 <!-- end of kind --> 32322 </tbody> 32323 32324 <!-- end of section --> 32325 <tr><td colspan="7" id="section_shading" class="section">shading</td></tr> 32326 32327 32328 <tr><td colspan="7" class="kind">controls</td></tr> 32329 32330 <thead class="entries_header"> 32331 <tr> 32332 <th class="th_name">Property Name</th> 32333 <th class="th_type">Type</th> 32334 <th class="th_description">Description</th> 32335 <th class="th_units">Units</th> 32336 <th class="th_range">Range</th> 32337 <th class="th_hal_version">Initial HIDL HAL version</th> 32338 <th class="th_tags">Tags</th> 32339 </tr> 32340 </thead> 32341 32342 <tbody> 32343 32344 32345 32346 32347 32348 32349 32350 32351 32352 32353 <tr class="entry" id="controls_android.shading.mode"> 32354 <td class="entry_name 32355 " rowspan="3"> 32356 android.<wbr/>shading.<wbr/>mode 32357 </td> 32358 <td class="entry_type"> 32359 <span class="entry_type_name entry_type_name_enum">byte</span> 32360 32361 <span class="entry_type_visibility"> [public]</span> 32362 32363 32364 <span class="entry_type_hwlevel">[full] </span> 32365 32366 32367 32368 <ul class="entry_type_enum"> 32369 <li> 32370 <span class="entry_type_enum_name">OFF (v3.2)</span> 32371 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 32372 </li> 32373 <li> 32374 <span class="entry_type_enum_name">FAST (v3.2)</span> 32375 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 32376frame rate relative to sensor raw output</p></span> 32377 </li> 32378 <li> 32379 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 32380 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 32381cost of possibly reduced frame rate.<wbr/></p></span> 32382 </li> 32383 </ul> 32384 32385 </td> <!-- entry_type --> 32386 32387 <td class="entry_description"> 32388 <p>Quality of lens shading correction applied 32389to the image data.<wbr/></p> 32390 </td> 32391 32392 <td class="entry_units"> 32393 </td> 32394 32395 <td class="entry_range"> 32396 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 32397 </td> 32398 32399 <td class="entry_hal_version"> 32400 <p>3.<wbr/>2</p> 32401 </td> 32402 32403 <td class="entry_tags"> 32404 </td> 32405 32406 </tr> 32407 <tr class="entries_header"> 32408 <th class="th_details" colspan="6">Details</th> 32409 </tr> 32410 <tr class="entry_cont"> 32411 <td class="entry_details" colspan="6"> 32412 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 32413camera device,<wbr/> and an identity lens shading map data will be provided 32414if <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 32415shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 32416the 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 32417map shown below:</p> 32418<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/> 32419 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/> 32420 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/> 32421 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/> 32422 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/> 32423 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 ] 32424</code></pre> 32425<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 32426device.<wbr/> Applications can request lens shading map data by setting 32427<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 32428shading 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 32429data will be the one applied by the camera device for this capture request.<wbr/></p> 32430<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 32431the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 32432AWB 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> 32433OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 32434to be converged before using the returned shading map data.<wbr/></p> 32435 </td> 32436 </tr> 32437 32438 32439 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32440 <!-- end of entry --> 32441 32442 32443 <tr class="entry" id="controls_android.shading.strength"> 32444 <td class="entry_name 32445 " rowspan="1"> 32446 android.<wbr/>shading.<wbr/>strength 32447 </td> 32448 <td class="entry_type"> 32449 <span class="entry_type_name">byte</span> 32450 32451 <span class="entry_type_visibility"> [system]</span> 32452 32453 32454 32455 32456 32457 32458 </td> <!-- entry_type --> 32459 32460 <td class="entry_description"> 32461 <p>Control the amount of shading correction 32462applied to the images</p> 32463 </td> 32464 32465 <td class="entry_units"> 32466 unitless: 1-10; 10 is full shading 32467 compensation 32468 </td> 32469 32470 <td class="entry_range"> 32471 </td> 32472 32473 <td class="entry_hal_version"> 32474 <p>3.<wbr/>2</p> 32475 </td> 32476 32477 <td class="entry_tags"> 32478 <ul class="entry_tags"> 32479 <li><a href="#tag_FUTURE">FUTURE</a></li> 32480 </ul> 32481 </td> 32482 32483 </tr> 32484 32485 32486 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32487 <!-- end of entry --> 32488 32489 32490 32491 <!-- end of kind --> 32492 </tbody> 32493 <tr><td colspan="7" class="kind">dynamic</td></tr> 32494 32495 <thead class="entries_header"> 32496 <tr> 32497 <th class="th_name">Property Name</th> 32498 <th class="th_type">Type</th> 32499 <th class="th_description">Description</th> 32500 <th class="th_units">Units</th> 32501 <th class="th_range">Range</th> 32502 <th class="th_hal_version">Initial HIDL HAL version</th> 32503 <th class="th_tags">Tags</th> 32504 </tr> 32505 </thead> 32506 32507 <tbody> 32508 32509 32510 32511 32512 32513 32514 32515 32516 32517 32518 <tr class="entry" id="dynamic_android.shading.mode"> 32519 <td class="entry_name 32520 " rowspan="3"> 32521 android.<wbr/>shading.<wbr/>mode 32522 </td> 32523 <td class="entry_type"> 32524 <span class="entry_type_name entry_type_name_enum">byte</span> 32525 32526 <span class="entry_type_visibility"> [public]</span> 32527 32528 32529 <span class="entry_type_hwlevel">[full] </span> 32530 32531 32532 32533 <ul class="entry_type_enum"> 32534 <li> 32535 <span class="entry_type_enum_name">OFF (v3.2)</span> 32536 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 32537 </li> 32538 <li> 32539 <span class="entry_type_enum_name">FAST (v3.2)</span> 32540 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 32541frame rate relative to sensor raw output</p></span> 32542 </li> 32543 <li> 32544 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 32545 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 32546cost of possibly reduced frame rate.<wbr/></p></span> 32547 </li> 32548 </ul> 32549 32550 </td> <!-- entry_type --> 32551 32552 <td class="entry_description"> 32553 <p>Quality of lens shading correction applied 32554to the image data.<wbr/></p> 32555 </td> 32556 32557 <td class="entry_units"> 32558 </td> 32559 32560 <td class="entry_range"> 32561 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 32562 </td> 32563 32564 <td class="entry_hal_version"> 32565 <p>3.<wbr/>2</p> 32566 </td> 32567 32568 <td class="entry_tags"> 32569 </td> 32570 32571 </tr> 32572 <tr class="entries_header"> 32573 <th class="th_details" colspan="6">Details</th> 32574 </tr> 32575 <tr class="entry_cont"> 32576 <td class="entry_details" colspan="6"> 32577 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 32578camera device,<wbr/> and an identity lens shading map data will be provided 32579if <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 32580shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 32581the 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 32582map shown below:</p> 32583<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/> 32584 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/> 32585 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/> 32586 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/> 32587 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/> 32588 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 ] 32589</code></pre> 32590<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 32591device.<wbr/> Applications can request lens shading map data by setting 32592<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 32593shading 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 32594data will be the one applied by the camera device for this capture request.<wbr/></p> 32595<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 32596the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 32597AWB 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> 32598OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 32599to be converged before using the returned shading map data.<wbr/></p> 32600 </td> 32601 </tr> 32602 32603 32604 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32605 <!-- end of entry --> 32606 32607 32608 32609 <!-- end of kind --> 32610 </tbody> 32611 <tr><td colspan="7" class="kind">static</td></tr> 32612 32613 <thead class="entries_header"> 32614 <tr> 32615 <th class="th_name">Property Name</th> 32616 <th class="th_type">Type</th> 32617 <th class="th_description">Description</th> 32618 <th class="th_units">Units</th> 32619 <th class="th_range">Range</th> 32620 <th class="th_hal_version">Initial HIDL HAL version</th> 32621 <th class="th_tags">Tags</th> 32622 </tr> 32623 </thead> 32624 32625 <tbody> 32626 32627 32628 32629 32630 32631 32632 32633 32634 32635 32636 <tr class="entry" id="static_android.shading.availableModes"> 32637 <td class="entry_name 32638 " rowspan="5"> 32639 android.<wbr/>shading.<wbr/>available<wbr/>Modes 32640 </td> 32641 <td class="entry_type"> 32642 <span class="entry_type_name">byte</span> 32643 <span class="entry_type_container">x</span> 32644 32645 <span class="entry_type_array"> 32646 n 32647 </span> 32648 <span class="entry_type_visibility"> [public as enumList]</span> 32649 32650 32651 <span class="entry_type_hwlevel">[legacy] </span> 32652 32653 32654 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div> 32655 32656 32657 </td> <!-- entry_type --> 32658 32659 <td class="entry_description"> 32660 <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> 32661 </td> 32662 32663 <td class="entry_units"> 32664 </td> 32665 32666 <td class="entry_range"> 32667 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p> 32668 </td> 32669 32670 <td class="entry_hal_version"> 32671 <p>3.<wbr/>2</p> 32672 </td> 32673 32674 <td class="entry_tags"> 32675 </td> 32676 32677 </tr> 32678 <tr class="entries_header"> 32679 <th class="th_details" colspan="6">Details</th> 32680 </tr> 32681 <tr class="entry_cont"> 32682 <td class="entry_details" colspan="6"> 32683 <p>This list contains lens shading modes that can be set for the camera device.<wbr/> 32684Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always 32685list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/> 32686LEGACY devices will always only support FAST mode.<wbr/></p> 32687 </td> 32688 </tr> 32689 32690 <tr class="entries_header"> 32691 <th class="th_details" colspan="6">HAL Implementation Details</th> 32692 </tr> 32693 <tr class="entry_cont"> 32694 <td class="entry_details" colspan="6"> 32695 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is 32696available on the camera device,<wbr/> but the underlying implementation can be the same for 32697both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not 32698slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 32699 </td> 32700 </tr> 32701 32702 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32703 <!-- end of entry --> 32704 32705 32706 32707 <!-- end of kind --> 32708 </tbody> 32709 32710 <!-- end of section --> 32711 <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr> 32712 32713 32714 <tr><td colspan="7" class="kind">controls</td></tr> 32715 32716 <thead class="entries_header"> 32717 <tr> 32718 <th class="th_name">Property Name</th> 32719 <th class="th_type">Type</th> 32720 <th class="th_description">Description</th> 32721 <th class="th_units">Units</th> 32722 <th class="th_range">Range</th> 32723 <th class="th_hal_version">Initial HIDL HAL version</th> 32724 <th class="th_tags">Tags</th> 32725 </tr> 32726 </thead> 32727 32728 <tbody> 32729 32730 32731 32732 32733 32734 32735 32736 32737 32738 32739 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 32740 <td class="entry_name 32741 " rowspan="5"> 32742 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 32743 </td> 32744 <td class="entry_type"> 32745 <span class="entry_type_name entry_type_name_enum">byte</span> 32746 32747 <span class="entry_type_visibility"> [public]</span> 32748 32749 32750 <span class="entry_type_hwlevel">[legacy] </span> 32751 32752 32753 32754 <ul class="entry_type_enum"> 32755 <li> 32756 <span class="entry_type_enum_name">OFF (v3.2)</span> 32757 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 32758results.<wbr/></p></span> 32759 </li> 32760 <li> 32761 <span class="entry_type_enum_name">SIMPLE (v3.2)</span> 32762 <span class="entry_type_enum_optional">[optional]</span> 32763 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 32764 </li> 32765 <li> 32766 <span class="entry_type_enum_name">FULL (v3.2)</span> 32767 <span class="entry_type_enum_optional">[optional]</span> 32768 <span class="entry_type_enum_notes"><p>Return all face 32769metadata.<wbr/></p> 32770<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 32771 </li> 32772 </ul> 32773 32774 </td> <!-- entry_type --> 32775 32776 <td class="entry_description"> 32777 <p>Operating mode for the face detector 32778unit.<wbr/></p> 32779 </td> 32780 32781 <td class="entry_units"> 32782 </td> 32783 32784 <td class="entry_range"> 32785 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 32786 </td> 32787 32788 <td class="entry_hal_version"> 32789 <p>3.<wbr/>2</p> 32790 </td> 32791 32792 <td class="entry_tags"> 32793 <ul class="entry_tags"> 32794 <li><a href="#tag_BC">BC</a></li> 32795 </ul> 32796 </td> 32797 32798 </tr> 32799 <tr class="entries_header"> 32800 <th class="th_details" colspan="6">Details</th> 32801 </tr> 32802 <tr class="entry_cont"> 32803 <td class="entry_details" colspan="6"> 32804 <p>Whether face detection is enabled,<wbr/> and whether it 32805should output just the basic fields or the full set of 32806fields.<wbr/></p> 32807 </td> 32808 </tr> 32809 32810 <tr class="entries_header"> 32811 <th class="th_details" colspan="6">HAL Implementation Details</th> 32812 </tr> 32813 <tr class="entry_cont"> 32814 <td class="entry_details" colspan="6"> 32815 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 32816<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 32817FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 32818<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 32819 </td> 32820 </tr> 32821 32822 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32823 <!-- end of entry --> 32824 32825 32826 <tr class="entry" id="controls_android.statistics.histogramMode"> 32827 <td class="entry_name 32828 " rowspan="1"> 32829 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 32830 </td> 32831 <td class="entry_type"> 32832 <span class="entry_type_name entry_type_name_enum">byte</span> 32833 32834 <span class="entry_type_visibility"> [system as boolean]</span> 32835 32836 32837 32838 32839 32840 <ul class="entry_type_enum"> 32841 <li> 32842 <span class="entry_type_enum_name">OFF (v3.2)</span> 32843 </li> 32844 <li> 32845 <span class="entry_type_enum_name">ON (v3.2)</span> 32846 </li> 32847 </ul> 32848 32849 </td> <!-- entry_type --> 32850 32851 <td class="entry_description"> 32852 <p>Operating mode for histogram 32853generation</p> 32854 </td> 32855 32856 <td class="entry_units"> 32857 </td> 32858 32859 <td class="entry_range"> 32860 </td> 32861 32862 <td class="entry_hal_version"> 32863 <p>3.<wbr/>2</p> 32864 </td> 32865 32866 <td class="entry_tags"> 32867 <ul class="entry_tags"> 32868 <li><a href="#tag_FUTURE">FUTURE</a></li> 32869 </ul> 32870 </td> 32871 32872 </tr> 32873 32874 32875 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32876 <!-- end of entry --> 32877 32878 32879 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 32880 <td class="entry_name 32881 " rowspan="1"> 32882 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 32883 </td> 32884 <td class="entry_type"> 32885 <span class="entry_type_name entry_type_name_enum">byte</span> 32886 32887 <span class="entry_type_visibility"> [system as boolean]</span> 32888 32889 32890 32891 32892 32893 <ul class="entry_type_enum"> 32894 <li> 32895 <span class="entry_type_enum_name">OFF (v3.2)</span> 32896 </li> 32897 <li> 32898 <span class="entry_type_enum_name">ON (v3.2)</span> 32899 </li> 32900 </ul> 32901 32902 </td> <!-- entry_type --> 32903 32904 <td class="entry_description"> 32905 <p>Operating mode for sharpness map 32906generation</p> 32907 </td> 32908 32909 <td class="entry_units"> 32910 </td> 32911 32912 <td class="entry_range"> 32913 </td> 32914 32915 <td class="entry_hal_version"> 32916 <p>3.<wbr/>2</p> 32917 </td> 32918 32919 <td class="entry_tags"> 32920 <ul class="entry_tags"> 32921 <li><a href="#tag_FUTURE">FUTURE</a></li> 32922 </ul> 32923 </td> 32924 32925 </tr> 32926 32927 32928 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32929 <!-- end of entry --> 32930 32931 32932 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 32933 <td class="entry_name 32934 " rowspan="3"> 32935 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 32936 </td> 32937 <td class="entry_type"> 32938 <span class="entry_type_name entry_type_name_enum">byte</span> 32939 32940 <span class="entry_type_visibility"> [public as boolean]</span> 32941 32942 32943 32944 32945 32946 <ul class="entry_type_enum"> 32947 <li> 32948 <span class="entry_type_enum_name">OFF (v3.2)</span> 32949 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 32950 </li> 32951 <li> 32952 <span class="entry_type_enum_name">ON (v3.2)</span> 32953 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 32954 </li> 32955 </ul> 32956 32957 </td> <!-- entry_type --> 32958 32959 <td class="entry_description"> 32960 <p>Operating mode for hot pixel map generation.<wbr/></p> 32961 </td> 32962 32963 <td class="entry_units"> 32964 </td> 32965 32966 <td class="entry_range"> 32967 <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> 32968 </td> 32969 32970 <td class="entry_hal_version"> 32971 <p>3.<wbr/>2</p> 32972 </td> 32973 32974 <td class="entry_tags"> 32975 <ul class="entry_tags"> 32976 <li><a href="#tag_V1">V1</a></li> 32977 <li><a href="#tag_RAW">RAW</a></li> 32978 </ul> 32979 </td> 32980 32981 </tr> 32982 <tr class="entries_header"> 32983 <th class="th_details" colspan="6">Details</th> 32984 </tr> 32985 <tr class="entry_cont"> 32986 <td class="entry_details" colspan="6"> 32987 <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/> 32988If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 32989 </td> 32990 </tr> 32991 32992 32993 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32994 <!-- end of entry --> 32995 32996 32997 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 32998 <td class="entry_name 32999 " rowspan="3"> 33000 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 33001 </td> 33002 <td class="entry_type"> 33003 <span class="entry_type_name entry_type_name_enum">byte</span> 33004 33005 <span class="entry_type_visibility"> [public]</span> 33006 33007 33008 <span class="entry_type_hwlevel">[full] </span> 33009 33010 33011 33012 <ul class="entry_type_enum"> 33013 <li> 33014 <span class="entry_type_enum_name">OFF (v3.2)</span> 33015 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 33016 </li> 33017 <li> 33018 <span class="entry_type_enum_name">ON (v3.2)</span> 33019 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 33020 </li> 33021 </ul> 33022 33023 </td> <!-- entry_type --> 33024 33025 <td class="entry_description"> 33026 <p>Whether the camera device will output the lens 33027shading map in output result metadata.<wbr/></p> 33028 </td> 33029 33030 <td class="entry_units"> 33031 </td> 33032 33033 <td class="entry_range"> 33034 <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> 33035 </td> 33036 33037 <td class="entry_hal_version"> 33038 <p>3.<wbr/>2</p> 33039 </td> 33040 33041 <td class="entry_tags"> 33042 <ul class="entry_tags"> 33043 <li><a href="#tag_RAW">RAW</a></li> 33044 </ul> 33045 </td> 33046 33047 </tr> 33048 <tr class="entries_header"> 33049 <th class="th_details" colspan="6">Details</th> 33050 </tr> 33051 <tr class="entry_cont"> 33052 <td class="entry_details" colspan="6"> 33053 <p>When set to ON,<wbr/> 33054<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 33055the output result metadata.<wbr/></p> 33056<p>ON is always supported on devices with the RAW capability.<wbr/></p> 33057 </td> 33058 </tr> 33059 33060 33061 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33062 <!-- end of entry --> 33063 33064 33065 <tr class="entry" id="controls_android.statistics.oisDataMode"> 33066 <td class="entry_name 33067 " rowspan="3"> 33068 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode 33069 </td> 33070 <td class="entry_type"> 33071 <span class="entry_type_name entry_type_name_enum">byte</span> 33072 33073 <span class="entry_type_visibility"> [public]</span> 33074 33075 33076 33077 33078 33079 <ul class="entry_type_enum"> 33080 <li> 33081 <span class="entry_type_enum_name">OFF (v3.3)</span> 33082 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span> 33083 </li> 33084 <li> 33085 <span class="entry_type_enum_name">ON (v3.3)</span> 33086 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span> 33087 </li> 33088 </ul> 33089 33090 </td> <!-- entry_type --> 33091 33092 <td class="entry_description"> 33093 <p>A control for selecting whether optical stabilization (OIS) position 33094information is included in output result metadata.<wbr/></p> 33095 </td> 33096 33097 <td class="entry_units"> 33098 </td> 33099 33100 <td class="entry_range"> 33101 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p> 33102 </td> 33103 33104 <td class="entry_hal_version"> 33105 <p>3.<wbr/>3</p> 33106 </td> 33107 33108 <td class="entry_tags"> 33109 </td> 33110 33111 </tr> 33112 <tr class="entries_header"> 33113 <th class="th_details" colspan="6">Details</th> 33114 </tr> 33115 <tr class="entry_cont"> 33116 <td class="entry_details" colspan="6"> 33117 <p>Since optical image stabilization generally involves motion much faster than the duration 33118of individual image exposure,<wbr/> multiple OIS samples can be included for a single capture 33119result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating 33120at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined 33121with the rolling shutter skew to account for lens motion during image exposure in 33122post-processing algorithms.<wbr/></p> 33123 </td> 33124 </tr> 33125 33126 33127 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33128 <!-- end of entry --> 33129 33130 33131 33132 <!-- end of kind --> 33133 </tbody> 33134 <tr><td colspan="7" class="kind">static</td></tr> 33135 33136 <thead class="entries_header"> 33137 <tr> 33138 <th class="th_name">Property Name</th> 33139 <th class="th_type">Type</th> 33140 <th class="th_description">Description</th> 33141 <th class="th_units">Units</th> 33142 <th class="th_range">Range</th> 33143 <th class="th_hal_version">Initial HIDL HAL version</th> 33144 <th class="th_tags">Tags</th> 33145 </tr> 33146 </thead> 33147 33148 <tbody> 33149 33150 33151 33152 33153 33154 33155 33156 33157 33158 33159 33160 33161 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 33162 <td class="entry_name 33163 " rowspan="3"> 33164 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 33165 </td> 33166 <td class="entry_type"> 33167 <span class="entry_type_name">byte</span> 33168 <span class="entry_type_container">x</span> 33169 33170 <span class="entry_type_array"> 33171 n 33172 </span> 33173 <span class="entry_type_visibility"> [public as enumList]</span> 33174 33175 33176 <span class="entry_type_hwlevel">[legacy] </span> 33177 33178 33179 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 33180 33181 33182 </td> <!-- entry_type --> 33183 33184 <td class="entry_description"> 33185 <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 33186supported by this camera device.<wbr/></p> 33187 </td> 33188 33189 <td class="entry_units"> 33190 </td> 33191 33192 <td class="entry_range"> 33193 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p> 33194 </td> 33195 33196 <td class="entry_hal_version"> 33197 <p>3.<wbr/>2</p> 33198 </td> 33199 33200 <td class="entry_tags"> 33201 </td> 33202 33203 </tr> 33204 <tr class="entries_header"> 33205 <th class="th_details" colspan="6">Details</th> 33206 </tr> 33207 <tr class="entry_cont"> 33208 <td class="entry_details" colspan="6"> 33209 <p>OFF is always supported.<wbr/></p> 33210 </td> 33211 </tr> 33212 33213 33214 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33215 <!-- end of entry --> 33216 33217 33218 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 33219 <td class="entry_name 33220 " rowspan="1"> 33221 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 33222 </td> 33223 <td class="entry_type"> 33224 <span class="entry_type_name">int32</span> 33225 33226 <span class="entry_type_visibility"> [system]</span> 33227 33228 33229 33230 33231 33232 33233 </td> <!-- entry_type --> 33234 33235 <td class="entry_description"> 33236 <p>Number of histogram buckets 33237supported</p> 33238 </td> 33239 33240 <td class="entry_units"> 33241 </td> 33242 33243 <td class="entry_range"> 33244 <p>>= 64</p> 33245 </td> 33246 33247 <td class="entry_hal_version"> 33248 <p>3.<wbr/>2</p> 33249 </td> 33250 33251 <td class="entry_tags"> 33252 <ul class="entry_tags"> 33253 <li><a href="#tag_FUTURE">FUTURE</a></li> 33254 </ul> 33255 </td> 33256 33257 </tr> 33258 33259 33260 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33261 <!-- end of entry --> 33262 33263 33264 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 33265 <td class="entry_name 33266 " rowspan="1"> 33267 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 33268 </td> 33269 <td class="entry_type"> 33270 <span class="entry_type_name">int32</span> 33271 33272 <span class="entry_type_visibility"> [public]</span> 33273 33274 33275 <span class="entry_type_hwlevel">[legacy] </span> 33276 33277 33278 33279 33280 </td> <!-- entry_type --> 33281 33282 <td class="entry_description"> 33283 <p>The maximum number of simultaneously detectable 33284faces.<wbr/></p> 33285 </td> 33286 33287 <td class="entry_units"> 33288 </td> 33289 33290 <td class="entry_range"> 33291 <p>0 for cameras without available face detection; otherwise: 33292<code>>=4</code> for LIMITED or FULL hwlevel devices or 33293<code>>0</code> for LEGACY devices.<wbr/></p> 33294 </td> 33295 33296 <td class="entry_hal_version"> 33297 <p>3.<wbr/>2</p> 33298 </td> 33299 33300 <td class="entry_tags"> 33301 <ul class="entry_tags"> 33302 <li><a href="#tag_BC">BC</a></li> 33303 </ul> 33304 </td> 33305 33306 </tr> 33307 33308 33309 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33310 <!-- end of entry --> 33311 33312 33313 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 33314 <td class="entry_name 33315 " rowspan="1"> 33316 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 33317 </td> 33318 <td class="entry_type"> 33319 <span class="entry_type_name">int32</span> 33320 33321 <span class="entry_type_visibility"> [system]</span> 33322 33323 33324 33325 33326 33327 33328 </td> <!-- entry_type --> 33329 33330 <td class="entry_description"> 33331 <p>Maximum value possible for a histogram 33332bucket</p> 33333 </td> 33334 33335 <td class="entry_units"> 33336 </td> 33337 33338 <td class="entry_range"> 33339 </td> 33340 33341 <td class="entry_hal_version"> 33342 <p>3.<wbr/>2</p> 33343 </td> 33344 33345 <td class="entry_tags"> 33346 <ul class="entry_tags"> 33347 <li><a href="#tag_FUTURE">FUTURE</a></li> 33348 </ul> 33349 </td> 33350 33351 </tr> 33352 33353 33354 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33355 <!-- end of entry --> 33356 33357 33358 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 33359 <td class="entry_name 33360 " rowspan="1"> 33361 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 33362 </td> 33363 <td class="entry_type"> 33364 <span class="entry_type_name">int32</span> 33365 33366 <span class="entry_type_visibility"> [system]</span> 33367 33368 33369 33370 33371 33372 33373 </td> <!-- entry_type --> 33374 33375 <td class="entry_description"> 33376 <p>Maximum value possible for a sharpness map 33377region.<wbr/></p> 33378 </td> 33379 33380 <td class="entry_units"> 33381 </td> 33382 33383 <td class="entry_range"> 33384 </td> 33385 33386 <td class="entry_hal_version"> 33387 <p>3.<wbr/>2</p> 33388 </td> 33389 33390 <td class="entry_tags"> 33391 <ul class="entry_tags"> 33392 <li><a href="#tag_FUTURE">FUTURE</a></li> 33393 </ul> 33394 </td> 33395 33396 </tr> 33397 33398 33399 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33400 <!-- end of entry --> 33401 33402 33403 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 33404 <td class="entry_name 33405 " rowspan="1"> 33406 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 33407 </td> 33408 <td class="entry_type"> 33409 <span class="entry_type_name">int32</span> 33410 <span class="entry_type_container">x</span> 33411 33412 <span class="entry_type_array"> 33413 2 33414 </span> 33415 <span class="entry_type_visibility"> [system as size]</span> 33416 33417 33418 33419 33420 <div class="entry_type_notes">width x height</div> 33421 33422 33423 </td> <!-- entry_type --> 33424 33425 <td class="entry_description"> 33426 <p>Dimensions of the sharpness 33427map</p> 33428 </td> 33429 33430 <td class="entry_units"> 33431 </td> 33432 33433 <td class="entry_range"> 33434 <p>Must be at least 32 x 32</p> 33435 </td> 33436 33437 <td class="entry_hal_version"> 33438 <p>3.<wbr/>2</p> 33439 </td> 33440 33441 <td class="entry_tags"> 33442 <ul class="entry_tags"> 33443 <li><a href="#tag_FUTURE">FUTURE</a></li> 33444 </ul> 33445 </td> 33446 33447 </tr> 33448 33449 33450 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33451 <!-- end of entry --> 33452 33453 33454 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 33455 <td class="entry_name 33456 " rowspan="3"> 33457 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 33458 </td> 33459 <td class="entry_type"> 33460 <span class="entry_type_name">byte</span> 33461 <span class="entry_type_container">x</span> 33462 33463 <span class="entry_type_array"> 33464 n 33465 </span> 33466 <span class="entry_type_visibility"> [public as boolean]</span> 33467 33468 33469 33470 33471 <div class="entry_type_notes">list of enums</div> 33472 33473 33474 </td> <!-- entry_type --> 33475 33476 <td class="entry_description"> 33477 <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 33478supported by this camera device.<wbr/></p> 33479 </td> 33480 33481 <td class="entry_units"> 33482 </td> 33483 33484 <td class="entry_range"> 33485 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p> 33486 </td> 33487 33488 <td class="entry_hal_version"> 33489 <p>3.<wbr/>2</p> 33490 </td> 33491 33492 <td class="entry_tags"> 33493 <ul class="entry_tags"> 33494 <li><a href="#tag_V1">V1</a></li> 33495 <li><a href="#tag_RAW">RAW</a></li> 33496 </ul> 33497 </td> 33498 33499 </tr> 33500 <tr class="entries_header"> 33501 <th class="th_details" colspan="6">Details</th> 33502 </tr> 33503 <tr class="entry_cont"> 33504 <td class="entry_details" colspan="6"> 33505 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only 33506<code>false</code>.<wbr/></p> 33507<p>ON is always supported on devices with the RAW capability.<wbr/></p> 33508 </td> 33509 </tr> 33510 33511 33512 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33513 <!-- end of entry --> 33514 33515 33516 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes"> 33517 <td class="entry_name 33518 " rowspan="3"> 33519 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes 33520 </td> 33521 <td class="entry_type"> 33522 <span class="entry_type_name">byte</span> 33523 <span class="entry_type_container">x</span> 33524 33525 <span class="entry_type_array"> 33526 n 33527 </span> 33528 <span class="entry_type_visibility"> [public as enumList]</span> 33529 33530 33531 33532 33533 <div class="entry_type_notes">list of enums</div> 33534 33535 33536 </td> <!-- entry_type --> 33537 33538 <td class="entry_description"> 33539 <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 33540are supported by this camera device.<wbr/></p> 33541 </td> 33542 33543 <td class="entry_units"> 33544 </td> 33545 33546 <td class="entry_range"> 33547 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p> 33548 </td> 33549 33550 <td class="entry_hal_version"> 33551 <p>3.<wbr/>2</p> 33552 </td> 33553 33554 <td class="entry_tags"> 33555 </td> 33556 33557 </tr> 33558 <tr class="entries_header"> 33559 <th class="th_details" colspan="6">Details</th> 33560 </tr> 33561 <tr class="entry_cont"> 33562 <td class="entry_details" colspan="6"> 33563 <p>If no lens shading map output is available for this camera device,<wbr/> this key will 33564contain only OFF.<wbr/></p> 33565<p>ON is always supported on devices with the RAW capability.<wbr/> 33566LEGACY mode devices will always only support OFF.<wbr/></p> 33567 </td> 33568 </tr> 33569 33570 33571 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33572 <!-- end of entry --> 33573 33574 33575 <tr class="entry" id="static_android.statistics.info.availableOisDataModes"> 33576 <td class="entry_name 33577 " rowspan="3"> 33578 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes 33579 </td> 33580 <td class="entry_type"> 33581 <span class="entry_type_name">byte</span> 33582 <span class="entry_type_container">x</span> 33583 33584 <span class="entry_type_array"> 33585 n 33586 </span> 33587 <span class="entry_type_visibility"> [public as enumList]</span> 33588 33589 33590 33591 33592 <div class="entry_type_notes">list of enums</div> 33593 33594 33595 </td> <!-- entry_type --> 33596 33597 <td class="entry_description"> 33598 <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 33599are supported by this camera device.<wbr/></p> 33600 </td> 33601 33602 <td class="entry_units"> 33603 </td> 33604 33605 <td class="entry_range"> 33606 <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p> 33607 </td> 33608 33609 <td class="entry_hal_version"> 33610 <p>3.<wbr/>3</p> 33611 </td> 33612 33613 <td class="entry_tags"> 33614 </td> 33615 33616 </tr> 33617 <tr class="entries_header"> 33618 <th class="th_details" colspan="6">Details</th> 33619 </tr> 33620 <tr class="entry_cont"> 33621 <td class="entry_details" colspan="6"> 33622 <p>If no OIS data output is available for this camera device,<wbr/> this key will 33623contain only OFF.<wbr/></p> 33624 </td> 33625 </tr> 33626 33627 33628 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33629 <!-- end of entry --> 33630 33631 33632 33633 33634 33635 33636 <!-- end of kind --> 33637 </tbody> 33638 <tr><td colspan="7" class="kind">dynamic</td></tr> 33639 33640 <thead class="entries_header"> 33641 <tr> 33642 <th class="th_name">Property Name</th> 33643 <th class="th_type">Type</th> 33644 <th class="th_description">Description</th> 33645 <th class="th_units">Units</th> 33646 <th class="th_range">Range</th> 33647 <th class="th_hal_version">Initial HIDL HAL version</th> 33648 <th class="th_tags">Tags</th> 33649 </tr> 33650 </thead> 33651 33652 <tbody> 33653 33654 33655 33656 33657 33658 33659 33660 33661 33662 33663 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 33664 <td class="entry_name 33665 " rowspan="5"> 33666 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 33667 </td> 33668 <td class="entry_type"> 33669 <span class="entry_type_name entry_type_name_enum">byte</span> 33670 33671 <span class="entry_type_visibility"> [public]</span> 33672 33673 33674 <span class="entry_type_hwlevel">[legacy] </span> 33675 33676 33677 33678 <ul class="entry_type_enum"> 33679 <li> 33680 <span class="entry_type_enum_name">OFF (v3.2)</span> 33681 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 33682results.<wbr/></p></span> 33683 </li> 33684 <li> 33685 <span class="entry_type_enum_name">SIMPLE (v3.2)</span> 33686 <span class="entry_type_enum_optional">[optional]</span> 33687 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 33688 </li> 33689 <li> 33690 <span class="entry_type_enum_name">FULL (v3.2)</span> 33691 <span class="entry_type_enum_optional">[optional]</span> 33692 <span class="entry_type_enum_notes"><p>Return all face 33693metadata.<wbr/></p> 33694<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 33695 </li> 33696 </ul> 33697 33698 </td> <!-- entry_type --> 33699 33700 <td class="entry_description"> 33701 <p>Operating mode for the face detector 33702unit.<wbr/></p> 33703 </td> 33704 33705 <td class="entry_units"> 33706 </td> 33707 33708 <td class="entry_range"> 33709 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 33710 </td> 33711 33712 <td class="entry_hal_version"> 33713 <p>3.<wbr/>2</p> 33714 </td> 33715 33716 <td class="entry_tags"> 33717 <ul class="entry_tags"> 33718 <li><a href="#tag_BC">BC</a></li> 33719 </ul> 33720 </td> 33721 33722 </tr> 33723 <tr class="entries_header"> 33724 <th class="th_details" colspan="6">Details</th> 33725 </tr> 33726 <tr class="entry_cont"> 33727 <td class="entry_details" colspan="6"> 33728 <p>Whether face detection is enabled,<wbr/> and whether it 33729should output just the basic fields or the full set of 33730fields.<wbr/></p> 33731 </td> 33732 </tr> 33733 33734 <tr class="entries_header"> 33735 <th class="th_details" colspan="6">HAL Implementation Details</th> 33736 </tr> 33737 <tr class="entry_cont"> 33738 <td class="entry_details" colspan="6"> 33739 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 33740<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 33741FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 33742<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 33743 </td> 33744 </tr> 33745 33746 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33747 <!-- end of entry --> 33748 33749 33750 <tr class="entry" id="dynamic_android.statistics.faceIds"> 33751 <td class="entry_name 33752 " rowspan="3"> 33753 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 33754 </td> 33755 <td class="entry_type"> 33756 <span class="entry_type_name">int32</span> 33757 <span class="entry_type_container">x</span> 33758 33759 <span class="entry_type_array"> 33760 n 33761 </span> 33762 <span class="entry_type_visibility"> [ndk_public]</span> 33763 33764 33765 <span class="entry_type_hwlevel">[legacy] </span> 33766 33767 33768 33769 33770 </td> <!-- entry_type --> 33771 33772 <td class="entry_description"> 33773 <p>List of unique IDs for detected faces.<wbr/></p> 33774 </td> 33775 33776 <td class="entry_units"> 33777 </td> 33778 33779 <td class="entry_range"> 33780 </td> 33781 33782 <td class="entry_hal_version"> 33783 <p>3.<wbr/>2</p> 33784 </td> 33785 33786 <td class="entry_tags"> 33787 <ul class="entry_tags"> 33788 <li><a href="#tag_BC">BC</a></li> 33789 </ul> 33790 </td> 33791 33792 </tr> 33793 <tr class="entries_header"> 33794 <th class="th_details" colspan="6">Details</th> 33795 </tr> 33796 <tr class="entry_cont"> 33797 <td class="entry_details" colspan="6"> 33798 <p>Each detected face is given a unique ID that is valid for as long as the face is visible 33799to the camera device.<wbr/> A face that leaves the field of view and later returns may be 33800assigned a new ID.<wbr/></p> 33801<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 33802 </td> 33803 </tr> 33804 33805 33806 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33807 <!-- end of entry --> 33808 33809 33810 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 33811 <td class="entry_name 33812 " rowspan="5"> 33813 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 33814 </td> 33815 <td class="entry_type"> 33816 <span class="entry_type_name">int32</span> 33817 <span class="entry_type_container">x</span> 33818 33819 <span class="entry_type_array"> 33820 n x 6 33821 </span> 33822 <span class="entry_type_visibility"> [ndk_public]</span> 33823 33824 33825 <span class="entry_type_hwlevel">[legacy] </span> 33826 33827 33828 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 33829 33830 33831 </td> <!-- entry_type --> 33832 33833 <td class="entry_description"> 33834 <p>List of landmarks for detected 33835faces.<wbr/></p> 33836 </td> 33837 33838 <td class="entry_units"> 33839 </td> 33840 33841 <td class="entry_range"> 33842 </td> 33843 33844 <td class="entry_hal_version"> 33845 <p>3.<wbr/>2</p> 33846 </td> 33847 33848 <td class="entry_tags"> 33849 <ul class="entry_tags"> 33850 <li><a href="#tag_BC">BC</a></li> 33851 </ul> 33852 </td> 33853 33854 </tr> 33855 <tr class="entries_header"> 33856 <th class="th_details" colspan="6">Details</th> 33857 </tr> 33858 <tr class="entry_cont"> 33859 <td class="entry_details" colspan="6"> 33860 <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 33861system 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 33862the top-left pixel of the active array.<wbr/></p> 33863<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 33864system depends on the mode being set.<wbr/> 33865When the distortion correction mode is OFF,<wbr/> the coordinate system follows 33866<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 33867<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/> 33868When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 33869<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 33870<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 33871<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL.<wbr/></p> 33872<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 33873preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 33874pre-zoomRatio field of view.<wbr/> This means that if the relative position of faces and 33875the camera device doesn't change,<wbr/> when zooming in by increasing 33876<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> the face landmarks move farther away from the center of the 33877activeArray or preCorrectionActiveArray.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 33878(default),<wbr/> the face landmarks coordinates won't change as <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> 33879changes.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use activeArraySize or 33880preCorrectionActiveArraySize still depends on distortion correction mode.<wbr/></p> 33881 </td> 33882 </tr> 33883 33884 <tr class="entries_header"> 33885 <th class="th_details" colspan="6">HAL Implementation Details</th> 33886 </tr> 33887 <tr class="entry_cont"> 33888 <td class="entry_details" colspan="6"> 33889 <p>HAL must always report face landmarks in the coordinate system of pre-correction 33890active array.<wbr/></p> 33891 </td> 33892 </tr> 33893 33894 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33895 <!-- end of entry --> 33896 33897 33898 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 33899 <td class="entry_name 33900 " rowspan="5"> 33901 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 33902 </td> 33903 <td class="entry_type"> 33904 <span class="entry_type_name">int32</span> 33905 <span class="entry_type_container">x</span> 33906 33907 <span class="entry_type_array"> 33908 n x 4 33909 </span> 33910 <span class="entry_type_visibility"> [ndk_public as rectangle]</span> 33911 33912 33913 <span class="entry_type_hwlevel">[legacy] </span> 33914 33915 33916 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 33917 33918 33919 </td> <!-- entry_type --> 33920 33921 <td class="entry_description"> 33922 <p>List of the bounding rectangles for detected 33923faces.<wbr/></p> 33924 </td> 33925 33926 <td class="entry_units"> 33927 </td> 33928 33929 <td class="entry_range"> 33930 </td> 33931 33932 <td class="entry_hal_version"> 33933 <p>3.<wbr/>2</p> 33934 </td> 33935 33936 <td class="entry_tags"> 33937 <ul class="entry_tags"> 33938 <li><a href="#tag_BC">BC</a></li> 33939 </ul> 33940 </td> 33941 33942 </tr> 33943 <tr class="entries_header"> 33944 <th class="th_details" colspan="6">Details</th> 33945 </tr> 33946 <tr class="entry_cont"> 33947 <td class="entry_details" colspan="6"> 33948 <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 33949system 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 33950the top-left pixel of the active array.<wbr/></p> 33951<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 33952system depends on the mode being set.<wbr/> 33953When the distortion correction mode is OFF,<wbr/> the coordinate system follows 33954<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 33955<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/> 33956When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 33957<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 33958<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 33959<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 33960<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 33961preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 33962pre-zoomRatio field of view.<wbr/> This means that if the relative position of faces and 33963the camera device doesn't change,<wbr/> when zooming in by increasing 33964<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> the face rectangles grow larger and move farther away from 33965the center of the activeArray or preCorrectionActiveArray.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> 33966is set to 1.<wbr/>0 (default),<wbr/> the face rectangles won't change as <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> 33967changes.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use activeArraySize or 33968preCorrectionActiveArraySize still depends on distortion correction mode.<wbr/></p> 33969 </td> 33970 </tr> 33971 33972 <tr class="entries_header"> 33973 <th class="th_details" colspan="6">HAL Implementation Details</th> 33974 </tr> 33975 <tr class="entry_cont"> 33976 <td class="entry_details" colspan="6"> 33977 <p>HAL must always report face rectangles in the coordinate system of pre-correction 33978active array.<wbr/></p> 33979 </td> 33980 </tr> 33981 33982 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33983 <!-- end of entry --> 33984 33985 33986 <tr class="entry" id="dynamic_android.statistics.faceScores"> 33987 <td class="entry_name 33988 " rowspan="5"> 33989 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 33990 </td> 33991 <td class="entry_type"> 33992 <span class="entry_type_name">byte</span> 33993 <span class="entry_type_container">x</span> 33994 33995 <span class="entry_type_array"> 33996 n 33997 </span> 33998 <span class="entry_type_visibility"> [ndk_public]</span> 33999 34000 34001 <span class="entry_type_hwlevel">[legacy] </span> 34002 34003 34004 34005 34006 </td> <!-- entry_type --> 34007 34008 <td class="entry_description"> 34009 <p>List of the face confidence scores for 34010detected faces</p> 34011 </td> 34012 34013 <td class="entry_units"> 34014 </td> 34015 34016 <td class="entry_range"> 34017 <p>1-100</p> 34018 </td> 34019 34020 <td class="entry_hal_version"> 34021 <p>3.<wbr/>2</p> 34022 </td> 34023 34024 <td class="entry_tags"> 34025 <ul class="entry_tags"> 34026 <li><a href="#tag_BC">BC</a></li> 34027 </ul> 34028 </td> 34029 34030 </tr> 34031 <tr class="entries_header"> 34032 <th class="th_details" colspan="6">Details</th> 34033 </tr> 34034 <tr class="entry_cont"> 34035 <td class="entry_details" colspan="6"> 34036 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 34037 </td> 34038 </tr> 34039 34040 <tr class="entries_header"> 34041 <th class="th_details" colspan="6">HAL Implementation Details</th> 34042 </tr> 34043 <tr class="entry_cont"> 34044 <td class="entry_details" colspan="6"> 34045 <p>The value should be meaningful (for example,<wbr/> setting 100 at 34046all times is illegal).<wbr/></p> 34047 </td> 34048 </tr> 34049 34050 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34051 <!-- end of entry --> 34052 34053 34054 <tr class="entry" id="dynamic_android.statistics.faces"> 34055 <td class="entry_name 34056 " rowspan="3"> 34057 android.<wbr/>statistics.<wbr/>faces 34058 </td> 34059 <td class="entry_type"> 34060 <span class="entry_type_name">int32</span> 34061 <span class="entry_type_container">x</span> 34062 34063 <span class="entry_type_array"> 34064 n 34065 </span> 34066 <span class="entry_type_visibility"> [java_public as face]</span> 34067 34068 <span class="entry_type_synthetic">[synthetic] </span> 34069 34070 <span class="entry_type_hwlevel">[legacy] </span> 34071 34072 34073 34074 34075 </td> <!-- entry_type --> 34076 34077 <td class="entry_description"> 34078 <p>List of the faces detected through camera face detection 34079in this capture.<wbr/></p> 34080 </td> 34081 34082 <td class="entry_units"> 34083 </td> 34084 34085 <td class="entry_range"> 34086 </td> 34087 34088 <td class="entry_hal_version"> 34089 <p>3.<wbr/>2</p> 34090 </td> 34091 34092 <td class="entry_tags"> 34093 </td> 34094 34095 </tr> 34096 <tr class="entries_header"> 34097 <th class="th_details" colspan="6">Details</th> 34098 </tr> 34099 <tr class="entry_cont"> 34100 <td class="entry_details" colspan="6"> 34101 <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> 34102 </td> 34103 </tr> 34104 34105 34106 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34107 <!-- end of entry --> 34108 34109 34110 <tr class="entry" id="dynamic_android.statistics.histogram"> 34111 <td class="entry_name 34112 " rowspan="3"> 34113 android.<wbr/>statistics.<wbr/>histogram 34114 </td> 34115 <td class="entry_type"> 34116 <span class="entry_type_name">int32</span> 34117 <span class="entry_type_container">x</span> 34118 34119 <span class="entry_type_array"> 34120 n x 3 34121 </span> 34122 <span class="entry_type_visibility"> [system]</span> 34123 34124 34125 34126 34127 <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> 34128 34129 34130 </td> <!-- entry_type --> 34131 34132 <td class="entry_description"> 34133 <p>A 3-channel histogram based on the raw 34134sensor data</p> 34135 </td> 34136 34137 <td class="entry_units"> 34138 </td> 34139 34140 <td class="entry_range"> 34141 </td> 34142 34143 <td class="entry_hal_version"> 34144 <p>3.<wbr/>2</p> 34145 </td> 34146 34147 <td class="entry_tags"> 34148 <ul class="entry_tags"> 34149 <li><a href="#tag_FUTURE">FUTURE</a></li> 34150 </ul> 34151 </td> 34152 34153 </tr> 34154 <tr class="entries_header"> 34155 <th class="th_details" colspan="6">Details</th> 34156 </tr> 34157 <tr class="entry_cont"> 34158 <td class="entry_details" colspan="6"> 34159 <p>The k'th bucket (0-based) covers the input range 34160(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/> 34161(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 34162supported,<wbr/> all channels should have the same data</p> 34163 </td> 34164 </tr> 34165 34166 34167 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34168 <!-- end of entry --> 34169 34170 34171 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 34172 <td class="entry_name 34173 " rowspan="1"> 34174 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 34175 </td> 34176 <td class="entry_type"> 34177 <span class="entry_type_name entry_type_name_enum">byte</span> 34178 34179 <span class="entry_type_visibility"> [system as boolean]</span> 34180 34181 34182 34183 34184 34185 <ul class="entry_type_enum"> 34186 <li> 34187 <span class="entry_type_enum_name">OFF (v3.2)</span> 34188 </li> 34189 <li> 34190 <span class="entry_type_enum_name">ON (v3.2)</span> 34191 </li> 34192 </ul> 34193 34194 </td> <!-- entry_type --> 34195 34196 <td class="entry_description"> 34197 <p>Operating mode for histogram 34198generation</p> 34199 </td> 34200 34201 <td class="entry_units"> 34202 </td> 34203 34204 <td class="entry_range"> 34205 </td> 34206 34207 <td class="entry_hal_version"> 34208 <p>3.<wbr/>2</p> 34209 </td> 34210 34211 <td class="entry_tags"> 34212 <ul class="entry_tags"> 34213 <li><a href="#tag_FUTURE">FUTURE</a></li> 34214 </ul> 34215 </td> 34216 34217 </tr> 34218 34219 34220 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34221 <!-- end of entry --> 34222 34223 34224 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 34225 <td class="entry_name 34226 " rowspan="3"> 34227 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 34228 </td> 34229 <td class="entry_type"> 34230 <span class="entry_type_name">int32</span> 34231 <span class="entry_type_container">x</span> 34232 34233 <span class="entry_type_array"> 34234 n x m x 3 34235 </span> 34236 <span class="entry_type_visibility"> [system]</span> 34237 34238 34239 34240 34241 <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> 34242 34243 34244 </td> <!-- entry_type --> 34245 34246 <td class="entry_description"> 34247 <p>A 3-channel sharpness map,<wbr/> based on the raw 34248sensor data</p> 34249 </td> 34250 34251 <td class="entry_units"> 34252 </td> 34253 34254 <td class="entry_range"> 34255 </td> 34256 34257 <td class="entry_hal_version"> 34258 <p>3.<wbr/>2</p> 34259 </td> 34260 34261 <td class="entry_tags"> 34262 <ul class="entry_tags"> 34263 <li><a href="#tag_FUTURE">FUTURE</a></li> 34264 </ul> 34265 </td> 34266 34267 </tr> 34268 <tr class="entries_header"> 34269 <th class="th_details" colspan="6">Details</th> 34270 </tr> 34271 <tr class="entry_cont"> 34272 <td class="entry_details" colspan="6"> 34273 <p>If only a monochrome sharpness map is supported,<wbr/> 34274all channels should have the same data</p> 34275 </td> 34276 </tr> 34277 34278 34279 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34280 <!-- end of entry --> 34281 34282 34283 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 34284 <td class="entry_name 34285 " rowspan="1"> 34286 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 34287 </td> 34288 <td class="entry_type"> 34289 <span class="entry_type_name entry_type_name_enum">byte</span> 34290 34291 <span class="entry_type_visibility"> [system as boolean]</span> 34292 34293 34294 34295 34296 34297 <ul class="entry_type_enum"> 34298 <li> 34299 <span class="entry_type_enum_name">OFF (v3.2)</span> 34300 </li> 34301 <li> 34302 <span class="entry_type_enum_name">ON (v3.2)</span> 34303 </li> 34304 </ul> 34305 34306 </td> <!-- entry_type --> 34307 34308 <td class="entry_description"> 34309 <p>Operating mode for sharpness map 34310generation</p> 34311 </td> 34312 34313 <td class="entry_units"> 34314 </td> 34315 34316 <td class="entry_range"> 34317 </td> 34318 34319 <td class="entry_hal_version"> 34320 <p>3.<wbr/>2</p> 34321 </td> 34322 34323 <td class="entry_tags"> 34324 <ul class="entry_tags"> 34325 <li><a href="#tag_FUTURE">FUTURE</a></li> 34326 </ul> 34327 </td> 34328 34329 </tr> 34330 34331 34332 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34333 <!-- end of entry --> 34334 34335 34336 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> 34337 <td class="entry_name 34338 " rowspan="3"> 34339 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map 34340 </td> 34341 <td class="entry_type"> 34342 <span class="entry_type_name">byte</span> 34343 34344 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span> 34345 34346 34347 <span class="entry_type_hwlevel">[full] </span> 34348 34349 34350 34351 34352 </td> <!-- entry_type --> 34353 34354 <td class="entry_description"> 34355 <p>The shading map is a low-resolution floating-point map 34356that lists the coefficients used to correct for vignetting,<wbr/> for each 34357Bayer color channel.<wbr/></p> 34358 </td> 34359 34360 <td class="entry_units"> 34361 </td> 34362 34363 <td class="entry_range"> 34364 <p>Each gain factor is >= 1</p> 34365 </td> 34366 34367 <td class="entry_hal_version"> 34368 <p>3.<wbr/>2</p> 34369 </td> 34370 34371 <td class="entry_tags"> 34372 </td> 34373 34374 </tr> 34375 <tr class="entries_header"> 34376 <th class="th_details" colspan="6">Details</th> 34377 </tr> 34378 <tr class="entry_cont"> 34379 <td class="entry_details" colspan="6"> 34380 <p>The map provided here is the same map that is used by the camera device to 34381correct both color shading and vignetting for output non-RAW images.<wbr/></p> 34382<p>When there is no lens shading correction applied to RAW 34383output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> 34384false),<wbr/> this map is the complete lens shading correction 34385map; when there is some lens shading correction applied to 34386the 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 34387correction map that needs to be applied to get shading 34388corrected images that match the camera device's output for 34389non-RAW formats.<wbr/></p> 34390<p>Therefore,<wbr/> whatever the value of lensShadingApplied is,<wbr/> the lens 34391shading map should always be applied to RAW images if the goal is to 34392match the shading appearance of processed (non-RAW) images.<wbr/></p> 34393<p>For a complete shading correction map,<wbr/> the least shaded 34394section of the image will have a gain factor of 1; all 34395other sections will have gains above 1.<wbr/></p> 34396<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 34397will take into account the colorCorrection settings.<wbr/></p> 34398<p>The shading map is for the entire active pixel array,<wbr/> and is not 34399affected by the crop region specified in the request.<wbr/> Each shading map 34400entry is the value of the shading compensation map over a specific 34401pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 34402map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 34403(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 34404pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 34405The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 34406<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 34407channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 34408The shading map is stored in a fully interleaved format.<wbr/></p> 34409<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/> 34410and will be smaller than 64x64.<wbr/></p> 34411<p>As an example,<wbr/> given a very small map defined as:</p> 34412<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] 34413values = 34414[ 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/> 34415 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/> 34416 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/> 34417 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/> 34418 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/> 34419 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 ] 34420</code></pre> 34421<p>The low-resolution scaling map images for each channel are 34422(displayed using nearest-neighbor interpolation):</p> 34423<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 34424<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 34425<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 34426<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 34427<p>As a visualization only,<wbr/> inverting the full-color map to recover an 34428image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 34429<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 34430<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example 34431shading map for such a camera is defined as:</p> 34432<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 34433<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 34434[ 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/> 34435 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/> 34436 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/> 34437 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/> 34438 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/> 34439 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 ] 34440</code></pre> 34441 </td> 34442 </tr> 34443 34444 34445 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34446 <!-- end of entry --> 34447 34448 34449 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 34450 <td class="entry_name 34451 " rowspan="5"> 34452 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 34453 </td> 34454 <td class="entry_type"> 34455 <span class="entry_type_name">float</span> 34456 <span class="entry_type_container">x</span> 34457 34458 <span class="entry_type_array"> 34459 4 x n x m 34460 </span> 34461 <span class="entry_type_visibility"> [ndk_public]</span> 34462 34463 34464 <span class="entry_type_hwlevel">[full] </span> 34465 34466 34467 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 34468 34469 34470 </td> <!-- entry_type --> 34471 34472 <td class="entry_description"> 34473 <p>The shading map is a low-resolution floating-point map 34474that lists the coefficients used to correct for vignetting and color shading,<wbr/> 34475for each Bayer color channel of RAW image data.<wbr/></p> 34476 </td> 34477 34478 <td class="entry_units"> 34479 </td> 34480 34481 <td class="entry_range"> 34482 <p>Each gain factor is >= 1</p> 34483 </td> 34484 34485 <td class="entry_hal_version"> 34486 <p>3.<wbr/>2</p> 34487 </td> 34488 34489 <td class="entry_tags"> 34490 </td> 34491 34492 </tr> 34493 <tr class="entries_header"> 34494 <th class="th_details" colspan="6">Details</th> 34495 </tr> 34496 <tr class="entry_cont"> 34497 <td class="entry_details" colspan="6"> 34498 <p>The map provided here is the same map that is used by the camera device to 34499correct both color shading and vignetting for output non-RAW images.<wbr/></p> 34500<p>When there is no lens shading correction applied to RAW 34501output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> 34502false),<wbr/> this map is the complete lens shading correction 34503map; when there is some lens shading correction applied to 34504the 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 34505correction map that needs to be applied to get shading 34506corrected images that match the camera device's output for 34507non-RAW formats.<wbr/></p> 34508<p>For a complete shading correction map,<wbr/> the least shaded 34509section of the image will have a gain factor of 1; all 34510other sections will have gains above 1.<wbr/></p> 34511<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 34512will take into account the colorCorrection settings.<wbr/></p> 34513<p>The shading map is for the entire active pixel array,<wbr/> and is not 34514affected by the crop region specified in the request.<wbr/> Each shading map 34515entry is the value of the shading compensation map over a specific 34516pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 34517map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 34518(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 34519pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 34520The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 34521<p>For a Bayer camera,<wbr/> the channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is 34522the green channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 34523The shading map is stored in a fully interleaved format,<wbr/> and its size 34524is 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> 34525<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/> 34526and will be smaller than 64x64.<wbr/></p> 34527<p>As an example,<wbr/> given a very small map for a Bayer camera defined as:</p> 34528<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 34529<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 34530[ 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/> 34531 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/> 34532 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/> 34533 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/> 34534 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/> 34535 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 ] 34536</code></pre> 34537<p>The low-resolution scaling map images for each channel are 34538(displayed using nearest-neighbor interpolation):</p> 34539<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 34540<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 34541<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 34542<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 34543<p>As a visualization only,<wbr/> inverting the full-color map to recover an 34544image of a gray wall (using bicubic interpolation for visual quality) 34545as captured by the sensor gives:</p> 34546<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 34547<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example 34548shading map for such a camera is defined as:</p> 34549<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 34550<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 34551[ 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/> 34552 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/> 34553 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/> 34554 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/> 34555 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/> 34556 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 ] 34557</code></pre> 34558<p>Note that the RAW image data might be subject to lens shading 34559correction not reported on this map.<wbr/> Query 34560<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 34561to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> 34562is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading 34563correction.<wbr/> In the case full lens shading correction is applied to RAW 34564images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/> 34565In other words,<wbr/> the map reported in this key is the remaining lens shading 34566that needs to be applied on the RAW image to get images without lens shading 34567artifacts.<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 34568formats.<wbr/></p> 34569 </td> 34570 </tr> 34571 34572 <tr class="entries_header"> 34573 <th class="th_details" colspan="6">HAL Implementation Details</th> 34574 </tr> 34575 <tr class="entry_cont"> 34576 <td class="entry_details" colspan="6"> 34577 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> 34578When AE and AWB are in AUTO modes 34579(<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 34580may have all the information it need to generate most accurate lens shading map.<wbr/> When 34581AE or AWB are in manual mode 34582(<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 34583may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 34584generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 34585the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p> 34586 </td> 34587 </tr> 34588 34589 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34590 <!-- end of entry --> 34591 34592 34593 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 34594 <td class="entry_name 34595 entry_name_deprecated 34596 " rowspan="3"> 34597 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 34598 </td> 34599 <td class="entry_type"> 34600 <span class="entry_type_name">float</span> 34601 <span class="entry_type_container">x</span> 34602 34603 <span class="entry_type_array"> 34604 4 34605 </span> 34606 <span class="entry_type_visibility"> [hidden]</span> 34607 34608 34609 34610 <span class="entry_type_deprecated">[deprecated] </span> 34611 34612 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 34613 34614 34615 </td> <!-- entry_type --> 34616 34617 <td class="entry_description"> 34618 <p>The best-fit color channel gains calculated 34619by the camera device's statistics units for the current output frame.<wbr/></p> 34620 </td> 34621 34622 <td class="entry_units"> 34623 </td> 34624 34625 <td class="entry_range"> 34626 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 34627 </td> 34628 34629 <td class="entry_hal_version"> 34630 <p>3.<wbr/>2</p> 34631 </td> 34632 34633 <td class="entry_tags"> 34634 </td> 34635 34636 </tr> 34637 <tr class="entries_header"> 34638 <th class="th_details" colspan="6">Details</th> 34639 </tr> 34640 <tr class="entry_cont"> 34641 <td class="entry_details" colspan="6"> 34642 <p>This may be different than the gains used for this frame,<wbr/> 34643since statistics processing on data from a new frame 34644typically completes after the transform has already been 34645applied to that frame.<wbr/></p> 34646<p>The 4 channel gains are defined in Bayer domain,<wbr/> 34647see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 34648<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 34649regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 34650 </td> 34651 </tr> 34652 34653 34654 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34655 <!-- end of entry --> 34656 34657 34658 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 34659 <td class="entry_name 34660 entry_name_deprecated 34661 " rowspan="3"> 34662 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 34663 </td> 34664 <td class="entry_type"> 34665 <span class="entry_type_name">rational</span> 34666 <span class="entry_type_container">x</span> 34667 34668 <span class="entry_type_array"> 34669 3 x 3 34670 </span> 34671 <span class="entry_type_visibility"> [hidden]</span> 34672 34673 34674 34675 <span class="entry_type_deprecated">[deprecated] </span> 34676 34677 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 34678 34679 34680 </td> <!-- entry_type --> 34681 34682 <td class="entry_description"> 34683 <p>The best-fit color transform matrix estimate 34684calculated by the camera device's statistics units for the current 34685output frame.<wbr/></p> 34686 </td> 34687 34688 <td class="entry_units"> 34689 </td> 34690 34691 <td class="entry_range"> 34692 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 34693 </td> 34694 34695 <td class="entry_hal_version"> 34696 <p>3.<wbr/>2</p> 34697 </td> 34698 34699 <td class="entry_tags"> 34700 </td> 34701 34702 </tr> 34703 <tr class="entries_header"> 34704 <th class="th_details" colspan="6">Details</th> 34705 </tr> 34706 <tr class="entry_cont"> 34707 <td class="entry_details" colspan="6"> 34708 <p>The camera device will provide the estimate from its 34709statistics unit on the white balance transforms to use 34710for the next frame.<wbr/> These are the values the camera device believes 34711are the best fit for the current output frame.<wbr/> This may 34712be different than the transform used for this frame,<wbr/> since 34713statistics processing on data from a new frame typically 34714completes after the transform has already been applied to 34715that frame.<wbr/></p> 34716<p>These estimates must be provided for all frames,<wbr/> even if 34717capture settings and color transforms are set by the application.<wbr/></p> 34718<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 34719regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 34720 </td> 34721 </tr> 34722 34723 34724 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34725 <!-- end of entry --> 34726 34727 34728 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 34729 <td class="entry_name 34730 " rowspan="3"> 34731 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 34732 </td> 34733 <td class="entry_type"> 34734 <span class="entry_type_name entry_type_name_enum">byte</span> 34735 34736 <span class="entry_type_visibility"> [public]</span> 34737 34738 34739 <span class="entry_type_hwlevel">[full] </span> 34740 34741 34742 34743 <ul class="entry_type_enum"> 34744 <li> 34745 <span class="entry_type_enum_name">NONE (v3.2)</span> 34746 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination 34747in the current scene.<wbr/></p></span> 34748 </li> 34749 <li> 34750 <span class="entry_type_enum_name">50HZ (v3.2)</span> 34751 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz 34752in the current scene.<wbr/></p></span> 34753 </li> 34754 <li> 34755 <span class="entry_type_enum_name">60HZ (v3.2)</span> 34756 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz 34757in the current scene.<wbr/></p></span> 34758 </li> 34759 </ul> 34760 34761 </td> <!-- entry_type --> 34762 34763 <td class="entry_description"> 34764 <p>The camera device estimated scene illumination lighting 34765frequency.<wbr/></p> 34766 </td> 34767 34768 <td class="entry_units"> 34769 </td> 34770 34771 <td class="entry_range"> 34772 </td> 34773 34774 <td class="entry_hal_version"> 34775 <p>3.<wbr/>2</p> 34776 </td> 34777 34778 <td class="entry_tags"> 34779 </td> 34780 34781 </tr> 34782 <tr class="entries_header"> 34783 <th class="th_details" colspan="6">Details</th> 34784 </tr> 34785 <tr class="entry_cont"> 34786 <td class="entry_details" colspan="6"> 34787 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 34788that depends on the local utility power standards.<wbr/> This flicker must be 34789accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 34790The camera device uses this entry to tell the application what the scene 34791illuminant frequency is.<wbr/></p> 34792<p>When manual exposure control is enabled 34793(<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> == 34794OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform 34795antibanding,<wbr/> and the application can ensure it selects 34796exposure times that do not cause banding issues by looking 34797into this metadata field.<wbr/> See 34798<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p> 34799<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p> 34800 </td> 34801 </tr> 34802 34803 34804 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34805 <!-- end of entry --> 34806 34807 34808 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 34809 <td class="entry_name 34810 " rowspan="3"> 34811 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 34812 </td> 34813 <td class="entry_type"> 34814 <span class="entry_type_name entry_type_name_enum">byte</span> 34815 34816 <span class="entry_type_visibility"> [public as boolean]</span> 34817 34818 34819 34820 34821 34822 <ul class="entry_type_enum"> 34823 <li> 34824 <span class="entry_type_enum_name">OFF (v3.2)</span> 34825 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 34826 </li> 34827 <li> 34828 <span class="entry_type_enum_name">ON (v3.2)</span> 34829 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 34830 </li> 34831 </ul> 34832 34833 </td> <!-- entry_type --> 34834 34835 <td class="entry_description"> 34836 <p>Operating mode for hot pixel map generation.<wbr/></p> 34837 </td> 34838 34839 <td class="entry_units"> 34840 </td> 34841 34842 <td class="entry_range"> 34843 <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> 34844 </td> 34845 34846 <td class="entry_hal_version"> 34847 <p>3.<wbr/>2</p> 34848 </td> 34849 34850 <td class="entry_tags"> 34851 <ul class="entry_tags"> 34852 <li><a href="#tag_V1">V1</a></li> 34853 <li><a href="#tag_RAW">RAW</a></li> 34854 </ul> 34855 </td> 34856 34857 </tr> 34858 <tr class="entries_header"> 34859 <th class="th_details" colspan="6">Details</th> 34860 </tr> 34861 <tr class="entry_cont"> 34862 <td class="entry_details" colspan="6"> 34863 <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/> 34864If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 34865 </td> 34866 </tr> 34867 34868 34869 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34870 <!-- end of entry --> 34871 34872 34873 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 34874 <td class="entry_name 34875 " rowspan="5"> 34876 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 34877 </td> 34878 <td class="entry_type"> 34879 <span class="entry_type_name">int32</span> 34880 <span class="entry_type_container">x</span> 34881 34882 <span class="entry_type_array"> 34883 2 x n 34884 </span> 34885 <span class="entry_type_visibility"> [public as point]</span> 34886 34887 34888 34889 34890 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 34891 34892 34893 </td> <!-- entry_type --> 34894 34895 <td class="entry_description"> 34896 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 34897 </td> 34898 34899 <td class="entry_units"> 34900 </td> 34901 34902 <td class="entry_range"> 34903 <p>n <= number of pixels on the sensor.<wbr/> 34904The <code>(x,<wbr/> y)</code> coordinates must be bounded by 34905<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 34906 </td> 34907 34908 <td class="entry_hal_version"> 34909 <p>3.<wbr/>2</p> 34910 </td> 34911 34912 <td class="entry_tags"> 34913 <ul class="entry_tags"> 34914 <li><a href="#tag_V1">V1</a></li> 34915 <li><a href="#tag_RAW">RAW</a></li> 34916 </ul> 34917 </td> 34918 34919 </tr> 34920 <tr class="entries_header"> 34921 <th class="th_details" colspan="6">Details</th> 34922 </tr> 34923 <tr class="entry_cont"> 34924 <td class="entry_details" colspan="6"> 34925 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 34926<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 34927bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 34928height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 34929This may include hot pixels that lie outside of the active array 34930bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 34931<p>For camera devices with the 34932<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 34933capability or devices where 34934<a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 34935lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> 34936<a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> will be used as the 34937pixel array size if the corresponding request sets <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> to 34938<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 34939 </td> 34940 </tr> 34941 34942 <tr class="entries_header"> 34943 <th class="th_details" colspan="6">HAL Implementation Details</th> 34944 </tr> 34945 <tr class="entry_cont"> 34946 <td class="entry_details" colspan="6"> 34947 <p>A hotpixel map contains the coordinates of pixels on the camera 34948sensor that do report valid values (usually due to defects in 34949the camera sensor).<wbr/> This includes pixels that are stuck at certain 34950values,<wbr/> or have a response that does not accurately encode the 34951incoming light from the scene.<wbr/></p> 34952<p>To avoid performance issues,<wbr/> there should be significantly fewer hot 34953pixels than actual pixels on the camera sensor.<wbr/></p> 34954 </td> 34955 </tr> 34956 34957 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34958 <!-- end of entry --> 34959 34960 34961 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> 34962 <td class="entry_name 34963 " rowspan="3"> 34964 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 34965 </td> 34966 <td class="entry_type"> 34967 <span class="entry_type_name entry_type_name_enum">byte</span> 34968 34969 <span class="entry_type_visibility"> [public]</span> 34970 34971 34972 <span class="entry_type_hwlevel">[full] </span> 34973 34974 34975 34976 <ul class="entry_type_enum"> 34977 <li> 34978 <span class="entry_type_enum_name">OFF (v3.2)</span> 34979 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 34980 </li> 34981 <li> 34982 <span class="entry_type_enum_name">ON (v3.2)</span> 34983 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 34984 </li> 34985 </ul> 34986 34987 </td> <!-- entry_type --> 34988 34989 <td class="entry_description"> 34990 <p>Whether the camera device will output the lens 34991shading map in output result metadata.<wbr/></p> 34992 </td> 34993 34994 <td class="entry_units"> 34995 </td> 34996 34997 <td class="entry_range"> 34998 <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> 34999 </td> 35000 35001 <td class="entry_hal_version"> 35002 <p>3.<wbr/>2</p> 35003 </td> 35004 35005 <td class="entry_tags"> 35006 <ul class="entry_tags"> 35007 <li><a href="#tag_RAW">RAW</a></li> 35008 </ul> 35009 </td> 35010 35011 </tr> 35012 <tr class="entries_header"> 35013 <th class="th_details" colspan="6">Details</th> 35014 </tr> 35015 <tr class="entry_cont"> 35016 <td class="entry_details" colspan="6"> 35017 <p>When set to ON,<wbr/> 35018<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 35019the output result metadata.<wbr/></p> 35020<p>ON is always supported on devices with the RAW capability.<wbr/></p> 35021 </td> 35022 </tr> 35023 35024 35025 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35026 <!-- end of entry --> 35027 35028 35029 <tr class="entry" id="dynamic_android.statistics.oisDataMode"> 35030 <td class="entry_name 35031 " rowspan="3"> 35032 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode 35033 </td> 35034 <td class="entry_type"> 35035 <span class="entry_type_name entry_type_name_enum">byte</span> 35036 35037 <span class="entry_type_visibility"> [public]</span> 35038 35039 35040 35041 35042 35043 <ul class="entry_type_enum"> 35044 <li> 35045 <span class="entry_type_enum_name">OFF (v3.3)</span> 35046 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span> 35047 </li> 35048 <li> 35049 <span class="entry_type_enum_name">ON (v3.3)</span> 35050 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span> 35051 </li> 35052 </ul> 35053 35054 </td> <!-- entry_type --> 35055 35056 <td class="entry_description"> 35057 <p>A control for selecting whether optical stabilization (OIS) position 35058information is included in output result metadata.<wbr/></p> 35059 </td> 35060 35061 <td class="entry_units"> 35062 </td> 35063 35064 <td class="entry_range"> 35065 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p> 35066 </td> 35067 35068 <td class="entry_hal_version"> 35069 <p>3.<wbr/>3</p> 35070 </td> 35071 35072 <td class="entry_tags"> 35073 </td> 35074 35075 </tr> 35076 <tr class="entries_header"> 35077 <th class="th_details" colspan="6">Details</th> 35078 </tr> 35079 <tr class="entry_cont"> 35080 <td class="entry_details" colspan="6"> 35081 <p>Since optical image stabilization generally involves motion much faster than the duration 35082of individual image exposure,<wbr/> multiple OIS samples can be included for a single capture 35083result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating 35084at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined 35085with the rolling shutter skew to account for lens motion during image exposure in 35086post-processing algorithms.<wbr/></p> 35087 </td> 35088 </tr> 35089 35090 35091 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35092 <!-- end of entry --> 35093 35094 35095 <tr class="entry" id="dynamic_android.statistics.oisTimestamps"> 35096 <td class="entry_name 35097 " rowspan="3"> 35098 android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps 35099 </td> 35100 <td class="entry_type"> 35101 <span class="entry_type_name">int64</span> 35102 <span class="entry_type_container">x</span> 35103 35104 <span class="entry_type_array"> 35105 n 35106 </span> 35107 <span class="entry_type_visibility"> [ndk_public]</span> 35108 35109 35110 35111 35112 35113 35114 </td> <!-- entry_type --> 35115 35116 <td class="entry_description"> 35117 <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p> 35118 </td> 35119 35120 <td class="entry_units"> 35121 nanoseconds 35122 </td> 35123 35124 <td class="entry_range"> 35125 </td> 35126 35127 <td class="entry_hal_version"> 35128 <p>3.<wbr/>3</p> 35129 </td> 35130 35131 <td class="entry_tags"> 35132 </td> 35133 35134 </tr> 35135 <tr class="entries_header"> 35136 <th class="th_details" colspan="6">Details</th> 35137 </tr> 35138 <tr class="entry_cont"> 35139 <td class="entry_details" colspan="6"> 35140 <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same 35141timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p> 35142 </td> 35143 </tr> 35144 35145 35146 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35147 <!-- end of entry --> 35148 35149 35150 <tr class="entry" id="dynamic_android.statistics.oisXShifts"> 35151 <td class="entry_name 35152 " rowspan="3"> 35153 android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts 35154 </td> 35155 <td class="entry_type"> 35156 <span class="entry_type_name">float</span> 35157 <span class="entry_type_container">x</span> 35158 35159 <span class="entry_type_array"> 35160 n 35161 </span> 35162 <span class="entry_type_visibility"> [ndk_public]</span> 35163 35164 35165 35166 35167 35168 35169 </td> <!-- entry_type --> 35170 35171 <td class="entry_description"> 35172 <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p> 35173 </td> 35174 35175 <td class="entry_units"> 35176 Pixels in active array.<wbr/> 35177 </td> 35178 35179 <td class="entry_range"> 35180 </td> 35181 35182 <td class="entry_hal_version"> 35183 <p>3.<wbr/>3</p> 35184 </td> 35185 35186 <td class="entry_tags"> 35187 </td> 35188 35189 </tr> 35190 <tr class="entries_header"> 35191 <th class="th_details" colspan="6">Details</th> 35192 </tr> 35193 <tr class="entry_cont"> 35194 <td class="entry_details" colspan="6"> 35195 <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/> 35196A positive value is a shift from left to right in the pre-correction active array 35197coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in pre-correction 35198active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p> 35199<p>The number of shifts must match the number of timestamps in 35200<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p> 35201<p>The OIS samples are not affected by whether lens distortion correction is enabled (on 35202supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/> 35203since the scaling of OIS shifts would depend on the specific spot on the sensor the shift 35204is needed.<wbr/></p> 35205 </td> 35206 </tr> 35207 35208 35209 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35210 <!-- end of entry --> 35211 35212 35213 <tr class="entry" id="dynamic_android.statistics.oisYShifts"> 35214 <td class="entry_name 35215 " rowspan="3"> 35216 android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts 35217 </td> 35218 <td class="entry_type"> 35219 <span class="entry_type_name">float</span> 35220 <span class="entry_type_container">x</span> 35221 35222 <span class="entry_type_array"> 35223 n 35224 </span> 35225 <span class="entry_type_visibility"> [ndk_public]</span> 35226 35227 35228 35229 35230 35231 35232 </td> <!-- entry_type --> 35233 35234 <td class="entry_description"> 35235 <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p> 35236 </td> 35237 35238 <td class="entry_units"> 35239 Pixels in active array.<wbr/> 35240 </td> 35241 35242 <td class="entry_range"> 35243 </td> 35244 35245 <td class="entry_hal_version"> 35246 <p>3.<wbr/>3</p> 35247 </td> 35248 35249 <td class="entry_tags"> 35250 </td> 35251 35252 </tr> 35253 <tr class="entries_header"> 35254 <th class="th_details" colspan="6">Details</th> 35255 </tr> 35256 <tr class="entry_cont"> 35257 <td class="entry_details" colspan="6"> 35258 <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/> 35259A positive value is a shift from top to bottom in pre-correction active array coordinate 35260system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a 35261shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p> 35262<p>The number of shifts must match the number of timestamps in 35263<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p> 35264<p>The OIS samples are not affected by whether lens distortion correction is enabled (on 35265supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/> 35266since the scaling of OIS shifts would depend on the specific spot on the sensor the shift 35267is needed.<wbr/></p> 35268 </td> 35269 </tr> 35270 35271 35272 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35273 <!-- end of entry --> 35274 35275 35276 <tr class="entry" id="dynamic_android.statistics.oisSamples"> 35277 <td class="entry_name 35278 " rowspan="3"> 35279 android.<wbr/>statistics.<wbr/>ois<wbr/>Samples 35280 </td> 35281 <td class="entry_type"> 35282 <span class="entry_type_name">float</span> 35283 <span class="entry_type_container">x</span> 35284 35285 <span class="entry_type_array"> 35286 n 35287 </span> 35288 <span class="entry_type_visibility"> [java_public as oisSample]</span> 35289 35290 <span class="entry_type_synthetic">[synthetic] </span> 35291 35292 35293 35294 35295 35296 </td> <!-- entry_type --> 35297 35298 <td class="entry_description"> 35299 <p>An array of optical stabilization (OIS) position samples.<wbr/></p> 35300 </td> 35301 35302 <td class="entry_units"> 35303 </td> 35304 35305 <td class="entry_range"> 35306 </td> 35307 35308 <td class="entry_hal_version"> 35309 <p>3.<wbr/>3</p> 35310 </td> 35311 35312 <td class="entry_tags"> 35313 </td> 35314 35315 </tr> 35316 <tr class="entries_header"> 35317 <th class="th_details" colspan="6">Details</th> 35318 </tr> 35319 <tr class="entry_cont"> 35320 <td class="entry_details" colspan="6"> 35321 <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/> 35322in pixels,<wbr/> of the OIS sample.<wbr/></p> 35323<p>A positive value for a shift in x direction is a shift from left to right in the 35324pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is 35325(1000,<wbr/> 500) in pre-correction active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new 35326optical center at (1003,<wbr/> 500).<wbr/></p> 35327<p>A positive value for a shift in y direction is a shift from top to bottom in 35328pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is 35329(1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at 35330(1000,<wbr/> 505).<wbr/></p> 35331<p>The OIS samples are not affected by whether lens distortion correction is enabled (on 35332supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/> 35333since the scaling of OIS shifts would depend on the specific spot on the sensor the shift 35334is needed.<wbr/></p> 35335 </td> 35336 </tr> 35337 35338 35339 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35340 <!-- end of entry --> 35341 35342 35343 <tr class="entry" id="dynamic_android.statistics.lensIntrinsicsSamples"> 35344 <td class="entry_name 35345 " rowspan="3"> 35346 android.<wbr/>statistics.<wbr/>lens<wbr/>Intrinsics<wbr/>Samples 35347 </td> 35348 <td class="entry_type"> 35349 <span class="entry_type_name">float</span> 35350 <span class="entry_type_container">x</span> 35351 35352 <span class="entry_type_array"> 35353 n 35354 </span> 35355 <span class="entry_type_visibility"> [java_public as lensIntrinsicsSample]</span> 35356 35357 <span class="entry_type_synthetic">[synthetic] </span> 35358 35359 35360 35361 35362 35363 </td> <!-- entry_type --> 35364 35365 <td class="entry_description"> 35366 <p>An array of intra-frame lens intrinsic samples.<wbr/></p> 35367 </td> 35368 35369 <td class="entry_units"> 35370 </td> 35371 35372 <td class="entry_range"> 35373 </td> 35374 35375 <td class="entry_hal_version"> 35376 <p>3.<wbr/>10</p> 35377 </td> 35378 35379 <td class="entry_tags"> 35380 </td> 35381 35382 </tr> 35383 <tr class="entries_header"> 35384 <th class="th_details" colspan="6">Details</th> 35385 </tr> 35386 <tr class="entry_cont"> 35387 <td class="entry_details" colspan="6"> 35388 <p>Contains an array of intra-frame <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> updates.<wbr/> This must 35389not be confused or compared to <a href="#dynamic_android.statistics.oisSamples">android.<wbr/>statistics.<wbr/>ois<wbr/>Samples</a>.<wbr/> Although OIS could be the 35390main driver,<wbr/> all relevant factors such as focus distance and optical zoom must also 35391be included.<wbr/> Do note that OIS samples must not be applied on top of the lens intrinsic 35392samples.<wbr/> 35393Support for this capture result can be queried via 35394<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/> 35395If available,<wbr/> clients can expect multiple samples per capture result.<wbr/> The specific 35396amount will depend on current frame duration and sampling rate.<wbr/> Generally a sampling rate 35397greater than or equal to 200Hz is considered sufficient for high quality results.<wbr/></p> 35398 </td> 35399 </tr> 35400 35401 35402 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35403 <!-- end of entry --> 35404 35405 35406 <tr class="entry" id="dynamic_android.statistics.lensIntrinsicTimestamps"> 35407 <td class="entry_name 35408 " rowspan="3"> 35409 android.<wbr/>statistics.<wbr/>lens<wbr/>Intrinsic<wbr/>Timestamps 35410 </td> 35411 <td class="entry_type"> 35412 <span class="entry_type_name">int64</span> 35413 <span class="entry_type_container">x</span> 35414 35415 <span class="entry_type_array"> 35416 n 35417 </span> 35418 <span class="entry_type_visibility"> [ndk_public]</span> 35419 35420 35421 35422 35423 35424 35425 </td> <!-- entry_type --> 35426 35427 <td class="entry_description"> 35428 <p>An array of timestamps of lens intrinsics samples,<wbr/> in nanoseconds.<wbr/></p> 35429 </td> 35430 35431 <td class="entry_units"> 35432 nanoseconds 35433 </td> 35434 35435 <td class="entry_range"> 35436 </td> 35437 35438 <td class="entry_hal_version"> 35439 <p>3.<wbr/>10</p> 35440 </td> 35441 35442 <td class="entry_tags"> 35443 </td> 35444 35445 </tr> 35446 <tr class="entries_header"> 35447 <th class="th_details" colspan="6">Details</th> 35448 </tr> 35449 <tr class="entry_cont"> 35450 <td class="entry_details" colspan="6"> 35451 <p>The array contains the timestamps of lens intrinsics samples.<wbr/> The timestamps are in the 35452same timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p> 35453 </td> 35454 </tr> 35455 35456 35457 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35458 <!-- end of entry --> 35459 35460 35461 <tr class="entry" id="dynamic_android.statistics.lensIntrinsicSamples"> 35462 <td class="entry_name 35463 " rowspan="3"> 35464 android.<wbr/>statistics.<wbr/>lens<wbr/>Intrinsic<wbr/>Samples 35465 </td> 35466 <td class="entry_type"> 35467 <span class="entry_type_name">float</span> 35468 <span class="entry_type_container">x</span> 35469 35470 <span class="entry_type_array"> 35471 5 x n 35472 </span> 35473 <span class="entry_type_visibility"> [ndk_public]</span> 35474 35475 35476 35477 35478 35479 35480 </td> <!-- entry_type --> 35481 35482 <td class="entry_description"> 35483 <p>An array of intra-frame lens intrinsics.<wbr/></p> 35484 </td> 35485 35486 <td class="entry_units"> 35487 35488 Pixels in the android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size coordinate system.<wbr/> 35489 35490 </td> 35491 35492 <td class="entry_range"> 35493 </td> 35494 35495 <td class="entry_hal_version"> 35496 <p>3.<wbr/>10</p> 35497 </td> 35498 35499 <td class="entry_tags"> 35500 </td> 35501 35502 </tr> 35503 <tr class="entries_header"> 35504 <th class="th_details" colspan="6">Details</th> 35505 </tr> 35506 <tr class="entry_cont"> 35507 <td class="entry_details" colspan="6"> 35508 <p>The data layout and contents of individual array entries matches with 35509<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>.<wbr/></p> 35510 </td> 35511 </tr> 35512 35513 35514 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35515 <!-- end of entry --> 35516 35517 35518 35519 <!-- end of kind --> 35520 </tbody> 35521 35522 <!-- end of section --> 35523 <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr> 35524 35525 35526 <tr><td colspan="7" class="kind">controls</td></tr> 35527 35528 <thead class="entries_header"> 35529 <tr> 35530 <th class="th_name">Property Name</th> 35531 <th class="th_type">Type</th> 35532 <th class="th_description">Description</th> 35533 <th class="th_units">Units</th> 35534 <th class="th_range">Range</th> 35535 <th class="th_hal_version">Initial HIDL HAL version</th> 35536 <th class="th_tags">Tags</th> 35537 </tr> 35538 </thead> 35539 35540 <tbody> 35541 35542 35543 35544 35545 35546 35547 35548 35549 35550 35551 <tr class="entry" id="controls_android.tonemap.curveBlue"> 35552 <td class="entry_name 35553 " rowspan="3"> 35554 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 35555 </td> 35556 <td class="entry_type"> 35557 <span class="entry_type_name">float</span> 35558 <span class="entry_type_container">x</span> 35559 35560 <span class="entry_type_array"> 35561 n x 2 35562 </span> 35563 <span class="entry_type_visibility"> [ndk_public]</span> 35564 35565 35566 <span class="entry_type_hwlevel">[full] </span> 35567 35568 35569 <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> 35570 35571 35572 </td> <!-- entry_type --> 35573 35574 <td class="entry_description"> 35575 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 35576channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 35577CONTRAST_<wbr/>CURVE.<wbr/></p> 35578 </td> 35579 35580 <td class="entry_units"> 35581 </td> 35582 35583 <td class="entry_range"> 35584 </td> 35585 35586 <td class="entry_hal_version"> 35587 <p>3.<wbr/>2</p> 35588 </td> 35589 35590 <td class="entry_tags"> 35591 </td> 35592 35593 </tr> 35594 <tr class="entries_header"> 35595 <th class="th_details" colspan="6">Details</th> 35596 </tr> 35597 <tr class="entry_cont"> 35598 <td class="entry_details" colspan="6"> 35599 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 35600 </td> 35601 </tr> 35602 35603 35604 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35605 <!-- end of entry --> 35606 35607 35608 <tr class="entry" id="controls_android.tonemap.curveGreen"> 35609 <td class="entry_name 35610 " rowspan="3"> 35611 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 35612 </td> 35613 <td class="entry_type"> 35614 <span class="entry_type_name">float</span> 35615 <span class="entry_type_container">x</span> 35616 35617 <span class="entry_type_array"> 35618 n x 2 35619 </span> 35620 <span class="entry_type_visibility"> [ndk_public]</span> 35621 35622 35623 <span class="entry_type_hwlevel">[full] </span> 35624 35625 35626 <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> 35627 35628 35629 </td> <!-- entry_type --> 35630 35631 <td class="entry_description"> 35632 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 35633channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 35634CONTRAST_<wbr/>CURVE.<wbr/></p> 35635 </td> 35636 35637 <td class="entry_units"> 35638 </td> 35639 35640 <td class="entry_range"> 35641 </td> 35642 35643 <td class="entry_hal_version"> 35644 <p>3.<wbr/>2</p> 35645 </td> 35646 35647 <td class="entry_tags"> 35648 </td> 35649 35650 </tr> 35651 <tr class="entries_header"> 35652 <th class="th_details" colspan="6">Details</th> 35653 </tr> 35654 <tr class="entry_cont"> 35655 <td class="entry_details" colspan="6"> 35656 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 35657 </td> 35658 </tr> 35659 35660 35661 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35662 <!-- end of entry --> 35663 35664 35665 <tr class="entry" id="controls_android.tonemap.curveRed"> 35666 <td class="entry_name 35667 " rowspan="5"> 35668 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 35669 </td> 35670 <td class="entry_type"> 35671 <span class="entry_type_name">float</span> 35672 <span class="entry_type_container">x</span> 35673 35674 <span class="entry_type_array"> 35675 n x 2 35676 </span> 35677 <span class="entry_type_visibility"> [ndk_public]</span> 35678 35679 35680 <span class="entry_type_hwlevel">[full] </span> 35681 35682 35683 <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> 35684 35685 35686 </td> <!-- entry_type --> 35687 35688 <td class="entry_description"> 35689 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 35690channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 35691CONTRAST_<wbr/>CURVE.<wbr/></p> 35692 </td> 35693 35694 <td class="entry_units"> 35695 </td> 35696 35697 <td class="entry_range"> 35698 <p>0-1 on both input and output coordinates,<wbr/> normalized 35699as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 35700 </td> 35701 35702 <td class="entry_hal_version"> 35703 <p>3.<wbr/>2</p> 35704 </td> 35705 35706 <td class="entry_tags"> 35707 </td> 35708 35709 </tr> 35710 <tr class="entries_header"> 35711 <th class="th_details" colspan="6">Details</th> 35712 </tr> 35713 <tr class="entry_cont"> 35714 <td class="entry_details" colspan="6"> 35715 <p>Each channel's curve is defined by an array of control points:</p> 35716<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 35717 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 357182 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 35719<p>These are sorted in order of increasing <code>Pin</code>; it is 35720required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 35721define a complete mapping.<wbr/> For input values between control points,<wbr/> 35722the camera device must linearly interpolate between the control 35723points.<wbr/></p> 35724<p>Each curve can have an independent number of points,<wbr/> and the number 35725of points can be less than max (that is,<wbr/> the request doesn't have to 35726always provide a curve with number of points equivalent to 35727<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 35728<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of 35729control points.<wbr/></p> 35730<p>A few examples,<wbr/> and their corresponding graphical mappings; these 35731only specify the red channel and the precision is limited to 4 35732digits,<wbr/> for conciseness.<wbr/></p> 35733<p>Linear mapping:</p> 35734<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 ] 35735</code></pre> 35736<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 35737<p>Invert mapping:</p> 35738<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 ] 35739</code></pre> 35740<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 35741<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 35742<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 35743 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/> 35744 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/> 35745 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/> 35746 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 ] 35747</code></pre> 35748<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 35749<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 35750<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 35751 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/> 35752 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/> 35753 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/> 35754 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 ] 35755</code></pre> 35756<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 35757 </td> 35758 </tr> 35759 35760 <tr class="entries_header"> 35761 <th class="th_details" colspan="6">HAL Implementation Details</th> 35762 </tr> 35763 <tr class="entry_cont"> 35764 <td class="entry_details" colspan="6"> 35765 <p>For good quality of mapping,<wbr/> at least 128 control points are 35766preferred.<wbr/></p> 35767<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 35768control points used as are available.<wbr/></p> 35769 </td> 35770 </tr> 35771 35772 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35773 <!-- end of entry --> 35774 35775 35776 <tr class="entry" id="controls_android.tonemap.curve"> 35777 <td class="entry_name 35778 " rowspan="5"> 35779 android.<wbr/>tonemap.<wbr/>curve 35780 </td> 35781 <td class="entry_type"> 35782 <span class="entry_type_name">float</span> 35783 35784 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span> 35785 35786 <span class="entry_type_synthetic">[synthetic] </span> 35787 35788 <span class="entry_type_hwlevel">[full] </span> 35789 35790 35791 35792 35793 </td> <!-- entry_type --> 35794 35795 <td class="entry_description"> 35796 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 35797is CONTRAST_<wbr/>CURVE.<wbr/></p> 35798 </td> 35799 35800 <td class="entry_units"> 35801 </td> 35802 35803 <td class="entry_range"> 35804 </td> 35805 35806 <td class="entry_hal_version"> 35807 <p>3.<wbr/>2</p> 35808 </td> 35809 35810 <td class="entry_tags"> 35811 </td> 35812 35813 </tr> 35814 <tr class="entries_header"> 35815 <th class="th_details" colspan="6">Details</th> 35816 </tr> 35817 <tr class="entry_cont"> 35818 <td class="entry_details" colspan="6"> 35819 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 35820channels respectively.<wbr/> The following example uses the red channel as an 35821example.<wbr/> The same logic applies to green and blue channel.<wbr/> 35822Each channel's curve is defined by an array of control points:</p> 35823<pre><code>curveRed = 35824 [ 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) ] 358252 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 35826<p>These are sorted in order of increasing <code>Pin</code>; it is always 35827guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 35828define a complete mapping.<wbr/> For input values between control points,<wbr/> 35829the camera device must linearly interpolate between the control 35830points.<wbr/></p> 35831<p>Each curve can have an independent number of points,<wbr/> and the number 35832of points can be less than max (that is,<wbr/> the request doesn't have to 35833always provide a curve with number of points equivalent to 35834<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 35835<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of 35836control points.<wbr/></p> 35837<p>A few examples,<wbr/> and their corresponding graphical mappings; these 35838only specify the red channel and the precision is limited to 4 35839digits,<wbr/> for conciseness.<wbr/></p> 35840<p>Linear mapping:</p> 35841<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 35842</code></pre> 35843<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 35844<p>Invert mapping:</p> 35845<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 35846</code></pre> 35847<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 35848<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 35849<pre><code>curveRed = [ 35850 (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/> 35851 (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/> 35852 (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/> 35853 (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) ] 35854</code></pre> 35855<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 35856<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 35857<pre><code>curveRed = [ 35858 (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/> 35859 (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/> 35860 (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/> 35861 (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) ] 35862</code></pre> 35863<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 35864 </td> 35865 </tr> 35866 35867 <tr class="entries_header"> 35868 <th class="th_details" colspan="6">HAL Implementation Details</th> 35869 </tr> 35870 <tr class="entry_cont"> 35871 <td class="entry_details" colspan="6"> 35872 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 35873curveBlue entries.<wbr/></p> 35874 </td> 35875 </tr> 35876 35877 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35878 <!-- end of entry --> 35879 35880 35881 <tr class="entry" id="controls_android.tonemap.mode"> 35882 <td class="entry_name 35883 " rowspan="3"> 35884 android.<wbr/>tonemap.<wbr/>mode 35885 </td> 35886 <td class="entry_type"> 35887 <span class="entry_type_name entry_type_name_enum">byte</span> 35888 35889 <span class="entry_type_visibility"> [public]</span> 35890 35891 35892 <span class="entry_type_hwlevel">[full] </span> 35893 35894 35895 35896 <ul class="entry_type_enum"> 35897 <li> 35898 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span> 35899 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 35900the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 35901<p>All color enhancement and tonemapping must be disabled,<wbr/> except 35902for applying the tonemapping curve specified by 35903<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 35904<p>Must not slow down frame rate relative to raw 35905sensor output.<wbr/></p></span> 35906 </li> 35907 <li> 35908 <span class="entry_type_enum_name">FAST (v3.2)</span> 35909 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 35910reducing frame rate compared to raw sensor output.<wbr/></p></span> 35911 </li> 35912 <li> 35913 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 35914 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 35915the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 35916 </li> 35917 <li> 35918 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span> 35919 <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 perform 35920tonemapping.<wbr/></p> 35921<p>All color enhancement and tonemapping must be disabled,<wbr/> except 35922for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 35923<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 35924 </li> 35925 <li> 35926 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span> 35927 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 35928<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to perform tonemapping.<wbr/></p> 35929<p>All color enhancement and tonemapping must be disabled,<wbr/> except 35930for applying the tonemapping curve specified by 35931<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 35932<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 35933 </li> 35934 </ul> 35935 35936 </td> <!-- entry_type --> 35937 35938 <td class="entry_description"> 35939 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 35940 </td> 35941 35942 <td class="entry_units"> 35943 </td> 35944 35945 <td class="entry_range"> 35946 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 35947 </td> 35948 35949 <td class="entry_hal_version"> 35950 <p>3.<wbr/>2</p> 35951 </td> 35952 35953 <td class="entry_tags"> 35954 </td> 35955 35956 </tr> 35957 <tr class="entries_header"> 35958 <th class="th_details" colspan="6">Details</th> 35959 </tr> 35960 <tr class="entry_cont"> 35961 <td class="entry_details" colspan="6"> 35962 <p>When switching to an application-defined contrast curve by setting 35963<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 35964per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 35965mapping from input high-bit-depth pixel value to the output 35966low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 35967and output may change depending on the camera pipeline,<wbr/> the values 35968are specified by normalized floating-point numbers.<wbr/></p> 35969<p>More-complex color mapping operations such as 3D color look-up 35970tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 35971transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 35972CONTRAST_<wbr/>CURVE.<wbr/></p> 35973<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 35974emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 35975These values are always available,<wbr/> and as close as possible to the 35976actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 35977<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 35978provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 35979roughly the same.<wbr/></p> 35980 </td> 35981 </tr> 35982 35983 35984 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35985 <!-- end of entry --> 35986 35987 35988 <tr class="entry" id="controls_android.tonemap.gamma"> 35989 <td class="entry_name 35990 " rowspan="3"> 35991 android.<wbr/>tonemap.<wbr/>gamma 35992 </td> 35993 <td class="entry_type"> 35994 <span class="entry_type_name">float</span> 35995 35996 <span class="entry_type_visibility"> [public]</span> 35997 35998 35999 36000 36001 36002 36003 </td> <!-- entry_type --> 36004 36005 <td class="entry_description"> 36006 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 36007GAMMA_<wbr/>VALUE</p> 36008 </td> 36009 36010 <td class="entry_units"> 36011 </td> 36012 36013 <td class="entry_range"> 36014 </td> 36015 36016 <td class="entry_hal_version"> 36017 <p>3.<wbr/>2</p> 36018 </td> 36019 36020 <td class="entry_tags"> 36021 </td> 36022 36023 </tr> 36024 <tr class="entries_header"> 36025 <th class="th_details" colspan="6">Details</th> 36026 </tr> 36027 <tr class="entry_cont"> 36028 <td class="entry_details" colspan="6"> 36029 <p>The tonemap curve will be defined the following formula:</p> 36030<ul> 36031<li>OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)</li> 36032</ul> 36033<p>where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 36034pow is the power function and gamma is the gamma value specified by this 36035key.<wbr/></p> 36036<p>The same curve will be applied to all color channels.<wbr/> The camera device 36037may clip the input gamma value to its supported range.<wbr/> The actual applied 36038value will be returned in capture result.<wbr/></p> 36039<p>The valid range of gamma value varies on different devices,<wbr/> but values 36040within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 36041 </td> 36042 </tr> 36043 36044 36045 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36046 <!-- end of entry --> 36047 36048 36049 <tr class="entry" id="controls_android.tonemap.presetCurve"> 36050 <td class="entry_name 36051 " rowspan="3"> 36052 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 36053 </td> 36054 <td class="entry_type"> 36055 <span class="entry_type_name entry_type_name_enum">byte</span> 36056 36057 <span class="entry_type_visibility"> [public]</span> 36058 36059 36060 36061 36062 36063 <ul class="entry_type_enum"> 36064 <li> 36065 <span class="entry_type_enum_name">SRGB (v3.2)</span> 36066 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 36067 </li> 36068 <li> 36069 <span class="entry_type_enum_name">REC709 (v3.2)</span> 36070 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 36071 </li> 36072 </ul> 36073 36074 </td> <!-- entry_type --> 36075 36076 <td class="entry_description"> 36077 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 36078PRESET_<wbr/>CURVE</p> 36079 </td> 36080 36081 <td class="entry_units"> 36082 </td> 36083 36084 <td class="entry_range"> 36085 </td> 36086 36087 <td class="entry_hal_version"> 36088 <p>3.<wbr/>2</p> 36089 </td> 36090 36091 <td class="entry_tags"> 36092 </td> 36093 36094 </tr> 36095 <tr class="entries_header"> 36096 <th class="th_details" colspan="6">Details</th> 36097 </tr> 36098 <tr class="entry_cont"> 36099 <td class="entry_details" colspan="6"> 36100 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 36101<p>sRGB (approximated by 16 control points):</p> 36102<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 36103<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 36104<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 36105<p>Note that above figures show a 16 control points approximation of preset 36106curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 36107 </td> 36108 </tr> 36109 36110 36111 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36112 <!-- end of entry --> 36113 36114 36115 36116 <!-- end of kind --> 36117 </tbody> 36118 <tr><td colspan="7" class="kind">static</td></tr> 36119 36120 <thead class="entries_header"> 36121 <tr> 36122 <th class="th_name">Property Name</th> 36123 <th class="th_type">Type</th> 36124 <th class="th_description">Description</th> 36125 <th class="th_units">Units</th> 36126 <th class="th_range">Range</th> 36127 <th class="th_hal_version">Initial HIDL HAL version</th> 36128 <th class="th_tags">Tags</th> 36129 </tr> 36130 </thead> 36131 36132 <tbody> 36133 36134 36135 36136 36137 36138 36139 36140 36141 36142 36143 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 36144 <td class="entry_name 36145 " rowspan="5"> 36146 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 36147 </td> 36148 <td class="entry_type"> 36149 <span class="entry_type_name">int32</span> 36150 36151 <span class="entry_type_visibility"> [public]</span> 36152 36153 36154 <span class="entry_type_hwlevel">[full] </span> 36155 36156 36157 36158 36159 </td> <!-- entry_type --> 36160 36161 <td class="entry_description"> 36162 <p>Maximum number of supported points in the 36163tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 36164 </td> 36165 36166 <td class="entry_units"> 36167 </td> 36168 36169 <td class="entry_range"> 36170 </td> 36171 36172 <td class="entry_hal_version"> 36173 <p>3.<wbr/>2</p> 36174 </td> 36175 36176 <td class="entry_tags"> 36177 </td> 36178 36179 </tr> 36180 <tr class="entries_header"> 36181 <th class="th_details" colspan="6">Details</th> 36182 </tr> 36183 <tr class="entry_cont"> 36184 <td class="entry_details" colspan="6"> 36185 <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 36186less than this maximum,<wbr/> the camera device will resample the curve to its internal 36187representation,<wbr/> using linear interpolation.<wbr/></p> 36188<p>The output curves in the result metadata may have a different number 36189of points than the input curves,<wbr/> and will represent the actual 36190hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 36191 </td> 36192 </tr> 36193 36194 <tr class="entries_header"> 36195 <th class="th_details" colspan="6">HAL Implementation Details</th> 36196 </tr> 36197 <tr class="entry_cont"> 36198 <td class="entry_details" colspan="6"> 36199 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 36200 </td> 36201 </tr> 36202 36203 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36204 <!-- end of entry --> 36205 36206 36207 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 36208 <td class="entry_name 36209 " rowspan="5"> 36210 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 36211 </td> 36212 <td class="entry_type"> 36213 <span class="entry_type_name">byte</span> 36214 <span class="entry_type_container">x</span> 36215 36216 <span class="entry_type_array"> 36217 n 36218 </span> 36219 <span class="entry_type_visibility"> [public as enumList]</span> 36220 36221 36222 <span class="entry_type_hwlevel">[full] </span> 36223 36224 36225 <div class="entry_type_notes">list of enums</div> 36226 36227 36228 </td> <!-- entry_type --> 36229 36230 <td class="entry_description"> 36231 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera 36232device.<wbr/></p> 36233 </td> 36234 36235 <td class="entry_units"> 36236 </td> 36237 36238 <td class="entry_range"> 36239 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p> 36240 </td> 36241 36242 <td class="entry_hal_version"> 36243 <p>3.<wbr/>2</p> 36244 </td> 36245 36246 <td class="entry_tags"> 36247 </td> 36248 36249 </tr> 36250 <tr class="entries_header"> 36251 <th class="th_details" colspan="6">Details</th> 36252 </tr> 36253 <tr class="entry_cont"> 36254 <td class="entry_details" colspan="6"> 36255 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain 36256at least one of below mode combinations:</p> 36257<ul> 36258<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 36259<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 36260</ul> 36261<p>This includes all FULL level devices.<wbr/></p> 36262 </td> 36263 </tr> 36264 36265 <tr class="entries_header"> 36266 <th class="th_details" colspan="6">HAL Implementation Details</th> 36267 </tr> 36268 <tr class="entry_cont"> 36269 <td class="entry_details" colspan="6"> 36270 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available 36271on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 36272That is,<wbr/> if the highest quality implementation on the camera device does not slow down 36273capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 36274 </td> 36275 </tr> 36276 36277 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36278 <!-- end of entry --> 36279 36280 36281 36282 <!-- end of kind --> 36283 </tbody> 36284 <tr><td colspan="7" class="kind">dynamic</td></tr> 36285 36286 <thead class="entries_header"> 36287 <tr> 36288 <th class="th_name">Property Name</th> 36289 <th class="th_type">Type</th> 36290 <th class="th_description">Description</th> 36291 <th class="th_units">Units</th> 36292 <th class="th_range">Range</th> 36293 <th class="th_hal_version">Initial HIDL HAL version</th> 36294 <th class="th_tags">Tags</th> 36295 </tr> 36296 </thead> 36297 36298 <tbody> 36299 36300 36301 36302 36303 36304 36305 36306 36307 36308 36309 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 36310 <td class="entry_name 36311 " rowspan="3"> 36312 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 36313 </td> 36314 <td class="entry_type"> 36315 <span class="entry_type_name">float</span> 36316 <span class="entry_type_container">x</span> 36317 36318 <span class="entry_type_array"> 36319 n x 2 36320 </span> 36321 <span class="entry_type_visibility"> [ndk_public]</span> 36322 36323 36324 <span class="entry_type_hwlevel">[full] </span> 36325 36326 36327 <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> 36328 36329 36330 </td> <!-- entry_type --> 36331 36332 <td class="entry_description"> 36333 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 36334channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 36335CONTRAST_<wbr/>CURVE.<wbr/></p> 36336 </td> 36337 36338 <td class="entry_units"> 36339 </td> 36340 36341 <td class="entry_range"> 36342 </td> 36343 36344 <td class="entry_hal_version"> 36345 <p>3.<wbr/>2</p> 36346 </td> 36347 36348 <td class="entry_tags"> 36349 </td> 36350 36351 </tr> 36352 <tr class="entries_header"> 36353 <th class="th_details" colspan="6">Details</th> 36354 </tr> 36355 <tr class="entry_cont"> 36356 <td class="entry_details" colspan="6"> 36357 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 36358 </td> 36359 </tr> 36360 36361 36362 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36363 <!-- end of entry --> 36364 36365 36366 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 36367 <td class="entry_name 36368 " rowspan="3"> 36369 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 36370 </td> 36371 <td class="entry_type"> 36372 <span class="entry_type_name">float</span> 36373 <span class="entry_type_container">x</span> 36374 36375 <span class="entry_type_array"> 36376 n x 2 36377 </span> 36378 <span class="entry_type_visibility"> [ndk_public]</span> 36379 36380 36381 <span class="entry_type_hwlevel">[full] </span> 36382 36383 36384 <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> 36385 36386 36387 </td> <!-- entry_type --> 36388 36389 <td class="entry_description"> 36390 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 36391channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 36392CONTRAST_<wbr/>CURVE.<wbr/></p> 36393 </td> 36394 36395 <td class="entry_units"> 36396 </td> 36397 36398 <td class="entry_range"> 36399 </td> 36400 36401 <td class="entry_hal_version"> 36402 <p>3.<wbr/>2</p> 36403 </td> 36404 36405 <td class="entry_tags"> 36406 </td> 36407 36408 </tr> 36409 <tr class="entries_header"> 36410 <th class="th_details" colspan="6">Details</th> 36411 </tr> 36412 <tr class="entry_cont"> 36413 <td class="entry_details" colspan="6"> 36414 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 36415 </td> 36416 </tr> 36417 36418 36419 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36420 <!-- end of entry --> 36421 36422 36423 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 36424 <td class="entry_name 36425 " rowspan="5"> 36426 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 36427 </td> 36428 <td class="entry_type"> 36429 <span class="entry_type_name">float</span> 36430 <span class="entry_type_container">x</span> 36431 36432 <span class="entry_type_array"> 36433 n x 2 36434 </span> 36435 <span class="entry_type_visibility"> [ndk_public]</span> 36436 36437 36438 <span class="entry_type_hwlevel">[full] </span> 36439 36440 36441 <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> 36442 36443 36444 </td> <!-- entry_type --> 36445 36446 <td class="entry_description"> 36447 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 36448channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 36449CONTRAST_<wbr/>CURVE.<wbr/></p> 36450 </td> 36451 36452 <td class="entry_units"> 36453 </td> 36454 36455 <td class="entry_range"> 36456 <p>0-1 on both input and output coordinates,<wbr/> normalized 36457as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 36458 </td> 36459 36460 <td class="entry_hal_version"> 36461 <p>3.<wbr/>2</p> 36462 </td> 36463 36464 <td class="entry_tags"> 36465 </td> 36466 36467 </tr> 36468 <tr class="entries_header"> 36469 <th class="th_details" colspan="6">Details</th> 36470 </tr> 36471 <tr class="entry_cont"> 36472 <td class="entry_details" colspan="6"> 36473 <p>Each channel's curve is defined by an array of control points:</p> 36474<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 36475 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 364762 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 36477<p>These are sorted in order of increasing <code>Pin</code>; it is 36478required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 36479define a complete mapping.<wbr/> For input values between control points,<wbr/> 36480the camera device must linearly interpolate between the control 36481points.<wbr/></p> 36482<p>Each curve can have an independent number of points,<wbr/> and the number 36483of points can be less than max (that is,<wbr/> the request doesn't have to 36484always provide a curve with number of points equivalent to 36485<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 36486<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of 36487control points.<wbr/></p> 36488<p>A few examples,<wbr/> and their corresponding graphical mappings; these 36489only specify the red channel and the precision is limited to 4 36490digits,<wbr/> for conciseness.<wbr/></p> 36491<p>Linear mapping:</p> 36492<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 ] 36493</code></pre> 36494<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 36495<p>Invert mapping:</p> 36496<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 ] 36497</code></pre> 36498<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 36499<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 36500<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 36501 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/> 36502 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/> 36503 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/> 36504 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 ] 36505</code></pre> 36506<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 36507<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 36508<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 36509 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/> 36510 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/> 36511 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/> 36512 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 ] 36513</code></pre> 36514<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 36515 </td> 36516 </tr> 36517 36518 <tr class="entries_header"> 36519 <th class="th_details" colspan="6">HAL Implementation Details</th> 36520 </tr> 36521 <tr class="entry_cont"> 36522 <td class="entry_details" colspan="6"> 36523 <p>For good quality of mapping,<wbr/> at least 128 control points are 36524preferred.<wbr/></p> 36525<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 36526control points used as are available.<wbr/></p> 36527 </td> 36528 </tr> 36529 36530 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36531 <!-- end of entry --> 36532 36533 36534 <tr class="entry" id="dynamic_android.tonemap.curve"> 36535 <td class="entry_name 36536 " rowspan="5"> 36537 android.<wbr/>tonemap.<wbr/>curve 36538 </td> 36539 <td class="entry_type"> 36540 <span class="entry_type_name">float</span> 36541 36542 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span> 36543 36544 <span class="entry_type_synthetic">[synthetic] </span> 36545 36546 <span class="entry_type_hwlevel">[full] </span> 36547 36548 36549 36550 36551 </td> <!-- entry_type --> 36552 36553 <td class="entry_description"> 36554 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 36555is CONTRAST_<wbr/>CURVE.<wbr/></p> 36556 </td> 36557 36558 <td class="entry_units"> 36559 </td> 36560 36561 <td class="entry_range"> 36562 </td> 36563 36564 <td class="entry_hal_version"> 36565 <p>3.<wbr/>2</p> 36566 </td> 36567 36568 <td class="entry_tags"> 36569 </td> 36570 36571 </tr> 36572 <tr class="entries_header"> 36573 <th class="th_details" colspan="6">Details</th> 36574 </tr> 36575 <tr class="entry_cont"> 36576 <td class="entry_details" colspan="6"> 36577 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 36578channels respectively.<wbr/> The following example uses the red channel as an 36579example.<wbr/> The same logic applies to green and blue channel.<wbr/> 36580Each channel's curve is defined by an array of control points:</p> 36581<pre><code>curveRed = 36582 [ 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) ] 365832 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 36584<p>These are sorted in order of increasing <code>Pin</code>; it is always 36585guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 36586define a complete mapping.<wbr/> For input values between control points,<wbr/> 36587the camera device must linearly interpolate between the control 36588points.<wbr/></p> 36589<p>Each curve can have an independent number of points,<wbr/> and the number 36590of points can be less than max (that is,<wbr/> the request doesn't have to 36591always provide a curve with number of points equivalent to 36592<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 36593<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of 36594control points.<wbr/></p> 36595<p>A few examples,<wbr/> and their corresponding graphical mappings; these 36596only specify the red channel and the precision is limited to 4 36597digits,<wbr/> for conciseness.<wbr/></p> 36598<p>Linear mapping:</p> 36599<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 36600</code></pre> 36601<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 36602<p>Invert mapping:</p> 36603<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 36604</code></pre> 36605<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 36606<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 36607<pre><code>curveRed = [ 36608 (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/> 36609 (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/> 36610 (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/> 36611 (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) ] 36612</code></pre> 36613<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 36614<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 36615<pre><code>curveRed = [ 36616 (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/> 36617 (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/> 36618 (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/> 36619 (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) ] 36620</code></pre> 36621<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 36622 </td> 36623 </tr> 36624 36625 <tr class="entries_header"> 36626 <th class="th_details" colspan="6">HAL Implementation Details</th> 36627 </tr> 36628 <tr class="entry_cont"> 36629 <td class="entry_details" colspan="6"> 36630 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 36631curveBlue entries.<wbr/></p> 36632 </td> 36633 </tr> 36634 36635 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36636 <!-- end of entry --> 36637 36638 36639 <tr class="entry" id="dynamic_android.tonemap.mode"> 36640 <td class="entry_name 36641 " rowspan="3"> 36642 android.<wbr/>tonemap.<wbr/>mode 36643 </td> 36644 <td class="entry_type"> 36645 <span class="entry_type_name entry_type_name_enum">byte</span> 36646 36647 <span class="entry_type_visibility"> [public]</span> 36648 36649 36650 <span class="entry_type_hwlevel">[full] </span> 36651 36652 36653 36654 <ul class="entry_type_enum"> 36655 <li> 36656 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span> 36657 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 36658the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 36659<p>All color enhancement and tonemapping must be disabled,<wbr/> except 36660for applying the tonemapping curve specified by 36661<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 36662<p>Must not slow down frame rate relative to raw 36663sensor output.<wbr/></p></span> 36664 </li> 36665 <li> 36666 <span class="entry_type_enum_name">FAST (v3.2)</span> 36667 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 36668reducing frame rate compared to raw sensor output.<wbr/></p></span> 36669 </li> 36670 <li> 36671 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 36672 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 36673the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 36674 </li> 36675 <li> 36676 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span> 36677 <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 perform 36678tonemapping.<wbr/></p> 36679<p>All color enhancement and tonemapping must be disabled,<wbr/> except 36680for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 36681<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 36682 </li> 36683 <li> 36684 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span> 36685 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 36686<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to perform tonemapping.<wbr/></p> 36687<p>All color enhancement and tonemapping must be disabled,<wbr/> except 36688for applying the tonemapping curve specified by 36689<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 36690<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 36691 </li> 36692 </ul> 36693 36694 </td> <!-- entry_type --> 36695 36696 <td class="entry_description"> 36697 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 36698 </td> 36699 36700 <td class="entry_units"> 36701 </td> 36702 36703 <td class="entry_range"> 36704 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 36705 </td> 36706 36707 <td class="entry_hal_version"> 36708 <p>3.<wbr/>2</p> 36709 </td> 36710 36711 <td class="entry_tags"> 36712 </td> 36713 36714 </tr> 36715 <tr class="entries_header"> 36716 <th class="th_details" colspan="6">Details</th> 36717 </tr> 36718 <tr class="entry_cont"> 36719 <td class="entry_details" colspan="6"> 36720 <p>When switching to an application-defined contrast curve by setting 36721<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 36722per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 36723mapping from input high-bit-depth pixel value to the output 36724low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 36725and output may change depending on the camera pipeline,<wbr/> the values 36726are specified by normalized floating-point numbers.<wbr/></p> 36727<p>More-complex color mapping operations such as 3D color look-up 36728tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 36729transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 36730CONTRAST_<wbr/>CURVE.<wbr/></p> 36731<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 36732emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 36733These values are always available,<wbr/> and as close as possible to the 36734actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 36735<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 36736provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 36737roughly the same.<wbr/></p> 36738 </td> 36739 </tr> 36740 36741 36742 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36743 <!-- end of entry --> 36744 36745 36746 <tr class="entry" id="dynamic_android.tonemap.gamma"> 36747 <td class="entry_name 36748 " rowspan="3"> 36749 android.<wbr/>tonemap.<wbr/>gamma 36750 </td> 36751 <td class="entry_type"> 36752 <span class="entry_type_name">float</span> 36753 36754 <span class="entry_type_visibility"> [public]</span> 36755 36756 36757 36758 36759 36760 36761 </td> <!-- entry_type --> 36762 36763 <td class="entry_description"> 36764 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 36765GAMMA_<wbr/>VALUE</p> 36766 </td> 36767 36768 <td class="entry_units"> 36769 </td> 36770 36771 <td class="entry_range"> 36772 </td> 36773 36774 <td class="entry_hal_version"> 36775 <p>3.<wbr/>2</p> 36776 </td> 36777 36778 <td class="entry_tags"> 36779 </td> 36780 36781 </tr> 36782 <tr class="entries_header"> 36783 <th class="th_details" colspan="6">Details</th> 36784 </tr> 36785 <tr class="entry_cont"> 36786 <td class="entry_details" colspan="6"> 36787 <p>The tonemap curve will be defined the following formula:</p> 36788<ul> 36789<li>OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)</li> 36790</ul> 36791<p>where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 36792pow is the power function and gamma is the gamma value specified by this 36793key.<wbr/></p> 36794<p>The same curve will be applied to all color channels.<wbr/> The camera device 36795may clip the input gamma value to its supported range.<wbr/> The actual applied 36796value will be returned in capture result.<wbr/></p> 36797<p>The valid range of gamma value varies on different devices,<wbr/> but values 36798within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 36799 </td> 36800 </tr> 36801 36802 36803 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36804 <!-- end of entry --> 36805 36806 36807 <tr class="entry" id="dynamic_android.tonemap.presetCurve"> 36808 <td class="entry_name 36809 " rowspan="3"> 36810 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 36811 </td> 36812 <td class="entry_type"> 36813 <span class="entry_type_name entry_type_name_enum">byte</span> 36814 36815 <span class="entry_type_visibility"> [public]</span> 36816 36817 36818 36819 36820 36821 <ul class="entry_type_enum"> 36822 <li> 36823 <span class="entry_type_enum_name">SRGB (v3.2)</span> 36824 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 36825 </li> 36826 <li> 36827 <span class="entry_type_enum_name">REC709 (v3.2)</span> 36828 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 36829 </li> 36830 </ul> 36831 36832 </td> <!-- entry_type --> 36833 36834 <td class="entry_description"> 36835 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 36836PRESET_<wbr/>CURVE</p> 36837 </td> 36838 36839 <td class="entry_units"> 36840 </td> 36841 36842 <td class="entry_range"> 36843 </td> 36844 36845 <td class="entry_hal_version"> 36846 <p>3.<wbr/>2</p> 36847 </td> 36848 36849 <td class="entry_tags"> 36850 </td> 36851 36852 </tr> 36853 <tr class="entries_header"> 36854 <th class="th_details" colspan="6">Details</th> 36855 </tr> 36856 <tr class="entry_cont"> 36857 <td class="entry_details" colspan="6"> 36858 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 36859<p>sRGB (approximated by 16 control points):</p> 36860<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 36861<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 36862<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 36863<p>Note that above figures show a 16 control points approximation of preset 36864curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 36865 </td> 36866 </tr> 36867 36868 36869 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36870 <!-- end of entry --> 36871 36872 36873 36874 <!-- end of kind --> 36875 </tbody> 36876 36877 <!-- end of section --> 36878 <tr><td colspan="7" id="section_led" class="section">led</td></tr> 36879 36880 36881 <tr><td colspan="7" class="kind">controls</td></tr> 36882 36883 <thead class="entries_header"> 36884 <tr> 36885 <th class="th_name">Property Name</th> 36886 <th class="th_type">Type</th> 36887 <th class="th_description">Description</th> 36888 <th class="th_units">Units</th> 36889 <th class="th_range">Range</th> 36890 <th class="th_hal_version">Initial HIDL HAL version</th> 36891 <th class="th_tags">Tags</th> 36892 </tr> 36893 </thead> 36894 36895 <tbody> 36896 36897 36898 36899 36900 36901 36902 36903 36904 36905 36906 <tr class="entry" id="controls_android.led.transmit"> 36907 <td class="entry_name 36908 " rowspan="1"> 36909 android.<wbr/>led.<wbr/>transmit 36910 </td> 36911 <td class="entry_type"> 36912 <span class="entry_type_name entry_type_name_enum">byte</span> 36913 36914 <span class="entry_type_visibility"> [hidden as boolean]</span> 36915 36916 36917 36918 36919 36920 <ul class="entry_type_enum"> 36921 <li> 36922 <span class="entry_type_enum_name">OFF (v3.2)</span> 36923 </li> 36924 <li> 36925 <span class="entry_type_enum_name">ON (v3.2)</span> 36926 </li> 36927 </ul> 36928 36929 </td> <!-- entry_type --> 36930 36931 <td class="entry_description"> 36932 <p>This LED is nominally used to indicate to the user 36933that the camera is powered on and may be streaming images back to the 36934Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 36935disable this when video is processed locally and not transmitted to 36936any untrusted applications.<wbr/></p> 36937<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 36938transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 36939data is stored locally on the device.<wbr/></p> 36940<p>The LED <em>may</em> be off if a trusted application is using the data that 36941doesn't violate the above rules.<wbr/></p> 36942 </td> 36943 36944 <td class="entry_units"> 36945 </td> 36946 36947 <td class="entry_range"> 36948 </td> 36949 36950 <td class="entry_hal_version"> 36951 <p>3.<wbr/>2</p> 36952 </td> 36953 36954 <td class="entry_tags"> 36955 </td> 36956 36957 </tr> 36958 36959 36960 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36961 <!-- end of entry --> 36962 36963 36964 36965 <!-- end of kind --> 36966 </tbody> 36967 <tr><td colspan="7" class="kind">dynamic</td></tr> 36968 36969 <thead class="entries_header"> 36970 <tr> 36971 <th class="th_name">Property Name</th> 36972 <th class="th_type">Type</th> 36973 <th class="th_description">Description</th> 36974 <th class="th_units">Units</th> 36975 <th class="th_range">Range</th> 36976 <th class="th_hal_version">Initial HIDL HAL version</th> 36977 <th class="th_tags">Tags</th> 36978 </tr> 36979 </thead> 36980 36981 <tbody> 36982 36983 36984 36985 36986 36987 36988 36989 36990 36991 36992 <tr class="entry" id="dynamic_android.led.transmit"> 36993 <td class="entry_name 36994 " rowspan="1"> 36995 android.<wbr/>led.<wbr/>transmit 36996 </td> 36997 <td class="entry_type"> 36998 <span class="entry_type_name entry_type_name_enum">byte</span> 36999 37000 <span class="entry_type_visibility"> [hidden as boolean]</span> 37001 37002 37003 37004 37005 37006 <ul class="entry_type_enum"> 37007 <li> 37008 <span class="entry_type_enum_name">OFF (v3.2)</span> 37009 </li> 37010 <li> 37011 <span class="entry_type_enum_name">ON (v3.2)</span> 37012 </li> 37013 </ul> 37014 37015 </td> <!-- entry_type --> 37016 37017 <td class="entry_description"> 37018 <p>This LED is nominally used to indicate to the user 37019that the camera is powered on and may be streaming images back to the 37020Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 37021disable this when video is processed locally and not transmitted to 37022any untrusted applications.<wbr/></p> 37023<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 37024transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 37025data is stored locally on the device.<wbr/></p> 37026<p>The LED <em>may</em> be off if a trusted application is using the data that 37027doesn't violate the above rules.<wbr/></p> 37028 </td> 37029 37030 <td class="entry_units"> 37031 </td> 37032 37033 <td class="entry_range"> 37034 </td> 37035 37036 <td class="entry_hal_version"> 37037 <p>3.<wbr/>2</p> 37038 </td> 37039 37040 <td class="entry_tags"> 37041 </td> 37042 37043 </tr> 37044 37045 37046 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 37047 <!-- end of entry --> 37048 37049 37050 37051 <!-- end of kind --> 37052 </tbody> 37053 <tr><td colspan="7" class="kind">static</td></tr> 37054 37055 <thead class="entries_header"> 37056 <tr> 37057 <th class="th_name">Property Name</th> 37058 <th class="th_type">Type</th> 37059 <th class="th_description">Description</th> 37060 <th class="th_units">Units</th> 37061 <th class="th_range">Range</th> 37062 <th class="th_hal_version">Initial HIDL HAL version</th> 37063 <th class="th_tags">Tags</th> 37064 </tr> 37065 </thead> 37066 37067 <tbody> 37068 37069 37070 37071 37072 37073 37074 37075 37076 37077 37078 <tr class="entry" id="static_android.led.availableLeds"> 37079 <td class="entry_name 37080 " rowspan="1"> 37081 android.<wbr/>led.<wbr/>available<wbr/>Leds 37082 </td> 37083 <td class="entry_type"> 37084 <span class="entry_type_name entry_type_name_enum">byte</span> 37085 <span class="entry_type_container">x</span> 37086 37087 <span class="entry_type_array"> 37088 n 37089 </span> 37090 <span class="entry_type_visibility"> [hidden]</span> 37091 37092 37093 37094 37095 37096 <ul class="entry_type_enum"> 37097 <li> 37098 <span class="entry_type_enum_name">TRANSMIT (v3.2)</span> 37099 <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> 37100 </li> 37101 </ul> 37102 37103 </td> <!-- entry_type --> 37104 37105 <td class="entry_description"> 37106 <p>A list of camera LEDs that are available on this system.<wbr/></p> 37107 </td> 37108 37109 <td class="entry_units"> 37110 </td> 37111 37112 <td class="entry_range"> 37113 </td> 37114 37115 <td class="entry_hal_version"> 37116 <p>3.<wbr/>2</p> 37117 </td> 37118 37119 <td class="entry_tags"> 37120 </td> 37121 37122 </tr> 37123 37124 37125 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 37126 <!-- end of entry --> 37127 37128 37129 37130 <!-- end of kind --> 37131 </tbody> 37132 37133 <!-- end of section --> 37134 <tr><td colspan="7" id="section_info" class="section">info</td></tr> 37135 37136 37137 <tr><td colspan="7" class="kind">static</td></tr> 37138 37139 <thead class="entries_header"> 37140 <tr> 37141 <th class="th_name">Property Name</th> 37142 <th class="th_type">Type</th> 37143 <th class="th_description">Description</th> 37144 <th class="th_units">Units</th> 37145 <th class="th_range">Range</th> 37146 <th class="th_hal_version">Initial HIDL HAL version</th> 37147 <th class="th_tags">Tags</th> 37148 </tr> 37149 </thead> 37150 37151 <tbody> 37152 37153 37154 37155 37156 37157 37158 37159 37160 37161 37162 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 37163 <td class="entry_name 37164 " rowspan="5"> 37165 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 37166 </td> 37167 <td class="entry_type"> 37168 <span class="entry_type_name entry_type_name_enum">byte</span> 37169 37170 <span class="entry_type_visibility"> [public]</span> 37171 37172 37173 <span class="entry_type_hwlevel">[legacy] </span> 37174 37175 37176 37177 <ul class="entry_type_enum"> 37178 <li> 37179 <span class="entry_type_enum_name">LIMITED (v3.2)</span> 37180 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or 37181better.<wbr/></p> 37182<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> 37183<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#limited-level-additional-guaranteed-configurations">tables</a> 37184in the documentation are guaranteed to be supported.<wbr/></p> 37185<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic 37186support for color image capture.<wbr/> The only exception is that the device may 37187alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth 37188measurements and not color images.<wbr/></p> 37189<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> 37190to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before 37191capturing a high-quality still image.<wbr/></p> 37192<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only 37193required to support full-automatic operation and post-processing (<code>OFF</code> is not 37194supported 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 37195<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p> 37196<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and 37197can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span> 37198 </li> 37199 <li> 37200 <span class="entry_type_enum_name">FULL (v3.2)</span> 37201 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p> 37202<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> 37203<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#full-level-additional-guaranteed-configurations">tables</a> 37204in the documentation are guaranteed to be supported.<wbr/></p> 37205<p>A <code>FULL</code> device will support below capabilities:</p> 37206<ul> 37207<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 37208 <code>BURST_<wbr/>CAPTURE</code>)</li> 37209<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> 37210<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> 37211<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 37212 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li> 37213<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> 37214<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> 37215</ul> 37216<p>Note: 37217Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region 37218(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level 3721923,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span> 37220 </li> 37221 <li> 37222 <span class="entry_type_enum_name">LEGACY (v3.2)</span> 37223 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p> 37224<p>Only the stream configurations listed in the <code>LEGACY</code> 37225<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-guaranteed-configurations">table</a> 37226in the documentation are supported.<wbr/></p> 37227<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual 37228post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/> 37229No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a 37230<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 37231<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> 37232devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated 37233as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may 37234fire the flash for flash power metering during precapture,<wbr/> and then fire the flash 37235for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to 37236enable the flash.<wbr/></p> 37237<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> 37238 </li> 37239 <li> 37240 <span class="entry_type_enum_name">3 (v3.2)</span> 37241 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to 37242FULL-level capabilities.<wbr/></p> 37243<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 37244<code>LIMITED</code> 37245<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#level-3-additional-guaranteed-configurations">tables</a> 37246in the documentation are guaranteed to be supported.<wbr/></p> 37247<p>The following additional capabilities are guaranteed to be supported:</p> 37248<ul> 37249<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 37250 <code>YUV_<wbr/>REPROCESSING</code>)</li> 37251<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 37252 <code>RAW</code>)</li> 37253</ul></span> 37254 </li> 37255 <li> 37256 <span class="entry_type_enum_name">EXTERNAL (v3.3)</span> 37257 <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p> 37258<p>The device has capability identical to a LIMITED level device,<wbr/> with the following 37259exceptions:</p> 37260<ul> 37261<li>The device may not report lens/<wbr/>sensor related information such as<ul> 37262<li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li> 37263<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li> 37264<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li> 37265<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li> 37266<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li> 37267<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li> 37268<li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li> 37269</ul> 37270</li> 37271<li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li> 37272<li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends 37273 on the external camera being used.<wbr/></li> 37274</ul></span> 37275 </li> 37276 </ul> 37277 37278 </td> <!-- entry_type --> 37279 37280 <td class="entry_description"> 37281 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 37282 </td> 37283 37284 <td class="entry_units"> 37285 </td> 37286 37287 <td class="entry_range"> 37288 </td> 37289 37290 <td class="entry_hal_version"> 37291 <p>3.<wbr/>2</p> 37292 </td> 37293 37294 <td class="entry_tags"> 37295 </td> 37296 37297 </tr> 37298 <tr class="entries_header"> 37299 <th class="th_details" colspan="6">Details</th> 37300 </tr> 37301 <tr class="entry_cont"> 37302 <td class="entry_details" colspan="6"> 37303 <p>The supported hardware level is a high-level description of the camera device's 37304capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional 37305features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/> 37306The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p> 37307<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing 37308numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/> 37309the following code snippet can be used:</p> 37310<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/> 37311boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) { 37312 final int[] sortedHwLevels = { 37313 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY,<wbr/> 37314 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>EXTERNAL,<wbr/> 37315 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LIMITED,<wbr/> 37316 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>FULL,<wbr/> 37317 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>3 37318 }; 37319 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL); 37320 if (requiredLevel == deviceLevel) { 37321 return true; 37322 } 37323 37324 for (int sortedlevel : sortedHwLevels) { 37325 if (sortedlevel == requiredLevel) { 37326 return true; 37327 } else if (sortedlevel == deviceLevel) { 37328 return false; 37329 } 37330 } 37331 return false; //<wbr/> Should never reach here 37332} 37333</code></pre> 37334<p>At a high level,<wbr/> the levels are:</p> 37335<ul> 37336<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older 37337 Android devices,<wbr/> and have very limited capabilities.<wbr/></li> 37338<li><code>LIMITED</code> devices represent the 37339 baseline feature set,<wbr/> and may also include additional capabilities that are 37340 subsets of <code>FULL</code>.<wbr/></li> 37341<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and 37342 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li> 37343<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along 37344 with additional output stream configurations.<wbr/></li> 37345<li><code>EXTERNAL</code> devices are similar to <code>LIMITED</code> devices with exceptions like some sensor or 37346 lens information not reported or less stable framerates.<wbr/></li> 37347</ul> 37348<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The 37349<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a 37350finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or 37351ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 37352<p>Some features are not part of any particular hardware level or capability and must be 37353queried separately.<wbr/> These include:</p> 37354<ul> 37355<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li> 37356<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> 37357<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> 37358<li>Optical or electrical image stabilization 37359 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/> 37360 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li> 37361</ul> 37362 </td> 37363 </tr> 37364 37365 <tr class="entries_header"> 37366 <th class="th_details" colspan="6">HAL Implementation Details</th> 37367 </tr> 37368 <tr class="entry_cont"> 37369 <td class="entry_details" colspan="6"> 37370 <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/> 37371FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p> 37372<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited 37373mode has hardware requirements roughly in line with those for a camera HAL device v1 37374implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict 37375superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p> 37376<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 37377<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in 37378the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is 37379implemented by the camera framework code.<wbr/></p> 37380<p>EXTERNAL level devices have lower performance bar in CTS since the performance might depend 37381on the external camera being used and is not fully controlled by the device manufacturer.<wbr/> 37382The ITS test suite is exempted for the same reason.<wbr/></p> 37383 </td> 37384 </tr> 37385 37386 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 37387 <!-- end of entry --> 37388 37389 37390 <tr class="entry" id="static_android.info.version"> 37391 <td class="entry_name 37392 " rowspan="5"> 37393 android.<wbr/>info.<wbr/>version 37394 </td> 37395 <td class="entry_type"> 37396 <span class="entry_type_name">byte</span> 37397 37398 <span class="entry_type_visibility"> [public as string]</span> 37399 37400 37401 37402 37403 37404 37405 </td> <!-- entry_type --> 37406 37407 <td class="entry_description"> 37408 <p>A short string for manufacturer version information about the camera device,<wbr/> such as 37409ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p> 37410 </td> 37411 37412 <td class="entry_units"> 37413 </td> 37414 37415 <td class="entry_range"> 37416 </td> 37417 37418 <td class="entry_hal_version"> 37419 <p>3.<wbr/>3</p> 37420 </td> 37421 37422 <td class="entry_tags"> 37423 </td> 37424 37425 </tr> 37426 <tr class="entries_header"> 37427 <th class="th_details" colspan="6">Details</th> 37428 </tr> 37429 <tr class="entry_cont"> 37430 <td class="entry_details" colspan="6"> 37431 <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> 37432in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the 37433device.<wbr/></p> 37434 </td> 37435 </tr> 37436 37437 <tr class="entries_header"> 37438 <th class="th_details" colspan="6">HAL Implementation Details</th> 37439 </tr> 37440 <tr class="entry_cont"> 37441 <td class="entry_details" colspan="6"> 37442 <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and 37443whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/> 37444It must not exceed 256 characters.<wbr/></p> 37445 </td> 37446 </tr> 37447 37448 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 37449 <!-- end of entry --> 37450 37451 37452 <tr class="entry" id="static_android.info.supportedBufferManagementVersion"> 37453 <td class="entry_name 37454 " rowspan="3"> 37455 android.<wbr/>info.<wbr/>supported<wbr/>Buffer<wbr/>Management<wbr/>Version 37456 </td> 37457 <td class="entry_type"> 37458 <span class="entry_type_name entry_type_name_enum">byte</span> 37459 37460 <span class="entry_type_visibility"> [system]</span> 37461 37462 37463 37464 37465 37466 <ul class="entry_type_enum"> 37467 <li> 37468 <span class="entry_type_enum_name">HIDL_DEVICE_3_5 (v3.4)</span> 37469 <span class="entry_type_enum_notes"><p>This camera device supports and opts in to the buffer management APIs provided by 37470HIDL ICameraDevice version 3.<wbr/>5.<wbr/></p></span> 37471 </li> 37472 <li> 37473 <span class="entry_type_enum_name">SESSION_CONFIGURABLE (v3.10)</span> 37474 <span class="entry_type_enum_notes"><p>This camera device supports the buffer management APIs provided by AIDL ICameraDevice 37475version 1.<wbr/> It also supports the ICameraDeviceSession.<wbr/>configureStreamsV2 call to 37476inform the camera framework whether HAL buffer manager must be used for the 37477particular session configured.<wbr/></p></span> 37478 </li> 37479 </ul> 37480 37481 </td> <!-- entry_type --> 37482 37483 <td class="entry_description"> 37484 <p>The version of buffer management API this camera device supports and opts into.<wbr/></p> 37485 </td> 37486 37487 <td class="entry_units"> 37488 </td> 37489 37490 <td class="entry_range"> 37491 </td> 37492 37493 <td class="entry_hal_version"> 37494 <p>3.<wbr/>4</p> 37495 </td> 37496 37497 <td class="entry_tags"> 37498 </td> 37499 37500 </tr> 37501 <tr class="entries_header"> 37502 <th class="th_details" colspan="6">Details</th> 37503 </tr> 37504 <tr class="entry_cont"> 37505 <td class="entry_details" colspan="6"> 37506 <p>When this key is not present,<wbr/> camera framework will interact with this camera device 37507without any buffer management HAL API.<wbr/> When this key is present and camera framework 37508supports the buffer management API version,<wbr/> camera framework will interact with camera 37509HAL using such version of buffer management API.<wbr/></p> 37510 </td> 37511 </tr> 37512 37513 37514 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 37515 <!-- end of entry --> 37516 37517 37518 <tr class="entry" id="static_android.info.deviceStateSensorOrientationMap"> 37519 <td class="entry_name 37520 " rowspan="3"> 37521 android.<wbr/>info.<wbr/>device<wbr/>State<wbr/>Sensor<wbr/>Orientation<wbr/>Map 37522 </td> 37523 <td class="entry_type"> 37524 <span class="entry_type_name">int64</span> 37525 37526 <span class="entry_type_visibility"> [java_public as deviceStateSensorOrientationMap]</span> 37527 37528 <span class="entry_type_synthetic">[synthetic] </span> 37529 37530 <span class="entry_type_hwlevel">[limited] </span> 37531 37532 37533 37534 37535 </td> <!-- entry_type --> 37536 37537 <td class="entry_description"> 37538 <p>This lists the mapping between a device folding state and 37539specific camera sensor orientation for logical cameras on a foldable device.<wbr/></p> 37540 </td> 37541 37542 <td class="entry_units"> 37543 </td> 37544 37545 <td class="entry_range"> 37546 </td> 37547 37548 <td class="entry_hal_version"> 37549 <p>3.<wbr/>2</p> 37550 </td> 37551 37552 <td class="entry_tags"> 37553 </td> 37554 37555 </tr> 37556 <tr class="entries_header"> 37557 <th class="th_details" colspan="6">Details</th> 37558 </tr> 37559 <tr class="entry_cont"> 37560 <td class="entry_details" colspan="6"> 37561 <p>Logical cameras on foldable devices can support sensors with different orientation 37562values.<wbr/> The orientation value may need to change depending on the specific folding 37563state.<wbr/> Information about the mapping between the device folding state and the 37564sensor orientation can be obtained in 37565<a href="https://developer.android.com/reference/android/hardware/camera2/params/DeviceStateSensorOrientationMap.html">DeviceStateSensorOrientationMap</a>.<wbr/> 37566Device state orientation maps are optional and maybe present on devices that support 37567<a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a>.<wbr/></p> 37568 </td> 37569 </tr> 37570 37571 37572 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 37573 <!-- end of entry --> 37574 37575 37576 <tr class="entry" id="static_android.info.deviceStateOrientations"> 37577 <td class="entry_name 37578 " rowspan="3"> 37579 android.<wbr/>info.<wbr/>device<wbr/>State<wbr/>Orientations 37580 </td> 37581 <td class="entry_type"> 37582 <span class="entry_type_name">int64</span> 37583 <span class="entry_type_container">x</span> 37584 37585 <span class="entry_type_array"> 37586 2 x n 37587 </span> 37588 <span class="entry_type_visibility"> [ndk_public]</span> 37589 37590 37591 <span class="entry_type_hwlevel">[limited] </span> 37592 37593 37594 37595 37596 </td> <!-- entry_type --> 37597 37598 <td class="entry_description"> 37599 </td> 37600 37601 <td class="entry_units"> 37602 (device fold state,<wbr/> sensor orientation) x n 37603 </td> 37604 37605 <td class="entry_range"> 37606 </td> 37607 37608 <td class="entry_hal_version"> 37609 <p>3.<wbr/>7</p> 37610 </td> 37611 37612 <td class="entry_tags"> 37613 </td> 37614 37615 </tr> 37616 <tr class="entries_header"> 37617 <th class="th_details" colspan="6">Details</th> 37618 </tr> 37619 <tr class="entry_cont"> 37620 <td class="entry_details" colspan="6"> 37621 <p>HAL must populate the array with 37622(hardware::camera::provider::V2_<wbr/>5::DeviceState,<wbr/> sensorOrientation) pairs for each 37623supported device state bitwise combination.<wbr/></p> 37624 </td> 37625 </tr> 37626 37627 37628 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 37629 <!-- end of entry --> 37630 37631 37632 <tr class="entry" id="static_android.info.sessionConfigurationQueryVersion"> 37633 <td class="entry_name 37634 " rowspan="5"> 37635 android.<wbr/>info.<wbr/>session<wbr/>Configuration<wbr/>Query<wbr/>Version 37636 </td> 37637 <td class="entry_type"> 37638 <span class="entry_type_name entry_type_name_enum">int32</span> 37639 37640 <span class="entry_type_visibility"> [fwk_java_public as versionCode]</span> 37641 37642 37643 <span class="entry_type_hwlevel">[legacy] </span> 37644 37645 37646 37647 <ul class="entry_type_enum"> 37648 <li> 37649 <span class="entry_type_enum_name">UPSIDE_DOWN_CAKE (v3.10)</span> 37650 <span class="entry_type_enum_value">34</span> 37651 </li> 37652 <li> 37653 <span class="entry_type_enum_name">VANILLA_ICE_CREAM (v3.10)</span> 37654 <span class="entry_type_enum_value">35</span> 37655 </li> 37656 <li> 37657 <span class="entry_type_enum_name">BAKLAVA (v3.11)</span> 37658 <span class="entry_type_enum_value">36</span> 37659 </li> 37660 </ul> 37661 37662 </td> <!-- entry_type --> 37663 37664 <td class="entry_description"> 37665 <p>The version of the session configuration query 37666<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html#isSessionConfigurationSupported">CameraDeviceSetup#isSessionConfigurationSupported</a> 37667and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html#getSessionCharacteristics">CameraDeviceSetup#getSessionCharacteristics</a> 37668APIs.<wbr/></p> 37669 </td> 37670 37671 <td class="entry_units"> 37672 </td> 37673 37674 <td class="entry_range"> 37675 </td> 37676 37677 <td class="entry_hal_version"> 37678 <p>3.<wbr/>10</p> 37679 </td> 37680 37681 <td class="entry_tags"> 37682 </td> 37683 37684 </tr> 37685 <tr class="entries_header"> 37686 <th class="th_details" colspan="6">Details</th> 37687 </tr> 37688 <tr class="entry_cont"> 37689 <td class="entry_details" colspan="6"> 37690 <p>The possible values in this key correspond to the values defined in 37691android.<wbr/>os.<wbr/>Build.<wbr/>VERSION_<wbr/>CODES.<wbr/> Each version defines a set of feature combinations the 37692camera device must reliably report whether they are supported via 37693<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html#isSessionConfigurationSupported">CameraDeviceSetup#isSessionConfigurationSupported</a>.<wbr/> 37694It also defines the set of session specific keys in CameraCharacteristics when returned from 37695<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html#getSessionCharacteristics">CameraDeviceSetup#getSessionCharacteristics</a>.<wbr/> 37696The version is always less or equal to android.<wbr/>os.<wbr/>Build.<wbr/>VERSION.<wbr/>SDK_<wbr/>INT.<wbr/></p> 37697<p>If set to UPSIDE_<wbr/>DOWN_<wbr/>CAKE,<wbr/> this camera device doesn't support the 37698<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html">CameraDeviceSetup</a> API.<wbr/> 37699Trying to create a CameraDeviceSetup instance throws an UnsupportedOperationException.<wbr/></p> 37700<p>From VANILLA_<wbr/>ICE_<wbr/>CREAM onwards,<wbr/> the camera compliance tests verify a set of 37701commonly used SessionConfigurations to ensure that the outputs of 37702<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html#isSessionConfigurationSupported">CameraDeviceSetup#isSessionConfigurationSupported</a> 37703and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice/CameraDeviceSetup.html#getSessionCharacteristics">CameraDeviceSetup#getSessionCharacteristics</a> 37704are accurate.<wbr/> The application is encouraged to use these SessionConfigurations when turning on 37705multiple features at the same time.<wbr/></p> 37706<p>When set to VANILLA_<wbr/>ICE_<wbr/>CREAM,<wbr/> the combinations of the following configurations are verified 37707by the compliance tests:</p> 37708<ul> 37709<li> 37710<p>A set of commonly used stream combinations:</p> 37711<table> 37712<thead> 37713<tr> 37714<th style="text-align: center;">Target 1</th> 37715<th style="text-align: center;">Size</th> 37716<th style="text-align: center;">Target 2</th> 37717<th style="text-align: center;">Size</th> 37718</tr> 37719</thead> 37720<tbody> 37721<tr> 37722<td style="text-align: center;">PRIV</td> 37723<td style="text-align: center;">S1080P</td> 37724<td style="text-align: center;"></td> 37725<td style="text-align: center;"></td> 37726</tr> 37727<tr> 37728<td style="text-align: center;">PRIV</td> 37729<td style="text-align: center;">S720P</td> 37730<td style="text-align: center;"></td> 37731<td style="text-align: center;"></td> 37732</tr> 37733<tr> 37734<td style="text-align: center;">PRIV</td> 37735<td style="text-align: center;">S1080P</td> 37736<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td> 37737<td style="text-align: center;">MAXIMUM_<wbr/>16_<wbr/>9</td> 37738</tr> 37739<tr> 37740<td style="text-align: center;">PRIV</td> 37741<td style="text-align: center;">S1080P</td> 37742<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td> 37743<td style="text-align: center;">UHD</td> 37744</tr> 37745<tr> 37746<td style="text-align: center;">PRIV</td> 37747<td style="text-align: center;">S1080P</td> 37748<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td> 37749<td style="text-align: center;">S1440P</td> 37750</tr> 37751<tr> 37752<td style="text-align: center;">PRIV</td> 37753<td style="text-align: center;">S1080P</td> 37754<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td> 37755<td style="text-align: center;">S1080P</td> 37756</tr> 37757<tr> 37758<td style="text-align: center;">PRIV</td> 37759<td style="text-align: center;">S1080P</td> 37760<td style="text-align: center;">PRIV</td> 37761<td style="text-align: center;">UHD</td> 37762</tr> 37763<tr> 37764<td style="text-align: center;">PRIV</td> 37765<td style="text-align: center;">S720P</td> 37766<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td> 37767<td style="text-align: center;">MAXIMUM_<wbr/>16_<wbr/>9</td> 37768</tr> 37769<tr> 37770<td style="text-align: center;">PRIV</td> 37771<td style="text-align: center;">S720P</td> 37772<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td> 37773<td style="text-align: center;">UHD</td> 37774</tr> 37775<tr> 37776<td style="text-align: center;">PRIV</td> 37777<td style="text-align: center;">S720P</td> 37778<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td> 37779<td style="text-align: center;">S1080P</td> 37780</tr> 37781<tr> 37782<td style="text-align: center;">PRIV</td> 37783<td style="text-align: center;">XVGA</td> 37784<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td> 37785<td style="text-align: center;">MAXIMUM_<wbr/>4_<wbr/>3</td> 37786</tr> 37787<tr> 37788<td style="text-align: center;">PRIV</td> 37789<td style="text-align: center;">S1080P_<wbr/>4_<wbr/>3</td> 37790<td style="text-align: center;">JPEG/<wbr/>JPEG_<wbr/>R</td> 37791<td style="text-align: center;">MAXIMUM_<wbr/>4_<wbr/>3</td> 37792</tr> 37793</tbody> 37794</table> 37795<ul> 37796<li>{@code MAXIMUM_<wbr/>4_<wbr/>3} refers to the camera device's maximum output resolution with 37797 4:3 aspect ratio for that format from {@code StreamConfigurationMap#getOutputSizes}.<wbr/></li> 37798<li>{@code MAXIMUM_<wbr/>16_<wbr/>9} is the maximum output resolution with 16:9 aspect ratio.<wbr/></li> 37799<li>{@code S1440P} refers to {@code 2560x1440 (16:9)}.<wbr/></li> 37800<li>{@code S1080P} refers to {@code 1920x1080 (16:9)}.<wbr/></li> 37801<li>{@code S720P} refers to {@code 1280x720 (16:9)}.<wbr/></li> 37802<li>{@code UHD} refers to {@code 3840x2160 (16:9)}.<wbr/></li> 37803<li>{@code XVGA} refers to {@code 1024x768 (4:3)}.<wbr/></li> 37804<li>{@code S1080P_<wbr/>43} refers to {@code 1440x1080 (4:3)}.<wbr/></li> 37805</ul> 37806</li> 37807<li> 37808<p>VIDEO_<wbr/>STABILIZATION_<wbr/>MODE: {OFF,<wbr/> PREVIEW}</p> 37809</li> 37810<li> 37811<p>AE_<wbr/>TARGET_<wbr/>FPS_<wbr/>RANGE: { {*,<wbr/> 30},<wbr/> {*,<wbr/> 60} }</p> 37812</li> 37813<li> 37814<p>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILE: {STANDARD,<wbr/> HLG10}</p> 37815</li> 37816</ul> 37817<p>All of the above configurations can be set up with a SessionConfiguration.<wbr/> The list of 37818OutputConfiguration contains the stream configurations and DYNAMIC_<wbr/>RANGE_<wbr/>PROFILE,<wbr/> and 37819the AE_<wbr/>TARGET_<wbr/>FPS_<wbr/>RANGE and VIDEO_<wbr/>STABILIZATION_<wbr/>MODE are set as session parameters.<wbr/></p> 37820<p>When set to BAKLAVA,<wbr/> the additional stream combinations below are verified 37821by the compliance tests:</p> 37822<table> 37823<thead> 37824<tr> 37825<th style="text-align: center;">Target 1</th> 37826<th style="text-align: center;">Size</th> 37827<th style="text-align: center;">Target 2</th> 37828<th style="text-align: center;">Size</th> 37829</tr> 37830</thead> 37831<tbody> 37832<tr> 37833<td style="text-align: center;">PRIV</td> 37834<td style="text-align: center;">S1080P</td> 37835<td style="text-align: center;">PRIV</td> 37836<td style="text-align: center;">S1080P</td> 37837</tr> 37838<tr> 37839<td style="text-align: center;">PRIV</td> 37840<td style="text-align: center;">S1080P</td> 37841<td style="text-align: center;">PRIV</td> 37842<td style="text-align: center;">S1440P</td> 37843</tr> 37844</tbody> 37845</table> 37846 </td> 37847 </tr> 37848 37849 <tr class="entries_header"> 37850 <th class="th_details" colspan="6">HAL Implementation Details</th> 37851 </tr> 37852 <tr class="entry_cont"> 37853 <td class="entry_details" colspan="6"> 37854 <p>Preview stabilization must be orthogonal to other features.<wbr/> In other words,<wbr/> if preview 37855stabilization is supported by the camera device,<wbr/> the return value of 37856isStreamCombinationWithSettingsSupported for a particular combination must return 37857the same value between stabilization off and preview stabilization on.<wbr/> This reduces the 37858search space for feature combination queries.<wbr/></p> 37859 </td> 37860 </tr> 37861 37862 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 37863 <!-- end of entry --> 37864 37865 37866 <tr class="entry" id="static_android.info.deviceId"> 37867 <td class="entry_name 37868 " rowspan="3"> 37869 android.<wbr/>info.<wbr/>device<wbr/>Id 37870 </td> 37871 <td class="entry_type"> 37872 <span class="entry_type_name">int32</span> 37873 37874 <span class="entry_type_visibility"> [fwk_only]</span> 37875 37876 37877 37878 37879 37880 37881 </td> <!-- entry_type --> 37882 37883 <td class="entry_description"> 37884 <p>Id of the device that owns this camera.<wbr/></p> 37885 </td> 37886 37887 <td class="entry_units"> 37888 </td> 37889 37890 <td class="entry_range"> 37891 </td> 37892 37893 <td class="entry_hal_version"> 37894 <p>3.<wbr/>2</p> 37895 </td> 37896 37897 <td class="entry_tags"> 37898 </td> 37899 37900 </tr> 37901 <tr class="entries_header"> 37902 <th class="th_details" colspan="6">Details</th> 37903 </tr> 37904 <tr class="entry_cont"> 37905 <td class="entry_details" colspan="6"> 37906 <p>In case of a virtual camera,<wbr/> this would be the id of the virtual device 37907owning the camera.<wbr/> For any other camera,<wbr/> this key would not be present.<wbr/> 37908Callers should assume <a href="https://developer.android.com/reference/android/content/Context.html#DEVICE_ID_DEFAULT">Context#DEVICE_<wbr/>ID_<wbr/>DEFAULT</a> 37909in case this key is not present.<wbr/></p> 37910 </td> 37911 </tr> 37912 37913 37914 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 37915 <!-- end of entry --> 37916 37917 37918 37919 <!-- end of kind --> 37920 </tbody> 37921 37922 <!-- end of section --> 37923 <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr> 37924 37925 37926 <tr><td colspan="7" class="kind">controls</td></tr> 37927 37928 <thead class="entries_header"> 37929 <tr> 37930 <th class="th_name">Property Name</th> 37931 <th class="th_type">Type</th> 37932 <th class="th_description">Description</th> 37933 <th class="th_units">Units</th> 37934 <th class="th_range">Range</th> 37935 <th class="th_hal_version">Initial HIDL HAL version</th> 37936 <th class="th_tags">Tags</th> 37937 </tr> 37938 </thead> 37939 37940 <tbody> 37941 37942 37943 37944 37945 37946 37947 37948 37949 37950 37951 <tr class="entry" id="controls_android.blackLevel.lock"> 37952 <td class="entry_name 37953 " rowspan="5"> 37954 android.<wbr/>black<wbr/>Level.<wbr/>lock 37955 </td> 37956 <td class="entry_type"> 37957 <span class="entry_type_name entry_type_name_enum">byte</span> 37958 37959 <span class="entry_type_visibility"> [public as boolean]</span> 37960 37961 37962 <span class="entry_type_hwlevel">[full] </span> 37963 37964 37965 37966 <ul class="entry_type_enum"> 37967 <li> 37968 <span class="entry_type_enum_name">OFF (v3.2)</span> 37969 </li> 37970 <li> 37971 <span class="entry_type_enum_name">ON (v3.2)</span> 37972 </li> 37973 </ul> 37974 37975 </td> <!-- entry_type --> 37976 37977 <td class="entry_description"> 37978 <p>Whether black-level compensation is locked 37979to its current values,<wbr/> or is free to vary.<wbr/></p> 37980 </td> 37981 37982 <td class="entry_units"> 37983 </td> 37984 37985 <td class="entry_range"> 37986 </td> 37987 37988 <td class="entry_hal_version"> 37989 <p>3.<wbr/>2</p> 37990 </td> 37991 37992 <td class="entry_tags"> 37993 <ul class="entry_tags"> 37994 <li><a href="#tag_HAL2">HAL2</a></li> 37995 </ul> 37996 </td> 37997 37998 </tr> 37999 <tr class="entries_header"> 38000 <th class="th_details" colspan="6">Details</th> 38001 </tr> 38002 <tr class="entry_cont"> 38003 <td class="entry_details" colspan="6"> 38004 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level 38005compensation will not change until the lock is set to 38006<code>false</code> (OFF).<wbr/></p> 38007<p>Since changes to certain capture parameters (such as 38008exposure time) may require resetting of black level 38009compensation,<wbr/> the camera device must report whether setting 38010the black level lock was successful in the output result 38011metadata.<wbr/></p> 38012<p>For example,<wbr/> if a sequence of requests is as follows:</p> 38013<ul> 38014<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 38015<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 38016<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 38017<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 38018<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 38019<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 38020</ul> 38021<p>And the exposure change in Request 4 requires the camera 38022device to reset the black level offsets,<wbr/> then the output 38023result metadata is expected to be:</p> 38024<ul> 38025<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 38026<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 38027<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 38028<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 38029<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 38030<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 38031</ul> 38032<p>This indicates to the application that on frame 4,<wbr/> black 38033levels were reset due to exposure value changes,<wbr/> and pixel 38034values may not be consistent across captures.<wbr/></p> 38035<p>The camera device will maintain the lock to the extent 38036possible,<wbr/> only overriding the lock to OFF when changes to 38037other request parameters require a black level recalculation 38038or reset.<wbr/></p> 38039 </td> 38040 </tr> 38041 38042 <tr class="entries_header"> 38043 <th class="th_details" colspan="6">HAL Implementation Details</th> 38044 </tr> 38045 <tr class="entry_cont"> 38046 <td class="entry_details" colspan="6"> 38047 <p>If for some reason black level locking is no longer possible 38048(for example,<wbr/> the analog gain has changed,<wbr/> which forces 38049black level offsets to be recalculated),<wbr/> then the HAL must 38050override this request (and it must report 'OFF' when this 38051does happen) until the next capture for which locking is 38052possible again.<wbr/></p> 38053 </td> 38054 </tr> 38055 38056 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 38057 <!-- end of entry --> 38058 38059 38060 38061 <!-- end of kind --> 38062 </tbody> 38063 <tr><td colspan="7" class="kind">dynamic</td></tr> 38064 38065 <thead class="entries_header"> 38066 <tr> 38067 <th class="th_name">Property Name</th> 38068 <th class="th_type">Type</th> 38069 <th class="th_description">Description</th> 38070 <th class="th_units">Units</th> 38071 <th class="th_range">Range</th> 38072 <th class="th_hal_version">Initial HIDL HAL version</th> 38073 <th class="th_tags">Tags</th> 38074 </tr> 38075 </thead> 38076 38077 <tbody> 38078 38079 38080 38081 38082 38083 38084 38085 38086 38087 38088 <tr class="entry" id="dynamic_android.blackLevel.lock"> 38089 <td class="entry_name 38090 " rowspan="5"> 38091 android.<wbr/>black<wbr/>Level.<wbr/>lock 38092 </td> 38093 <td class="entry_type"> 38094 <span class="entry_type_name entry_type_name_enum">byte</span> 38095 38096 <span class="entry_type_visibility"> [public as boolean]</span> 38097 38098 38099 <span class="entry_type_hwlevel">[full] </span> 38100 38101 38102 38103 <ul class="entry_type_enum"> 38104 <li> 38105 <span class="entry_type_enum_name">OFF (v3.2)</span> 38106 </li> 38107 <li> 38108 <span class="entry_type_enum_name">ON (v3.2)</span> 38109 </li> 38110 </ul> 38111 38112 </td> <!-- entry_type --> 38113 38114 <td class="entry_description"> 38115 <p>Whether black-level compensation is locked 38116to its current values,<wbr/> or is free to vary.<wbr/></p> 38117 </td> 38118 38119 <td class="entry_units"> 38120 </td> 38121 38122 <td class="entry_range"> 38123 </td> 38124 38125 <td class="entry_hal_version"> 38126 <p>3.<wbr/>2</p> 38127 </td> 38128 38129 <td class="entry_tags"> 38130 <ul class="entry_tags"> 38131 <li><a href="#tag_HAL2">HAL2</a></li> 38132 </ul> 38133 </td> 38134 38135 </tr> 38136 <tr class="entries_header"> 38137 <th class="th_details" colspan="6">Details</th> 38138 </tr> 38139 <tr class="entry_cont"> 38140 <td class="entry_details" colspan="6"> 38141 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 38142ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 38143a change in other capture settings forced the camera device to 38144perform a black level reset.<wbr/></p> 38145 </td> 38146 </tr> 38147 38148 <tr class="entries_header"> 38149 <th class="th_details" colspan="6">HAL Implementation Details</th> 38150 </tr> 38151 <tr class="entry_cont"> 38152 <td class="entry_details" colspan="6"> 38153 <p>If for some reason black level locking is no longer possible 38154(for example,<wbr/> the analog gain has changed,<wbr/> which forces 38155black level offsets to be recalculated),<wbr/> then the HAL must 38156override this request (and it must report 'OFF' when this 38157does happen) until the next capture for which locking is 38158possible again.<wbr/></p> 38159 </td> 38160 </tr> 38161 38162 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 38163 <!-- end of entry --> 38164 38165 38166 38167 <!-- end of kind --> 38168 </tbody> 38169 38170 <!-- end of section --> 38171 <tr><td colspan="7" id="section_sync" class="section">sync</td></tr> 38172 38173 38174 <tr><td colspan="7" class="kind">dynamic</td></tr> 38175 38176 <thead class="entries_header"> 38177 <tr> 38178 <th class="th_name">Property Name</th> 38179 <th class="th_type">Type</th> 38180 <th class="th_description">Description</th> 38181 <th class="th_units">Units</th> 38182 <th class="th_range">Range</th> 38183 <th class="th_hal_version">Initial HIDL HAL version</th> 38184 <th class="th_tags">Tags</th> 38185 </tr> 38186 </thead> 38187 38188 <tbody> 38189 38190 38191 38192 38193 38194 38195 38196 38197 38198 38199 <tr class="entry" id="dynamic_android.sync.frameNumber"> 38200 <td class="entry_name 38201 " rowspan="5"> 38202 android.<wbr/>sync.<wbr/>frame<wbr/>Number 38203 </td> 38204 <td class="entry_type"> 38205 <span class="entry_type_name entry_type_name_enum">int64</span> 38206 38207 <span class="entry_type_visibility"> [ndk_public]</span> 38208 38209 38210 <span class="entry_type_hwlevel">[legacy] </span> 38211 38212 38213 38214 <ul class="entry_type_enum"> 38215 <li> 38216 <span class="entry_type_enum_name">CONVERGING (v3.2)</span> 38217 <span class="entry_type_enum_value">-1</span> 38218 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p> 38219<p>Synchronization is in progress,<wbr/> and reading metadata from this 38220result may include a mix of data that have taken effect since the 38221last synchronization time.<wbr/></p> 38222<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 38223this value will update to the actual frame number frame number 38224the result is guaranteed to be synchronized to (as long as the 38225request settings remain constant).<wbr/></p></span> 38226 </li> 38227 <li> 38228 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span> 38229 <span class="entry_type_enum_value">-2</span> 38230 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p> 38231<p>The result may have already converged,<wbr/> or it may be in 38232progress.<wbr/> Reading from this result may include some mix 38233of settings from past requests.<wbr/></p> 38234<p>After a settings change,<wbr/> the new settings will eventually all 38235take effect for the output buffers and results.<wbr/> However,<wbr/> this 38236value will not change when that happens.<wbr/> Altering settings 38237rapidly may provide outcomes using mixes of settings from recent 38238requests.<wbr/></p> 38239<p>This value is intended primarily for backwards compatibility with 38240the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 38241 </li> 38242 </ul> 38243 38244 </td> <!-- entry_type --> 38245 38246 <td class="entry_description"> 38247 <p>The frame number corresponding to the last request 38248with which the output result (metadata + buffers) has been fully 38249synchronized.<wbr/></p> 38250 </td> 38251 38252 <td class="entry_units"> 38253 </td> 38254 38255 <td class="entry_range"> 38256 <p>Either a non-negative value corresponding to a 38257<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 38258 </td> 38259 38260 <td class="entry_hal_version"> 38261 <p>3.<wbr/>2</p> 38262 </td> 38263 38264 <td class="entry_tags"> 38265 <ul class="entry_tags"> 38266 <li><a href="#tag_V1">V1</a></li> 38267 </ul> 38268 </td> 38269 38270 </tr> 38271 <tr class="entries_header"> 38272 <th class="th_details" colspan="6">Details</th> 38273 </tr> 38274 <tr class="entry_cont"> 38275 <td class="entry_details" colspan="6"> 38276 <p>When a request is submitted to the camera device,<wbr/> there is usually a 38277delay of several frames before the controls get applied.<wbr/> A camera 38278device may either choose to account for this delay by implementing a 38279pipeline and carefully submit well-timed atomic control updates,<wbr/> or 38280it may start streaming control changes that span over several frame 38281boundaries.<wbr/></p> 38282<p>In the latter case,<wbr/> whenever a request's settings change relative to 38283the previous submitted request,<wbr/> the full set of changes may take 38284multiple frame durations to fully take effect.<wbr/> Some settings may 38285take effect sooner (in less frame durations) than others.<wbr/></p> 38286<p>While a set of control changes are being propagated,<wbr/> this value 38287will be CONVERGING.<wbr/></p> 38288<p>Once it is fully known that a set of control changes have been 38289finished propagating,<wbr/> and the resulting updated control settings 38290have been read back by the camera device,<wbr/> this value will be set 38291to a non-negative frame number (corresponding to the request to 38292which the results have synchronized to).<wbr/></p> 38293<p>Older camera device implementations may not have a way to detect 38294when all camera controls have been applied,<wbr/> and will always set this 38295value to UNKNOWN.<wbr/></p> 38296<p>FULL capability devices will always have this value set to the 38297frame number of the request corresponding to this result.<wbr/></p> 38298<p><em>Further details</em>:</p> 38299<ul> 38300<li>Whenever a request differs from the last request,<wbr/> any future 38301results not yet returned may have this value set to CONVERGING (this 38302could include any in-progress captures not yet returned by the camera 38303device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 38304<li>Submitting a series of multiple requests that differ from the 38305previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 38306moves the new synchronization frame to the last non-repeating 38307request (using the smallest frame number from the contiguous list of 38308repeating requests).<wbr/></li> 38309<li>Submitting the same request repeatedly will not change this value 38310to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 38311<li>When this value changes to non-negative,<wbr/> that means that all of the 38312metadata controls from the request have been applied,<wbr/> all of the 38313metadata controls from the camera device have been read to the 38314updated values (into the result),<wbr/> and all of the graphics buffers 38315corresponding to this result are also synchronized to the request.<wbr/></li> 38316</ul> 38317<p><em>Pipeline considerations</em>:</p> 38318<p>Submitting a request with updated controls relative to the previously 38319submitted requests may also invalidate the synchronization state 38320of all the results corresponding to currently in-flight requests.<wbr/></p> 38321<p>In other words,<wbr/> results for this current request and up to 38322<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 38323<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 38324 </td> 38325 </tr> 38326 38327 <tr class="entries_header"> 38328 <th class="th_details" colspan="6">HAL Implementation Details</th> 38329 </tr> 38330 <tr class="entry_cont"> 38331 <td class="entry_details" colspan="6"> 38332 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 38333is also UNKNOWN.<wbr/></p> 38334<p>FULL capability devices should simply set this value to the 38335<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 38336 </td> 38337 </tr> 38338 38339 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 38340 <!-- end of entry --> 38341 38342 38343 38344 <!-- end of kind --> 38345 </tbody> 38346 <tr><td colspan="7" class="kind">static</td></tr> 38347 38348 <thead class="entries_header"> 38349 <tr> 38350 <th class="th_name">Property Name</th> 38351 <th class="th_type">Type</th> 38352 <th class="th_description">Description</th> 38353 <th class="th_units">Units</th> 38354 <th class="th_range">Range</th> 38355 <th class="th_hal_version">Initial HIDL HAL version</th> 38356 <th class="th_tags">Tags</th> 38357 </tr> 38358 </thead> 38359 38360 <tbody> 38361 38362 38363 38364 38365 38366 38367 38368 38369 38370 38371 <tr class="entry" id="static_android.sync.maxLatency"> 38372 <td class="entry_name 38373 " rowspan="5"> 38374 android.<wbr/>sync.<wbr/>max<wbr/>Latency 38375 </td> 38376 <td class="entry_type"> 38377 <span class="entry_type_name entry_type_name_enum">int32</span> 38378 38379 <span class="entry_type_visibility"> [public]</span> 38380 38381 38382 <span class="entry_type_hwlevel">[legacy] </span> 38383 38384 38385 38386 <ul class="entry_type_enum"> 38387 <li> 38388 <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span> 38389 <span class="entry_type_enum_value">0</span> 38390 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p> 38391<p>Changing controls over multiple requests one after another will 38392produce results that have those controls applied atomically 38393each frame.<wbr/></p> 38394<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 38395 </li> 38396 <li> 38397 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span> 38398 <span class="entry_type_enum_value">-1</span> 38399 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 38400of the past requests applied to the camera settings.<wbr/></p> 38401<p>By submitting a series of identical requests,<wbr/> the camera device 38402will eventually have the camera settings applied,<wbr/> but it is 38403unknown when that exact point will be.<wbr/></p> 38404<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span> 38405 </li> 38406 </ul> 38407 38408 </td> <!-- entry_type --> 38409 38410 <td class="entry_description"> 38411 <p>The maximum number of frames that can occur after a request 38412(different than the previous) has been submitted,<wbr/> and before the 38413result's state becomes synchronized.<wbr/></p> 38414 </td> 38415 38416 <td class="entry_units"> 38417 Frame counts 38418 </td> 38419 38420 <td class="entry_range"> 38421 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p> 38422 </td> 38423 38424 <td class="entry_hal_version"> 38425 <p>3.<wbr/>2</p> 38426 </td> 38427 38428 <td class="entry_tags"> 38429 <ul class="entry_tags"> 38430 <li><a href="#tag_V1">V1</a></li> 38431 </ul> 38432 </td> 38433 38434 </tr> 38435 <tr class="entries_header"> 38436 <th class="th_details" colspan="6">Details</th> 38437 </tr> 38438 <tr class="entry_cont"> 38439 <td class="entry_details" colspan="6"> 38440 <p>This defines the maximum distance (in number of metadata results),<wbr/> 38441between the frame number of the request that has new controls to apply 38442and the frame number of the result that has all the controls applied.<wbr/></p> 38443<p>In other words this acts as an upper boundary for how many frames 38444must occur before the camera device knows for a fact that the new 38445submitted camera settings have been applied in outgoing frames.<wbr/></p> 38446 </td> 38447 </tr> 38448 38449 <tr class="entries_header"> 38450 <th class="th_details" colspan="6">HAL Implementation Details</th> 38451 </tr> 38452 <tr class="entry_cont"> 38453 <td class="entry_details" colspan="6"> 38454 <p>For example if maxLatency was 2,<wbr/></p> 38455<pre><code>initial request = X (repeating) 38456request1 = X 38457request2 = Y 38458request3 = Y 38459request4 = Y 38460 38461where requestN has frameNumber N,<wbr/> and the first of the repeating 38462initial request's has frameNumber F (and F < 1).<wbr/> 38463 38464initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 38465result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 38466result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 38467result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 38468result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 38469 38470where resultN has frameNumber N.<wbr/> 38471</code></pre> 38472<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 38473<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 38474<code>4 - 2 = 2</code>.<wbr/></p> 38475<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 38476<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or 38477<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p> 38478<p>LIMITED devices are strongly encouraged to use a non-negative 38479value.<wbr/> If UNKNOWN is used here then app developers do not have a way 38480to know when sensor settings have been applied.<wbr/></p> 38481 </td> 38482 </tr> 38483 38484 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 38485 <!-- end of entry --> 38486 38487 38488 38489 <!-- end of kind --> 38490 </tbody> 38491 38492 <!-- end of section --> 38493 <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr> 38494 38495 38496 <tr><td colspan="7" class="kind">controls</td></tr> 38497 38498 <thead class="entries_header"> 38499 <tr> 38500 <th class="th_name">Property Name</th> 38501 <th class="th_type">Type</th> 38502 <th class="th_description">Description</th> 38503 <th class="th_units">Units</th> 38504 <th class="th_range">Range</th> 38505 <th class="th_hal_version">Initial HIDL HAL version</th> 38506 <th class="th_tags">Tags</th> 38507 </tr> 38508 </thead> 38509 38510 <tbody> 38511 38512 38513 38514 38515 38516 38517 38518 38519 38520 38521 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor"> 38522 <td class="entry_name 38523 " rowspan="3"> 38524 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 38525 </td> 38526 <td class="entry_type"> 38527 <span class="entry_type_name">float</span> 38528 38529 <span class="entry_type_visibility"> [java_public]</span> 38530 38531 38532 <span class="entry_type_hwlevel">[limited] </span> 38533 38534 38535 38536 38537 </td> <!-- entry_type --> 38538 38539 <td class="entry_description"> 38540 <p>The amount of exposure time increase factor applied to the original output 38541frame by the application processing before sending for reprocessing.<wbr/></p> 38542 </td> 38543 38544 <td class="entry_units"> 38545 Relative exposure time increase factor.<wbr/> 38546 </td> 38547 38548 <td class="entry_range"> 38549 <p>>= 1.<wbr/>0</p> 38550 </td> 38551 38552 <td class="entry_hal_version"> 38553 <p>3.<wbr/>2</p> 38554 </td> 38555 38556 <td class="entry_tags"> 38557 <ul class="entry_tags"> 38558 <li><a href="#tag_REPROC">REPROC</a></li> 38559 </ul> 38560 </td> 38561 38562 </tr> 38563 <tr class="entries_header"> 38564 <th class="th_details" colspan="6">Details</th> 38565 </tr> 38566 <tr class="entry_cont"> 38567 <td class="entry_details" colspan="6"> 38568 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 38569capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 38570<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 38571output frames to effectively reduce the noise to the same level as a frame that was 38572captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 38573images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 38574the camera device is that the amount of noise in the image would be approximately what 38575would be expected if the original capture parameters had been a sensitivity of 38576S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 38577than S and T respectively.<wbr/> If the captured images were processed by the application 38578before being sent for reprocessing,<wbr/> then the application may have used image processing 38579algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 38580application-processed images (input images).<wbr/> By using the effectiveExposureFactor 38581control,<wbr/> the application can communicate to the camera device the actual noise level 38582improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 38583device can select appropriate noise reduction and edge enhancement parameters to avoid 38584excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 38585enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 38586<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 38587multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 38588fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 38589square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 38590adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 38591produce the best quality images.<wbr/></p> 38592<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 38593buffer in a way that affects its effective exposure time.<wbr/></p> 38594<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 38595reduction 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/> 38596Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 38597<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 38598 </td> 38599 </tr> 38600 38601 38602 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 38603 <!-- end of entry --> 38604 38605 38606 38607 <!-- end of kind --> 38608 </tbody> 38609 <tr><td colspan="7" class="kind">dynamic</td></tr> 38610 38611 <thead class="entries_header"> 38612 <tr> 38613 <th class="th_name">Property Name</th> 38614 <th class="th_type">Type</th> 38615 <th class="th_description">Description</th> 38616 <th class="th_units">Units</th> 38617 <th class="th_range">Range</th> 38618 <th class="th_hal_version">Initial HIDL HAL version</th> 38619 <th class="th_tags">Tags</th> 38620 </tr> 38621 </thead> 38622 38623 <tbody> 38624 38625 38626 38627 38628 38629 38630 38631 38632 38633 38634 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor"> 38635 <td class="entry_name 38636 " rowspan="3"> 38637 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 38638 </td> 38639 <td class="entry_type"> 38640 <span class="entry_type_name">float</span> 38641 38642 <span class="entry_type_visibility"> [java_public]</span> 38643 38644 38645 <span class="entry_type_hwlevel">[limited] </span> 38646 38647 38648 38649 38650 </td> <!-- entry_type --> 38651 38652 <td class="entry_description"> 38653 <p>The amount of exposure time increase factor applied to the original output 38654frame by the application processing before sending for reprocessing.<wbr/></p> 38655 </td> 38656 38657 <td class="entry_units"> 38658 Relative exposure time increase factor.<wbr/> 38659 </td> 38660 38661 <td class="entry_range"> 38662 <p>>= 1.<wbr/>0</p> 38663 </td> 38664 38665 <td class="entry_hal_version"> 38666 <p>3.<wbr/>2</p> 38667 </td> 38668 38669 <td class="entry_tags"> 38670 <ul class="entry_tags"> 38671 <li><a href="#tag_REPROC">REPROC</a></li> 38672 </ul> 38673 </td> 38674 38675 </tr> 38676 <tr class="entries_header"> 38677 <th class="th_details" colspan="6">Details</th> 38678 </tr> 38679 <tr class="entry_cont"> 38680 <td class="entry_details" colspan="6"> 38681 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 38682capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 38683<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 38684output frames to effectively reduce the noise to the same level as a frame that was 38685captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 38686images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 38687the camera device is that the amount of noise in the image would be approximately what 38688would be expected if the original capture parameters had been a sensitivity of 38689S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 38690than S and T respectively.<wbr/> If the captured images were processed by the application 38691before being sent for reprocessing,<wbr/> then the application may have used image processing 38692algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 38693application-processed images (input images).<wbr/> By using the effectiveExposureFactor 38694control,<wbr/> the application can communicate to the camera device the actual noise level 38695improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 38696device can select appropriate noise reduction and edge enhancement parameters to avoid 38697excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 38698enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 38699<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 38700multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 38701fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 38702square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 38703adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 38704produce the best quality images.<wbr/></p> 38705<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 38706buffer in a way that affects its effective exposure time.<wbr/></p> 38707<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 38708reduction 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/> 38709Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 38710<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 38711 </td> 38712 </tr> 38713 38714 38715 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 38716 <!-- end of entry --> 38717 38718 38719 38720 <!-- end of kind --> 38721 </tbody> 38722 <tr><td colspan="7" class="kind">static</td></tr> 38723 38724 <thead class="entries_header"> 38725 <tr> 38726 <th class="th_name">Property Name</th> 38727 <th class="th_type">Type</th> 38728 <th class="th_description">Description</th> 38729 <th class="th_units">Units</th> 38730 <th class="th_range">Range</th> 38731 <th class="th_hal_version">Initial HIDL HAL version</th> 38732 <th class="th_tags">Tags</th> 38733 </tr> 38734 </thead> 38735 38736 <tbody> 38737 38738 38739 38740 38741 38742 38743 38744 38745 38746 38747 <tr class="entry" id="static_android.reprocess.maxCaptureStall"> 38748 <td class="entry_name 38749 " rowspan="3"> 38750 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall 38751 </td> 38752 <td class="entry_type"> 38753 <span class="entry_type_name">int32</span> 38754 38755 <span class="entry_type_visibility"> [java_public]</span> 38756 38757 38758 <span class="entry_type_hwlevel">[limited] </span> 38759 38760 38761 38762 38763 </td> <!-- entry_type --> 38764 38765 <td class="entry_description"> 38766 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a 38767reprocess capture request.<wbr/></p> 38768 </td> 38769 38770 <td class="entry_units"> 38771 Number of frames.<wbr/> 38772 </td> 38773 38774 <td class="entry_range"> 38775 <p><= 4</p> 38776 </td> 38777 38778 <td class="entry_hal_version"> 38779 <p>3.<wbr/>2</p> 38780 </td> 38781 38782 <td class="entry_tags"> 38783 <ul class="entry_tags"> 38784 <li><a href="#tag_REPROC">REPROC</a></li> 38785 </ul> 38786 </td> 38787 38788 </tr> 38789 <tr class="entries_header"> 38790 <th class="th_details" colspan="6">Details</th> 38791 </tr> 38792 <tr class="entry_cont"> 38793 <td class="entry_details" colspan="6"> 38794 <p>The key describes the maximal interference that one reprocess (input) request 38795can introduce to the camera simultaneous streaming of regular (output) capture 38796requests,<wbr/> including repeating requests.<wbr/></p> 38797<p>When a reprocessing capture request is submitted while a camera output repeating request 38798(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture 38799pipeline for at least one frame duration so that the camera device is unable to process 38800the following capture request in time for the next sensor start of exposure boundary.<wbr/> 38801When this happens,<wbr/> the application may observe a capture time gap (longer than one frame 38802duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview 38803glitch if the repeating request output targets include a preview surface.<wbr/> This key gives 38804the worst-case number of frame stall introduced by one reprocess request with any kind of 38805formats/<wbr/>sizes combination.<wbr/></p> 38806<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the 38807ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p> 38808<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing ( 38809i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or 38810YUV_<wbr/>REPROCESSING).<wbr/></p> 38811 </td> 38812 </tr> 38813 38814 38815 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 38816 <!-- end of entry --> 38817 38818 38819 38820 <!-- end of kind --> 38821 </tbody> 38822 38823 <!-- end of section --> 38824 <tr><td colspan="7" id="section_depth" class="section">depth</td></tr> 38825 38826 38827 <tr><td colspan="7" class="kind">static</td></tr> 38828 38829 <thead class="entries_header"> 38830 <tr> 38831 <th class="th_name">Property Name</th> 38832 <th class="th_type">Type</th> 38833 <th class="th_description">Description</th> 38834 <th class="th_units">Units</th> 38835 <th class="th_range">Range</th> 38836 <th class="th_hal_version">Initial HIDL HAL version</th> 38837 <th class="th_tags">Tags</th> 38838 </tr> 38839 </thead> 38840 38841 <tbody> 38842 38843 38844 38845 38846 38847 38848 38849 38850 38851 38852 <tr class="entry" id="static_android.depth.maxDepthSamples"> 38853 <td class="entry_name 38854 " rowspan="3"> 38855 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples 38856 </td> 38857 <td class="entry_type"> 38858 <span class="entry_type_name">int32</span> 38859 38860 <span class="entry_type_visibility"> [system]</span> 38861 38862 38863 <span class="entry_type_hwlevel">[limited] </span> 38864 38865 38866 38867 38868 </td> <!-- entry_type --> 38869 38870 <td class="entry_description"> 38871 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p> 38872 </td> 38873 38874 <td class="entry_units"> 38875 </td> 38876 38877 <td class="entry_range"> 38878 </td> 38879 38880 <td class="entry_hal_version"> 38881 <p>3.<wbr/>2</p> 38882 </td> 38883 38884 <td class="entry_tags"> 38885 <ul class="entry_tags"> 38886 <li><a href="#tag_DEPTH">DEPTH</a></li> 38887 </ul> 38888 </td> 38889 38890 </tr> 38891 <tr class="entries_header"> 38892 <th class="th_details" colspan="6">Details</th> 38893 </tr> 38894 <tr class="entry_cont"> 38895 <td class="entry_details" colspan="6"> 38896 <p>If a camera device supports outputting depth range data in the form of a depth point 38897cloud (<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 38898number of points an output buffer may contain.<wbr/></p> 38899<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/> 38900If output in the depth point cloud format is not supported,<wbr/> this entry will 38901not be defined.<wbr/></p> 38902 </td> 38903 </tr> 38904 38905 38906 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 38907 <!-- end of entry --> 38908 38909 38910 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations"> 38911 <td class="entry_name 38912 " rowspan="3"> 38913 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations 38914 </td> 38915 <td class="entry_type"> 38916 <span class="entry_type_name entry_type_name_enum">int32</span> 38917 <span class="entry_type_container">x</span> 38918 38919 <span class="entry_type_array"> 38920 n x 4 38921 </span> 38922 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 38923 38924 38925 <span class="entry_type_hwlevel">[limited] </span> 38926 38927 38928 38929 <ul class="entry_type_enum"> 38930 <li> 38931 <span class="entry_type_enum_name">OUTPUT (v3.2)</span> 38932 </li> 38933 <li> 38934 <span class="entry_type_enum_name">INPUT (v3.2)</span> 38935 </li> 38936 </ul> 38937 38938 </td> <!-- entry_type --> 38939 38940 <td class="entry_description"> 38941 <p>The available depth dataspace stream 38942configurations that this camera device supports 38943(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 38944 </td> 38945 38946 <td class="entry_units"> 38947 </td> 38948 38949 <td class="entry_range"> 38950 </td> 38951 38952 <td class="entry_hal_version"> 38953 <p>3.<wbr/>2</p> 38954 </td> 38955 38956 <td class="entry_tags"> 38957 <ul class="entry_tags"> 38958 <li><a href="#tag_DEPTH">DEPTH</a></li> 38959 </ul> 38960 </td> 38961 38962 </tr> 38963 <tr class="entries_header"> 38964 <th class="th_details" colspan="6">Details</th> 38965 </tr> 38966 <tr class="entry_cont"> 38967 <td class="entry_details" colspan="6"> 38968 <p>These are output stream configurations for use with 38969dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are 38970listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 38971<p>Only devices that support depth output for at least 38972the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include 38973this entry.<wbr/></p> 38974<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB 38975sparse depth point cloud must report a single entry for 38976the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/> 38977<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to 38978the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p> 38979 </td> 38980 </tr> 38981 38982 38983 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 38984 <!-- end of entry --> 38985 38986 38987 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations"> 38988 <td class="entry_name 38989 " rowspan="3"> 38990 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 38991 </td> 38992 <td class="entry_type"> 38993 <span class="entry_type_name">int64</span> 38994 <span class="entry_type_container">x</span> 38995 38996 <span class="entry_type_array"> 38997 4 x n 38998 </span> 38999 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 39000 39001 39002 <span class="entry_type_hwlevel">[limited] </span> 39003 39004 39005 39006 39007 </td> <!-- entry_type --> 39008 39009 <td class="entry_description"> 39010 <p>This lists the minimum frame duration for each 39011format/<wbr/>size combination for depth output formats.<wbr/></p> 39012 </td> 39013 39014 <td class="entry_units"> 39015 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 39016 </td> 39017 39018 <td class="entry_range"> 39019 </td> 39020 39021 <td class="entry_hal_version"> 39022 <p>3.<wbr/>2</p> 39023 </td> 39024 39025 <td class="entry_tags"> 39026 <ul class="entry_tags"> 39027 <li><a href="#tag_DEPTH">DEPTH</a></li> 39028 </ul> 39029 </td> 39030 39031 </tr> 39032 <tr class="entries_header"> 39033 <th class="th_details" colspan="6">Details</th> 39034 </tr> 39035 <tr class="entry_cont"> 39036 <td class="entry_details" colspan="6"> 39037 <p>This should correspond to the frame duration when only that 39038stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 39039set to either OFF or FAST.<wbr/></p> 39040<p>When multiple streams are used in a request,<wbr/> the minimum frame 39041duration will be max(individual stream min durations).<wbr/></p> 39042<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 39043is the same regardless of whether the stream is input or output.<wbr/></p> 39044<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 39045<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 39046calculating the max frame rate.<wbr/></p> 39047 </td> 39048 </tr> 39049 39050 39051 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39052 <!-- end of entry --> 39053 39054 39055 <tr class="entry" id="static_android.depth.availableDepthStallDurations"> 39056 <td class="entry_name 39057 " rowspan="3"> 39058 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations 39059 </td> 39060 <td class="entry_type"> 39061 <span class="entry_type_name">int64</span> 39062 <span class="entry_type_container">x</span> 39063 39064 <span class="entry_type_array"> 39065 4 x n 39066 </span> 39067 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 39068 39069 39070 <span class="entry_type_hwlevel">[limited] </span> 39071 39072 39073 39074 39075 </td> <!-- entry_type --> 39076 39077 <td class="entry_description"> 39078 <p>This lists the maximum stall duration for each 39079output format/<wbr/>size combination for depth streams.<wbr/></p> 39080 </td> 39081 39082 <td class="entry_units"> 39083 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 39084 </td> 39085 39086 <td class="entry_range"> 39087 </td> 39088 39089 <td class="entry_hal_version"> 39090 <p>3.<wbr/>2</p> 39091 </td> 39092 39093 <td class="entry_tags"> 39094 <ul class="entry_tags"> 39095 <li><a href="#tag_DEPTH">DEPTH</a></li> 39096 </ul> 39097 </td> 39098 39099 </tr> 39100 <tr class="entries_header"> 39101 <th class="th_details" colspan="6">Details</th> 39102 </tr> 39103 <tr class="entry_cont"> 39104 <td class="entry_details" colspan="6"> 39105 <p>A stall duration is how much extra time would get added 39106to the normal minimum frame duration for a repeating request 39107that has streams with non-zero stall.<wbr/></p> 39108<p>This functions similarly to 39109<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth 39110streams.<wbr/></p> 39111<p>All depth output stream formats may have a nonzero stall 39112duration.<wbr/></p> 39113 </td> 39114 </tr> 39115 39116 39117 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39118 <!-- end of entry --> 39119 39120 39121 <tr class="entry" id="static_android.depth.depthIsExclusive"> 39122 <td class="entry_name 39123 " rowspan="3"> 39124 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive 39125 </td> 39126 <td class="entry_type"> 39127 <span class="entry_type_name entry_type_name_enum">byte</span> 39128 39129 <span class="entry_type_visibility"> [public as boolean]</span> 39130 39131 39132 <span class="entry_type_hwlevel">[limited] </span> 39133 39134 39135 39136 <ul class="entry_type_enum"> 39137 <li> 39138 <span class="entry_type_enum_name">FALSE (v3.2)</span> 39139 </li> 39140 <li> 39141 <span class="entry_type_enum_name">TRUE (v3.2)</span> 39142 </li> 39143 </ul> 39144 39145 </td> <!-- entry_type --> 39146 39147 <td class="entry_description"> 39148 <p>Indicates whether a capture request may target both a 39149DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as 39150YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p> 39151 </td> 39152 39153 <td class="entry_units"> 39154 </td> 39155 39156 <td class="entry_range"> 39157 </td> 39158 39159 <td class="entry_hal_version"> 39160 <p>3.<wbr/>2</p> 39161 </td> 39162 39163 <td class="entry_tags"> 39164 </td> 39165 39166 </tr> 39167 <tr class="entries_header"> 39168 <th class="th_details" colspan="6">Details</th> 39169 </tr> 39170 <tr class="entry_cont"> 39171 <td class="entry_details" colspan="6"> 39172 <p>If TRUE,<wbr/> including both depth and color outputs in a single 39173capture request is not supported.<wbr/> An application must interleave color 39174and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types 39175of output.<wbr/></p> 39176<p>Typically,<wbr/> this restriction exists on camera devices that 39177need to emit a specific pattern or wavelength of light to 39178measure depth values,<wbr/> which causes the color image to be 39179corrupted during depth measurement.<wbr/></p> 39180 </td> 39181 </tr> 39182 39183 39184 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39185 <!-- end of entry --> 39186 39187 39188 <tr class="entry" id="static_android.depth.availableRecommendedDepthStreamConfigurations"> 39189 <td class="entry_name 39190 " rowspan="5"> 39191 android.<wbr/>depth.<wbr/>available<wbr/>Recommended<wbr/>Depth<wbr/>Stream<wbr/>Configurations 39192 </td> 39193 <td class="entry_type"> 39194 <span class="entry_type_name">int32</span> 39195 <span class="entry_type_container">x</span> 39196 39197 <span class="entry_type_array"> 39198 n x 5 39199 </span> 39200 <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span> 39201 39202 39203 39204 39205 39206 39207 </td> <!-- entry_type --> 39208 39209 <td class="entry_description"> 39210 <p>Recommended depth stream configurations for common client use cases.<wbr/></p> 39211 </td> 39212 39213 <td class="entry_units"> 39214 </td> 39215 39216 <td class="entry_range"> 39217 </td> 39218 39219 <td class="entry_hal_version"> 39220 <p>3.<wbr/>4</p> 39221 </td> 39222 39223 <td class="entry_tags"> 39224 </td> 39225 39226 </tr> 39227 <tr class="entries_header"> 39228 <th class="th_details" colspan="6">Details</th> 39229 </tr> 39230 <tr class="entry_cont"> 39231 <td class="entry_details" colspan="6"> 39232 <p>Optional subset of the <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a> that 39233contains similar tuples listed as 39234(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/> 39235Camera devices will be able to suggest particular depth stream configurations which are 39236power and performance efficient for specific use cases.<wbr/> For more information about 39237retrieving the suggestions see 39238<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p> 39239 </td> 39240 </tr> 39241 39242 <tr class="entries_header"> 39243 <th class="th_details" colspan="6">HAL Implementation Details</th> 39244 </tr> 39245 <tr class="entry_cont"> 39246 <td class="entry_details" colspan="6"> 39247 <p>Recommended depth configurations are expected to be declared with SNAPSHOT and/<wbr/>or 39248ZSL if supported by the device.<wbr/> 39249For additional details on how to declare recommended stream configurations,<wbr/> check 39250<a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 39251For additional requirements on depth streams please consider 39252<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p> 39253 </td> 39254 </tr> 39255 39256 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39257 <!-- end of entry --> 39258 39259 39260 <tr class="entry" id="static_android.depth.availableDynamicDepthStreamConfigurations"> 39261 <td class="entry_name 39262 " rowspan="5"> 39263 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations 39264 </td> 39265 <td class="entry_type"> 39266 <span class="entry_type_name entry_type_name_enum">int32</span> 39267 <span class="entry_type_container">x</span> 39268 39269 <span class="entry_type_array"> 39270 n x 4 39271 </span> 39272 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 39273 39274 39275 39276 39277 39278 <ul class="entry_type_enum"> 39279 <li> 39280 <span class="entry_type_enum_name">OUTPUT (v3.4)</span> 39281 </li> 39282 <li> 39283 <span class="entry_type_enum_name">INPUT (v3.4)</span> 39284 </li> 39285 </ul> 39286 39287 </td> <!-- entry_type --> 39288 39289 <td class="entry_description"> 39290 <p>The available dynamic depth dataspace stream 39291configurations that this camera device supports 39292(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 39293 </td> 39294 39295 <td class="entry_units"> 39296 </td> 39297 39298 <td class="entry_range"> 39299 </td> 39300 39301 <td class="entry_hal_version"> 39302 <p>3.<wbr/>4</p> 39303 </td> 39304 39305 <td class="entry_tags"> 39306 <ul class="entry_tags"> 39307 <li><a href="#tag_DEPTH">DEPTH</a></li> 39308 </ul> 39309 </td> 39310 39311 </tr> 39312 <tr class="entries_header"> 39313 <th class="th_details" colspan="6">Details</th> 39314 </tr> 39315 <tr class="entry_cont"> 39316 <td class="entry_details" colspan="6"> 39317 <p>These are output stream configurations for use with 39318dataSpace DYNAMIC_<wbr/>DEPTH.<wbr/> The configurations are 39319listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 39320<p>Only devices that support depth output for at least 39321the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map along with 39322HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB with the same size or size with 39323the same aspect ratio can have dynamic depth dataspace 39324stream configuration.<wbr/> <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> also 39325needs to be set to FALSE.<wbr/></p> 39326 </td> 39327 </tr> 39328 39329 <tr class="entries_header"> 39330 <th class="th_details" colspan="6">HAL Implementation Details</th> 39331 </tr> 39332 <tr class="entry_cont"> 39333 <td class="entry_details" colspan="6"> 39334 <p>Do not set this property directly.<wbr/> 39335It is populated by camera framework and must not be set 39336at the HAL layer.<wbr/></p> 39337 </td> 39338 </tr> 39339 39340 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39341 <!-- end of entry --> 39342 39343 39344 <tr class="entry" id="static_android.depth.availableDynamicDepthMinFrameDurations"> 39345 <td class="entry_name 39346 " rowspan="5"> 39347 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 39348 </td> 39349 <td class="entry_type"> 39350 <span class="entry_type_name">int64</span> 39351 <span class="entry_type_container">x</span> 39352 39353 <span class="entry_type_array"> 39354 4 x n 39355 </span> 39356 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 39357 39358 39359 39360 39361 39362 39363 </td> <!-- entry_type --> 39364 39365 <td class="entry_description"> 39366 <p>This lists the minimum frame duration for each 39367format/<wbr/>size combination for dynamic depth output streams.<wbr/></p> 39368 </td> 39369 39370 <td class="entry_units"> 39371 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 39372 </td> 39373 39374 <td class="entry_range"> 39375 </td> 39376 39377 <td class="entry_hal_version"> 39378 <p>3.<wbr/>4</p> 39379 </td> 39380 39381 <td class="entry_tags"> 39382 <ul class="entry_tags"> 39383 <li><a href="#tag_DEPTH">DEPTH</a></li> 39384 </ul> 39385 </td> 39386 39387 </tr> 39388 <tr class="entries_header"> 39389 <th class="th_details" colspan="6">Details</th> 39390 </tr> 39391 <tr class="entry_cont"> 39392 <td class="entry_details" colspan="6"> 39393 <p>This should correspond to the frame duration when only that 39394stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 39395set to either OFF or FAST.<wbr/></p> 39396<p>When multiple streams are used in a request,<wbr/> the minimum frame 39397duration will be max(individual stream min durations).<wbr/></p> 39398<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 39399is the same regardless of whether the stream is input or output.<wbr/></p> 39400 </td> 39401 </tr> 39402 39403 <tr class="entries_header"> 39404 <th class="th_details" colspan="6">HAL Implementation Details</th> 39405 </tr> 39406 <tr class="entry_cont"> 39407 <td class="entry_details" colspan="6"> 39408 <p>Do not set this property directly.<wbr/> 39409It is populated by camera framework and must not be set 39410at the HAL layer.<wbr/></p> 39411 </td> 39412 </tr> 39413 39414 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39415 <!-- end of entry --> 39416 39417 39418 <tr class="entry" id="static_android.depth.availableDynamicDepthStallDurations"> 39419 <td class="entry_name 39420 " rowspan="5"> 39421 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations 39422 </td> 39423 <td class="entry_type"> 39424 <span class="entry_type_name">int64</span> 39425 <span class="entry_type_container">x</span> 39426 39427 <span class="entry_type_array"> 39428 4 x n 39429 </span> 39430 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 39431 39432 39433 39434 39435 39436 39437 </td> <!-- entry_type --> 39438 39439 <td class="entry_description"> 39440 <p>This lists the maximum stall duration for each 39441output format/<wbr/>size combination for dynamic depth streams.<wbr/></p> 39442 </td> 39443 39444 <td class="entry_units"> 39445 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 39446 </td> 39447 39448 <td class="entry_range"> 39449 </td> 39450 39451 <td class="entry_hal_version"> 39452 <p>3.<wbr/>4</p> 39453 </td> 39454 39455 <td class="entry_tags"> 39456 <ul class="entry_tags"> 39457 <li><a href="#tag_DEPTH">DEPTH</a></li> 39458 </ul> 39459 </td> 39460 39461 </tr> 39462 <tr class="entries_header"> 39463 <th class="th_details" colspan="6">Details</th> 39464 </tr> 39465 <tr class="entry_cont"> 39466 <td class="entry_details" colspan="6"> 39467 <p>A stall duration is how much extra time would get added 39468to the normal minimum frame duration for a repeating request 39469that has streams with non-zero stall.<wbr/></p> 39470<p>All dynamic depth output streams may have a nonzero stall 39471duration.<wbr/></p> 39472 </td> 39473 </tr> 39474 39475 <tr class="entries_header"> 39476 <th class="th_details" colspan="6">HAL Implementation Details</th> 39477 </tr> 39478 <tr class="entry_cont"> 39479 <td class="entry_details" colspan="6"> 39480 <p>Do not set this property directly.<wbr/> 39481It is populated by camera framework and must not be set 39482at the HAL layer.<wbr/></p> 39483 </td> 39484 </tr> 39485 39486 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39487 <!-- end of entry --> 39488 39489 39490 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurationsMaximumResolution"> 39491 <td class="entry_name 39492 " rowspan="3"> 39493 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution 39494 </td> 39495 <td class="entry_type"> 39496 <span class="entry_type_name entry_type_name_enum">int32</span> 39497 <span class="entry_type_container">x</span> 39498 39499 <span class="entry_type_array"> 39500 n x 4 39501 </span> 39502 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 39503 39504 39505 39506 39507 39508 <ul class="entry_type_enum"> 39509 <li> 39510 <span class="entry_type_enum_name">OUTPUT (v3.6)</span> 39511 </li> 39512 <li> 39513 <span class="entry_type_enum_name">INPUT (v3.6)</span> 39514 </li> 39515 </ul> 39516 39517 </td> <!-- entry_type --> 39518 39519 <td class="entry_description"> 39520 <p>The available depth dataspace stream 39521configurations that this camera device supports 39522(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream) when a CaptureRequest is submitted with 39523<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to 39524<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 39525 </td> 39526 39527 <td class="entry_units"> 39528 </td> 39529 39530 <td class="entry_range"> 39531 </td> 39532 39533 <td class="entry_hal_version"> 39534 <p>3.<wbr/>6</p> 39535 </td> 39536 39537 <td class="entry_tags"> 39538 <ul class="entry_tags"> 39539 <li><a href="#tag_DEPTH">DEPTH</a></li> 39540 </ul> 39541 </td> 39542 39543 </tr> 39544 <tr class="entries_header"> 39545 <th class="th_details" colspan="6">Details</th> 39546 </tr> 39547 <tr class="entry_cont"> 39548 <td class="entry_details" colspan="6"> 39549 <p>Analogous to <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> for configurations which 39550are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 39551<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 39552 </td> 39553 </tr> 39554 39555 39556 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39557 <!-- end of entry --> 39558 39559 39560 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurationsMaximumResolution"> 39561 <td class="entry_name 39562 " rowspan="3"> 39563 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 39564 </td> 39565 <td class="entry_type"> 39566 <span class="entry_type_name">int64</span> 39567 <span class="entry_type_container">x</span> 39568 39569 <span class="entry_type_array"> 39570 4 x n 39571 </span> 39572 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 39573 39574 39575 39576 39577 39578 39579 </td> <!-- entry_type --> 39580 39581 <td class="entry_description"> 39582 <p>This lists the minimum frame duration for each 39583format/<wbr/>size combination for depth output formats when a CaptureRequest is submitted with 39584<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to 39585<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 39586 </td> 39587 39588 <td class="entry_units"> 39589 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 39590 </td> 39591 39592 <td class="entry_range"> 39593 </td> 39594 39595 <td class="entry_hal_version"> 39596 <p>3.<wbr/>6</p> 39597 </td> 39598 39599 <td class="entry_tags"> 39600 <ul class="entry_tags"> 39601 <li><a href="#tag_DEPTH">DEPTH</a></li> 39602 </ul> 39603 </td> 39604 39605 </tr> 39606 <tr class="entries_header"> 39607 <th class="th_details" colspan="6">Details</th> 39608 </tr> 39609 <tr class="entry_cont"> 39610 <td class="entry_details" colspan="6"> 39611 <p>Analogous to <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations which 39612are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 39613<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 39614<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 39615<a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution</a> for more details about 39616calculating the max frame rate.<wbr/></p> 39617 </td> 39618 </tr> 39619 39620 39621 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39622 <!-- end of entry --> 39623 39624 39625 <tr class="entry" id="static_android.depth.availableDepthStallDurationsMaximumResolution"> 39626 <td class="entry_name 39627 " rowspan="3"> 39628 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 39629 </td> 39630 <td class="entry_type"> 39631 <span class="entry_type_name">int64</span> 39632 <span class="entry_type_container">x</span> 39633 39634 <span class="entry_type_array"> 39635 4 x n 39636 </span> 39637 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 39638 39639 39640 39641 39642 39643 39644 </td> <!-- entry_type --> 39645 39646 <td class="entry_description"> 39647 <p>This lists the maximum stall duration for each 39648output format/<wbr/>size combination for depth streams for CaptureRequests where 39649<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 39650<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 39651 </td> 39652 39653 <td class="entry_units"> 39654 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 39655 </td> 39656 39657 <td class="entry_range"> 39658 </td> 39659 39660 <td class="entry_hal_version"> 39661 <p>3.<wbr/>6</p> 39662 </td> 39663 39664 <td class="entry_tags"> 39665 <ul class="entry_tags"> 39666 <li><a href="#tag_DEPTH">DEPTH</a></li> 39667 </ul> 39668 </td> 39669 39670 </tr> 39671 <tr class="entries_header"> 39672 <th class="th_details" colspan="6">Details</th> 39673 </tr> 39674 <tr class="entry_cont"> 39675 <td class="entry_details" colspan="6"> 39676 <p>Analogous to <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a>,<wbr/> for configurations which 39677are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 39678<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 39679 </td> 39680 </tr> 39681 39682 39683 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39684 <!-- end of entry --> 39685 39686 39687 <tr class="entry" id="static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution"> 39688 <td class="entry_name 39689 " rowspan="5"> 39690 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution 39691 </td> 39692 <td class="entry_type"> 39693 <span class="entry_type_name entry_type_name_enum">int32</span> 39694 <span class="entry_type_container">x</span> 39695 39696 <span class="entry_type_array"> 39697 n x 4 39698 </span> 39699 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 39700 39701 39702 39703 39704 39705 <ul class="entry_type_enum"> 39706 <li> 39707 <span class="entry_type_enum_name">OUTPUT (v3.6)</span> 39708 </li> 39709 <li> 39710 <span class="entry_type_enum_name">INPUT (v3.6)</span> 39711 </li> 39712 </ul> 39713 39714 </td> <!-- entry_type --> 39715 39716 <td class="entry_description"> 39717 <p>The available dynamic depth dataspace stream 39718configurations that this camera device supports (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> 39719output/<wbr/>input stream) for CaptureRequests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 39720<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 39721 </td> 39722 39723 <td class="entry_units"> 39724 </td> 39725 39726 <td class="entry_range"> 39727 </td> 39728 39729 <td class="entry_hal_version"> 39730 <p>3.<wbr/>6</p> 39731 </td> 39732 39733 <td class="entry_tags"> 39734 <ul class="entry_tags"> 39735 <li><a href="#tag_DEPTH">DEPTH</a></li> 39736 </ul> 39737 </td> 39738 39739 </tr> 39740 <tr class="entries_header"> 39741 <th class="th_details" colspan="6">Details</th> 39742 </tr> 39743 <tr class="entry_cont"> 39744 <td class="entry_details" colspan="6"> 39745 <p>Analogous to <a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> for configurations 39746which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 39747<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 39748 </td> 39749 </tr> 39750 39751 <tr class="entries_header"> 39752 <th class="th_details" colspan="6">HAL Implementation Details</th> 39753 </tr> 39754 <tr class="entry_cont"> 39755 <td class="entry_details" colspan="6"> 39756 <p>Do not set this property directly.<wbr/> 39757It is populated by camera framework and must not be set 39758at the HAL layer.<wbr/></p> 39759 </td> 39760 </tr> 39761 39762 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39763 <!-- end of entry --> 39764 39765 39766 <tr class="entry" id="static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution"> 39767 <td class="entry_name 39768 " rowspan="5"> 39769 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 39770 </td> 39771 <td class="entry_type"> 39772 <span class="entry_type_name">int64</span> 39773 <span class="entry_type_container">x</span> 39774 39775 <span class="entry_type_array"> 39776 4 x n 39777 </span> 39778 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 39779 39780 39781 39782 39783 39784 39785 </td> <!-- entry_type --> 39786 39787 <td class="entry_description"> 39788 <p>This lists the minimum frame duration for each 39789format/<wbr/>size combination for dynamic depth output streams for CaptureRequests where 39790<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 39791<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 39792 </td> 39793 39794 <td class="entry_units"> 39795 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 39796 </td> 39797 39798 <td class="entry_range"> 39799 </td> 39800 39801 <td class="entry_hal_version"> 39802 <p>3.<wbr/>6</p> 39803 </td> 39804 39805 <td class="entry_tags"> 39806 <ul class="entry_tags"> 39807 <li><a href="#tag_DEPTH">DEPTH</a></li> 39808 </ul> 39809 </td> 39810 39811 </tr> 39812 <tr class="entries_header"> 39813 <th class="th_details" colspan="6">Details</th> 39814 </tr> 39815 <tr class="entry_cont"> 39816 <td class="entry_details" colspan="6"> 39817 <p>Analogous to <a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations 39818which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 39819<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 39820 </td> 39821 </tr> 39822 39823 <tr class="entries_header"> 39824 <th class="th_details" colspan="6">HAL Implementation Details</th> 39825 </tr> 39826 <tr class="entry_cont"> 39827 <td class="entry_details" colspan="6"> 39828 <p>Do not set this property directly.<wbr/> 39829It is populated by camera framework and must not be set 39830at the HAL layer.<wbr/></p> 39831 </td> 39832 </tr> 39833 39834 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39835 <!-- end of entry --> 39836 39837 39838 <tr class="entry" id="static_android.depth.availableDynamicDepthStallDurationsMaximumResolution"> 39839 <td class="entry_name 39840 " rowspan="5"> 39841 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 39842 </td> 39843 <td class="entry_type"> 39844 <span class="entry_type_name">int64</span> 39845 <span class="entry_type_container">x</span> 39846 39847 <span class="entry_type_array"> 39848 4 x n 39849 </span> 39850 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 39851 39852 39853 39854 39855 39856 39857 </td> <!-- entry_type --> 39858 39859 <td class="entry_description"> 39860 <p>This lists the maximum stall duration for each 39861output format/<wbr/>size combination for dynamic depth streams for CaptureRequests where 39862<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 39863<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 39864 </td> 39865 39866 <td class="entry_units"> 39867 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 39868 </td> 39869 39870 <td class="entry_range"> 39871 </td> 39872 39873 <td class="entry_hal_version"> 39874 <p>3.<wbr/>6</p> 39875 </td> 39876 39877 <td class="entry_tags"> 39878 <ul class="entry_tags"> 39879 <li><a href="#tag_DEPTH">DEPTH</a></li> 39880 </ul> 39881 </td> 39882 39883 </tr> 39884 <tr class="entries_header"> 39885 <th class="th_details" colspan="6">Details</th> 39886 </tr> 39887 <tr class="entry_cont"> 39888 <td class="entry_details" colspan="6"> 39889 <p>Analogous to <a href="#static_android.depth.availableDynamicDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations</a>,<wbr/> for configurations 39890which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 39891<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 39892 </td> 39893 </tr> 39894 39895 <tr class="entries_header"> 39896 <th class="th_details" colspan="6">HAL Implementation Details</th> 39897 </tr> 39898 <tr class="entry_cont"> 39899 <td class="entry_details" colspan="6"> 39900 <p>Do not set this property directly.<wbr/> 39901It is populated by camera framework and must not be set 39902at the HAL layer.<wbr/></p> 39903 </td> 39904 </tr> 39905 39906 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 39907 <!-- end of entry --> 39908 39909 39910 39911 <!-- end of kind --> 39912 </tbody> 39913 39914 <!-- end of section --> 39915 <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr> 39916 39917 39918 <tr><td colspan="7" class="kind">static</td></tr> 39919 39920 <thead class="entries_header"> 39921 <tr> 39922 <th class="th_name">Property Name</th> 39923 <th class="th_type">Type</th> 39924 <th class="th_description">Description</th> 39925 <th class="th_units">Units</th> 39926 <th class="th_range">Range</th> 39927 <th class="th_hal_version">Initial HIDL HAL version</th> 39928 <th class="th_tags">Tags</th> 39929 </tr> 39930 </thead> 39931 39932 <tbody> 39933 39934 39935 39936 39937 39938 39939 39940 39941 39942 39943 <tr class="entry" id="static_android.logicalMultiCamera.physicalIds"> 39944 <td class="entry_name 39945 " rowspan="5"> 39946 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids 39947 </td> 39948 <td class="entry_type"> 39949 <span class="entry_type_name">byte</span> 39950 <span class="entry_type_container">x</span> 39951 39952 <span class="entry_type_array"> 39953 n 39954 </span> 39955 <span class="entry_type_visibility"> [ndk_public]</span> 39956 39957 39958 <span class="entry_type_hwlevel">[limited] </span> 39959 39960 39961 39962 39963 </td> <!-- entry_type --> 39964 39965 <td class="entry_description"> 39966 <p>String containing the ids of the underlying physical cameras.<wbr/></p> 39967 </td> 39968 39969 <td class="entry_units"> 39970 UTF-8 null-terminated string 39971 </td> 39972 39973 <td class="entry_range"> 39974 </td> 39975 39976 <td class="entry_hal_version"> 39977 <p>3.<wbr/>3</p> 39978 </td> 39979 39980 <td class="entry_tags"> 39981 <ul class="entry_tags"> 39982 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> 39983 </ul> 39984 </td> 39985 39986 </tr> 39987 <tr class="entries_header"> 39988 <th class="th_details" colspan="6">Details</th> 39989 </tr> 39990 <tr class="entry_cont"> 39991 <td class="entry_details" colspan="6"> 39992 <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera IDs.<wbr/> 39993The null terminator for physical camera ID must be preserved so that the whole string 39994can be tokenized using '\0' to generate list of physical camera IDs.<wbr/></p> 39995<p>For example,<wbr/> if the physical camera IDs of the logical camera are "2" and "3",<wbr/> the 39996value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p> 39997<p>The number of physical camera IDs must be no less than 2.<wbr/></p> 39998 </td> 39999 </tr> 40000 40001 <tr class="entries_header"> 40002 <th class="th_details" colspan="6">HAL Implementation Details</th> 40003 </tr> 40004 <tr class="entry_cont"> 40005 <td class="entry_details" colspan="6"> 40006 <p>Each physical camera id should uniquely identify a camera lens in the system.<wbr/> 40007So if each camera lens only backs one logical camera,<wbr/> all camera IDs in the system,<wbr/> 40008physical IDs or non-physical IDs,<wbr/> should be unique.<wbr/></p> 40009<p>In rare cases,<wbr/> one camera lens backs two different logical cameras,<wbr/> the 40010physicalIds of both logical cameras should contain a physical camera ID 40011identifying that same camera lens.<wbr/> For example,<wbr/> if the mobile device has 3 rear facing 40012cameras and no front facing cameras,<wbr/> and the 3 rear facing lenses may be modelled as 400132 logical cameras:</p> 40014<ul> 40015<li>"device@1.<wbr/>0/<wbr/>internal/<wbr/>10": physicalIds: "camera0",<wbr/> "camera42"</li> 40016<li>"device@1.<wbr/>0/<wbr/>internal/<wbr/>11": physicalIds: "camera1",<wbr/> "camera42"</li> 40017</ul> 40018<p>In this case,<wbr/> the two logical cameras are conflicting devices because they are backed 40019by a common lens.<wbr/></p> 40020<p>Physical camera IDs can be an arbitrary string not containing '\0'.<wbr/></p> 40021 </td> 40022 </tr> 40023 40024 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 40025 <!-- end of entry --> 40026 40027 40028 <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType"> 40029 <td class="entry_name 40030 " rowspan="3"> 40031 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type 40032 </td> 40033 <td class="entry_type"> 40034 <span class="entry_type_name entry_type_name_enum">byte</span> 40035 40036 <span class="entry_type_visibility"> [public]</span> 40037 40038 40039 <span class="entry_type_hwlevel">[limited] </span> 40040 40041 40042 40043 <ul class="entry_type_enum"> 40044 <li> 40045 <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span> 40046 <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/> 40047the timestamp of an image from a physical stream is only an approximation of the 40048image sensor start-of-exposure time.<wbr/></p></span> 40049 </li> 40050 <li> 40051 <span class="entry_type_enum_name">CALIBRATED (v3.3)</span> 40052 <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/> 40053and the timestamp of a physical stream image accurately reflects its 40054start-of-exposure time.<wbr/></p></span> 40055 </li> 40056 </ul> 40057 40058 </td> <!-- entry_type --> 40059 40060 <td class="entry_description"> 40061 <p>The accuracy of frame timestamp synchronization between physical cameras</p> 40062 </td> 40063 40064 <td class="entry_units"> 40065 </td> 40066 40067 <td class="entry_range"> 40068 </td> 40069 40070 <td class="entry_hal_version"> 40071 <p>3.<wbr/>3</p> 40072 </td> 40073 40074 <td class="entry_tags"> 40075 <ul class="entry_tags"> 40076 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> 40077 </ul> 40078 </td> 40079 40080 </tr> 40081 <tr class="entries_header"> 40082 <th class="th_details" colspan="6">Details</th> 40083 </tr> 40084 <tr class="entry_cont"> 40085 <td class="entry_details" colspan="6"> 40086 <p>The accuracy of the frame timestamp synchronization determines the physical cameras' 40087ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/> the 40088physical camera sensors usually run in leader/<wbr/>follower mode where one sensor generates a 40089timing signal for the other,<wbr/> so that their shutter time is synchronized.<wbr/> For APPROXIMATE 40090sensorSyncType,<wbr/> the camera sensors usually run in leader/<wbr/>leader mode,<wbr/> where both sensors 40091use their own timing generator,<wbr/> and there could be offset between their start of exposure.<wbr/></p> 40092<p>In both cases,<wbr/> all images generated for a particular capture request still carry the same 40093timestamps,<wbr/> so that they can be used to look up the matching frame number and 40094onCaptureStarted callback.<wbr/></p> 40095<p>This tag is only applicable if the logical camera device supports concurrent physical 40096streams from different physical cameras.<wbr/></p> 40097 </td> 40098 </tr> 40099 40100 40101 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 40102 <!-- end of entry --> 40103 40104 40105 40106 <!-- end of kind --> 40107 </tbody> 40108 <tr><td colspan="7" class="kind">dynamic</td></tr> 40109 40110 <thead class="entries_header"> 40111 <tr> 40112 <th class="th_name">Property Name</th> 40113 <th class="th_type">Type</th> 40114 <th class="th_description">Description</th> 40115 <th class="th_units">Units</th> 40116 <th class="th_range">Range</th> 40117 <th class="th_hal_version">Initial HIDL HAL version</th> 40118 <th class="th_tags">Tags</th> 40119 </tr> 40120 </thead> 40121 40122 <tbody> 40123 40124 40125 40126 40127 40128 40129 40130 40131 40132 40133 <tr class="entry" id="dynamic_android.logicalMultiCamera.activePhysicalId"> 40134 <td class="entry_name 40135 " rowspan="5"> 40136 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id 40137 </td> 40138 <td class="entry_type"> 40139 <span class="entry_type_name">byte</span> 40140 40141 <span class="entry_type_visibility"> [public as string]</span> 40142 40143 40144 40145 40146 40147 40148 </td> <!-- entry_type --> 40149 40150 <td class="entry_description"> 40151 <p>String containing the ID of the underlying active physical camera.<wbr/></p> 40152 </td> 40153 40154 <td class="entry_units"> 40155 UTF-8 null-terminated string 40156 </td> 40157 40158 <td class="entry_range"> 40159 </td> 40160 40161 <td class="entry_hal_version"> 40162 <p>3.<wbr/>4</p> 40163 </td> 40164 40165 <td class="entry_tags"> 40166 <ul class="entry_tags"> 40167 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> 40168 </ul> 40169 </td> 40170 40171 </tr> 40172 <tr class="entries_header"> 40173 <th class="th_details" colspan="6">Details</th> 40174 </tr> 40175 <tr class="entry_cont"> 40176 <td class="entry_details" colspan="6"> 40177 <p>The ID of the active physical camera that's backing the logical camera.<wbr/> All camera 40178streams and metadata that are not physical camera specific will be originating from this 40179physical camera.<wbr/></p> 40180<p>For a logical camera made up of physical cameras where each camera's lenses have 40181different characteristics,<wbr/> the camera device may choose to switch between the physical 40182cameras when application changes FOCAL_<wbr/>LENGTH or SCALER_<wbr/>CROP_<wbr/>REGION.<wbr/> 40183At the time of lens switch,<wbr/> this result metadata reflects the new active physical camera 40184ID.<wbr/></p> 40185<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/> 40186When available,<wbr/> this must be one of valid physical IDs backing this logical multi-camera.<wbr/> 40187If this key is not available for a logical multi-camera,<wbr/> the camera device implementation 40188may still switch between different active physical cameras based on use case,<wbr/> but the 40189current active physical camera information won't be available to the application.<wbr/></p> 40190 </td> 40191 </tr> 40192 40193 <tr class="entries_header"> 40194 <th class="th_details" colspan="6">HAL Implementation Details</th> 40195 </tr> 40196 <tr class="entry_cont"> 40197 <td class="entry_details" colspan="6"> 40198 <p>Staring from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> the tag must be available in the capture 40199result metadata to indicate current active physical camera ID.<wbr/></p> 40200 </td> 40201 </tr> 40202 40203 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 40204 <!-- end of entry --> 40205 40206 40207 <tr class="entry" id="dynamic_android.logicalMultiCamera.activePhysicalSensorCropRegion"> 40208 <td class="entry_name 40209 " rowspan="5"> 40210 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Sensor<wbr/>Crop<wbr/>Region 40211 </td> 40212 <td class="entry_type"> 40213 <span class="entry_type_name">int32</span> 40214 <span class="entry_type_container">x</span> 40215 40216 <span class="entry_type_array"> 40217 4 40218 </span> 40219 <span class="entry_type_visibility"> [public as rectangle]</span> 40220 40221 40222 40223 40224 40225 40226 </td> <!-- entry_type --> 40227 40228 <td class="entry_description"> 40229 <p>The current region of the active physical sensor that will be read out for this 40230capture.<wbr/></p> 40231 </td> 40232 40233 <td class="entry_units"> 40234 Pixel coordinates relative to 40235 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 40236 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size of the currently 40237 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id depending on distortion correction capability 40238 and mode 40239 </td> 40240 40241 <td class="entry_range"> 40242 </td> 40243 40244 <td class="entry_hal_version"> 40245 <p>3.<wbr/>10</p> 40246 </td> 40247 40248 <td class="entry_tags"> 40249 <ul class="entry_tags"> 40250 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> 40251 </ul> 40252 </td> 40253 40254 </tr> 40255 <tr class="entries_header"> 40256 <th class="th_details" colspan="6">Details</th> 40257 </tr> 40258 <tr class="entry_cont"> 40259 <td class="entry_details" colspan="6"> 40260 <p>This capture result matches with <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> on non-logical single 40261camera sensor devices.<wbr/> In case of logical cameras that can switch between several 40262physical devices in response to <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> this capture result will 40263not behave like <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> where the 40264combination of both reflects the effective zoom and crop of the logical camera output.<wbr/> 40265Instead,<wbr/> this capture result value will describe the zoom and crop of the active physical 40266device.<wbr/> Some examples of when the value of this capture result will change include 40267switches between different physical lenses,<wbr/> switches between regular and maximum 40268resolution pixel mode and going through the device digital or optical range.<wbr/> 40269This capture result is similar to <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> with respect to distortion 40270correction.<wbr/> When the distortion correction mode is OFF,<wbr/> the coordinate system follows 40271<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 (0,<wbr/> 0) being the top-left pixel 40272of the pre-correction active array.<wbr/> When the distortion correction mode is not OFF,<wbr/> 40273the coordinate system follows <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 40274the top-left pixel of the active array.<wbr/></p> 40275<p>For camera devices with the 40276<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> 40277capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> 40278lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> 40279the current active physical device 40280<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 40281<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the 40282coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 40283<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 40284 </td> 40285 </tr> 40286 40287 <tr class="entries_header"> 40288 <th class="th_details" colspan="6">HAL Implementation Details</th> 40289 </tr> 40290 <tr class="entry_cont"> 40291 <td class="entry_details" colspan="6"> 40292 <p>The output streams must maintain square pixels at all 40293times,<wbr/> no matter what the relative aspect ratios of the 40294crop region and the stream are.<wbr/> Negative values for 40295corner are allowed for raw output if full pixel array is 40296larger than active pixel array.<wbr/> Width and height may be 40297rounded to nearest larger supportable width,<wbr/> especially 40298for raw output,<wbr/> where only a few fixed scales may be 40299possible.<wbr/></p> 40300 </td> 40301 </tr> 40302 40303 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 40304 <!-- end of entry --> 40305 40306 40307 40308 <!-- end of kind --> 40309 </tbody> 40310 40311 <!-- end of section --> 40312 <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr> 40313 40314 40315 <tr><td colspan="7" class="kind">controls</td></tr> 40316 40317 <thead class="entries_header"> 40318 <tr> 40319 <th class="th_name">Property Name</th> 40320 <th class="th_type">Type</th> 40321 <th class="th_description">Description</th> 40322 <th class="th_units">Units</th> 40323 <th class="th_range">Range</th> 40324 <th class="th_hal_version">Initial HIDL HAL version</th> 40325 <th class="th_tags">Tags</th> 40326 </tr> 40327 </thead> 40328 40329 <tbody> 40330 40331 40332 40333 40334 40335 40336 40337 40338 40339 40340 <tr class="entry" id="controls_android.distortionCorrection.mode"> 40341 <td class="entry_name 40342 " rowspan="3"> 40343 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode 40344 </td> 40345 <td class="entry_type"> 40346 <span class="entry_type_name entry_type_name_enum">byte</span> 40347 40348 <span class="entry_type_visibility"> [public]</span> 40349 40350 40351 40352 40353 40354 <ul class="entry_type_enum"> 40355 <li> 40356 <span class="entry_type_enum_name">OFF (v3.3)</span> 40357 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span> 40358 </li> 40359 <li> 40360 <span class="entry_type_enum_name">FAST (v3.3)</span> 40361 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate 40362relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would 40363reduce frame rate relative to sensor.<wbr/></p></span> 40364 </li> 40365 <li> 40366 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span> 40367 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of 40368possibly reduced frame rate relative to sensor output.<wbr/></p></span> 40369 </li> 40370 </ul> 40371 40372 </td> <!-- entry_type --> 40373 40374 <td class="entry_description"> 40375 <p>Mode of operation for the lens distortion correction block.<wbr/></p> 40376 </td> 40377 40378 <td class="entry_units"> 40379 </td> 40380 40381 <td class="entry_range"> 40382 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p> 40383 </td> 40384 40385 <td class="entry_hal_version"> 40386 <p>3.<wbr/>3</p> 40387 </td> 40388 40389 <td class="entry_tags"> 40390 </td> 40391 40392 </tr> 40393 <tr class="entries_header"> 40394 <th class="th_details" colspan="6">Details</th> 40395 </tr> 40396 <tr class="entry_cont"> 40397 <td class="entry_details" colspan="6"> 40398 <p>The lens distortion correction block attempts to improve image quality by fixing 40399radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If 40400available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p> 40401<p>OFF means no distortion correction is done.<wbr/></p> 40402<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be 40403applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality 40404correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device 40405will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if 40406any correction at all would slow down capture rate.<wbr/> Every output stream will have a 40407similar amount of enhancement applied.<wbr/></p> 40408<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is 40409not applied to any RAW output.<wbr/></p> 40410<p>This control will be on by default on devices that support this control.<wbr/> Applications 40411disabling distortion correction need to pay extra attention with the coordinate system of 40412metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/> 40413metadata coordinates follow the coordinate system of 40414<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 40415coordinates 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 40416camera device will map these metadata fields to match the corrected image produced by the 40417camera device,<wbr/> for both capture requests and results.<wbr/> However,<wbr/> this mapping is not very 40418precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/> Only linear 40419scaling between the active array and precorrection active array coordinates is 40420performed.<wbr/> Applications that require precise correction of metadata need to undo that 40421linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's 40422own requirements.<wbr/></p> 40423<p>The full list of metadata that is affected in this way by distortion correction is:</p> 40424<ul> 40425<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 40426<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 40427<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 40428<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 40429<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li> 40430</ul> 40431 </td> 40432 </tr> 40433 40434 40435 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 40436 <!-- end of entry --> 40437 40438 40439 40440 <!-- end of kind --> 40441 </tbody> 40442 <tr><td colspan="7" class="kind">static</td></tr> 40443 40444 <thead class="entries_header"> 40445 <tr> 40446 <th class="th_name">Property Name</th> 40447 <th class="th_type">Type</th> 40448 <th class="th_description">Description</th> 40449 <th class="th_units">Units</th> 40450 <th class="th_range">Range</th> 40451 <th class="th_hal_version">Initial HIDL HAL version</th> 40452 <th class="th_tags">Tags</th> 40453 </tr> 40454 </thead> 40455 40456 <tbody> 40457 40458 40459 40460 40461 40462 40463 40464 40465 40466 40467 <tr class="entry" id="static_android.distortionCorrection.availableModes"> 40468 <td class="entry_name 40469 " rowspan="5"> 40470 android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes 40471 </td> 40472 <td class="entry_type"> 40473 <span class="entry_type_name">byte</span> 40474 <span class="entry_type_container">x</span> 40475 40476 <span class="entry_type_array"> 40477 n 40478 </span> 40479 <span class="entry_type_visibility"> [public as enumList]</span> 40480 40481 40482 40483 40484 <div class="entry_type_notes">list of enums</div> 40485 40486 40487 </td> <!-- entry_type --> 40488 40489 <td class="entry_description"> 40490 <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are 40491supported by this camera device.<wbr/></p> 40492 </td> 40493 40494 <td class="entry_units"> 40495 </td> 40496 40497 <td class="entry_range"> 40498 <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p> 40499 </td> 40500 40501 <td class="entry_hal_version"> 40502 <p>3.<wbr/>3</p> 40503 </td> 40504 40505 <td class="entry_tags"> 40506 <ul class="entry_tags"> 40507 <li><a href="#tag_V1">V1</a></li> 40508 <li><a href="#tag_REPROC">REPROC</a></li> 40509 </ul> 40510 </td> 40511 40512 </tr> 40513 <tr class="entries_header"> 40514 <th class="th_details" colspan="6">Details</th> 40515 </tr> 40516 <tr class="entry_cont"> 40517 <td class="entry_details" colspan="6"> 40518 <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/> 40519All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p> 40520 </td> 40521 </tr> 40522 40523 <tr class="entries_header"> 40524 <th class="th_details" colspan="6">HAL Implementation Details</th> 40525 </tr> 40526 <tr class="entry_cont"> 40527 <td class="entry_details" colspan="6"> 40528 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available 40529on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 40530That is,<wbr/> if the highest quality implementation on the camera device does not slow down 40531capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 40532 </td> 40533 </tr> 40534 40535 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 40536 <!-- end of entry --> 40537 40538 40539 40540 <!-- end of kind --> 40541 </tbody> 40542 <tr><td colspan="7" class="kind">dynamic</td></tr> 40543 40544 <thead class="entries_header"> 40545 <tr> 40546 <th class="th_name">Property Name</th> 40547 <th class="th_type">Type</th> 40548 <th class="th_description">Description</th> 40549 <th class="th_units">Units</th> 40550 <th class="th_range">Range</th> 40551 <th class="th_hal_version">Initial HIDL HAL version</th> 40552 <th class="th_tags">Tags</th> 40553 </tr> 40554 </thead> 40555 40556 <tbody> 40557 40558 40559 40560 40561 40562 40563 40564 40565 40566 40567 <tr class="entry" id="dynamic_android.distortionCorrection.mode"> 40568 <td class="entry_name 40569 " rowspan="3"> 40570 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode 40571 </td> 40572 <td class="entry_type"> 40573 <span class="entry_type_name entry_type_name_enum">byte</span> 40574 40575 <span class="entry_type_visibility"> [public]</span> 40576 40577 40578 40579 40580 40581 <ul class="entry_type_enum"> 40582 <li> 40583 <span class="entry_type_enum_name">OFF (v3.3)</span> 40584 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span> 40585 </li> 40586 <li> 40587 <span class="entry_type_enum_name">FAST (v3.3)</span> 40588 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate 40589relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would 40590reduce frame rate relative to sensor.<wbr/></p></span> 40591 </li> 40592 <li> 40593 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span> 40594 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of 40595possibly reduced frame rate relative to sensor output.<wbr/></p></span> 40596 </li> 40597 </ul> 40598 40599 </td> <!-- entry_type --> 40600 40601 <td class="entry_description"> 40602 <p>Mode of operation for the lens distortion correction block.<wbr/></p> 40603 </td> 40604 40605 <td class="entry_units"> 40606 </td> 40607 40608 <td class="entry_range"> 40609 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p> 40610 </td> 40611 40612 <td class="entry_hal_version"> 40613 <p>3.<wbr/>3</p> 40614 </td> 40615 40616 <td class="entry_tags"> 40617 </td> 40618 40619 </tr> 40620 <tr class="entries_header"> 40621 <th class="th_details" colspan="6">Details</th> 40622 </tr> 40623 <tr class="entry_cont"> 40624 <td class="entry_details" colspan="6"> 40625 <p>The lens distortion correction block attempts to improve image quality by fixing 40626radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If 40627available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p> 40628<p>OFF means no distortion correction is done.<wbr/></p> 40629<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be 40630applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality 40631correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device 40632will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if 40633any correction at all would slow down capture rate.<wbr/> Every output stream will have a 40634similar amount of enhancement applied.<wbr/></p> 40635<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is 40636not applied to any RAW output.<wbr/></p> 40637<p>This control will be on by default on devices that support this control.<wbr/> Applications 40638disabling distortion correction need to pay extra attention with the coordinate system of 40639metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/> 40640metadata coordinates follow the coordinate system of 40641<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 40642coordinates 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 40643camera device will map these metadata fields to match the corrected image produced by the 40644camera device,<wbr/> for both capture requests and results.<wbr/> However,<wbr/> this mapping is not very 40645precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/> Only linear 40646scaling between the active array and precorrection active array coordinates is 40647performed.<wbr/> Applications that require precise correction of metadata need to undo that 40648linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's 40649own requirements.<wbr/></p> 40650<p>The full list of metadata that is affected in this way by distortion correction is:</p> 40651<ul> 40652<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 40653<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 40654<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 40655<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 40656<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li> 40657</ul> 40658 </td> 40659 </tr> 40660 40661 40662 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 40663 <!-- end of entry --> 40664 40665 40666 40667 <!-- end of kind --> 40668 </tbody> 40669 40670 <!-- end of section --> 40671 <tr><td colspan="7" id="section_heic" class="section">heic</td></tr> 40672 40673 40674 <tr><td colspan="7" class="kind">static</td></tr> 40675 40676 <thead class="entries_header"> 40677 <tr> 40678 <th class="th_name">Property Name</th> 40679 <th class="th_type">Type</th> 40680 <th class="th_description">Description</th> 40681 <th class="th_units">Units</th> 40682 <th class="th_range">Range</th> 40683 <th class="th_hal_version">Initial HIDL HAL version</th> 40684 <th class="th_tags">Tags</th> 40685 </tr> 40686 </thead> 40687 40688 <tbody> 40689 40690 40691 40692 40693 40694 40695 40696 40697 40698 40699 40700 40701 <tr class="entry" id="static_android.heic.info.supported"> 40702 <td class="entry_name 40703 " rowspan="3"> 40704 android.<wbr/>heic.<wbr/>info.<wbr/>supported 40705 </td> 40706 <td class="entry_type"> 40707 <span class="entry_type_name entry_type_name_enum">byte</span> 40708 40709 <span class="entry_type_visibility"> [system as boolean]</span> 40710 40711 40712 <span class="entry_type_hwlevel">[limited] </span> 40713 40714 40715 40716 <ul class="entry_type_enum"> 40717 <li> 40718 <span class="entry_type_enum_name">FALSE (v3.4)</span> 40719 </li> 40720 <li> 40721 <span class="entry_type_enum_name">TRUE (v3.4)</span> 40722 </li> 40723 </ul> 40724 40725 </td> <!-- entry_type --> 40726 40727 <td class="entry_description"> 40728 <p>Whether this camera device can support identical set of stream combinations 40729involving HEIC image format,<wbr/> compared to the 40730<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-guaranteed-configurations">table of combinations</a> 40731involving JPEG image format required for the device's hardware 40732level and capabilities.<wbr/></p> 40733 </td> 40734 40735 <td class="entry_units"> 40736 </td> 40737 40738 <td class="entry_range"> 40739 </td> 40740 40741 <td class="entry_hal_version"> 40742 <p>3.<wbr/>4</p> 40743 </td> 40744 40745 <td class="entry_tags"> 40746 <ul class="entry_tags"> 40747 <li><a href="#tag_HEIC">HEIC</a></li> 40748 </ul> 40749 </td> 40750 40751 </tr> 40752 <tr class="entries_header"> 40753 <th class="th_details" colspan="6">Details</th> 40754 </tr> 40755 <tr class="entry_cont"> 40756 <td class="entry_details" colspan="6"> 40757 <p>All the static,<wbr/> control and dynamic metadata tags related to JPEG apply to HEIC formats 40758as 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 40759used to control the orientation and quality of the HEIC image.<wbr/> Configuring JPEG and 40760HEIC streams at the same time is not supported.<wbr/></p> 40761<p>If a camera device supports HEIC format (ISO/<wbr/>IEC 23008-12),<wbr/> not only does it 40762support the existing mandatory stream 40763<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice#legacy-level-guaranteed-configurations">combinations</a> 40764required for the device's hardware level and capabilities,<wbr/> it also 40765supports swapping each JPEG stream with HEIC stream in all guaranteed combinations.<wbr/></p> 40766<p>For every HEIC stream configured by the application,<wbr/> the camera framework sets up 2 40767internal streams with camera HAL:</p> 40768<ul> 40769<li>A YUV_<wbr/>420_<wbr/>888 or IMPLEMENTATION_<wbr/>DEFINED HAL stream as input to HEIC or HEVC encoder.<wbr/></li> 40770<li>A BLOB stream with JPEG_<wbr/>APPS_<wbr/>SEGMENTS dataspace to extract application markers 40771including EXIF and thumbnail to be saved in HEIF container.<wbr/></li> 40772</ul> 40773<p>A camera device can output HEIC format to the application if and only if:</p> 40774<ul> 40775<li>The system contains a HEIC or HEVC encoder with constant quality mode,<wbr/> and</li> 40776<li>This tag is set to TRUE,<wbr/> meaning that camera HAL supports replacing JPEG streams in 40777all mandatory stream combinations with a [YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED stream + 40778JPEG_<wbr/>APPS_<wbr/>SEGMENT BLOB stream] combo.<wbr/></li> 40779</ul> 40780<p>As an example,<wbr/> if the camera device's hardware level is LIMITED,<wbr/> and it supports HEIC,<wbr/> 40781in addition to the required stream combinations,<wbr/> HAL must support below stream 40782combinations as well:</p> 40783<ul> 40784<li>IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li> 40785<li>PRIV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li> 40786<li>YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li> 40787<li>PRIV PREVIEW + YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + 40788JPEG_<wbr/>SEGMENTS_<wbr/>BLOB</li> 40789</ul> 40790<p>The selection logic between YUV_<wbr/>420_<wbr/>888 and IMPLEMENTATION_<wbr/>DEFINED for HAL internal 40791stream is as follows:</p> 40792<pre><code>if (HEIC encoder exists and supports the size) { 40793 use IMPLEMENTATION_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>IMAGE_<wbr/>ENCODER usage flag; 40794} else { 40795 //<wbr/> HVC encoder exists 40796 if (size is less than framework predefined tile size) { 40797 use IMPLEMENTATINO_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>VIDEO_<wbr/>ENCODER usage flag; 40798 } else { 40799 use YUV_<wbr/>420_<wbr/>888; 40800 } 40801} 40802</code></pre> 40803 </td> 40804 </tr> 40805 40806 40807 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 40808 <!-- end of entry --> 40809 40810 40811 <tr class="entry" id="static_android.heic.info.maxJpegAppSegmentsCount"> 40812 <td class="entry_name 40813 " rowspan="3"> 40814 android.<wbr/>heic.<wbr/>info.<wbr/>max<wbr/>Jpeg<wbr/>App<wbr/>Segments<wbr/>Count 40815 </td> 40816 <td class="entry_type"> 40817 <span class="entry_type_name">byte</span> 40818 40819 <span class="entry_type_visibility"> [system]</span> 40820 40821 40822 <span class="entry_type_hwlevel">[limited] </span> 40823 40824 40825 40826 40827 </td> <!-- entry_type --> 40828 40829 <td class="entry_description"> 40830 <p>The maximum number of Jpeg APP segments supported by the camera HAL device.<wbr/></p> 40831 </td> 40832 40833 <td class="entry_units"> 40834 </td> 40835 40836 <td class="entry_range"> 40837 </td> 40838 40839 <td class="entry_hal_version"> 40840 <p>3.<wbr/>4</p> 40841 </td> 40842 40843 <td class="entry_tags"> 40844 <ul class="entry_tags"> 40845 <li><a href="#tag_HEIC">HEIC</a></li> 40846 </ul> 40847 </td> 40848 40849 </tr> 40850 <tr class="entries_header"> 40851 <th class="th_details" colspan="6">Details</th> 40852 </tr> 40853 <tr class="entry_cont"> 40854 <td class="entry_details" colspan="6"> 40855 <p>The camera framework will use this value to derive the size of the BLOB buffer with 40856JPEG_<wbr/>APP_<wbr/>SEGMENTS dataspace,<wbr/> with each APP segment occupying at most 64K bytes.<wbr/> If the 40857value of this tag is n,<wbr/> the size of the framework allocated buffer will be:</p> 40858<pre><code>n * (2 + 0xFFFF) + sizeof(struct CameraBlob) 40859</code></pre> 40860<p>where 2 is number of bytes for APP marker,<wbr/> 0xFFFF is the maximum size per APP segment 40861(including segment size).<wbr/></p> 40862<p>The value of this tag must be at least 1,<wbr/> and APP1 marker (0xFFE1) segment must be the 40863first segment stored in the JPEG_<wbr/>APPS_<wbr/>SEGMENTS BLOB buffer.<wbr/> APP1 segment stores EXIF and 40864thumbnail.<wbr/></p> 40865<p>Since media encoder embeds the orientation in the metadata of the output image,<wbr/> to be 40866consistent between main image and thumbnail,<wbr/> camera HAL must not rotate the thumbnail 40867image data based on <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a>.<wbr/> The framework will write the orientation 40868into EXIF and HEIC container.<wbr/></p> 40869<p>APP1 segment is followed immediately by one or multiple APP2 segments,<wbr/> and APPn 40870segments.<wbr/> After the HAL fills and returns the JPEG_<wbr/>APP_<wbr/>SEGMENTS buffer,<wbr/> the camera 40871framework modifies the APP1 segment by filling in the EXIF tags that are related to 40872main image bitstream and the tags that can be derived from capture result metadata,<wbr/> 40873before saving them into the HEIC container.<wbr/></p> 40874<p>The value of this tag must not be more than 16.<wbr/></p> 40875 </td> 40876 </tr> 40877 40878 40879 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 40880 <!-- end of entry --> 40881 40882 40883 40884 40885 40886 <tr class="entry" id="static_android.heic.availableHeicStreamConfigurations"> 40887 <td class="entry_name 40888 " rowspan="5"> 40889 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations 40890 </td> 40891 <td class="entry_type"> 40892 <span class="entry_type_name entry_type_name_enum">int32</span> 40893 <span class="entry_type_container">x</span> 40894 40895 <span class="entry_type_array"> 40896 n x 4 40897 </span> 40898 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 40899 40900 40901 <span class="entry_type_hwlevel">[limited] </span> 40902 40903 40904 40905 <ul class="entry_type_enum"> 40906 <li> 40907 <span class="entry_type_enum_name">OUTPUT (v3.4)</span> 40908 </li> 40909 <li> 40910 <span class="entry_type_enum_name">INPUT (v3.4)</span> 40911 </li> 40912 </ul> 40913 40914 </td> <!-- entry_type --> 40915 40916 <td class="entry_description"> 40917 <p>The available HEIC (ISO/<wbr/>IEC 23008-12) stream 40918configurations that this camera device supports 40919(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 40920 </td> 40921 40922 <td class="entry_units"> 40923 </td> 40924 40925 <td class="entry_range"> 40926 </td> 40927 40928 <td class="entry_hal_version"> 40929 <p>3.<wbr/>4</p> 40930 </td> 40931 40932 <td class="entry_tags"> 40933 <ul class="entry_tags"> 40934 <li><a href="#tag_HEIC">HEIC</a></li> 40935 </ul> 40936 </td> 40937 40938 </tr> 40939 <tr class="entries_header"> 40940 <th class="th_details" colspan="6">Details</th> 40941 </tr> 40942 <tr class="entry_cont"> 40943 <td class="entry_details" colspan="6"> 40944 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 40945<p>If the camera device supports HEIC image format,<wbr/> it will support identical set of stream 40946combinations involving HEIC image format,<wbr/> compared to the combinations involving JPEG 40947image format as required by the device's hardware level and capabilities.<wbr/></p> 40948<p>All the static,<wbr/> control,<wbr/> and dynamic metadata tags related to JPEG apply to HEIC formats.<wbr/> 40949Configuring JPEG and HEIC streams at the same time is not supported.<wbr/></p> 40950 </td> 40951 </tr> 40952 40953 <tr class="entries_header"> 40954 <th class="th_details" colspan="6">HAL Implementation Details</th> 40955 </tr> 40956 <tr class="entry_cont"> 40957 <td class="entry_details" colspan="6"> 40958 <p>These are output stream configurations for use with dataSpace HAL_<wbr/>DATASPACE_<wbr/>HEIF.<wbr/></p> 40959<p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 40960set by the HAL layer.<wbr/></p> 40961 </td> 40962 </tr> 40963 40964 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 40965 <!-- end of entry --> 40966 40967 40968 <tr class="entry" id="static_android.heic.availableHeicMinFrameDurations"> 40969 <td class="entry_name 40970 " rowspan="5"> 40971 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations 40972 </td> 40973 <td class="entry_type"> 40974 <span class="entry_type_name">int64</span> 40975 <span class="entry_type_container">x</span> 40976 40977 <span class="entry_type_array"> 40978 4 x n 40979 </span> 40980 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 40981 40982 40983 <span class="entry_type_hwlevel">[limited] </span> 40984 40985 40986 40987 40988 </td> <!-- entry_type --> 40989 40990 <td class="entry_description"> 40991 <p>This lists the minimum frame duration for each 40992format/<wbr/>size combination for HEIC output formats.<wbr/></p> 40993 </td> 40994 40995 <td class="entry_units"> 40996 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 40997 </td> 40998 40999 <td class="entry_range"> 41000 </td> 41001 41002 <td class="entry_hal_version"> 41003 <p>3.<wbr/>4</p> 41004 </td> 41005 41006 <td class="entry_tags"> 41007 <ul class="entry_tags"> 41008 <li><a href="#tag_HEIC">HEIC</a></li> 41009 </ul> 41010 </td> 41011 41012 </tr> 41013 <tr class="entries_header"> 41014 <th class="th_details" colspan="6">Details</th> 41015 </tr> 41016 <tr class="entry_cont"> 41017 <td class="entry_details" colspan="6"> 41018 <p>This should correspond to the frame duration when only that 41019stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 41020set to either OFF or FAST.<wbr/></p> 41021<p>When multiple streams are used in a request,<wbr/> the minimum frame 41022duration will be max(individual stream min durations).<wbr/></p> 41023<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 41024<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 41025calculating the max frame rate.<wbr/></p> 41026 </td> 41027 </tr> 41028 41029 <tr class="entries_header"> 41030 <th class="th_details" colspan="6">HAL Implementation Details</th> 41031 </tr> 41032 <tr class="entry_cont"> 41033 <td class="entry_details" colspan="6"> 41034 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 41035set by the HAL layer.<wbr/></p> 41036 </td> 41037 </tr> 41038 41039 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 41040 <!-- end of entry --> 41041 41042 41043 <tr class="entry" id="static_android.heic.availableHeicStallDurations"> 41044 <td class="entry_name 41045 " rowspan="5"> 41046 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations 41047 </td> 41048 <td class="entry_type"> 41049 <span class="entry_type_name">int64</span> 41050 <span class="entry_type_container">x</span> 41051 41052 <span class="entry_type_array"> 41053 4 x n 41054 </span> 41055 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 41056 41057 41058 <span class="entry_type_hwlevel">[limited] </span> 41059 41060 41061 41062 41063 </td> <!-- entry_type --> 41064 41065 <td class="entry_description"> 41066 <p>This lists the maximum stall duration for each 41067output format/<wbr/>size combination for HEIC streams.<wbr/></p> 41068 </td> 41069 41070 <td class="entry_units"> 41071 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 41072 </td> 41073 41074 <td class="entry_range"> 41075 </td> 41076 41077 <td class="entry_hal_version"> 41078 <p>3.<wbr/>4</p> 41079 </td> 41080 41081 <td class="entry_tags"> 41082 <ul class="entry_tags"> 41083 <li><a href="#tag_HEIC">HEIC</a></li> 41084 </ul> 41085 </td> 41086 41087 </tr> 41088 <tr class="entries_header"> 41089 <th class="th_details" colspan="6">Details</th> 41090 </tr> 41091 <tr class="entry_cont"> 41092 <td class="entry_details" colspan="6"> 41093 <p>A stall duration is how much extra time would get added 41094to the normal minimum frame duration for a repeating request 41095that has streams with non-zero stall.<wbr/></p> 41096<p>This functions similarly to 41097<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for HEIC 41098streams.<wbr/></p> 41099<p>All HEIC output stream formats may have a nonzero stall 41100duration.<wbr/></p> 41101 </td> 41102 </tr> 41103 41104 <tr class="entries_header"> 41105 <th class="th_details" colspan="6">HAL Implementation Details</th> 41106 </tr> 41107 <tr class="entry_cont"> 41108 <td class="entry_details" colspan="6"> 41109 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 41110set by the HAL layer.<wbr/></p> 41111 </td> 41112 </tr> 41113 41114 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 41115 <!-- end of entry --> 41116 41117 41118 <tr class="entry" id="static_android.heic.availableHeicStreamConfigurationsMaximumResolution"> 41119 <td class="entry_name 41120 " rowspan="5"> 41121 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution 41122 </td> 41123 <td class="entry_type"> 41124 <span class="entry_type_name entry_type_name_enum">int32</span> 41125 <span class="entry_type_container">x</span> 41126 41127 <span class="entry_type_array"> 41128 n x 4 41129 </span> 41130 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 41131 41132 41133 41134 41135 41136 <ul class="entry_type_enum"> 41137 <li> 41138 <span class="entry_type_enum_name">OUTPUT (v3.6)</span> 41139 </li> 41140 <li> 41141 <span class="entry_type_enum_name">INPUT (v3.6)</span> 41142 </li> 41143 </ul> 41144 41145 </td> <!-- entry_type --> 41146 41147 <td class="entry_description"> 41148 <p>The available HEIC (ISO/<wbr/>IEC 23008-12) stream 41149configurations that this camera device supports 41150(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 41151 </td> 41152 41153 <td class="entry_units"> 41154 </td> 41155 41156 <td class="entry_range"> 41157 </td> 41158 41159 <td class="entry_hal_version"> 41160 <p>3.<wbr/>6</p> 41161 </td> 41162 41163 <td class="entry_tags"> 41164 <ul class="entry_tags"> 41165 <li><a href="#tag_HEIC">HEIC</a></li> 41166 </ul> 41167 </td> 41168 41169 </tr> 41170 <tr class="entries_header"> 41171 <th class="th_details" colspan="6">Details</th> 41172 </tr> 41173 <tr class="entry_cont"> 41174 <td class="entry_details" colspan="6"> 41175 <p>Refer to <a href="#static_android.heic.availableHeicStreamConfigurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations</a> for details.<wbr/></p> 41176 </td> 41177 </tr> 41178 41179 <tr class="entries_header"> 41180 <th class="th_details" colspan="6">HAL Implementation Details</th> 41181 </tr> 41182 <tr class="entry_cont"> 41183 <td class="entry_details" colspan="6"> 41184 <p>These are output stream configurations for use with dataSpace HAL_<wbr/>DATASPACE_<wbr/>HEIF.<wbr/></p> 41185<p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 41186set by the HAL layer.<wbr/></p> 41187 </td> 41188 </tr> 41189 41190 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 41191 <!-- end of entry --> 41192 41193 41194 <tr class="entry" id="static_android.heic.availableHeicMinFrameDurationsMaximumResolution"> 41195 <td class="entry_name 41196 " rowspan="5"> 41197 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 41198 </td> 41199 <td class="entry_type"> 41200 <span class="entry_type_name">int64</span> 41201 <span class="entry_type_container">x</span> 41202 41203 <span class="entry_type_array"> 41204 4 x n 41205 </span> 41206 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 41207 41208 41209 41210 41211 41212 41213 </td> <!-- entry_type --> 41214 41215 <td class="entry_description"> 41216 <p>This lists the minimum frame duration for each 41217format/<wbr/>size combination for HEIC output formats for CaptureRequests where 41218<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 41219<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 41220 </td> 41221 41222 <td class="entry_units"> 41223 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 41224 </td> 41225 41226 <td class="entry_range"> 41227 </td> 41228 41229 <td class="entry_hal_version"> 41230 <p>3.<wbr/>6</p> 41231 </td> 41232 41233 <td class="entry_tags"> 41234 <ul class="entry_tags"> 41235 <li><a href="#tag_HEIC">HEIC</a></li> 41236 </ul> 41237 </td> 41238 41239 </tr> 41240 <tr class="entries_header"> 41241 <th class="th_details" colspan="6">Details</th> 41242 </tr> 41243 <tr class="entry_cont"> 41244 <td class="entry_details" colspan="6"> 41245 <p>Refer to <a href="#static_android.heic.availableHeicMinFrameDurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations</a> for details.<wbr/></p> 41246 </td> 41247 </tr> 41248 41249 <tr class="entries_header"> 41250 <th class="th_details" colspan="6">HAL Implementation Details</th> 41251 </tr> 41252 <tr class="entry_cont"> 41253 <td class="entry_details" colspan="6"> 41254 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 41255set by the HAL layer.<wbr/></p> 41256 </td> 41257 </tr> 41258 41259 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 41260 <!-- end of entry --> 41261 41262 41263 <tr class="entry" id="static_android.heic.availableHeicStallDurationsMaximumResolution"> 41264 <td class="entry_name 41265 " rowspan="5"> 41266 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 41267 </td> 41268 <td class="entry_type"> 41269 <span class="entry_type_name">int64</span> 41270 <span class="entry_type_container">x</span> 41271 41272 <span class="entry_type_array"> 41273 4 x n 41274 </span> 41275 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 41276 41277 41278 41279 41280 41281 41282 </td> <!-- entry_type --> 41283 41284 <td class="entry_description"> 41285 <p>This lists the maximum stall duration for each 41286output format/<wbr/>size combination for HEIC streams for CaptureRequests where 41287<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 41288<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 41289 </td> 41290 41291 <td class="entry_units"> 41292 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 41293 </td> 41294 41295 <td class="entry_range"> 41296 </td> 41297 41298 <td class="entry_hal_version"> 41299 <p>3.<wbr/>6</p> 41300 </td> 41301 41302 <td class="entry_tags"> 41303 <ul class="entry_tags"> 41304 <li><a href="#tag_HEIC">HEIC</a></li> 41305 </ul> 41306 </td> 41307 41308 </tr> 41309 <tr class="entries_header"> 41310 <th class="th_details" colspan="6">Details</th> 41311 </tr> 41312 <tr class="entry_cont"> 41313 <td class="entry_details" colspan="6"> 41314 <p>Refer to <a href="#static_android.heic.availableHeicStallDurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations</a> for details.<wbr/></p> 41315 </td> 41316 </tr> 41317 41318 <tr class="entries_header"> 41319 <th class="th_details" colspan="6">HAL Implementation Details</th> 41320 </tr> 41321 <tr class="entry_cont"> 41322 <td class="entry_details" colspan="6"> 41323 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 41324set by the HAL layer.<wbr/></p> 41325 </td> 41326 </tr> 41327 41328 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 41329 <!-- end of entry --> 41330 41331 41332 <tr class="entry" id="static_android.heic.availableHeicUltraHdrStreamConfigurations"> 41333 <td class="entry_name 41334 " rowspan="5"> 41335 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Ultra<wbr/>Hdr<wbr/>Stream<wbr/>Configurations 41336 </td> 41337 <td class="entry_type"> 41338 <span class="entry_type_name entry_type_name_enum">int32</span> 41339 <span class="entry_type_container">x</span> 41340 41341 <span class="entry_type_array"> 41342 n x 4 41343 </span> 41344 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 41345 41346 41347 <span class="entry_type_hwlevel">[limited] </span> 41348 41349 41350 41351 <ul class="entry_type_enum"> 41352 <li> 41353 <span class="entry_type_enum_name">OUTPUT (v3.11)</span> 41354 </li> 41355 <li> 41356 <span class="entry_type_enum_name">INPUT (v3.11)</span> 41357 </li> 41358 </ul> 41359 41360 </td> <!-- entry_type --> 41361 41362 <td class="entry_description"> 41363 <p>The available HEIC (ISO/<wbr/>IEC 23008-12/<wbr/>24) UltraHDR stream 41364configurations that this camera device supports 41365(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 41366 </td> 41367 41368 <td class="entry_units"> 41369 </td> 41370 41371 <td class="entry_range"> 41372 </td> 41373 41374 <td class="entry_hal_version"> 41375 <p>3.<wbr/>11</p> 41376 </td> 41377 41378 <td class="entry_tags"> 41379 <ul class="entry_tags"> 41380 <li><a href="#tag_HEIC">HEIC</a></li> 41381 </ul> 41382 </td> 41383 41384 </tr> 41385 <tr class="entries_header"> 41386 <th class="th_details" colspan="6">Details</th> 41387 </tr> 41388 <tr class="entry_cont"> 41389 <td class="entry_details" colspan="6"> 41390 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 41391<p>All the static,<wbr/> control,<wbr/> and dynamic metadata tags related to JPEG apply to HEIC formats.<wbr/> 41392Configuring JPEG and HEIC streams at the same time is not supported.<wbr/></p> 41393 </td> 41394 </tr> 41395 41396 <tr class="entries_header"> 41397 <th class="th_details" colspan="6">HAL Implementation Details</th> 41398 </tr> 41399 <tr class="entry_cont"> 41400 <td class="entry_details" colspan="6"> 41401 <p>These are output stream configurations for use with dataSpace DATASPACE_<wbr/>HEIF_<wbr/>ULTRAHDR.<wbr/></p> 41402 </td> 41403 </tr> 41404 41405 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 41406 <!-- end of entry --> 41407 41408 41409 <tr class="entry" id="static_android.heic.availableHeicUltraHdrMinFrameDurations"> 41410 <td class="entry_name 41411 " rowspan="3"> 41412 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Ultra<wbr/>Hdr<wbr/>Min<wbr/>Frame<wbr/>Durations 41413 </td> 41414 <td class="entry_type"> 41415 <span class="entry_type_name">int64</span> 41416 <span class="entry_type_container">x</span> 41417 41418 <span class="entry_type_array"> 41419 4 x n 41420 </span> 41421 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 41422 41423 41424 <span class="entry_type_hwlevel">[limited] </span> 41425 41426 41427 41428 41429 </td> <!-- entry_type --> 41430 41431 <td class="entry_description"> 41432 <p>This lists the minimum frame duration for each 41433format/<wbr/>size combination for HEIC UltraHDR output formats.<wbr/></p> 41434 </td> 41435 41436 <td class="entry_units"> 41437 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 41438 </td> 41439 41440 <td class="entry_range"> 41441 </td> 41442 41443 <td class="entry_hal_version"> 41444 <p>3.<wbr/>11</p> 41445 </td> 41446 41447 <td class="entry_tags"> 41448 <ul class="entry_tags"> 41449 <li><a href="#tag_HEIC">HEIC</a></li> 41450 </ul> 41451 </td> 41452 41453 </tr> 41454 <tr class="entries_header"> 41455 <th class="th_details" colspan="6">Details</th> 41456 </tr> 41457 <tr class="entry_cont"> 41458 <td class="entry_details" colspan="6"> 41459 <p>This should correspond to the frame duration when only that 41460stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 41461set to either OFF or FAST.<wbr/></p> 41462<p>When multiple streams are used in a request,<wbr/> the minimum frame 41463duration will be max(individual stream min durations).<wbr/></p> 41464<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 41465<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 41466calculating the max frame rate.<wbr/></p> 41467 </td> 41468 </tr> 41469 41470 41471 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 41472 <!-- end of entry --> 41473 41474 41475 <tr class="entry" id="static_android.heic.availableHeicUltraHdrStallDurations"> 41476 <td class="entry_name 41477 " rowspan="3"> 41478 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Ultra<wbr/>Hdr<wbr/>Stall<wbr/>Durations 41479 </td> 41480 <td class="entry_type"> 41481 <span class="entry_type_name">int64</span> 41482 <span class="entry_type_container">x</span> 41483 41484 <span class="entry_type_array"> 41485 4 x n 41486 </span> 41487 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 41488 41489 41490 <span class="entry_type_hwlevel">[limited] </span> 41491 41492 41493 41494 41495 </td> <!-- entry_type --> 41496 41497 <td class="entry_description"> 41498 <p>This lists the maximum stall duration for each 41499output format/<wbr/>size combination for HEIC UltraHDR streams.<wbr/></p> 41500 </td> 41501 41502 <td class="entry_units"> 41503 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 41504 </td> 41505 41506 <td class="entry_range"> 41507 </td> 41508 41509 <td class="entry_hal_version"> 41510 <p>3.<wbr/>11</p> 41511 </td> 41512 41513 <td class="entry_tags"> 41514 <ul class="entry_tags"> 41515 <li><a href="#tag_HEIC">HEIC</a></li> 41516 </ul> 41517 </td> 41518 41519 </tr> 41520 <tr class="entries_header"> 41521 <th class="th_details" colspan="6">Details</th> 41522 </tr> 41523 <tr class="entry_cont"> 41524 <td class="entry_details" colspan="6"> 41525 <p>A stall duration is how much extra time would get added 41526to the normal minimum frame duration for a repeating request 41527that has streams with non-zero stall.<wbr/></p> 41528<p>This functions similarly to 41529<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for HEIC UltraHDR 41530streams.<wbr/></p> 41531<p>All HEIC output stream formats may have a nonzero stall 41532duration.<wbr/></p> 41533 </td> 41534 </tr> 41535 41536 41537 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 41538 <!-- end of entry --> 41539 41540 41541 <tr class="entry" id="static_android.heic.availableHeicUltraHdrStreamConfigurationsMaximumResolution"> 41542 <td class="entry_name 41543 " rowspan="5"> 41544 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Ultra<wbr/>Hdr<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution 41545 </td> 41546 <td class="entry_type"> 41547 <span class="entry_type_name entry_type_name_enum">int32</span> 41548 <span class="entry_type_container">x</span> 41549 41550 <span class="entry_type_array"> 41551 n x 4 41552 </span> 41553 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 41554 41555 41556 41557 41558 41559 <ul class="entry_type_enum"> 41560 <li> 41561 <span class="entry_type_enum_name">OUTPUT (v3.11)</span> 41562 </li> 41563 <li> 41564 <span class="entry_type_enum_name">INPUT (v3.11)</span> 41565 </li> 41566 </ul> 41567 41568 </td> <!-- entry_type --> 41569 41570 <td class="entry_description"> 41571 <p>The available HEIC (ISO/<wbr/>IEC 23008-12/<wbr/>24) UltraHDR stream 41572configurations that this camera device supports 41573(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream) for CaptureRequests where 41574<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 41575<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 41576 </td> 41577 41578 <td class="entry_units"> 41579 </td> 41580 41581 <td class="entry_range"> 41582 </td> 41583 41584 <td class="entry_hal_version"> 41585 <p>3.<wbr/>11</p> 41586 </td> 41587 41588 <td class="entry_tags"> 41589 <ul class="entry_tags"> 41590 <li><a href="#tag_HEIC">HEIC</a></li> 41591 </ul> 41592 </td> 41593 41594 </tr> 41595 <tr class="entries_header"> 41596 <th class="th_details" colspan="6">Details</th> 41597 </tr> 41598 <tr class="entry_cont"> 41599 <td class="entry_details" colspan="6"> 41600 <p>Refer to <a href="#static_android.heic.availableHeicStreamConfigurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations</a> for details.<wbr/></p> 41601 </td> 41602 </tr> 41603 41604 <tr class="entries_header"> 41605 <th class="th_details" colspan="6">HAL Implementation Details</th> 41606 </tr> 41607 <tr class="entry_cont"> 41608 <td class="entry_details" colspan="6"> 41609 <p>These are output stream configurations for use with dataSpace DATASPACE_<wbr/>HEIF_<wbr/>ULTRAHDR.<wbr/></p> 41610 </td> 41611 </tr> 41612 41613 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 41614 <!-- end of entry --> 41615 41616 41617 <tr class="entry" id="static_android.heic.availableHeicUltraHdrMinFrameDurationsMaximumResolution"> 41618 <td class="entry_name 41619 " rowspan="3"> 41620 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Ultra<wbr/>Hdr<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 41621 </td> 41622 <td class="entry_type"> 41623 <span class="entry_type_name">int64</span> 41624 <span class="entry_type_container">x</span> 41625 41626 <span class="entry_type_array"> 41627 4 x n 41628 </span> 41629 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 41630 41631 41632 41633 41634 41635 41636 </td> <!-- entry_type --> 41637 41638 <td class="entry_description"> 41639 <p>This lists the minimum frame duration for each 41640format/<wbr/>size combination for HEIC UltraHDR output formats for CaptureRequests where 41641<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 41642<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 41643 </td> 41644 41645 <td class="entry_units"> 41646 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 41647 </td> 41648 41649 <td class="entry_range"> 41650 </td> 41651 41652 <td class="entry_hal_version"> 41653 <p>3.<wbr/>11</p> 41654 </td> 41655 41656 <td class="entry_tags"> 41657 <ul class="entry_tags"> 41658 <li><a href="#tag_HEIC">HEIC</a></li> 41659 </ul> 41660 </td> 41661 41662 </tr> 41663 <tr class="entries_header"> 41664 <th class="th_details" colspan="6">Details</th> 41665 </tr> 41666 <tr class="entry_cont"> 41667 <td class="entry_details" colspan="6"> 41668 <p>Refer to <a href="#static_android.heic.availableHeicMinFrameDurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations</a> for details.<wbr/></p> 41669 </td> 41670 </tr> 41671 41672 41673 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 41674 <!-- end of entry --> 41675 41676 41677 <tr class="entry" id="static_android.heic.availableHeicUltraHdrStallDurationsMaximumResolution"> 41678 <td class="entry_name 41679 " rowspan="3"> 41680 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Ultra<wbr/>Hdr<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 41681 </td> 41682 <td class="entry_type"> 41683 <span class="entry_type_name">int64</span> 41684 <span class="entry_type_container">x</span> 41685 41686 <span class="entry_type_array"> 41687 4 x n 41688 </span> 41689 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 41690 41691 41692 41693 41694 41695 41696 </td> <!-- entry_type --> 41697 41698 <td class="entry_description"> 41699 <p>This lists the maximum stall duration for each 41700output format/<wbr/>size combination for HEIC UltraHDR streams for CaptureRequests where 41701<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 41702<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 41703 </td> 41704 41705 <td class="entry_units"> 41706 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 41707 </td> 41708 41709 <td class="entry_range"> 41710 </td> 41711 41712 <td class="entry_hal_version"> 41713 <p>3.<wbr/>11</p> 41714 </td> 41715 41716 <td class="entry_tags"> 41717 <ul class="entry_tags"> 41718 <li><a href="#tag_HEIC">HEIC</a></li> 41719 </ul> 41720 </td> 41721 41722 </tr> 41723 <tr class="entries_header"> 41724 <th class="th_details" colspan="6">Details</th> 41725 </tr> 41726 <tr class="entry_cont"> 41727 <td class="entry_details" colspan="6"> 41728 <p>Refer to <a href="#static_android.heic.availableHeicStallDurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations</a> for details.<wbr/></p> 41729 </td> 41730 </tr> 41731 41732 41733 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 41734 <!-- end of entry --> 41735 41736 41737 41738 <!-- end of kind --> 41739 </tbody> 41740 41741 <!-- end of section --> 41742 <tr><td colspan="7" id="section_automotive" class="section">automotive</td></tr> 41743 41744 41745 <tr><td colspan="7" class="kind">static</td></tr> 41746 41747 <thead class="entries_header"> 41748 <tr> 41749 <th class="th_name">Property Name</th> 41750 <th class="th_type">Type</th> 41751 <th class="th_description">Description</th> 41752 <th class="th_units">Units</th> 41753 <th class="th_range">Range</th> 41754 <th class="th_hal_version">Initial HIDL HAL version</th> 41755 <th class="th_tags">Tags</th> 41756 </tr> 41757 </thead> 41758 41759 <tbody> 41760 41761 41762 41763 41764 41765 41766 41767 41768 41769 41770 41771 41772 <tr class="entry" id="static_android.automotive.lens.facing"> 41773 <td class="entry_name 41774 " rowspan="3"> 41775 android.<wbr/>automotive.<wbr/>lens.<wbr/>facing 41776 </td> 41777 <td class="entry_type"> 41778 <span class="entry_type_name entry_type_name_enum">byte</span> 41779 <span class="entry_type_container">x</span> 41780 41781 <span class="entry_type_array"> 41782 n 41783 </span> 41784 <span class="entry_type_visibility"> [public]</span> 41785 41786 41787 41788 41789 41790 <ul class="entry_type_enum"> 41791 <li> 41792 <span class="entry_type_enum_name">EXTERIOR_OTHER (v3.8)</span> 41793 <span class="entry_type_enum_notes"><p>The camera device faces the outside of the vehicle body frame but not exactly 41794one of the exterior sides defined by this enum.<wbr/> Applications should determine 41795the exact facing direction from <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 41796<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p></span> 41797 </li> 41798 <li> 41799 <span class="entry_type_enum_name">EXTERIOR_FRONT (v3.8)</span> 41800 <span class="entry_type_enum_notes"><p>The camera device faces the front of the vehicle body frame.<wbr/></p></span> 41801 </li> 41802 <li> 41803 <span class="entry_type_enum_name">EXTERIOR_REAR (v3.8)</span> 41804 <span class="entry_type_enum_notes"><p>The camera device faces the rear of the vehicle body frame.<wbr/></p></span> 41805 </li> 41806 <li> 41807 <span class="entry_type_enum_name">EXTERIOR_LEFT (v3.8)</span> 41808 <span class="entry_type_enum_notes"><p>The camera device faces the left side of the vehicle body frame.<wbr/></p></span> 41809 </li> 41810 <li> 41811 <span class="entry_type_enum_name">EXTERIOR_RIGHT (v3.8)</span> 41812 <span class="entry_type_enum_notes"><p>The camera device faces the right side of the vehicle body frame.<wbr/></p></span> 41813 </li> 41814 <li> 41815 <span class="entry_type_enum_name">INTERIOR_OTHER (v3.8)</span> 41816 <span class="entry_type_enum_notes"><p>The camera device faces the inside of the vehicle body frame but not exactly 41817one of seats described by this enum.<wbr/> Applications should determine the exact 41818facing direction from <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p></span> 41819 </li> 41820 <li> 41821 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_1_LEFT (v3.8)</span> 41822 <span class="entry_type_enum_notes"><p>The camera device faces the left side seat of the first row.<wbr/></p></span> 41823 </li> 41824 <li> 41825 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_1_CENTER (v3.8)</span> 41826 <span class="entry_type_enum_notes"><p>The camera device faces the center seat of the first row.<wbr/></p></span> 41827 </li> 41828 <li> 41829 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_1_RIGHT (v3.8)</span> 41830 <span class="entry_type_enum_notes"><p>The camera device faces the right seat of the first row.<wbr/></p></span> 41831 </li> 41832 <li> 41833 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_2_LEFT (v3.8)</span> 41834 <span class="entry_type_enum_notes"><p>The camera device faces the left side seat of the second row.<wbr/></p></span> 41835 </li> 41836 <li> 41837 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_2_CENTER (v3.8)</span> 41838 <span class="entry_type_enum_notes"><p>The camera device faces the center seat of the second row.<wbr/></p></span> 41839 </li> 41840 <li> 41841 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_2_RIGHT (v3.8)</span> 41842 <span class="entry_type_enum_notes"><p>The camera device faces the right side seat of the second row.<wbr/></p></span> 41843 </li> 41844 <li> 41845 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_3_LEFT (v3.8)</span> 41846 <span class="entry_type_enum_notes"><p>The camera device faces the left side seat of the third row.<wbr/></p></span> 41847 </li> 41848 <li> 41849 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_3_CENTER (v3.8)</span> 41850 <span class="entry_type_enum_notes"><p>The camera device faces the center seat of the third row.<wbr/></p></span> 41851 </li> 41852 <li> 41853 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_3_RIGHT (v3.8)</span> 41854 <span class="entry_type_enum_notes"><p>The camera device faces the right seat of the third row.<wbr/></p></span> 41855 </li> 41856 </ul> 41857 41858 </td> <!-- entry_type --> 41859 41860 <td class="entry_description"> 41861 <p>The direction of the camera faces relative to the vehicle body frame and the 41862passenger seats.<wbr/></p> 41863 </td> 41864 41865 <td class="entry_units"> 41866 </td> 41867 41868 <td class="entry_range"> 41869 </td> 41870 41871 <td class="entry_hal_version"> 41872 <p>3.<wbr/>8</p> 41873 </td> 41874 41875 <td class="entry_tags"> 41876 </td> 41877 41878 </tr> 41879 <tr class="entries_header"> 41880 <th class="th_details" colspan="6">Details</th> 41881 </tr> 41882 <tr class="entry_cont"> 41883 <td class="entry_details" colspan="6"> 41884 <p>This enum defines the lens facing characteristic of the cameras on the automotive 41885devices with locations <a href="#static_android.automotive.location">android.<wbr/>automotive.<wbr/>location</a> defines.<wbr/> If the system has 41886FEATURE_<wbr/>AUTOMOTIVE,<wbr/> the camera will have this entry in its static metadata.<wbr/></p> 41887<p>When <a href="#static_android.automotive.location">android.<wbr/>automotive.<wbr/>location</a> is INTERIOR,<wbr/> this has one or more INTERIOR_<wbr/>* 41888values or a single EXTERIOR_<wbr/>* value.<wbr/> When this has more than one INTERIOR_<wbr/>*,<wbr/> 41889the first value must be the one for the seat closest to the optical axis.<wbr/> If this 41890contains INTERIOR_<wbr/>OTHER,<wbr/> all other values will be ineffective.<wbr/></p> 41891<p>When <a href="#static_android.automotive.location">android.<wbr/>automotive.<wbr/>location</a> is EXTERIOR_<wbr/>* or EXTRA,<wbr/> this has a single 41892EXTERIOR_<wbr/>* value.<wbr/></p> 41893<p>If a camera has INTERIOR_<wbr/>OTHER or EXTERIOR_<wbr/>OTHER,<wbr/> or more than one camera is at the 41894same location and facing the same direction,<wbr/> their static metadata will list the 41895following entries,<wbr/> so that applications can determine their lenses' exact facing 41896directions:</p> 41897<ul> 41898<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li> 41899<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 41900<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 41901</ul> 41902 </td> 41903 </tr> 41904 41905 41906 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 41907 <!-- end of entry --> 41908 41909 41910 41911 41912 41913 <tr class="entry" id="static_android.automotive.location"> 41914 <td class="entry_name 41915 " rowspan="3"> 41916 android.<wbr/>automotive.<wbr/>location 41917 </td> 41918 <td class="entry_type"> 41919 <span class="entry_type_name entry_type_name_enum">byte</span> 41920 41921 <span class="entry_type_visibility"> [public]</span> 41922 41923 41924 41925 41926 41927 <ul class="entry_type_enum"> 41928 <li> 41929 <span class="entry_type_enum_name">INTERIOR (v3.8)</span> 41930 <span class="entry_type_enum_notes"><p>The camera device exists inside of the vehicle cabin.<wbr/></p></span> 41931 </li> 41932 <li> 41933 <span class="entry_type_enum_name">EXTERIOR_OTHER (v3.8)</span> 41934 <span class="entry_type_enum_notes"><p>The camera exists outside of the vehicle body frame but not exactly on one of the 41935exterior locations this enum defines.<wbr/> The applications should determine the exact 41936location from <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p></span> 41937 </li> 41938 <li> 41939 <span class="entry_type_enum_name">EXTERIOR_FRONT (v3.8)</span> 41940 <span class="entry_type_enum_notes"><p>The camera device exists outside of the vehicle body frame and on its front side.<wbr/></p></span> 41941 </li> 41942 <li> 41943 <span class="entry_type_enum_name">EXTERIOR_REAR (v3.8)</span> 41944 <span class="entry_type_enum_notes"><p>The camera device exists outside of the vehicle body frame and on its rear side.<wbr/></p></span> 41945 </li> 41946 <li> 41947 <span class="entry_type_enum_name">EXTERIOR_LEFT (v3.8)</span> 41948 <span class="entry_type_enum_notes"><p>The camera device exists outside and on left side of the vehicle body frame.<wbr/></p></span> 41949 </li> 41950 <li> 41951 <span class="entry_type_enum_name">EXTERIOR_RIGHT (v3.8)</span> 41952 <span class="entry_type_enum_notes"><p>The camera device exists outside and on right side of the vehicle body frame.<wbr/></p></span> 41953 </li> 41954 <li> 41955 <span class="entry_type_enum_name">EXTRA_OTHER (v3.8)</span> 41956 <span class="entry_type_enum_notes"><p>The camera device exists on an extra vehicle,<wbr/> such as the trailer,<wbr/> but not exactly 41957on one of front,<wbr/> rear,<wbr/> left,<wbr/> or right side.<wbr/> Applications should determine the exact 41958location from <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p></span> 41959 </li> 41960 <li> 41961 <span class="entry_type_enum_name">EXTRA_FRONT (v3.8)</span> 41962 <span class="entry_type_enum_notes"><p>The camera device exists outside of the extra vehicle's body frame and on its front 41963side.<wbr/></p></span> 41964 </li> 41965 <li> 41966 <span class="entry_type_enum_name">EXTRA_REAR (v3.8)</span> 41967 <span class="entry_type_enum_notes"><p>The camera device exists outside of the extra vehicle's body frame and on its rear 41968side.<wbr/></p></span> 41969 </li> 41970 <li> 41971 <span class="entry_type_enum_name">EXTRA_LEFT (v3.8)</span> 41972 <span class="entry_type_enum_notes"><p>The camera device exists outside and on left side of the extra vehicle body.<wbr/></p></span> 41973 </li> 41974 <li> 41975 <span class="entry_type_enum_name">EXTRA_RIGHT (v3.8)</span> 41976 <span class="entry_type_enum_notes"><p>The camera device exists outside and on right side of the extra vehicle body.<wbr/></p></span> 41977 </li> 41978 </ul> 41979 41980 </td> <!-- entry_type --> 41981 41982 <td class="entry_description"> 41983 <p>Location of the cameras on the automotive devices.<wbr/></p> 41984 </td> 41985 41986 <td class="entry_units"> 41987 </td> 41988 41989 <td class="entry_range"> 41990 </td> 41991 41992 <td class="entry_hal_version"> 41993 <p>3.<wbr/>8</p> 41994 </td> 41995 41996 <td class="entry_tags"> 41997 </td> 41998 41999 </tr> 42000 <tr class="entries_header"> 42001 <th class="th_details" colspan="6">Details</th> 42002 </tr> 42003 <tr class="entry_cont"> 42004 <td class="entry_details" colspan="6"> 42005 <p>This enum defines the locations of the cameras relative to the vehicle body frame on 42006<a href="https://source.android.com/devices/sensors/sensor-types#auto_axes">the automotive sensor coordinate system</a>.<wbr/> 42007If the system has FEATURE_<wbr/>AUTOMOTIVE,<wbr/> the camera will have this entry in its static 42008metadata.<wbr/></p> 42009<ul> 42010<li>INTERIOR is the inside of the vehicle body frame (or the passenger cabin).<wbr/></li> 42011<li>EXTERIOR is the outside of the vehicle body frame.<wbr/></li> 42012<li>EXTRA is the extra vehicle such as a trailer.<wbr/></li> 42013</ul> 42014<p>Each side of the vehicle body frame on this coordinate system is defined as below:</p> 42015<ul> 42016<li>FRONT is where the Y-axis increases toward.<wbr/></li> 42017<li>REAR is where the Y-axis decreases toward.<wbr/></li> 42018<li>LEFT is where the X-axis decreases toward.<wbr/></li> 42019<li>RIGHT is where the X-axis increases toward.<wbr/></li> 42020</ul> 42021<p>If the camera has either EXTERIOR_<wbr/>OTHER or EXTRA_<wbr/>OTHER,<wbr/> its static metadata will list 42022the following entries,<wbr/> so that applications can determine the camera's exact location:</p> 42023<ul> 42024<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li> 42025<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 42026<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 42027</ul> 42028 </td> 42029 </tr> 42030 42031 42032 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42033 <!-- end of entry --> 42034 42035 42036 42037 <!-- end of kind --> 42038 </tbody> 42039 42040 <!-- end of section --> 42041 <tr><td colspan="7" id="section_extension" class="section">extension</td></tr> 42042 42043 42044 <tr><td colspan="7" class="kind">controls</td></tr> 42045 42046 <thead class="entries_header"> 42047 <tr> 42048 <th class="th_name">Property Name</th> 42049 <th class="th_type">Type</th> 42050 <th class="th_description">Description</th> 42051 <th class="th_units">Units</th> 42052 <th class="th_range">Range</th> 42053 <th class="th_hal_version">Initial HIDL HAL version</th> 42054 <th class="th_tags">Tags</th> 42055 </tr> 42056 </thead> 42057 42058 <tbody> 42059 42060 42061 42062 42063 42064 42065 42066 42067 42068 42069 <tr class="entry" id="controls_android.extension.strength"> 42070 <td class="entry_name 42071 " rowspan="3"> 42072 android.<wbr/>extension.<wbr/>strength 42073 </td> 42074 <td class="entry_type"> 42075 <span class="entry_type_name">int32</span> 42076 42077 <span class="entry_type_visibility"> [fwk_java_public]</span> 42078 42079 42080 42081 42082 42083 42084 </td> <!-- entry_type --> 42085 42086 <td class="entry_description"> 42087 <p>Strength of the extension post-processing effect</p> 42088 </td> 42089 42090 <td class="entry_units"> 42091 </td> 42092 42093 <td class="entry_range"> 42094 <p>0 - 100</p> 42095 </td> 42096 42097 <td class="entry_hal_version"> 42098 <p>3.<wbr/>9</p> 42099 </td> 42100 42101 <td class="entry_tags"> 42102 </td> 42103 42104 </tr> 42105 <tr class="entries_header"> 42106 <th class="th_details" colspan="6">Details</th> 42107 </tr> 42108 <tr class="entry_cont"> 42109 <td class="entry_details" colspan="6"> 42110 <p>This control allows Camera extension clients to configure the strength of the applied 42111extension effect.<wbr/> Strength equal to 0 means that the extension must not apply any 42112post-processing and return a regular captured frame.<wbr/> Strength equal to 100 is the 42113maximum level of post-processing.<wbr/> Values between 0 and 100 will have different effect 42114depending on the extension type as described below:</p> 42115<ul> 42116<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_BOKEH">BOKEH</a> - 42117the strength is expected to control the amount of blur.<wbr/></li> 42118<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_HDR">HDR</a> and 42119<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_NIGHT">NIGHT</a> - 42120the strength can control the amount of images fused and the brightness of the final image.<wbr/></li> 42121<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_FACE_RETOUCH">FACE_<wbr/>RETOUCH</a> - 42122the strength value will control the amount of cosmetic enhancement and skin 42123smoothing.<wbr/></li> 42124</ul> 42125<p>The control will be supported if the capture request key is part of the list generated by 42126<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#getAvailableCaptureRequestKeys">CameraExtensionCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/> 42127The control is only defined and available to clients sending capture requests via 42128<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionSession.html">CameraExtensionSession</a>.<wbr/> 42129If the client doesn't specify the extension strength value,<wbr/> then a default value will 42130be set by the extension.<wbr/> Clients can retrieve the default value by checking the 42131corresponding capture result.<wbr/></p> 42132 </td> 42133 </tr> 42134 42135 42136 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42137 <!-- end of entry --> 42138 42139 42140 42141 <!-- end of kind --> 42142 </tbody> 42143 <tr><td colspan="7" class="kind">dynamic</td></tr> 42144 42145 <thead class="entries_header"> 42146 <tr> 42147 <th class="th_name">Property Name</th> 42148 <th class="th_type">Type</th> 42149 <th class="th_description">Description</th> 42150 <th class="th_units">Units</th> 42151 <th class="th_range">Range</th> 42152 <th class="th_hal_version">Initial HIDL HAL version</th> 42153 <th class="th_tags">Tags</th> 42154 </tr> 42155 </thead> 42156 42157 <tbody> 42158 42159 42160 42161 42162 42163 42164 42165 42166 42167 42168 <tr class="entry" id="dynamic_android.extension.currentType"> 42169 <td class="entry_name 42170 " rowspan="3"> 42171 android.<wbr/>extension.<wbr/>current<wbr/>Type 42172 </td> 42173 <td class="entry_type"> 42174 <span class="entry_type_name">int32</span> 42175 42176 <span class="entry_type_visibility"> [fwk_java_public]</span> 42177 42178 42179 42180 42181 42182 42183 </td> <!-- entry_type --> 42184 42185 <td class="entry_description"> 42186 <p>Contains the extension type of the currently active extension</p> 42187 </td> 42188 42189 <td class="entry_units"> 42190 </td> 42191 42192 <td class="entry_range"> 42193 <p>Extension type value listed in 42194<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html">CameraExtensionCharacteristics</a></p> 42195 </td> 42196 42197 <td class="entry_hal_version"> 42198 <p>3.<wbr/>9</p> 42199 </td> 42200 42201 <td class="entry_tags"> 42202 </td> 42203 42204 </tr> 42205 <tr class="entries_header"> 42206 <th class="th_details" colspan="6">Details</th> 42207 </tr> 42208 <tr class="entry_cont"> 42209 <td class="entry_details" colspan="6"> 42210 <p>The capture result will only be supported and included by camera extension 42211<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionSession.html">sessions</a>.<wbr/> 42212In case the extension session was configured to use 42213<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_AUTOMATIC">AUTO</a>,<wbr/> 42214then the extension type value will indicate the currently active extension like 42215<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_HDR">HDR</a>,<wbr/> 42216<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_NIGHT">NIGHT</a> etc.<wbr/> 42217,<wbr/> and will never return 42218<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_AUTOMATIC">AUTO</a>.<wbr/> 42219In case the extension session was configured to use an extension different from 42220<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_AUTOMATIC">AUTO</a>,<wbr/> 42221then the result type will always match with the configured extension type.<wbr/></p> 42222 </td> 42223 </tr> 42224 42225 42226 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42227 <!-- end of entry --> 42228 42229 42230 <tr class="entry" id="dynamic_android.extension.strength"> 42231 <td class="entry_name 42232 " rowspan="3"> 42233 android.<wbr/>extension.<wbr/>strength 42234 </td> 42235 <td class="entry_type"> 42236 <span class="entry_type_name">int32</span> 42237 42238 <span class="entry_type_visibility"> [fwk_java_public]</span> 42239 42240 42241 42242 42243 42244 42245 </td> <!-- entry_type --> 42246 42247 <td class="entry_description"> 42248 <p>Strength of the extension post-processing effect</p> 42249 </td> 42250 42251 <td class="entry_units"> 42252 </td> 42253 42254 <td class="entry_range"> 42255 <p>0 - 100</p> 42256 </td> 42257 42258 <td class="entry_hal_version"> 42259 <p>3.<wbr/>9</p> 42260 </td> 42261 42262 <td class="entry_tags"> 42263 </td> 42264 42265 </tr> 42266 <tr class="entries_header"> 42267 <th class="th_details" colspan="6">Details</th> 42268 </tr> 42269 <tr class="entry_cont"> 42270 <td class="entry_details" colspan="6"> 42271 <p>This control allows Camera extension clients to configure the strength of the applied 42272extension effect.<wbr/> Strength equal to 0 means that the extension must not apply any 42273post-processing and return a regular captured frame.<wbr/> Strength equal to 100 is the 42274maximum level of post-processing.<wbr/> Values between 0 and 100 will have different effect 42275depending on the extension type as described below:</p> 42276<ul> 42277<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_BOKEH">BOKEH</a> - 42278the strength is expected to control the amount of blur.<wbr/></li> 42279<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_HDR">HDR</a> and 42280<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_NIGHT">NIGHT</a> - 42281the strength can control the amount of images fused and the brightness of the final image.<wbr/></li> 42282<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_FACE_RETOUCH">FACE_<wbr/>RETOUCH</a> - 42283the strength value will control the amount of cosmetic enhancement and skin 42284smoothing.<wbr/></li> 42285</ul> 42286<p>The control will be supported if the capture request key is part of the list generated by 42287<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#getAvailableCaptureRequestKeys">CameraExtensionCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/> 42288The control is only defined and available to clients sending capture requests via 42289<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionSession.html">CameraExtensionSession</a>.<wbr/> 42290If the client doesn't specify the extension strength value,<wbr/> then a default value will 42291be set by the extension.<wbr/> Clients can retrieve the default value by checking the 42292corresponding capture result.<wbr/></p> 42293 </td> 42294 </tr> 42295 42296 42297 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42298 <!-- end of entry --> 42299 42300 42301 <tr class="entry" id="dynamic_android.extension.nightModeIndicator"> 42302 <td class="entry_name 42303 " rowspan="3"> 42304 android.<wbr/>extension.<wbr/>night<wbr/>Mode<wbr/>Indicator 42305 </td> 42306 <td class="entry_type"> 42307 <span class="entry_type_name entry_type_name_enum">int32</span> 42308 42309 <span class="entry_type_visibility"> [public]</span> 42310 42311 42312 42313 42314 42315 <ul class="entry_type_enum"> 42316 <li> 42317 <span class="entry_type_enum_name">UNKNOWN (v3.11)</span> 42318 <span class="entry_type_enum_notes"><p>The camera can't accurately assess the scene's lighting to determine if a Night Mode 42319Camera Extension capture would improve the photo.<wbr/> This can happen when the current 42320camera configuration doesn't support night mode indicator detection,<wbr/> such as when 42321the auto exposure mode is ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE,<wbr/> or 42322ON_<wbr/>EXTERNAL_<wbr/>FLASH.<wbr/></p></span> 42323 </li> 42324 <li> 42325 <span class="entry_type_enum_name">OFF (v3.11)</span> 42326 <span class="entry_type_enum_notes"><p>The camera has detected lighting conditions that are sufficiently bright.<wbr/> Night 42327Mode Camera Extensions is available but may not be able to optimize the camera 42328settings to take a higher quality photo.<wbr/></p></span> 42329 </li> 42330 <li> 42331 <span class="entry_type_enum_name">ON (v3.11)</span> 42332 <span class="entry_type_enum_notes"><p>The camera has detected low-light conditions.<wbr/> It is recommended to use Night Mode 42333Camera Extension to optimize the camera settings to take a high-quality photo in 42334the dark.<wbr/></p></span> 42335 </li> 42336 </ul> 42337 42338 </td> <!-- entry_type --> 42339 42340 <td class="entry_description"> 42341 <p>Indicates when to activate Night Mode Camera Extension for high-quality 42342still captures in low-light conditions.<wbr/></p> 42343 </td> 42344 42345 <td class="entry_units"> 42346 </td> 42347 42348 <td class="entry_range"> 42349 </td> 42350 42351 <td class="entry_hal_version"> 42352 <p>3.<wbr/>11</p> 42353 </td> 42354 42355 <td class="entry_tags"> 42356 </td> 42357 42358 </tr> 42359 <tr class="entries_header"> 42360 <th class="th_details" colspan="6">Details</th> 42361 </tr> 42362 <tr class="entry_cont"> 42363 <td class="entry_details" colspan="6"> 42364 <p>Provides awareness to the application when the current scene can benefit from using a 42365Night Mode Camera Extension to take a high-quality photo.<wbr/></p> 42366<p>Support for this capture result can be queried via 42367<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p> 42368<p>If the device supports this capability then it will also support 42369<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionCharacteristics.html#EXTENSION_NIGHT">NIGHT</a> 42370and will be available in both 42371<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession.html">sessions</a> and 42372<a href="https://developer.android.com/reference/android/hardware/camera2/CameraExtensionSession.html">sessions</a>.<wbr/></p> 42373<p>The value will be {@code UNKNOWN} in the following auto exposure modes: ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 42374ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE,<wbr/> or ON_<wbr/>EXTERNAL_<wbr/>FLASH.<wbr/></p> 42375 </td> 42376 </tr> 42377 42378 42379 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42380 <!-- end of entry --> 42381 42382 42383 42384 <!-- end of kind --> 42385 </tbody> 42386 42387 <!-- end of section --> 42388 <tr><td colspan="7" id="section_jpegr" class="section">jpegr</td></tr> 42389 42390 42391 <tr><td colspan="7" class="kind">static</td></tr> 42392 42393 <thead class="entries_header"> 42394 <tr> 42395 <th class="th_name">Property Name</th> 42396 <th class="th_type">Type</th> 42397 <th class="th_description">Description</th> 42398 <th class="th_units">Units</th> 42399 <th class="th_range">Range</th> 42400 <th class="th_hal_version">Initial HIDL HAL version</th> 42401 <th class="th_tags">Tags</th> 42402 </tr> 42403 </thead> 42404 42405 <tbody> 42406 42407 42408 42409 42410 42411 42412 42413 42414 42415 42416 <tr class="entry" id="static_android.jpegr.availableJpegRStreamConfigurations"> 42417 <td class="entry_name 42418 " rowspan="3"> 42419 android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RStream<wbr/>Configurations 42420 </td> 42421 <td class="entry_type"> 42422 <span class="entry_type_name entry_type_name_enum">int32</span> 42423 <span class="entry_type_container">x</span> 42424 42425 <span class="entry_type_array"> 42426 n x 4 42427 </span> 42428 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 42429 42430 42431 <span class="entry_type_hwlevel">[limited] </span> 42432 42433 42434 42435 <ul class="entry_type_enum"> 42436 <li> 42437 <span class="entry_type_enum_name">OUTPUT (v3.9)</span> 42438 </li> 42439 <li> 42440 <span class="entry_type_enum_name">INPUT (v3.9)</span> 42441 </li> 42442 </ul> 42443 42444 </td> <!-- entry_type --> 42445 42446 <td class="entry_description"> 42447 <p>The available Jpeg/<wbr/>R stream 42448configurations that this camera device supports 42449(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 42450 </td> 42451 42452 <td class="entry_units"> 42453 </td> 42454 42455 <td class="entry_range"> 42456 </td> 42457 42458 <td class="entry_hal_version"> 42459 <p>3.<wbr/>9</p> 42460 </td> 42461 42462 <td class="entry_tags"> 42463 </td> 42464 42465 </tr> 42466 <tr class="entries_header"> 42467 <th class="th_details" colspan="6">Details</th> 42468 </tr> 42469 <tr class="entry_cont"> 42470 <td class="entry_details" colspan="6"> 42471 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 42472<p>If the camera device supports Jpeg/<wbr/>R,<wbr/> it will support the same stream combinations with 42473Jpeg/<wbr/>R as it does with P010.<wbr/> The stream combinations with Jpeg/<wbr/>R (or P010) supported 42474by the device is determined by the device's hardware level and capabilities.<wbr/></p> 42475<p>All the static,<wbr/> control,<wbr/> and dynamic metadata tags related to JPEG apply to Jpeg/<wbr/>R formats.<wbr/> 42476Configuring JPEG and Jpeg/<wbr/>R streams at the same time is not supported.<wbr/></p> 42477 </td> 42478 </tr> 42479 42480 42481 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42482 <!-- end of entry --> 42483 42484 42485 <tr class="entry" id="static_android.jpegr.availableJpegRMinFrameDurations"> 42486 <td class="entry_name 42487 " rowspan="3"> 42488 android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RMin<wbr/>Frame<wbr/>Durations 42489 </td> 42490 <td class="entry_type"> 42491 <span class="entry_type_name">int64</span> 42492 <span class="entry_type_container">x</span> 42493 42494 <span class="entry_type_array"> 42495 4 x n 42496 </span> 42497 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 42498 42499 42500 <span class="entry_type_hwlevel">[limited] </span> 42501 42502 42503 42504 42505 </td> <!-- entry_type --> 42506 42507 <td class="entry_description"> 42508 <p>This lists the minimum frame duration for each 42509format/<wbr/>size combination for Jpeg/<wbr/>R output formats.<wbr/></p> 42510 </td> 42511 42512 <td class="entry_units"> 42513 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 42514 </td> 42515 42516 <td class="entry_range"> 42517 </td> 42518 42519 <td class="entry_hal_version"> 42520 <p>3.<wbr/>9</p> 42521 </td> 42522 42523 <td class="entry_tags"> 42524 </td> 42525 42526 </tr> 42527 <tr class="entries_header"> 42528 <th class="th_details" colspan="6">Details</th> 42529 </tr> 42530 <tr class="entry_cont"> 42531 <td class="entry_details" colspan="6"> 42532 <p>This should correspond to the frame duration when only that 42533stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 42534set to either OFF or FAST.<wbr/></p> 42535<p>When multiple streams are used in a request,<wbr/> the minimum frame 42536duration will be max(individual stream min durations).<wbr/></p> 42537<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 42538<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 42539calculating the max frame rate.<wbr/></p> 42540 </td> 42541 </tr> 42542 42543 42544 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42545 <!-- end of entry --> 42546 42547 42548 <tr class="entry" id="static_android.jpegr.availableJpegRStallDurations"> 42549 <td class="entry_name 42550 " rowspan="3"> 42551 android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RStall<wbr/>Durations 42552 </td> 42553 <td class="entry_type"> 42554 <span class="entry_type_name">int64</span> 42555 <span class="entry_type_container">x</span> 42556 42557 <span class="entry_type_array"> 42558 4 x n 42559 </span> 42560 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 42561 42562 42563 <span class="entry_type_hwlevel">[limited] </span> 42564 42565 42566 42567 42568 </td> <!-- entry_type --> 42569 42570 <td class="entry_description"> 42571 <p>This lists the maximum stall duration for each 42572output format/<wbr/>size combination for Jpeg/<wbr/>R streams.<wbr/></p> 42573 </td> 42574 42575 <td class="entry_units"> 42576 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 42577 </td> 42578 42579 <td class="entry_range"> 42580 </td> 42581 42582 <td class="entry_hal_version"> 42583 <p>3.<wbr/>9</p> 42584 </td> 42585 42586 <td class="entry_tags"> 42587 </td> 42588 42589 </tr> 42590 <tr class="entries_header"> 42591 <th class="th_details" colspan="6">Details</th> 42592 </tr> 42593 <tr class="entry_cont"> 42594 <td class="entry_details" colspan="6"> 42595 <p>A stall duration is how much extra time would get added 42596to the normal minimum frame duration for a repeating request 42597that has streams with non-zero stall.<wbr/></p> 42598<p>This functions similarly to 42599<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for Jpeg/<wbr/>R 42600streams.<wbr/></p> 42601<p>All Jpeg/<wbr/>R output stream formats may have a nonzero stall 42602duration.<wbr/></p> 42603 </td> 42604 </tr> 42605 42606 42607 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42608 <!-- end of entry --> 42609 42610 42611 <tr class="entry" id="static_android.jpegr.availableJpegRStreamConfigurationsMaximumResolution"> 42612 <td class="entry_name 42613 " rowspan="3"> 42614 android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RStream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution 42615 </td> 42616 <td class="entry_type"> 42617 <span class="entry_type_name entry_type_name_enum">int32</span> 42618 <span class="entry_type_container">x</span> 42619 42620 <span class="entry_type_array"> 42621 n x 4 42622 </span> 42623 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 42624 42625 42626 42627 42628 42629 <ul class="entry_type_enum"> 42630 <li> 42631 <span class="entry_type_enum_name">OUTPUT (v3.9)</span> 42632 </li> 42633 <li> 42634 <span class="entry_type_enum_name">INPUT (v3.9)</span> 42635 </li> 42636 </ul> 42637 42638 </td> <!-- entry_type --> 42639 42640 <td class="entry_description"> 42641 <p>The available Jpeg/<wbr/>R stream 42642configurations that this camera device supports 42643(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 42644 </td> 42645 42646 <td class="entry_units"> 42647 </td> 42648 42649 <td class="entry_range"> 42650 </td> 42651 42652 <td class="entry_hal_version"> 42653 <p>3.<wbr/>9</p> 42654 </td> 42655 42656 <td class="entry_tags"> 42657 </td> 42658 42659 </tr> 42660 <tr class="entries_header"> 42661 <th class="th_details" colspan="6">Details</th> 42662 </tr> 42663 <tr class="entry_cont"> 42664 <td class="entry_details" colspan="6"> 42665 <p>Refer to <a href="#static_android.jpegr.availableJpegRStreamConfigurations">android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RStream<wbr/>Configurations</a> for details.<wbr/></p> 42666 </td> 42667 </tr> 42668 42669 42670 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42671 <!-- end of entry --> 42672 42673 42674 <tr class="entry" id="static_android.jpegr.availableJpegRMinFrameDurationsMaximumResolution"> 42675 <td class="entry_name 42676 " rowspan="3"> 42677 android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RMin<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 42678 </td> 42679 <td class="entry_type"> 42680 <span class="entry_type_name">int64</span> 42681 <span class="entry_type_container">x</span> 42682 42683 <span class="entry_type_array"> 42684 4 x n 42685 </span> 42686 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 42687 42688 42689 42690 42691 42692 42693 </td> <!-- entry_type --> 42694 42695 <td class="entry_description"> 42696 <p>This lists the minimum frame duration for each 42697format/<wbr/>size combination for Jpeg/<wbr/>R output formats for CaptureRequests where 42698<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 42699<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 42700 </td> 42701 42702 <td class="entry_units"> 42703 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 42704 </td> 42705 42706 <td class="entry_range"> 42707 </td> 42708 42709 <td class="entry_hal_version"> 42710 <p>3.<wbr/>9</p> 42711 </td> 42712 42713 <td class="entry_tags"> 42714 </td> 42715 42716 </tr> 42717 <tr class="entries_header"> 42718 <th class="th_details" colspan="6">Details</th> 42719 </tr> 42720 <tr class="entry_cont"> 42721 <td class="entry_details" colspan="6"> 42722 <p>Refer to <a href="#static_android.jpegr.availableJpegRMinFrameDurations">android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RMin<wbr/>Frame<wbr/>Durations</a> for details.<wbr/></p> 42723 </td> 42724 </tr> 42725 42726 42727 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42728 <!-- end of entry --> 42729 42730 42731 <tr class="entry" id="static_android.jpegr.availableJpegRStallDurationsMaximumResolution"> 42732 <td class="entry_name 42733 " rowspan="3"> 42734 android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RStall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 42735 </td> 42736 <td class="entry_type"> 42737 <span class="entry_type_name">int64</span> 42738 <span class="entry_type_container">x</span> 42739 42740 <span class="entry_type_array"> 42741 4 x n 42742 </span> 42743 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 42744 42745 42746 42747 42748 42749 42750 </td> <!-- entry_type --> 42751 42752 <td class="entry_description"> 42753 <p>This lists the maximum stall duration for each 42754output format/<wbr/>size combination for Jpeg/<wbr/>R streams for CaptureRequests where 42755<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 42756<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> 42757 </td> 42758 42759 <td class="entry_units"> 42760 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 42761 </td> 42762 42763 <td class="entry_range"> 42764 </td> 42765 42766 <td class="entry_hal_version"> 42767 <p>3.<wbr/>9</p> 42768 </td> 42769 42770 <td class="entry_tags"> 42771 </td> 42772 42773 </tr> 42774 <tr class="entries_header"> 42775 <th class="th_details" colspan="6">Details</th> 42776 </tr> 42777 <tr class="entry_cont"> 42778 <td class="entry_details" colspan="6"> 42779 <p>Refer to <a href="#static_android.jpegr.availableJpegRStallDurations">android.<wbr/>jpegr.<wbr/>available<wbr/>Jpeg<wbr/>RStall<wbr/>Durations</a> for details.<wbr/></p> 42780 </td> 42781 </tr> 42782 42783 42784 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42785 <!-- end of entry --> 42786 42787 42788 42789 <!-- end of kind --> 42790 </tbody> 42791 42792 <!-- end of section --> 42793 <tr><td colspan="7" id="section_sharedSession" class="section">sharedSession</td></tr> 42794 42795 42796 <tr><td colspan="7" class="kind">static</td></tr> 42797 42798 <thead class="entries_header"> 42799 <tr> 42800 <th class="th_name">Property Name</th> 42801 <th class="th_type">Type</th> 42802 <th class="th_description">Description</th> 42803 <th class="th_units">Units</th> 42804 <th class="th_range">Range</th> 42805 <th class="th_hal_version">Initial HIDL HAL version</th> 42806 <th class="th_tags">Tags</th> 42807 </tr> 42808 </thead> 42809 42810 <tbody> 42811 42812 42813 42814 42815 42816 42817 42818 42819 42820 42821 <tr class="entry" id="static_android.sharedSession.colorSpace"> 42822 <td class="entry_name 42823 " rowspan="3"> 42824 android.<wbr/>shared<wbr/>Session.<wbr/>color<wbr/>Space 42825 </td> 42826 <td class="entry_type"> 42827 <span class="entry_type_name entry_type_name_enum">byte</span> 42828 42829 <span class="entry_type_visibility"> [fwk_only]</span> 42830 42831 42832 42833 42834 42835 <ul class="entry_type_enum"> 42836 <li> 42837 <span class="entry_type_enum_name">UNSPECIFIED (v3.11)</span> 42838 <span class="entry_type_enum_value">-1</span> 42839 </li> 42840 <li> 42841 <span class="entry_type_enum_name">SRGB (v3.11)</span> 42842 <span class="entry_type_enum_value">0</span> 42843 </li> 42844 <li> 42845 <span class="entry_type_enum_name">DISPLAY_P3 (v3.11)</span> 42846 <span class="entry_type_enum_value">7</span> 42847 </li> 42848 <li> 42849 <span class="entry_type_enum_name">BT2020_HLG (v3.11)</span> 42850 <span class="entry_type_enum_value">16</span> 42851 </li> 42852 </ul> 42853 42854 </td> <!-- entry_type --> 42855 42856 <td class="entry_description"> 42857 <p>Color space used for shared session configuration for all the output targets 42858when camera is opened in shared mode.<wbr/> This should be one of the values specified in 42859availableColorSpaceProfilesMap.<wbr/></p> 42860 </td> 42861 42862 <td class="entry_units"> 42863 </td> 42864 42865 <td class="entry_range"> 42866 </td> 42867 42868 <td class="entry_hal_version"> 42869 <p>3.<wbr/>11</p> 42870 </td> 42871 42872 <td class="entry_tags"> 42873 </td> 42874 42875 </tr> 42876 42877 <tr class="entries_header"> 42878 <th class="th_details" colspan="6">HAL Implementation Details</th> 42879 </tr> 42880 <tr class="entry_cont"> 42881 <td class="entry_details" colspan="6"> 42882 <p>Do not set this property directly.<wbr/> Android camera framework will generate this tag if the 42883camera device can be opened in shared mode.<wbr/></p> 42884 </td> 42885 </tr> 42886 42887 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42888 <!-- end of entry --> 42889 42890 42891 <tr class="entry" id="static_android.sharedSession.outputConfigurations"> 42892 <td class="entry_name 42893 " rowspan="3"> 42894 android.<wbr/>shared<wbr/>Session.<wbr/>output<wbr/>Configurations 42895 </td> 42896 <td class="entry_type"> 42897 <span class="entry_type_name">int64</span> 42898 <span class="entry_type_container">x</span> 42899 42900 <span class="entry_type_array"> 42901 n 42902 </span> 42903 <span class="entry_type_visibility"> [fwk_only]</span> 42904 42905 42906 42907 42908 42909 42910 </td> <!-- entry_type --> 42911 42912 <td class="entry_description"> 42913 <p>List of shared output configurations that this camera device supports when 42914camera is opened in shared mode.<wbr/> Array contains following entries for each supported 42915shared configuration: 429161) surface type 429172) width 429183) height 429194) format 429205) mirrorMode 429216) useReadoutTimestamp 429227) timestampBase 429238) dataspace 429249) usage 4292510) streamUsecase 4292611) physical camera id len 4292712) physical camera id as UTF-8 null terminated string.<wbr/></p> 42928 </td> 42929 42930 <td class="entry_units"> 42931 </td> 42932 42933 <td class="entry_range"> 42934 </td> 42935 42936 <td class="entry_hal_version"> 42937 <p>3.<wbr/>11</p> 42938 </td> 42939 42940 <td class="entry_tags"> 42941 </td> 42942 42943 </tr> 42944 42945 <tr class="entries_header"> 42946 <th class="th_details" colspan="6">HAL Implementation Details</th> 42947 </tr> 42948 <tr class="entry_cont"> 42949 <td class="entry_details" colspan="6"> 42950 <p>Do not set this property directly.<wbr/> Android camera framework will generate this tag if the 42951camera device can be opened in shared mode.<wbr/></p> 42952 </td> 42953 </tr> 42954 42955 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 42956 <!-- end of entry --> 42957 42958 42959 <tr class="entry" id="static_android.sharedSession.configuration"> 42960 <td class="entry_name 42961 " rowspan="3"> 42962 android.<wbr/>shared<wbr/>Session.<wbr/>configuration 42963 </td> 42964 <td class="entry_type"> 42965 <span class="entry_type_name">byte</span> 42966 42967 <span class="entry_type_visibility"> [fwk_system_public as sharedSessionConfiguration]</span> 42968 42969 <span class="entry_type_synthetic">[synthetic] </span> 42970 42971 42972 42973 42974 42975 </td> <!-- entry_type --> 42976 42977 <td class="entry_description"> 42978 <p>The available stream configurations that this camera device supports for 42979shared capture session when camera is opened in shared mode.<wbr/> Android camera framework 42980will generate this tag if the camera device can be opened in shared mode.<wbr/></p> 42981 </td> 42982 42983 <td class="entry_units"> 42984 </td> 42985 42986 <td class="entry_range"> 42987 </td> 42988 42989 <td class="entry_hal_version"> 42990 <p>3.<wbr/>2</p> 42991 </td> 42992 42993 <td class="entry_tags"> 42994 </td> 42995 42996 </tr> 42997 42998 <tr class="entries_header"> 42999 <th class="th_details" colspan="6">HAL Implementation Details</th> 43000 </tr> 43001 <tr class="entry_cont"> 43002 <td class="entry_details" colspan="6"> 43003 <p>Do not set this property directly (it is synthetic and will not be available at the 43004HAL layer);</p> 43005 </td> 43006 </tr> 43007 43008 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 43009 <!-- end of entry --> 43010 43011 43012 43013 <!-- end of kind --> 43014 </tbody> 43015 43016 <!-- end of section --> 43017 <tr><td colspan="7" id="section_desktopEffects" class="section">desktopEffects</td></tr> 43018 43019 43020 <tr><td colspan="7" class="kind">static</td></tr> 43021 43022 <thead class="entries_header"> 43023 <tr> 43024 <th class="th_name">Property Name</th> 43025 <th class="th_type">Type</th> 43026 <th class="th_description">Description</th> 43027 <th class="th_units">Units</th> 43028 <th class="th_range">Range</th> 43029 <th class="th_hal_version">Initial HIDL HAL version</th> 43030 <th class="th_tags">Tags</th> 43031 </tr> 43032 </thead> 43033 43034 <tbody> 43035 43036 43037 43038 43039 43040 43041 43042 43043 43044 43045 <tr class="entry" id="static_android.desktopEffects.capabilities"> 43046 <td class="entry_name 43047 " rowspan="3"> 43048 android.<wbr/>desktop<wbr/>Effects.<wbr/>capabilities 43049 </td> 43050 <td class="entry_type"> 43051 <span class="entry_type_name entry_type_name_enum">byte</span> 43052 <span class="entry_type_container">x</span> 43053 43054 <span class="entry_type_array"> 43055 n 43056 </span> 43057 <span class="entry_type_visibility"> [system as enumList]</span> 43058 43059 43060 43061 43062 <div class="entry_type_notes">list of enums</div> 43063 43064 <ul class="entry_type_enum"> 43065 <li> 43066 <span class="entry_type_enum_name">BACKGROUND_BLUR (v3.2)</span> 43067 <span class="entry_type_enum_notes"><p>Background blur can be activated via <a href="#controls_android.desktopEffects.backgroundBlurMode">android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Mode</a></p></span> 43068 </li> 43069 <li> 43070 <span class="entry_type_enum_name">FACE_RETOUCH (v3.2)</span> 43071 <span class="entry_type_enum_notes"><p>Face retouch can be activated via <a href="#controls_android.desktopEffects.faceRetouchMode">android.<wbr/>desktop<wbr/>Effects.<wbr/>face<wbr/>Retouch<wbr/>Mode</a></p></span> 43072 </li> 43073 <li> 43074 <span class="entry_type_enum_name">PORTRAIT_RELIGHT (v3.2)</span> 43075 <span class="entry_type_enum_notes"><p>Portrait relight can be activated via <a href="#controls_android.desktopEffects.portraitRelightMode">android.<wbr/>desktop<wbr/>Effects.<wbr/>portrait<wbr/>Relight<wbr/>Mode</a></p></span> 43076 </li> 43077 </ul> 43078 43079 </td> <!-- entry_type --> 43080 43081 <td class="entry_description"> 43082 <p>List of special effects supported by the camera device.<wbr/></p> 43083 </td> 43084 43085 <td class="entry_units"> 43086 </td> 43087 43088 <td class="entry_range"> 43089 </td> 43090 43091 <td class="entry_hal_version"> 43092 <p>3.<wbr/>2</p> 43093 </td> 43094 43095 <td class="entry_tags"> 43096 </td> 43097 43098 </tr> 43099 <tr class="entries_header"> 43100 <th class="th_details" colspan="6">Details</th> 43101 </tr> 43102 <tr class="entry_cont"> 43103 <td class="entry_details" colspan="6"> 43104 <p>Available features supported by the camera device for large screen video conferencing.<wbr/></p> 43105 </td> 43106 </tr> 43107 43108 43109 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 43110 <!-- end of entry --> 43111 43112 43113 <tr class="entry" id="static_android.desktopEffects.backgroundBlurModes"> 43114 <td class="entry_name 43115 " rowspan="3"> 43116 android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Modes 43117 </td> 43118 <td class="entry_type"> 43119 <span class="entry_type_name">byte</span> 43120 <span class="entry_type_container">x</span> 43121 43122 <span class="entry_type_array"> 43123 n 43124 </span> 43125 <span class="entry_type_visibility"> [system as enumList]</span> 43126 43127 43128 43129 43130 <div class="entry_type_notes">list of enums (android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Mode)</div> 43131 43132 43133 </td> <!-- entry_type --> 43134 43135 <td class="entry_description"> 43136 <p>List of background blur modes supported by the camera device.<wbr/> The key will only exist 43137if BACKGROUND_<wbr/>BLUR is listed by <a href="#static_android.desktopEffects.capabilities">android.<wbr/>desktop<wbr/>Effects.<wbr/>capabilities</a>.<wbr/></p> 43138 </td> 43139 43140 <td class="entry_units"> 43141 </td> 43142 43143 <td class="entry_range"> 43144 <p>Any value listed in <a href="#controls_android.desktopEffects.backgroundBlurMode">android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Mode</a></p> 43145 </td> 43146 43147 <td class="entry_hal_version"> 43148 <p>3.<wbr/>2</p> 43149 </td> 43150 43151 <td class="entry_tags"> 43152 </td> 43153 43154 </tr> 43155 <tr class="entries_header"> 43156 <th class="th_details" colspan="6">Details</th> 43157 </tr> 43158 <tr class="entry_cont"> 43159 <td class="entry_details" colspan="6"> 43160 <p>Lists the valid modes for <a href="#controls_android.desktopEffects.backgroundBlurMode">android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Mode</a>.<wbr/></p> 43161 </td> 43162 </tr> 43163 43164 43165 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 43166 <!-- end of entry --> 43167 43168 43169 43170 <!-- end of kind --> 43171 </tbody> 43172 <tr><td colspan="7" class="kind">controls</td></tr> 43173 43174 <thead class="entries_header"> 43175 <tr> 43176 <th class="th_name">Property Name</th> 43177 <th class="th_type">Type</th> 43178 <th class="th_description">Description</th> 43179 <th class="th_units">Units</th> 43180 <th class="th_range">Range</th> 43181 <th class="th_hal_version">Initial HIDL HAL version</th> 43182 <th class="th_tags">Tags</th> 43183 </tr> 43184 </thead> 43185 43186 <tbody> 43187 43188 43189 43190 43191 43192 43193 43194 43195 43196 43197 <tr class="entry" id="controls_android.desktopEffects.backgroundBlurMode"> 43198 <td class="entry_name 43199 " rowspan="1"> 43200 android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Mode 43201 </td> 43202 <td class="entry_type"> 43203 <span class="entry_type_name entry_type_name_enum">byte</span> 43204 43205 <span class="entry_type_visibility"> [system]</span> 43206 43207 43208 43209 43210 43211 <ul class="entry_type_enum"> 43212 <li> 43213 <span class="entry_type_enum_name">OFF (v3.2)</span> 43214 <span class="entry_type_enum_notes"><p>Don't use background blur</p></span> 43215 </li> 43216 <li> 43217 <span class="entry_type_enum_name">LIGHT (v3.2)</span> 43218 <span class="entry_type_enum_notes"><p>Blur the background with light blur strength</p></span> 43219 </li> 43220 <li> 43221 <span class="entry_type_enum_name">FULL (v3.2)</span> 43222 <span class="entry_type_enum_notes"><p>Blur the background with full blur strength</p></span> 43223 </li> 43224 </ul> 43225 43226 </td> <!-- entry_type --> 43227 43228 <td class="entry_description"> 43229 <p>Control how the background should be blurred.<wbr/> Supported modes are listed in 43230<a href="#static_android.desktopEffects.backgroundBlurModes">android.<wbr/>desktop<wbr/>Effects.<wbr/>background<wbr/>Blur<wbr/>Modes</a> by the camera device.<wbr/></p> 43231 </td> 43232 43233 <td class="entry_units"> 43234 </td> 43235 43236 <td class="entry_range"> 43237 </td> 43238 43239 <td class="entry_hal_version"> 43240 <p>3.<wbr/>2</p> 43241 </td> 43242 43243 <td class="entry_tags"> 43244 </td> 43245 43246 </tr> 43247 43248 43249 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 43250 <!-- end of entry --> 43251 43252 43253 <tr class="entry" id="controls_android.desktopEffects.faceRetouchMode"> 43254 <td class="entry_name 43255 " rowspan="1"> 43256 android.<wbr/>desktop<wbr/>Effects.<wbr/>face<wbr/>Retouch<wbr/>Mode 43257 </td> 43258 <td class="entry_type"> 43259 <span class="entry_type_name entry_type_name_enum">byte</span> 43260 43261 <span class="entry_type_visibility"> [system as boolean]</span> 43262 43263 43264 43265 43266 43267 <ul class="entry_type_enum"> 43268 <li> 43269 <span class="entry_type_enum_name">OFF (v3.2)</span> 43270 <span class="entry_type_enum_notes"><p>Turn off face retouch</p></span> 43271 </li> 43272 <li> 43273 <span class="entry_type_enum_name">ON (v3.2)</span> 43274 <span class="entry_type_enum_notes"><p>Turn on face retouch.<wbr/> A strength can be set by <a href="#controls_android.desktopEffects.faceRetouchStrength">android.<wbr/>desktop<wbr/>Effects.<wbr/>face<wbr/>Retouch<wbr/>Strength</a></p></span> 43275 </li> 43276 </ul> 43277 43278 </td> <!-- entry_type --> 43279 43280 <td class="entry_description"> 43281 <p>Whether to enable face retouch effect.<wbr/></p> 43282 </td> 43283 43284 <td class="entry_units"> 43285 </td> 43286 43287 <td class="entry_range"> 43288 </td> 43289 43290 <td class="entry_hal_version"> 43291 <p>3.<wbr/>2</p> 43292 </td> 43293 43294 <td class="entry_tags"> 43295 </td> 43296 43297 </tr> 43298 43299 43300 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 43301 <!-- end of entry --> 43302 43303 43304 <tr class="entry" id="controls_android.desktopEffects.faceRetouchStrength"> 43305 <td class="entry_name 43306 " rowspan="1"> 43307 android.<wbr/>desktop<wbr/>Effects.<wbr/>face<wbr/>Retouch<wbr/>Strength 43308 </td> 43309 <td class="entry_type"> 43310 <span class="entry_type_name">byte</span> 43311 43312 <span class="entry_type_visibility"> [system]</span> 43313 43314 43315 43316 43317 43318 43319 </td> <!-- entry_type --> 43320 43321 <td class="entry_description"> 43322 <p>Control the strength of face retouch applied to the frames.<wbr/> If 43323<a href="#controls_android.desktopEffects.faceRetouchMode">android.<wbr/>desktop<wbr/>Effects.<wbr/>face<wbr/>Retouch<wbr/>Mode</a> in ON without a faceRetouchStrength,<wbr/> 43324a default will be set by the camera device.<wbr/></p> 43325 </td> 43326 43327 <td class="entry_units"> 43328 1-100; 100 is maximum strength.<wbr/> 43329 </td> 43330 43331 <td class="entry_range"> 43332 </td> 43333 43334 <td class="entry_hal_version"> 43335 <p>3.<wbr/>2</p> 43336 </td> 43337 43338 <td class="entry_tags"> 43339 </td> 43340 43341 </tr> 43342 43343 43344 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 43345 <!-- end of entry --> 43346 43347 43348 <tr class="entry" id="controls_android.desktopEffects.portraitRelightMode"> 43349 <td class="entry_name 43350 " rowspan="1"> 43351 android.<wbr/>desktop<wbr/>Effects.<wbr/>portrait<wbr/>Relight<wbr/>Mode 43352 </td> 43353 <td class="entry_type"> 43354 <span class="entry_type_name entry_type_name_enum">byte</span> 43355 43356 <span class="entry_type_visibility"> [system as boolean]</span> 43357 43358 43359 43360 43361 43362 <ul class="entry_type_enum"> 43363 <li> 43364 <span class="entry_type_enum_name">OFF (v3.2)</span> 43365 <span class="entry_type_enum_notes"><p>Do not use portrait relight</p></span> 43366 </li> 43367 <li> 43368 <span class="entry_type_enum_name">ON (v3.2)</span> 43369 <span class="entry_type_enum_notes"><p>Use portrait relight</p></span> 43370 </li> 43371 </ul> 43372 43373 </td> <!-- entry_type --> 43374 43375 <td class="entry_description"> 43376 <p>Whether to enable portrait relighting effect.<wbr/></p> 43377 </td> 43378 43379 <td class="entry_units"> 43380 </td> 43381 43382 <td class="entry_range"> 43383 </td> 43384 43385 <td class="entry_hal_version"> 43386 <p>3.<wbr/>2</p> 43387 </td> 43388 43389 <td class="entry_tags"> 43390 </td> 43391 43392 </tr> 43393 43394 43395 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 43396 <!-- end of entry --> 43397 43398 43399 43400 <!-- end of kind --> 43401 </tbody> 43402 43403 <!-- end of section --> 43404<!-- </namespace> --> 43405 </table> 43406 43407 <div class="tags" id="tag_index"> 43408 <h2>Tags</h2> 43409 <ul> 43410 <li id="tag_BC">BC - 43411 Needed for backwards compatibility with old Java API 43412 43413 <ul class="tags_entries"> 43414 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 43415 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 43416 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 43417 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 43418 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 43419 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 43420 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 43421 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 43422 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 43423 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 43424 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 43425 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 43426 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 43427 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 43428 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 43429 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 43430 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 43431 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 43432 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> 43433 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 43434 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> 43435 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 43436 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 43437 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 43438 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 43439 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 43440 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 43441 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 43442 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 43443 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 43444 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li> 43445 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li> 43446 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 43447 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 43448 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 43449 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 43450 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 43451 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 43452 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 43453 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 43454 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 43455 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 43456 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 43457 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 43458 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 43459 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 43460 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 43461 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 43462 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 43463 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 43464 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 43465 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 43466 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 43467 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 43468 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 43469 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 43470 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 43471 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 43472 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 43473 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 43474 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> 43475 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 43476 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 43477 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 43478 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 43479 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 43480 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 43481 </ul> 43482 </li> <!-- tag_BC --> 43483 <li id="tag_V1">V1 - 43484 New features for first camera 2 release (API1) 43485 43486 <ul class="tags_entries"> 43487 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li> 43488 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li> 43489 <li><a href="#static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">android.control.availableHighSpeedVideoConfigurationsMaximumResolution</a> (static)</li> 43490 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 43491 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 43492 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 43493 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 43494 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 43495 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 43496 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 43497 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 43498 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 43499 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 43500 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 43501 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 43502 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 43503 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 43504 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 43505 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 43506 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 43507 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 43508 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 43509 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 43510 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 43511 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 43512 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 43513 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 43514 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 43515 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 43516 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 43517 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 43518 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 43519 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li> 43520 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 43521 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li> 43522 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 43523 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 43524 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 43525 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 43526 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 43527 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li> 43528 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 43529 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 43530 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 43531 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 43532 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 43533 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 43534 </ul> 43535 </li> <!-- tag_V1 --> 43536 <li id="tag_RAW">RAW - 43537 Needed for useful RAW image processing and DNG file support 43538 43539 <ul class="tags_entries"> 43540 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 43541 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 43542 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 43543 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 43544 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 43545 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 43546 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li> 43547 <li><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.sensor.info.activeArraySizeMaximumResolution</a> (static)</li> 43548 <li><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.sensor.info.pixelArraySizeMaximumResolution</a> (static)</li> 43549 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.sensor.info.preCorrectionActiveArraySizeMaximumResolution</a> (static)</li> 43550 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 43551 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> 43552 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 43553 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 43554 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 43555 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 43556 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 43557 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 43558 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 43559 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 43560 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 43561 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li> 43562 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 43563 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 43564 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 43565 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li> 43566 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li> 43567 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 43568 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 43569 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 43570 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li> 43571 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 43572 </ul> 43573 </li> <!-- tag_RAW --> 43574 <li id="tag_HAL2">HAL2 - 43575 Entry is only used by camera device legacy HAL 2.x 43576 43577 <ul class="tags_entries"> 43578 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 43579 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 43580 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 43581 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 43582 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 43583 </ul> 43584 </li> <!-- tag_HAL2 --> 43585 <li id="tag_FULL">FULL - 43586 Entry is required for full hardware level devices, and optional for other hardware levels 43587 43588 <ul class="tags_entries"> 43589 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 43590 </ul> 43591 </li> <!-- tag_FULL --> 43592 <li id="tag_DEPTH">DEPTH - 43593 Entry is required for the depth capability. 43594 43595 <ul class="tags_entries"> 43596 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li> 43597 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li> 43598 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li> 43599 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li> 43600 <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li> 43601 <li><a href="#static_android.lens.distortionMaximumResolution">android.lens.distortionMaximumResolution</a> (static)</li> 43602 <li><a href="#static_android.lens.intrinsicCalibrationMaximumResolution">android.lens.intrinsicCalibrationMaximumResolution</a> (static)</li> 43603 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li> 43604 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li> 43605 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li> 43606 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li> 43607 <li><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a> (static)</li> 43608 <li><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a> (static)</li> 43609 <li><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a> (static)</li> 43610 <li><a href="#static_android.depth.availableDepthStreamConfigurationsMaximumResolution">android.depth.availableDepthStreamConfigurationsMaximumResolution</a> (static)</li> 43611 <li><a href="#static_android.depth.availableDepthMinFrameDurationsMaximumResolution">android.depth.availableDepthMinFrameDurationsMaximumResolution</a> (static)</li> 43612 <li><a href="#static_android.depth.availableDepthStallDurationsMaximumResolution">android.depth.availableDepthStallDurationsMaximumResolution</a> (static)</li> 43613 <li><a href="#static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution</a> (static)</li> 43614 <li><a href="#static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution</a> (static)</li> 43615 <li><a href="#static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">android.depth.availableDynamicDepthStallDurationsMaximumResolution</a> (static)</li> 43616 </ul> 43617 </li> <!-- tag_DEPTH --> 43618 <li id="tag_REPROC">REPROC - 43619 Entry is required for the YUV or PRIVATE reprocessing capability. 43620 43621 <ul class="tags_entries"> 43622 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 43623 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 43624 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 43625 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 43626 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li> 43627 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li> 43628 <li><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a> (static)</li> 43629 <li><a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.scaler.availableInputOutputFormatsMapMaximumResolution</a> (static)</li> 43630 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li> 43631 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li> 43632 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li> 43633 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 43634 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 43635 </ul> 43636 </li> <!-- tag_REPROC --> 43637 <li id="tag_LOGICALCAMERA">LOGICALCAMERA - 43638 Entry is required for logical multi-camera capability. 43639 43640 <ul class="tags_entries"> 43641 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li> 43642 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li> 43643 <li><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a> (dynamic)</li> 43644 <li><a href="#dynamic_android.logicalMultiCamera.activePhysicalSensorCropRegion">android.logicalMultiCamera.activePhysicalSensorCropRegion</a> (dynamic)</li> 43645 </ul> 43646 </li> <!-- tag_LOGICALCAMERA --> 43647 <li id="tag_HEIC">HEIC - 43648 Entry is required for devices with HEIC (High Efficiency Image Format) support. 43649 43650 <ul class="tags_entries"> 43651 <li><a href="#static_android.heic.info.supported">android.heic.info.supported</a> (static)</li> 43652 <li><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a> (static)</li> 43653 <li><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a> (static)</li> 43654 <li><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a> (static)</li> 43655 <li><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a> (static)</li> 43656 <li><a href="#static_android.heic.availableHeicStreamConfigurationsMaximumResolution">android.heic.availableHeicStreamConfigurationsMaximumResolution</a> (static)</li> 43657 <li><a href="#static_android.heic.availableHeicMinFrameDurationsMaximumResolution">android.heic.availableHeicMinFrameDurationsMaximumResolution</a> (static)</li> 43658 <li><a href="#static_android.heic.availableHeicStallDurationsMaximumResolution">android.heic.availableHeicStallDurationsMaximumResolution</a> (static)</li> 43659 <li><a href="#static_android.heic.availableHeicUltraHdrStreamConfigurations">android.heic.availableHeicUltraHdrStreamConfigurations</a> (static)</li> 43660 <li><a href="#static_android.heic.availableHeicUltraHdrMinFrameDurations">android.heic.availableHeicUltraHdrMinFrameDurations</a> (static)</li> 43661 <li><a href="#static_android.heic.availableHeicUltraHdrStallDurations">android.heic.availableHeicUltraHdrStallDurations</a> (static)</li> 43662 <li><a href="#static_android.heic.availableHeicUltraHdrStreamConfigurationsMaximumResolution">android.heic.availableHeicUltraHdrStreamConfigurationsMaximumResolution</a> (static)</li> 43663 <li><a href="#static_android.heic.availableHeicUltraHdrMinFrameDurationsMaximumResolution">android.heic.availableHeicUltraHdrMinFrameDurationsMaximumResolution</a> (static)</li> 43664 <li><a href="#static_android.heic.availableHeicUltraHdrStallDurationsMaximumResolution">android.heic.availableHeicUltraHdrStallDurationsMaximumResolution</a> (static)</li> 43665 </ul> 43666 </li> <!-- tag_HEIC --> 43667 <li id="tag_FUTURE">FUTURE - 43668 Entry is under-specified and is not required for now. This is for book-keeping purpose, 43669 do not implement or use it, it may be revised for future. 43670 43671 <ul class="tags_entries"> 43672 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 43673 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 43674 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 43675 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 43676 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 43677 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 43678 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 43679 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> 43680 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> 43681 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> 43682 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 43683 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 43684 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 43685 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 43686 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 43687 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> 43688 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> 43689 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> 43690 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> 43691 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 43692 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 43693 </ul> 43694 </li> <!-- tag_FUTURE --> 43695 </ul> 43696 </div> 43697 43698 [ <a href="#">top</a> ] 43699 43700</body> 43701</html> 43702