1<!DOCTYPE html> 2<html> 3<!-- Copyright (C) 2012 The Android Open Source Project 4 5 Licensed under the Apache License, Version 2.0 (the "License"); 6 you may not use this file except in compliance with the License. 7 You may obtain a copy of the License at 8 9 http://www.apache.org/licenses/LICENSE-2.0 10 11 Unless required by applicable law or agreed to in writing, software 12 distributed under the License is distributed on an "AS IS" BASIS, 13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 See the License for the specific language governing permissions and 15 limitations under the License. 16--> 17<head> 18 <!-- automatically generated from html.mako. do NOT edit directly --> 19 <meta charset="utf-8" /> 20 <title>Android Camera HAL3.4 Properties</title> 21 <style type="text/css"> 22 body { background-color: #f7f7f7; font-family: Roboto, sans-serif;} 23 h1 { color: #333333; } 24 h2 { color: #333333; } 25 a:link { color: #258aaf; text-decoration: none} 26 a:hover { color: #459aaf; text-decoration: underline } 27 a:visited { color: #154a5f; text-decoration: none} 28 .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777} 29 .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa } 30 .entry { background-color: #f0f0f0 } 31 .entry_cont { background-color: #f0f0f0 } 32 .entries_header { background-color: #dddddd; text-align: center} 33 34 /* toc style */ 35 .toc_section_header { font-size:1.3em; } 36 .toc_kind_header { font-size:1.2em; } 37 .toc_deprecated { text-decoration:line-through; } 38 39 /* table column sizes */ 40 table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word } 41 td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em } 42 .th_name { width: 20% } 43 .th_units { width: 10% } 44 .th_tags { width: 5% } 45 .th_details { width: 25% } 46 .th_type { width: 17% } 47 .th_description { width: 20% } 48 .th_range { width: 8% } 49 .th_hal_version { width: 5% } 50 td { font-size: 0.9em; } 51 52 /* hide the first thead, we need it there only to enforce column sizes */ 53 .thead_dummy { visibility: hidden; } 54 55 /* Entry flair */ 56 .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; } 57 .entry_name_deprecated { text-decoration:line-through; } 58 59 /* Entry type flair */ 60 .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;} 61 .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" } 62 .entry_type_visibility { font-weight: bolder; padding-left:1em} 63 .entry_type_synthetic { font-weight: bolder; color: #996600; } 64 .entry_type_hwlevel { font-weight: bolder; color: #000066; } 65 .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; } 66 .entry_type_enum_name { font-family: monospace; font-weight: bolder; } 67 .entry_type_enum_notes:before { content:" - " } 68 .entry_type_enum_notes>p:first-child { display:inline; } 69 .entry_type_enum_value:before { content:" = " } 70 .entry_type_enum_value { font-family: monospace; } 71 .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; } 72 .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;} 73 .entry_range_deprecated { font-weight: bolder; } 74 75 /* Entry tags flair */ 76 .entry_tags ul { list-style-type: none; } 77 78 /* Entry details (full docs) flair */ 79 .entry_details_header { font-weight: bold; background-color: #dddddd; 80 text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; } 81 82 /* Entry spacer flair */ 83 .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; } 84 85 /* TODO: generate abbr element for each tag link? */ 86 /* TODO for each x.y.z try to link it to the entry */ 87 88 </style> 89 90 <style> 91 92 { 93 /* broken... 94 supposedly there is a bug in chrome that it lays out tables before 95 it knows its being printed, so the page-break-* styles are ignored 96 */ 97 tr { page-break-after: always; page-break-inside: avoid; } 98 } 99 100 </style> 101</head> 102 103 104 105<body> 106 <h1>Android Camera HAL3.2 Properties</h1> 107 108 109 <h2>Table of Contents</h2> 110 <ul class="toc"> 111 <li><a href="#tag_index" class="toc_section_header">Tags</a></li> 112 <li> 113 <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span> 114 <ul class="toc_section"> 115 <li> 116 <span class="toc_kind_header">controls</span> 117 <ul class="toc_section"> 118 <li 119 ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 120 <li 121 ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 122 <li 123 ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 124 <li 125 ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li> 126 </ul> 127 </li> 128 <li> 129 <span class="toc_kind_header">dynamic</span> 130 <ul class="toc_section"> 131 <li 132 ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 133 <li 134 ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 135 <li 136 ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 137 <li 138 ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li> 139 </ul> 140 </li> 141 <li> 142 <span class="toc_kind_header">static</span> 143 <ul class="toc_section"> 144 <li 145 ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li> 146 </ul> 147 </li> 148 </ul> <!-- toc_section --> 149 </li> 150 <li> 151 <span class="toc_section_header"><a href="#section_control">control</a></span> 152 <ul class="toc_section"> 153 <li> 154 <span class="toc_kind_header">controls</span> 155 <ul class="toc_section"> 156 <li 157 ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 158 <li 159 ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 160 <li 161 ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li> 162 <li 163 ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li> 164 <li 165 ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li> 166 <li 167 ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 168 <li 169 ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 170 <li 171 ><a href="#controls_android.control.afMode">android.control.afMode</a></li> 172 <li 173 ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li> 174 <li 175 ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li> 176 <li 177 ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li> 178 <li 179 ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li> 180 <li 181 ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li> 182 <li 183 ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li> 184 <li 185 ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li> 186 <li 187 ><a href="#controls_android.control.mode">android.control.mode</a></li> 188 <li 189 ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li> 190 <li 191 ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 192 <li 193 ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li> 194 <li 195 ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li> 196 <li 197 ><a href="#controls_android.control.extendedSceneMode">android.control.extendedSceneMode</a></li> 198 <li 199 ><a href="#controls_android.control.zoomRatio">android.control.zoomRatio</a></li> 200 <li 201 ><a href="#controls_android.control.afRegionsSet">android.control.afRegionsSet</a></li> 202 <li 203 ><a href="#controls_android.control.aeRegionsSet">android.control.aeRegionsSet</a></li> 204 <li 205 ><a href="#controls_android.control.awbRegionsSet">android.control.awbRegionsSet</a></li> 206 </ul> 207 </li> 208 <li> 209 <span class="toc_kind_header">static</span> 210 <ul class="toc_section"> 211 <li 212 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li> 213 <li 214 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li> 215 <li 216 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li> 217 <li 218 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li> 219 <li 220 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li> 221 <li 222 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li> 223 <li 224 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li> 225 <li 226 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li> 227 <li 228 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li> 229 <li 230 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li> 231 <li 232 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li> 233 <li 234 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li> 235 <li 236 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li> 237 <li 238 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li> 239 <li 240 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li> 241 <li 242 ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li> 243 <li 244 ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li> 245 <li 246 ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li> 247 <li 248 ><a href="#static_android.control.availableModes">android.control.availableModes</a></li> 249 <li 250 ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li> 251 <li 252 ><a href="#static_android.control.availableExtendedSceneModeMaxSizes">android.control.availableExtendedSceneModeMaxSizes</a></li> 253 <li 254 ><a href="#static_android.control.availableExtendedSceneModeZoomRatioRanges">android.control.availableExtendedSceneModeZoomRatioRanges</a></li> 255 <li 256 ><a href="#static_android.control.availableExtendedSceneModeCapabilities">android.control.availableExtendedSceneModeCapabilities</a></li> 257 <li 258 ><a href="#static_android.control.zoomRatioRange">android.control.zoomRatioRange</a></li> 259 <li 260 ><a href="#static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">android.control.availableHighSpeedVideoConfigurationsMaximumResolution</a></li> 261 </ul> 262 </li> 263 <li> 264 <span class="toc_kind_header">dynamic</span> 265 <ul class="toc_section"> 266 <li 267 class="toc_deprecated" 268 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li> 269 <li 270 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 271 <li 272 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 273 <li 274 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li> 275 <li 276 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li> 277 <li 278 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li> 279 <li 280 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 281 <li 282 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 283 <li 284 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li> 285 <li 286 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li> 287 <li 288 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li> 289 <li 290 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li> 291 <li 292 ><a href="#dynamic_android.control.afState">android.control.afState</a></li> 293 <li 294 class="toc_deprecated" 295 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li> 296 <li 297 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li> 298 <li 299 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li> 300 <li 301 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li> 302 <li 303 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li> 304 <li 305 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li> 306 <li 307 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li> 308 <li 309 ><a href="#dynamic_android.control.mode">android.control.mode</a></li> 310 <li 311 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li> 312 <li 313 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 314 <li 315 ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li> 316 <li 317 ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li> 318 <li 319 ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li> 320 <li 321 ><a href="#dynamic_android.control.extendedSceneMode">android.control.extendedSceneMode</a></li> 322 <li 323 ><a href="#dynamic_android.control.zoomRatio">android.control.zoomRatio</a></li> 324 </ul> 325 </li> 326 </ul> <!-- toc_section --> 327 </li> 328 <li> 329 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span> 330 <ul class="toc_section"> 331 <li> 332 <span class="toc_kind_header">controls</span> 333 <ul class="toc_section"> 334 <li 335 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li> 336 </ul> 337 </li> 338 </ul> <!-- toc_section --> 339 </li> 340 <li> 341 <span class="toc_section_header"><a href="#section_edge">edge</a></span> 342 <ul class="toc_section"> 343 <li> 344 <span class="toc_kind_header">controls</span> 345 <ul class="toc_section"> 346 <li 347 ><a href="#controls_android.edge.mode">android.edge.mode</a></li> 348 <li 349 ><a href="#controls_android.edge.strength">android.edge.strength</a></li> 350 </ul> 351 </li> 352 <li> 353 <span class="toc_kind_header">static</span> 354 <ul class="toc_section"> 355 <li 356 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li> 357 </ul> 358 </li> 359 <li> 360 <span class="toc_kind_header">dynamic</span> 361 <ul class="toc_section"> 362 <li 363 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> 364 </ul> 365 </li> 366 </ul> <!-- toc_section --> 367 </li> 368 <li> 369 <span class="toc_section_header"><a href="#section_flash">flash</a></span> 370 <ul class="toc_section"> 371 <li> 372 <span class="toc_kind_header">controls</span> 373 <ul class="toc_section"> 374 <li 375 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> 376 <li 377 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> 378 <li 379 ><a href="#controls_android.flash.mode">android.flash.mode</a></li> 380 </ul> 381 </li> 382 <li> 383 <span class="toc_kind_header">static</span> 384 <ul class="toc_section"> 385 386 <li 387 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li> 388 <li 389 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> 390 391 <li 392 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> 393 <li 394 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> 395 </ul> 396 </li> 397 <li> 398 <span class="toc_kind_header">dynamic</span> 399 <ul class="toc_section"> 400 <li 401 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> 402 <li 403 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> 404 <li 405 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> 406 <li 407 ><a href="#dynamic_android.flash.state">android.flash.state</a></li> 408 </ul> 409 </li> 410 </ul> <!-- toc_section --> 411 </li> 412 <li> 413 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span> 414 <ul class="toc_section"> 415 <li> 416 <span class="toc_kind_header">controls</span> 417 <ul class="toc_section"> 418 <li 419 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li> 420 </ul> 421 </li> 422 <li> 423 <span class="toc_kind_header">static</span> 424 <ul class="toc_section"> 425 <li 426 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li> 427 </ul> 428 </li> 429 <li> 430 <span class="toc_kind_header">dynamic</span> 431 <ul class="toc_section"> 432 <li 433 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li> 434 </ul> 435 </li> 436 </ul> <!-- toc_section --> 437 </li> 438 <li> 439 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span> 440 <ul class="toc_section"> 441 <li> 442 <span class="toc_kind_header">controls</span> 443 <ul class="toc_section"> 444 <li 445 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 446 <li 447 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 448 <li 449 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 450 <li 451 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 452 <li 453 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li> 454 <li 455 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li> 456 <li 457 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 458 <li 459 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 460 </ul> 461 </li> 462 <li> 463 <span class="toc_kind_header">static</span> 464 <ul class="toc_section"> 465 <li 466 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li> 467 <li 468 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li> 469 </ul> 470 </li> 471 <li> 472 <span class="toc_kind_header">dynamic</span> 473 <ul class="toc_section"> 474 <li 475 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 476 <li 477 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 478 <li 479 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 480 <li 481 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 482 <li 483 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li> 484 <li 485 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li> 486 <li 487 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li> 488 <li 489 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 490 <li 491 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 492 </ul> 493 </li> 494 </ul> <!-- toc_section --> 495 </li> 496 <li> 497 <span class="toc_section_header"><a href="#section_lens">lens</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.lens.aperture">android.lens.aperture</a></li> 504 <li 505 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li> 506 <li 507 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li> 508 <li 509 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li> 510 <li 511 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 512 </ul> 513 </li> 514 <li> 515 <span class="toc_kind_header">static</span> 516 <ul class="toc_section"> 517 518 <li 519 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li> 520 <li 521 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li> 522 <li 523 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li> 524 <li 525 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li> 526 <li 527 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li> 528 <li 529 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li> 530 <li 531 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li> 532 <li 533 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li> 534 535 <li 536 ><a href="#static_android.lens.facing">android.lens.facing</a></li> 537 <li 538 ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li> 539 <li 540 ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 541 <li 542 ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 543 <li 544 class="toc_deprecated" 545 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 546 <li 547 ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li> 548 <li 549 ><a href="#static_android.lens.distortion">android.lens.distortion</a></li> 550 <li 551 ><a href="#static_android.lens.distortionMaximumResolution">android.lens.distortionMaximumResolution</a></li> 552 <li 553 ><a href="#static_android.lens.intrinsicCalibrationMaximumResolution">android.lens.intrinsicCalibrationMaximumResolution</a></li> 554 </ul> 555 </li> 556 <li> 557 <span class="toc_kind_header">dynamic</span> 558 <ul class="toc_section"> 559 <li 560 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li> 561 <li 562 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li> 563 <li 564 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li> 565 <li 566 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li> 567 <li 568 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li> 569 <li 570 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 571 <li 572 ><a href="#dynamic_android.lens.state">android.lens.state</a></li> 573 <li 574 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li> 575 <li 576 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 577 <li 578 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 579 <li 580 class="toc_deprecated" 581 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 582 <li 583 ><a href="#dynamic_android.lens.distortion">android.lens.distortion</a></li> 584 </ul> 585 </li> 586 </ul> <!-- toc_section --> 587 </li> 588 <li> 589 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span> 590 <ul class="toc_section"> 591 <li> 592 <span class="toc_kind_header">controls</span> 593 <ul class="toc_section"> 594 <li 595 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 596 <li 597 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li> 598 </ul> 599 </li> 600 <li> 601 <span class="toc_kind_header">static</span> 602 <ul class="toc_section"> 603 <li 604 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li> 605 </ul> 606 </li> 607 <li> 608 <span class="toc_kind_header">dynamic</span> 609 <ul class="toc_section"> 610 <li 611 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 612 </ul> 613 </li> 614 </ul> <!-- toc_section --> 615 </li> 616 <li> 617 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span> 618 <ul class="toc_section"> 619 <li> 620 <span class="toc_kind_header">static</span> 621 <ul class="toc_section"> 622 <li 623 class="toc_deprecated" 624 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> 625 <li 626 class="toc_deprecated" 627 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> 628 <li 629 class="toc_deprecated" 630 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> 631 <li 632 class="toc_deprecated" 633 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li> 634 </ul> 635 </li> 636 <li> 637 <span class="toc_kind_header">dynamic</span> 638 <ul class="toc_section"> 639 <li 640 class="toc_deprecated" 641 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li> 642 </ul> 643 </li> 644 </ul> <!-- toc_section --> 645 </li> 646 <li> 647 <span class="toc_section_header"><a href="#section_request">request</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 class="toc_deprecated" 654 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> 655 <li 656 ><a href="#controls_android.request.id">android.request.id</a></li> 657 <li 658 class="toc_deprecated" 659 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> 660 <li 661 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> 662 <li 663 class="toc_deprecated" 664 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> 665 <li 666 class="toc_deprecated" 667 ><a href="#controls_android.request.type">android.request.type</a></li> 668 </ul> 669 </li> 670 <li> 671 <span class="toc_kind_header">static</span> 672 <ul class="toc_section"> 673 <li 674 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li> 675 <li 676 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li> 677 <li 678 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li> 679 <li 680 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li> 681 <li 682 class="toc_deprecated" 683 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li> 684 <li 685 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li> 686 <li 687 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li> 688 <li 689 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li> 690 <li 691 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li> 692 <li 693 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li> 694 <li 695 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li> 696 <li 697 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li> 698 <li 699 ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li> 700 <li 701 ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li> 702 <li 703 ><a href="#static_android.request.characteristicKeysNeedingPermission">android.request.characteristicKeysNeedingPermission</a></li> 704 </ul> 705 </li> 706 <li> 707 <span class="toc_kind_header">dynamic</span> 708 <ul class="toc_section"> 709 <li 710 class="toc_deprecated" 711 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li> 712 <li 713 ><a href="#dynamic_android.request.id">android.request.id</a></li> 714 <li 715 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li> 716 <li 717 class="toc_deprecated" 718 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li> 719 <li 720 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li> 721 </ul> 722 </li> 723 </ul> <!-- toc_section --> 724 </li> 725 <li> 726 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span> 727 <ul class="toc_section"> 728 <li> 729 <span class="toc_kind_header">controls</span> 730 <ul class="toc_section"> 731 <li 732 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 733 <li 734 ><a href="#controls_android.scaler.rotateAndCrop">android.scaler.rotateAndCrop</a></li> 735 <li 736 ><a href="#controls_android.scaler.cropRegionSet">android.scaler.cropRegionSet</a></li> 737 </ul> 738 </li> 739 <li> 740 <span class="toc_kind_header">static</span> 741 <ul class="toc_section"> 742 <li 743 class="toc_deprecated" 744 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li> 745 <li 746 class="toc_deprecated" 747 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li> 748 <li 749 class="toc_deprecated" 750 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li> 751 <li 752 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li> 753 <li 754 class="toc_deprecated" 755 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li> 756 <li 757 class="toc_deprecated" 758 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li> 759 <li 760 class="toc_deprecated" 761 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li> 762 <li 763 class="toc_deprecated" 764 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li> 765 <li 766 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li> 767 <li 768 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li> 769 <li 770 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li> 771 <li 772 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li> 773 <li 774 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li> 775 <li 776 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li> 777 <li 778 ><a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.scaler.availableRecommendedStreamConfigurations</a></li> 779 <li 780 ><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a></li> 781 <li 782 ><a href="#static_android.scaler.mandatoryStreamCombinations">android.scaler.mandatoryStreamCombinations</a></li> 783 <li 784 ><a href="#static_android.scaler.mandatoryConcurrentStreamCombinations">android.scaler.mandatoryConcurrentStreamCombinations</a></li> 785 <li 786 ><a href="#static_android.scaler.availableRotateAndCropModes">android.scaler.availableRotateAndCropModes</a></li> 787 <li 788 ><a href="#static_android.scaler.defaultSecureImageSize">android.scaler.defaultSecureImageSize</a></li> 789 <li 790 ><a href="#static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">android.scaler.physicalCameraMultiResolutionStreamConfigurations</a></li> 791 <li 792 ><a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.scaler.multiResolutionStreamConfigurationMap</a></li> 793 <li 794 ><a href="#static_android.scaler.availableStreamConfigurationsMaximumResolution">android.scaler.availableStreamConfigurationsMaximumResolution</a></li> 795 <li 796 ><a href="#static_android.scaler.availableMinFrameDurationsMaximumResolution">android.scaler.availableMinFrameDurationsMaximumResolution</a></li> 797 <li 798 ><a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.scaler.availableStallDurationsMaximumResolution</a></li> 799 <li 800 ><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.scaler.streamConfigurationMapMaximumResolution</a></li> 801 <li 802 ><a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.scaler.availableInputOutputFormatsMapMaximumResolution</a></li> 803 <li 804 ><a href="#static_android.scaler.mandatoryMaximumResolutionStreamCombinations">android.scaler.mandatoryMaximumResolutionStreamCombinations</a></li> 805 <li 806 ><a href="#static_android.scaler.multiResolutionStreamSupported">android.scaler.multiResolutionStreamSupported</a></li> 807 </ul> 808 </li> 809 <li> 810 <span class="toc_kind_header">dynamic</span> 811 <ul class="toc_section"> 812 <li 813 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 814 <li 815 ><a href="#dynamic_android.scaler.rotateAndCrop">android.scaler.rotateAndCrop</a></li> 816 </ul> 817 </li> 818 </ul> <!-- toc_section --> 819 </li> 820 <li> 821 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> 822 <ul class="toc_section"> 823 <li> 824 <span class="toc_kind_header">controls</span> 825 <ul class="toc_section"> 826 <li 827 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 828 <li 829 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 830 <li 831 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 832 <li 833 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 834 <li 835 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 836 <li 837 ><a href="#controls_android.sensor.pixelMode">android.sensor.pixelMode</a></li> 838 </ul> 839 </li> 840 <li> 841 <span class="toc_kind_header">static</span> 842 <ul class="toc_section"> 843 844 <li 845 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> 846 <li 847 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> 848 <li 849 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> 850 <li 851 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> 852 <li 853 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> 854 <li 855 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> 856 <li 857 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> 858 <li 859 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> 860 <li 861 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li> 862 <li 863 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li> 864 <li 865 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li> 866 <li 867 ><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.sensor.info.activeArraySizeMaximumResolution</a></li> 868 <li 869 ><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.sensor.info.pixelArraySizeMaximumResolution</a></li> 870 <li 871 ><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.sensor.info.preCorrectionActiveArraySizeMaximumResolution</a></li> 872 <li 873 ><a href="#static_android.sensor.info.binningFactor">android.sensor.info.binningFactor</a></li> 874 875 <li 876 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li> 877 <li 878 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li> 879 <li 880 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li> 881 <li 882 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li> 883 <li 884 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li> 885 <li 886 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li> 887 <li 888 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li> 889 <li 890 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li> 891 <li 892 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> 893 <li 894 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> 895 <li 896 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> 897 <li 898 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> 899 <li 900 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li> 901 <li 902 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> 903 <li 904 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li> 905 <li 906 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li> 907 <li 908 ><a href="#static_android.sensor.opaqueRawSizeMaximumResolution">android.sensor.opaqueRawSizeMaximumResolution</a></li> 909 </ul> 910 </li> 911 <li> 912 <span class="toc_kind_header">dynamic</span> 913 <ul class="toc_section"> 914 <li 915 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 916 <li 917 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 918 <li 919 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 920 <li 921 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 922 <li 923 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 924 <li 925 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> 926 <li 927 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li> 928 <li 929 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> 930 <li 931 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> 932 <li 933 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> 934 <li 935 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 936 <li 937 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 938 <li 939 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li> 940 <li 941 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li> 942 <li 943 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li> 944 <li 945 ><a href="#dynamic_android.sensor.pixelMode">android.sensor.pixelMode</a></li> 946 <li 947 ><a href="#dynamic_android.sensor.rawBinningFactorUsed">android.sensor.rawBinningFactorUsed</a></li> 948 </ul> 949 </li> 950 </ul> <!-- toc_section --> 951 </li> 952 <li> 953 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 954 <ul class="toc_section"> 955 <li> 956 <span class="toc_kind_header">controls</span> 957 <ul class="toc_section"> 958 <li 959 ><a href="#controls_android.shading.mode">android.shading.mode</a></li> 960 <li 961 ><a href="#controls_android.shading.strength">android.shading.strength</a></li> 962 </ul> 963 </li> 964 <li> 965 <span class="toc_kind_header">dynamic</span> 966 <ul class="toc_section"> 967 <li 968 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 969 </ul> 970 </li> 971 <li> 972 <span class="toc_kind_header">static</span> 973 <ul class="toc_section"> 974 <li 975 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li> 976 </ul> 977 </li> 978 </ul> <!-- toc_section --> 979 </li> 980 <li> 981 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> 982 <ul class="toc_section"> 983 <li> 984 <span class="toc_kind_header">controls</span> 985 <ul class="toc_section"> 986 <li 987 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 988 <li 989 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 990 <li 991 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 992 <li 993 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 994 <li 995 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 996 <li 997 ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li> 998 </ul> 999 </li> 1000 <li> 1001 <span class="toc_kind_header">static</span> 1002 <ul class="toc_section"> 1003 1004 <li 1005 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 1006 <li 1007 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 1008 <li 1009 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 1010 <li 1011 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 1012 <li 1013 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 1014 <li 1015 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 1016 <li 1017 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> 1018 <li 1019 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li> 1020 <li 1021 ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li> 1022 1023 </ul> 1024 </li> 1025 <li> 1026 <span class="toc_kind_header">dynamic</span> 1027 <ul class="toc_section"> 1028 <li 1029 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 1030 <li 1031 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 1032 <li 1033 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 1034 <li 1035 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 1036 <li 1037 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 1038 <li 1039 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li> 1040 <li 1041 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 1042 <li 1043 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 1044 <li 1045 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 1046 <li 1047 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 1048 <li 1049 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li> 1050 <li 1051 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 1052 <li 1053 class="toc_deprecated" 1054 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 1055 <li 1056 class="toc_deprecated" 1057 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 1058 <li 1059 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 1060 <li 1061 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 1062 <li 1063 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> 1064 <li 1065 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 1066 <li 1067 ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li> 1068 <li 1069 ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li> 1070 <li 1071 ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li> 1072 <li 1073 ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li> 1074 <li 1075 ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li> 1076 </ul> 1077 </li> 1078 </ul> <!-- toc_section --> 1079 </li> 1080 <li> 1081 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 1082 <ul class="toc_section"> 1083 <li> 1084 <span class="toc_kind_header">controls</span> 1085 <ul class="toc_section"> 1086 <li 1087 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 1088 <li 1089 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 1090 <li 1091 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 1092 <li 1093 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li> 1094 <li 1095 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 1096 <li 1097 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li> 1098 <li 1099 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 1100 </ul> 1101 </li> 1102 <li> 1103 <span class="toc_kind_header">static</span> 1104 <ul class="toc_section"> 1105 <li 1106 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 1107 <li 1108 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> 1109 </ul> 1110 </li> 1111 <li> 1112 <span class="toc_kind_header">dynamic</span> 1113 <ul class="toc_section"> 1114 <li 1115 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 1116 <li 1117 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 1118 <li 1119 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 1120 <li 1121 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li> 1122 <li 1123 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 1124 <li 1125 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li> 1126 <li 1127 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 1128 </ul> 1129 </li> 1130 </ul> <!-- toc_section --> 1131 </li> 1132 <li> 1133 <span class="toc_section_header"><a href="#section_led">led</a></span> 1134 <ul class="toc_section"> 1135 <li> 1136 <span class="toc_kind_header">controls</span> 1137 <ul class="toc_section"> 1138 <li 1139 ><a href="#controls_android.led.transmit">android.led.transmit</a></li> 1140 </ul> 1141 </li> 1142 <li> 1143 <span class="toc_kind_header">dynamic</span> 1144 <ul class="toc_section"> 1145 <li 1146 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 1147 </ul> 1148 </li> 1149 <li> 1150 <span class="toc_kind_header">static</span> 1151 <ul class="toc_section"> 1152 <li 1153 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 1154 </ul> 1155 </li> 1156 </ul> <!-- toc_section --> 1157 </li> 1158 <li> 1159 <span class="toc_section_header"><a href="#section_info">info</a></span> 1160 <ul class="toc_section"> 1161 <li> 1162 <span class="toc_kind_header">static</span> 1163 <ul class="toc_section"> 1164 <li 1165 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 1166 <li 1167 ><a href="#static_android.info.version">android.info.version</a></li> 1168 <li 1169 ><a href="#static_android.info.supportedBufferManagementVersion">android.info.supportedBufferManagementVersion</a></li> 1170 <li 1171 ><a href="#static_android.info.deviceStateSensorOrientationMap">android.info.deviceStateSensorOrientationMap</a></li> 1172 <li 1173 ><a href="#static_android.info.deviceStateOrientations">android.info.deviceStateOrientations</a></li> 1174 </ul> 1175 </li> 1176 </ul> <!-- toc_section --> 1177 </li> 1178 <li> 1179 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 1180 <ul class="toc_section"> 1181 <li> 1182 <span class="toc_kind_header">controls</span> 1183 <ul class="toc_section"> 1184 <li 1185 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 1186 </ul> 1187 </li> 1188 <li> 1189 <span class="toc_kind_header">dynamic</span> 1190 <ul class="toc_section"> 1191 <li 1192 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 1193 </ul> 1194 </li> 1195 </ul> <!-- toc_section --> 1196 </li> 1197 <li> 1198 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 1199 <ul class="toc_section"> 1200 <li> 1201 <span class="toc_kind_header">dynamic</span> 1202 <ul class="toc_section"> 1203 <li 1204 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 1205 </ul> 1206 </li> 1207 <li> 1208 <span class="toc_kind_header">static</span> 1209 <ul class="toc_section"> 1210 <li 1211 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 1212 </ul> 1213 </li> 1214 </ul> <!-- toc_section --> 1215 </li> 1216 <li> 1217 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span> 1218 <ul class="toc_section"> 1219 <li> 1220 <span class="toc_kind_header">controls</span> 1221 <ul class="toc_section"> 1222 <li 1223 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1224 </ul> 1225 </li> 1226 <li> 1227 <span class="toc_kind_header">dynamic</span> 1228 <ul class="toc_section"> 1229 <li 1230 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1231 </ul> 1232 </li> 1233 <li> 1234 <span class="toc_kind_header">static</span> 1235 <ul class="toc_section"> 1236 <li 1237 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li> 1238 </ul> 1239 </li> 1240 </ul> <!-- toc_section --> 1241 </li> 1242 <li> 1243 <span class="toc_section_header"><a href="#section_depth">depth</a></span> 1244 <ul class="toc_section"> 1245 <li> 1246 <span class="toc_kind_header">static</span> 1247 <ul class="toc_section"> 1248 <li 1249 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li> 1250 <li 1251 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li> 1252 <li 1253 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li> 1254 <li 1255 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li> 1256 <li 1257 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li> 1258 <li 1259 ><a href="#static_android.depth.availableRecommendedDepthStreamConfigurations">android.depth.availableRecommendedDepthStreamConfigurations</a></li> 1260 <li 1261 ><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a></li> 1262 <li 1263 ><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a></li> 1264 <li 1265 ><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a></li> 1266 <li 1267 ><a href="#static_android.depth.availableDepthStreamConfigurationsMaximumResolution">android.depth.availableDepthStreamConfigurationsMaximumResolution</a></li> 1268 <li 1269 ><a href="#static_android.depth.availableDepthMinFrameDurationsMaximumResolution">android.depth.availableDepthMinFrameDurationsMaximumResolution</a></li> 1270 <li 1271 ><a href="#static_android.depth.availableDepthStallDurationsMaximumResolution">android.depth.availableDepthStallDurationsMaximumResolution</a></li> 1272 <li 1273 ><a href="#static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution</a></li> 1274 <li 1275 ><a href="#static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution</a></li> 1276 <li 1277 ><a href="#static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">android.depth.availableDynamicDepthStallDurationsMaximumResolution</a></li> 1278 </ul> 1279 </li> 1280 </ul> <!-- toc_section --> 1281 </li> 1282 <li> 1283 <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span> 1284 <ul class="toc_section"> 1285 <li> 1286 <span class="toc_kind_header">static</span> 1287 <ul class="toc_section"> 1288 <li 1289 ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li> 1290 <li 1291 ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li> 1292 </ul> 1293 </li> 1294 <li> 1295 <span class="toc_kind_header">dynamic</span> 1296 <ul class="toc_section"> 1297 <li 1298 ><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a></li> 1299 </ul> 1300 </li> 1301 </ul> <!-- toc_section --> 1302 </li> 1303 <li> 1304 <span class="toc_section_header"><a href="#section_distortionCorrection">distortionCorrection</a></span> 1305 <ul class="toc_section"> 1306 <li> 1307 <span class="toc_kind_header">controls</span> 1308 <ul class="toc_section"> 1309 <li 1310 ><a href="#controls_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li> 1311 </ul> 1312 </li> 1313 <li> 1314 <span class="toc_kind_header">static</span> 1315 <ul class="toc_section"> 1316 <li 1317 ><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a></li> 1318 </ul> 1319 </li> 1320 <li> 1321 <span class="toc_kind_header">dynamic</span> 1322 <ul class="toc_section"> 1323 <li 1324 ><a href="#dynamic_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li> 1325 </ul> 1326 </li> 1327 </ul> <!-- toc_section --> 1328 </li> 1329 <li> 1330 <span class="toc_section_header"><a href="#section_heic">heic</a></span> 1331 <ul class="toc_section"> 1332 <li> 1333 <span class="toc_kind_header">static</span> 1334 <ul class="toc_section"> 1335 1336 <li 1337 ><a href="#static_android.heic.info.supported">android.heic.info.supported</a></li> 1338 <li 1339 ><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a></li> 1340 1341 <li 1342 ><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a></li> 1343 <li 1344 ><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a></li> 1345 <li 1346 ><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a></li> 1347 <li 1348 ><a href="#static_android.heic.availableHeicStreamConfigurationsMaximumResolution">android.heic.availableHeicStreamConfigurationsMaximumResolution</a></li> 1349 <li 1350 ><a href="#static_android.heic.availableHeicMinFrameDurationsMaximumResolution">android.heic.availableHeicMinFrameDurationsMaximumResolution</a></li> 1351 <li 1352 ><a href="#static_android.heic.availableHeicStallDurationsMaximumResolution">android.heic.availableHeicStallDurationsMaximumResolution</a></li> 1353 </ul> 1354 </li> 1355 </ul> <!-- toc_section --> 1356 </li> 1357 </ul> 1358 1359 1360 <h1>Properties</h1> 1361 <table class="properties"> 1362 1363 <thead class="thead_dummy"> 1364 <tr> 1365 <th class="th_name">Property Name</th> 1366 <th class="th_type">Type</th> 1367 <th class="th_description">Description</th> 1368 <th class="th_units">Units</th> 1369 <th class="th_range">Range</th> 1370 <th class="th_hal_version">HIDL HAL version</th> 1371 <th class="th_tags">Tags</th> 1372 </tr> 1373 </thead> <!-- so that the first occurrence of thead is not 1374 above the first occurrence of tr --> 1375<!-- <namespace name="android"> --> 1376 <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr> 1377 1378 1379 <tr><td colspan="7" class="kind">controls</td></tr> 1380 1381 <thead class="entries_header"> 1382 <tr> 1383 <th class="th_name">Property Name</th> 1384 <th class="th_type">Type</th> 1385 <th class="th_description">Description</th> 1386 <th class="th_units">Units</th> 1387 <th class="th_range">Range</th> 1388 <th class="th_hal_version">Initial HIDL HAL version</th> 1389 <th class="th_tags">Tags</th> 1390 </tr> 1391 </thead> 1392 1393 <tbody> 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 <tr class="entry" id="controls_android.colorCorrection.mode"> 1405 <td class="entry_name 1406 " rowspan="5"> 1407 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1408 </td> 1409 <td class="entry_type"> 1410 <span class="entry_type_name entry_type_name_enum">byte</span> 1411 1412 <span class="entry_type_visibility"> [public]</span> 1413 1414 1415 <span class="entry_type_hwlevel">[full] </span> 1416 1417 1418 1419 <ul class="entry_type_enum"> 1420 <li> 1421 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span> 1422 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1423and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1424<p>All advanced white balance adjustments (not specified 1425by our white balance pipeline) must be disabled.<wbr/></p> 1426<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 1427TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1428this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1429 </li> 1430 <li> 1431 <span class="entry_type_enum_name">FAST (v3.2)</span> 1432 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1433capture rate relative to sensor raw output.<wbr/></p> 1434<p>Advanced white balance adjustments above and beyond 1435the specified white balance pipeline may be applied.<wbr/></p> 1436<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 1437the camera device uses the last frame's AWB values 1438(or defaults if AWB has never been run).<wbr/></p></span> 1439 </li> 1440 <li> 1441 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 1442 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1443quality but the capture rate might be reduced (relative to sensor 1444raw output rate)</p> 1445<p>Advanced white balance adjustments above and beyond 1446the specified white balance pipeline may be applied.<wbr/></p> 1447<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 1448the camera device uses the last frame's AWB values 1449(or defaults if AWB has never been run).<wbr/></p></span> 1450 </li> 1451 </ul> 1452 1453 </td> <!-- entry_type --> 1454 1455 <td class="entry_description"> 1456 <p>The mode control selects how the image data is converted from the 1457sensor's native color into linear sRGB color.<wbr/></p> 1458 </td> 1459 1460 <td class="entry_units"> 1461 </td> 1462 1463 <td class="entry_range"> 1464 </td> 1465 1466 <td class="entry_hal_version"> 1467 <p>3.<wbr/>2</p> 1468 </td> 1469 1470 <td class="entry_tags"> 1471 </td> 1472 1473 </tr> 1474 <tr class="entries_header"> 1475 <th class="th_details" colspan="6">Details</th> 1476 </tr> 1477 <tr class="entry_cont"> 1478 <td class="entry_details" colspan="6"> 1479 <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 1480control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1481application controls how the color mapping is performed.<wbr/></p> 1482<p>We define the expected processing pipeline below.<wbr/> For consistency 1483across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1484<p>When either FAST or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1485do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1486<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1487camera device (in the results) and be roughly correct.<wbr/></p> 1488<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1489FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1490as what was produced by the camera device in the earlier frame.<wbr/></p> 1491<p>The expected processing pipeline is as follows:</p> 1492<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1493<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1494gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1495matrix (applied after demosaic).<wbr/></p> 1496<p>The 4-channel white-balance gains are defined as:</p> 1497<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1498</code></pre> 1499<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1500output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1501These may be identical for a given camera device implementation; if 1502the camera device does not support a separate gain for even/<wbr/>odd green 1503channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1504<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1505<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1506<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 ] 1507</code></pre> 1508<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1509to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1510<p>with colors as follows:</p> 1511<pre><code>r' = I0r + I1g + I2b 1512g' = I3r + I4g + I5b 1513b' = I6r + I7g + I8b 1514</code></pre> 1515<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1516values are clipped to fit within the range.<wbr/></p> 1517 </td> 1518 </tr> 1519 1520 <tr class="entries_header"> 1521 <th class="th_details" colspan="6">HAL Implementation Details</th> 1522 </tr> 1523 <tr class="entry_cont"> 1524 <td class="entry_details" colspan="6"> 1525 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1526on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1527That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1528capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1529 </td> 1530 </tr> 1531 1532 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1533 <!-- end of entry --> 1534 1535 1536 <tr class="entry" id="controls_android.colorCorrection.transform"> 1537 <td class="entry_name 1538 " rowspan="3"> 1539 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1540 </td> 1541 <td class="entry_type"> 1542 <span class="entry_type_name">rational</span> 1543 <span class="entry_type_container">x</span> 1544 1545 <span class="entry_type_array"> 1546 3 x 3 1547 </span> 1548 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1549 1550 1551 <span class="entry_type_hwlevel">[full] </span> 1552 1553 1554 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1555 1556 1557 </td> <!-- entry_type --> 1558 1559 <td class="entry_description"> 1560 <p>A color transform matrix to use to transform 1561from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1562 </td> 1563 1564 <td class="entry_units"> 1565 Unitless scale factors 1566 </td> 1567 1568 <td class="entry_range"> 1569 </td> 1570 1571 <td class="entry_hal_version"> 1572 <p>3.<wbr/>2</p> 1573 </td> 1574 1575 <td class="entry_tags"> 1576 </td> 1577 1578 </tr> 1579 <tr class="entries_header"> 1580 <th class="th_details" colspan="6">Details</th> 1581 </tr> 1582 <tr class="entry_cont"> 1583 <td class="entry_details" colspan="6"> 1584 <p>This matrix is either set by the camera device when the request 1585<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1586directly by the application in the request when the 1587<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1588<p>In the latter case,<wbr/> the camera device may round the matrix to account 1589for precision issues; the final rounded matrix should be reported back 1590in this matrix result metadata.<wbr/> The transform should keep the magnitude 1591of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1592values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1593<p>The valid range of each matrix element varies on different devices,<wbr/> but 1594values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1595 </td> 1596 </tr> 1597 1598 1599 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1600 <!-- end of entry --> 1601 1602 1603 <tr class="entry" id="controls_android.colorCorrection.gains"> 1604 <td class="entry_name 1605 " rowspan="5"> 1606 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1607 </td> 1608 <td class="entry_type"> 1609 <span class="entry_type_name">float</span> 1610 <span class="entry_type_container">x</span> 1611 1612 <span class="entry_type_array"> 1613 4 1614 </span> 1615 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1616 1617 1618 <span class="entry_type_hwlevel">[full] </span> 1619 1620 1621 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1622 1623 1624 </td> <!-- entry_type --> 1625 1626 <td class="entry_description"> 1627 <p>Gains applying to Bayer raw color channels for 1628white-balance.<wbr/></p> 1629 </td> 1630 1631 <td class="entry_units"> 1632 Unitless gain factors 1633 </td> 1634 1635 <td class="entry_range"> 1636 </td> 1637 1638 <td class="entry_hal_version"> 1639 <p>3.<wbr/>2</p> 1640 </td> 1641 1642 <td class="entry_tags"> 1643 </td> 1644 1645 </tr> 1646 <tr class="entries_header"> 1647 <th class="th_details" colspan="6">Details</th> 1648 </tr> 1649 <tr class="entry_cont"> 1650 <td class="entry_details" colspan="6"> 1651 <p>These per-channel gains are either set by the camera device 1652when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1653TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1654request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1655TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1656<p>The gains in the result metadata are the gains actually 1657applied by the camera device to the current frame.<wbr/></p> 1658<p>The valid range of gains varies on different devices,<wbr/> but gains 1659between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1660device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1661this can create color artifacts.<wbr/></p> 1662 </td> 1663 </tr> 1664 1665 <tr class="entries_header"> 1666 <th class="th_details" colspan="6">HAL Implementation Details</th> 1667 </tr> 1668 <tr class="entry_cont"> 1669 <td class="entry_details" colspan="6"> 1670 <p>The 4-channel white-balance gains are defined in 1671the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1672for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1673is the gain for green pixels on the odd rows.<wbr/></p> 1674<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1675channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1676<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1677 </td> 1678 </tr> 1679 1680 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1681 <!-- end of entry --> 1682 1683 1684 <tr class="entry" id="controls_android.colorCorrection.aberrationMode"> 1685 <td class="entry_name 1686 " rowspan="3"> 1687 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1688 </td> 1689 <td class="entry_type"> 1690 <span class="entry_type_name entry_type_name_enum">byte</span> 1691 1692 <span class="entry_type_visibility"> [public]</span> 1693 1694 1695 <span class="entry_type_hwlevel">[legacy] </span> 1696 1697 1698 1699 <ul class="entry_type_enum"> 1700 <li> 1701 <span class="entry_type_enum_name">OFF (v3.2)</span> 1702 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1703 </li> 1704 <li> 1705 <span class="entry_type_enum_name">FAST (v3.2)</span> 1706 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1707relative to sensor raw output.<wbr/></p></span> 1708 </li> 1709 <li> 1710 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 1711 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1712reduced (relative to sensor raw output rate)</p></span> 1713 </li> 1714 </ul> 1715 1716 </td> <!-- entry_type --> 1717 1718 <td class="entry_description"> 1719 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1720 </td> 1721 1722 <td class="entry_units"> 1723 </td> 1724 1725 <td class="entry_range"> 1726 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1727 </td> 1728 1729 <td class="entry_hal_version"> 1730 <p>3.<wbr/>2</p> 1731 </td> 1732 1733 <td class="entry_tags"> 1734 </td> 1735 1736 </tr> 1737 <tr class="entries_header"> 1738 <th class="th_details" colspan="6">Details</th> 1739 </tr> 1740 <tr class="entry_cont"> 1741 <td class="entry_details" colspan="6"> 1742 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1743can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1744the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1745minimize the chromatic artifacts that may occur along the object boundaries in an 1746image.<wbr/></p> 1747<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1748correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1749use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1750capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1751applying aberration correction.<wbr/></p> 1752<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1753 </td> 1754 </tr> 1755 1756 1757 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1758 <!-- end of entry --> 1759 1760 1761 1762 <!-- end of kind --> 1763 </tbody> 1764 <tr><td colspan="7" class="kind">dynamic</td></tr> 1765 1766 <thead class="entries_header"> 1767 <tr> 1768 <th class="th_name">Property Name</th> 1769 <th class="th_type">Type</th> 1770 <th class="th_description">Description</th> 1771 <th class="th_units">Units</th> 1772 <th class="th_range">Range</th> 1773 <th class="th_hal_version">Initial HIDL HAL version</th> 1774 <th class="th_tags">Tags</th> 1775 </tr> 1776 </thead> 1777 1778 <tbody> 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 <tr class="entry" id="dynamic_android.colorCorrection.mode"> 1790 <td class="entry_name 1791 " rowspan="5"> 1792 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1793 </td> 1794 <td class="entry_type"> 1795 <span class="entry_type_name entry_type_name_enum">byte</span> 1796 1797 <span class="entry_type_visibility"> [public]</span> 1798 1799 1800 <span class="entry_type_hwlevel">[full] </span> 1801 1802 1803 1804 <ul class="entry_type_enum"> 1805 <li> 1806 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span> 1807 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1808and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1809<p>All advanced white balance adjustments (not specified 1810by our white balance pipeline) must be disabled.<wbr/></p> 1811<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 1812TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1813this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1814 </li> 1815 <li> 1816 <span class="entry_type_enum_name">FAST (v3.2)</span> 1817 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1818capture rate relative to sensor raw output.<wbr/></p> 1819<p>Advanced white balance adjustments above and beyond 1820the specified white balance pipeline may be applied.<wbr/></p> 1821<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 1822the camera device uses the last frame's AWB values 1823(or defaults if AWB has never been run).<wbr/></p></span> 1824 </li> 1825 <li> 1826 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 1827 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1828quality but the capture rate might be reduced (relative to sensor 1829raw output rate)</p> 1830<p>Advanced white balance adjustments above and beyond 1831the specified white balance pipeline may be applied.<wbr/></p> 1832<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 1833the camera device uses the last frame's AWB values 1834(or defaults if AWB has never been run).<wbr/></p></span> 1835 </li> 1836 </ul> 1837 1838 </td> <!-- entry_type --> 1839 1840 <td class="entry_description"> 1841 <p>The mode control selects how the image data is converted from the 1842sensor's native color into linear sRGB color.<wbr/></p> 1843 </td> 1844 1845 <td class="entry_units"> 1846 </td> 1847 1848 <td class="entry_range"> 1849 </td> 1850 1851 <td class="entry_hal_version"> 1852 <p>3.<wbr/>2</p> 1853 </td> 1854 1855 <td class="entry_tags"> 1856 </td> 1857 1858 </tr> 1859 <tr class="entries_header"> 1860 <th class="th_details" colspan="6">Details</th> 1861 </tr> 1862 <tr class="entry_cont"> 1863 <td class="entry_details" colspan="6"> 1864 <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 1865control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1866application controls how the color mapping is performed.<wbr/></p> 1867<p>We define the expected processing pipeline below.<wbr/> For consistency 1868across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1869<p>When either FAST or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1870do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1871<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1872camera device (in the results) and be roughly correct.<wbr/></p> 1873<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1874FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1875as what was produced by the camera device in the earlier frame.<wbr/></p> 1876<p>The expected processing pipeline is as follows:</p> 1877<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1878<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1879gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1880matrix (applied after demosaic).<wbr/></p> 1881<p>The 4-channel white-balance gains are defined as:</p> 1882<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1883</code></pre> 1884<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1885output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1886These may be identical for a given camera device implementation; if 1887the camera device does not support a separate gain for even/<wbr/>odd green 1888channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1889<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1890<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1891<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 ] 1892</code></pre> 1893<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1894to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1895<p>with colors as follows:</p> 1896<pre><code>r' = I0r + I1g + I2b 1897g' = I3r + I4g + I5b 1898b' = I6r + I7g + I8b 1899</code></pre> 1900<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1901values are clipped to fit within the range.<wbr/></p> 1902 </td> 1903 </tr> 1904 1905 <tr class="entries_header"> 1906 <th class="th_details" colspan="6">HAL Implementation Details</th> 1907 </tr> 1908 <tr class="entry_cont"> 1909 <td class="entry_details" colspan="6"> 1910 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1911on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1912That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1913capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1914 </td> 1915 </tr> 1916 1917 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1918 <!-- end of entry --> 1919 1920 1921 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 1922 <td class="entry_name 1923 " rowspan="3"> 1924 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1925 </td> 1926 <td class="entry_type"> 1927 <span class="entry_type_name">rational</span> 1928 <span class="entry_type_container">x</span> 1929 1930 <span class="entry_type_array"> 1931 3 x 3 1932 </span> 1933 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1934 1935 1936 <span class="entry_type_hwlevel">[full] </span> 1937 1938 1939 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1940 1941 1942 </td> <!-- entry_type --> 1943 1944 <td class="entry_description"> 1945 <p>A color transform matrix to use to transform 1946from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1947 </td> 1948 1949 <td class="entry_units"> 1950 Unitless scale factors 1951 </td> 1952 1953 <td class="entry_range"> 1954 </td> 1955 1956 <td class="entry_hal_version"> 1957 <p>3.<wbr/>2</p> 1958 </td> 1959 1960 <td class="entry_tags"> 1961 </td> 1962 1963 </tr> 1964 <tr class="entries_header"> 1965 <th class="th_details" colspan="6">Details</th> 1966 </tr> 1967 <tr class="entry_cont"> 1968 <td class="entry_details" colspan="6"> 1969 <p>This matrix is either set by the camera device when the request 1970<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1971directly by the application in the request when the 1972<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1973<p>In the latter case,<wbr/> the camera device may round the matrix to account 1974for precision issues; the final rounded matrix should be reported back 1975in this matrix result metadata.<wbr/> The transform should keep the magnitude 1976of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1977values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1978<p>The valid range of each matrix element varies on different devices,<wbr/> but 1979values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1980 </td> 1981 </tr> 1982 1983 1984 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1985 <!-- end of entry --> 1986 1987 1988 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 1989 <td class="entry_name 1990 " rowspan="5"> 1991 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1992 </td> 1993 <td class="entry_type"> 1994 <span class="entry_type_name">float</span> 1995 <span class="entry_type_container">x</span> 1996 1997 <span class="entry_type_array"> 1998 4 1999 </span> 2000 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 2001 2002 2003 <span class="entry_type_hwlevel">[full] </span> 2004 2005 2006 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 2007 2008 2009 </td> <!-- entry_type --> 2010 2011 <td class="entry_description"> 2012 <p>Gains applying to Bayer raw color channels for 2013white-balance.<wbr/></p> 2014 </td> 2015 2016 <td class="entry_units"> 2017 Unitless gain factors 2018 </td> 2019 2020 <td class="entry_range"> 2021 </td> 2022 2023 <td class="entry_hal_version"> 2024 <p>3.<wbr/>2</p> 2025 </td> 2026 2027 <td class="entry_tags"> 2028 </td> 2029 2030 </tr> 2031 <tr class="entries_header"> 2032 <th class="th_details" colspan="6">Details</th> 2033 </tr> 2034 <tr class="entry_cont"> 2035 <td class="entry_details" colspan="6"> 2036 <p>These per-channel gains are either set by the camera device 2037when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 2038TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 2039request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 2040TRANSFORM_<wbr/>MATRIX.<wbr/></p> 2041<p>The gains in the result metadata are the gains actually 2042applied by the camera device to the current frame.<wbr/></p> 2043<p>The valid range of gains varies on different devices,<wbr/> but gains 2044between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 2045device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 2046this can create color artifacts.<wbr/></p> 2047 </td> 2048 </tr> 2049 2050 <tr class="entries_header"> 2051 <th class="th_details" colspan="6">HAL Implementation Details</th> 2052 </tr> 2053 <tr class="entry_cont"> 2054 <td class="entry_details" colspan="6"> 2055 <p>The 4-channel white-balance gains are defined in 2056the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 2057for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 2058is the gain for green pixels on the odd rows.<wbr/></p> 2059<p>If a HAL does not support a separate gain for even/<wbr/>odd green 2060channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 2061<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 2062 </td> 2063 </tr> 2064 2065 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2066 <!-- end of entry --> 2067 2068 2069 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode"> 2070 <td class="entry_name 2071 " rowspan="3"> 2072 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 2073 </td> 2074 <td class="entry_type"> 2075 <span class="entry_type_name entry_type_name_enum">byte</span> 2076 2077 <span class="entry_type_visibility"> [public]</span> 2078 2079 2080 <span class="entry_type_hwlevel">[legacy] </span> 2081 2082 2083 2084 <ul class="entry_type_enum"> 2085 <li> 2086 <span class="entry_type_enum_name">OFF (v3.2)</span> 2087 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 2088 </li> 2089 <li> 2090 <span class="entry_type_enum_name">FAST (v3.2)</span> 2091 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 2092relative to sensor raw output.<wbr/></p></span> 2093 </li> 2094 <li> 2095 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 2096 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 2097reduced (relative to sensor raw output rate)</p></span> 2098 </li> 2099 </ul> 2100 2101 </td> <!-- entry_type --> 2102 2103 <td class="entry_description"> 2104 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 2105 </td> 2106 2107 <td class="entry_units"> 2108 </td> 2109 2110 <td class="entry_range"> 2111 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 2112 </td> 2113 2114 <td class="entry_hal_version"> 2115 <p>3.<wbr/>2</p> 2116 </td> 2117 2118 <td class="entry_tags"> 2119 </td> 2120 2121 </tr> 2122 <tr class="entries_header"> 2123 <th class="th_details" colspan="6">Details</th> 2124 </tr> 2125 <tr class="entry_cont"> 2126 <td class="entry_details" colspan="6"> 2127 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 2128can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 2129the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 2130minimize the chromatic artifacts that may occur along the object boundaries in an 2131image.<wbr/></p> 2132<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 2133correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 2134use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 2135capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 2136applying aberration correction.<wbr/></p> 2137<p>LEGACY devices will always be in FAST mode.<wbr/></p> 2138 </td> 2139 </tr> 2140 2141 2142 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2143 <!-- end of entry --> 2144 2145 2146 2147 <!-- end of kind --> 2148 </tbody> 2149 <tr><td colspan="7" class="kind">static</td></tr> 2150 2151 <thead class="entries_header"> 2152 <tr> 2153 <th class="th_name">Property Name</th> 2154 <th class="th_type">Type</th> 2155 <th class="th_description">Description</th> 2156 <th class="th_units">Units</th> 2157 <th class="th_range">Range</th> 2158 <th class="th_hal_version">Initial HIDL HAL version</th> 2159 <th class="th_tags">Tags</th> 2160 </tr> 2161 </thead> 2162 2163 <tbody> 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes"> 2175 <td class="entry_name 2176 " rowspan="5"> 2177 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes 2178 </td> 2179 <td class="entry_type"> 2180 <span class="entry_type_name">byte</span> 2181 <span class="entry_type_container">x</span> 2182 2183 <span class="entry_type_array"> 2184 n 2185 </span> 2186 <span class="entry_type_visibility"> [public as enumList]</span> 2187 2188 2189 <span class="entry_type_hwlevel">[legacy] </span> 2190 2191 2192 <div class="entry_type_notes">list of enums</div> 2193 2194 2195 </td> <!-- entry_type --> 2196 2197 <td class="entry_description"> 2198 <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 2199supported by this camera device.<wbr/></p> 2200 </td> 2201 2202 <td class="entry_units"> 2203 </td> 2204 2205 <td class="entry_range"> 2206 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p> 2207 </td> 2208 2209 <td class="entry_hal_version"> 2210 <p>3.<wbr/>2</p> 2211 </td> 2212 2213 <td class="entry_tags"> 2214 <ul class="entry_tags"> 2215 <li><a href="#tag_V1">V1</a></li> 2216 </ul> 2217 </td> 2218 2219 </tr> 2220 <tr class="entries_header"> 2221 <th class="th_details" colspan="6">Details</th> 2222 </tr> 2223 <tr class="entry_cont"> 2224 <td class="entry_details" colspan="6"> 2225 <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 2226aberration correction modes are available for a device,<wbr/> this list will solely include 2227OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p> 2228<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list 2229OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p> 2230<p>LEGACY devices will always only support FAST mode.<wbr/></p> 2231 </td> 2232 </tr> 2233 2234 <tr class="entries_header"> 2235 <th class="th_details" colspan="6">HAL Implementation Details</th> 2236 </tr> 2237 <tr class="entry_cont"> 2238 <td class="entry_details" colspan="6"> 2239 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available 2240on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 2241That is,<wbr/> if the highest quality implementation on the camera device does not slow down 2242capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 2243 </td> 2244 </tr> 2245 2246 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2247 <!-- end of entry --> 2248 2249 2250 2251 <!-- end of kind --> 2252 </tbody> 2253 2254 <!-- end of section --> 2255 <tr><td colspan="7" id="section_control" class="section">control</td></tr> 2256 2257 2258 <tr><td colspan="7" class="kind">controls</td></tr> 2259 2260 <thead class="entries_header"> 2261 <tr> 2262 <th class="th_name">Property Name</th> 2263 <th class="th_type">Type</th> 2264 <th class="th_description">Description</th> 2265 <th class="th_units">Units</th> 2266 <th class="th_range">Range</th> 2267 <th class="th_hal_version">Initial HIDL HAL version</th> 2268 <th class="th_tags">Tags</th> 2269 </tr> 2270 </thead> 2271 2272 <tbody> 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 2284 <td class="entry_name 2285 " rowspan="5"> 2286 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 2287 </td> 2288 <td class="entry_type"> 2289 <span class="entry_type_name entry_type_name_enum">byte</span> 2290 2291 <span class="entry_type_visibility"> [public]</span> 2292 2293 2294 <span class="entry_type_hwlevel">[legacy] </span> 2295 2296 2297 2298 <ul class="entry_type_enum"> 2299 <li> 2300 <span class="entry_type_enum_name">OFF (v3.2)</span> 2301 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 2302avoid banding problems.<wbr/></p></span> 2303 </li> 2304 <li> 2305 <span class="entry_type_enum_name">50HZ (v3.2)</span> 2306 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2307avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 2308 </li> 2309 <li> 2310 <span class="entry_type_enum_name">60HZ (v3.2)</span> 2311 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2312avoid banding problems with 60Hz illumination 2313sources.<wbr/></p></span> 2314 </li> 2315 <li> 2316 <span class="entry_type_enum_name">AUTO (v3.2)</span> 2317 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 2318antibanding routine to the current illumination 2319condition.<wbr/> This is the default mode if AUTO is 2320available on given camera device.<wbr/></p></span> 2321 </li> 2322 </ul> 2323 2324 </td> <!-- entry_type --> 2325 2326 <td class="entry_description"> 2327 <p>The desired setting for the camera device's auto-exposure 2328algorithm's antibanding compensation.<wbr/></p> 2329 </td> 2330 2331 <td class="entry_units"> 2332 </td> 2333 2334 <td class="entry_range"> 2335 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 2336 </td> 2337 2338 <td class="entry_hal_version"> 2339 <p>3.<wbr/>2</p> 2340 </td> 2341 2342 <td class="entry_tags"> 2343 <ul class="entry_tags"> 2344 <li><a href="#tag_BC">BC</a></li> 2345 </ul> 2346 </td> 2347 2348 </tr> 2349 <tr class="entries_header"> 2350 <th class="th_details" colspan="6">Details</th> 2351 </tr> 2352 <tr class="entry_cont"> 2353 <td class="entry_details" colspan="6"> 2354 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 2355lights,<wbr/> flicker at the rate of the power supply frequency 2356(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 2357typically not noticeable to a person,<wbr/> it can be visible to 2358a camera device.<wbr/> If a camera sets its exposure time to the 2359wrong value,<wbr/> the flicker may become visible in the 2360viewfinder as flicker or in a final captured image,<wbr/> as a 2361set of variable-brightness bands across the image.<wbr/></p> 2362<p>Therefore,<wbr/> the auto-exposure routines of camera devices 2363include antibanding routines that ensure that the chosen 2364exposure value will not cause such banding.<wbr/> The choice of 2365exposure time depends on the rate of flicker,<wbr/> which the 2366camera device can detect automatically,<wbr/> or the expected 2367rate can be selected by the application using this 2368control.<wbr/></p> 2369<p>A given camera device may not support all of the possible 2370options for the antibanding mode.<wbr/> The 2371<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 2372the available modes for a given camera device.<wbr/></p> 2373<p>AUTO mode is the default if it is available on given 2374camera device.<wbr/> When AUTO mode is not available,<wbr/> the 2375default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 2376and 60HZ will be available.<wbr/></p> 2377<p>If manual exposure control is enabled (by setting 2378<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/> 2379then this setting has no effect,<wbr/> and the application must 2380ensure it selects exposure times that do not cause banding 2381issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 2382the application in this.<wbr/></p> 2383 </td> 2384 </tr> 2385 2386 <tr class="entries_header"> 2387 <th class="th_details" colspan="6">HAL Implementation Details</th> 2388 </tr> 2389 <tr class="entry_cont"> 2390 <td class="entry_details" colspan="6"> 2391 <p>For all capture request templates,<wbr/> this field must be set 2392to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 2393the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 239460HZ must be available.<wbr/></p> 2395<p>If manual exposure control is enabled (by setting 2396<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/> 2397then the exposure values provided by the application must not be 2398adjusted for antibanding.<wbr/></p> 2399 </td> 2400 </tr> 2401 2402 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2403 <!-- end of entry --> 2404 2405 2406 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 2407 <td class="entry_name 2408 " rowspan="3"> 2409 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 2410 </td> 2411 <td class="entry_type"> 2412 <span class="entry_type_name">int32</span> 2413 2414 <span class="entry_type_visibility"> [public]</span> 2415 2416 2417 <span class="entry_type_hwlevel">[legacy] </span> 2418 2419 2420 2421 2422 </td> <!-- entry_type --> 2423 2424 <td class="entry_description"> 2425 <p>Adjustment to auto-exposure (AE) target image 2426brightness.<wbr/></p> 2427 </td> 2428 2429 <td class="entry_units"> 2430 Compensation steps 2431 </td> 2432 2433 <td class="entry_range"> 2434 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 2435 </td> 2436 2437 <td class="entry_hal_version"> 2438 <p>3.<wbr/>2</p> 2439 </td> 2440 2441 <td class="entry_tags"> 2442 <ul class="entry_tags"> 2443 <li><a href="#tag_BC">BC</a></li> 2444 </ul> 2445 </td> 2446 2447 </tr> 2448 <tr class="entries_header"> 2449 <th class="th_details" colspan="6">Details</th> 2450 </tr> 2451 <tr class="entry_cont"> 2452 <td class="entry_details" colspan="6"> 2453 <p>The adjustment is measured as a count of steps,<wbr/> with the 2454step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 2455allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 2456<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 2457will mean an exposure compensation of +2 EV; -3 will mean an 2458exposure compensation of -1 EV.<wbr/> One EV represents a doubling 2459of image brightness.<wbr/> Note that this control will only be 2460effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 2461will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 2462<p>In the event of exposure compensation value being changed,<wbr/> camera device 2463may take several frames to reach the newly requested exposure target.<wbr/> 2464During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 2465state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 2466change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 2467FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 2468 </td> 2469 </tr> 2470 2471 2472 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2473 <!-- end of entry --> 2474 2475 2476 <tr class="entry" id="controls_android.control.aeLock"> 2477 <td class="entry_name 2478 " rowspan="3"> 2479 android.<wbr/>control.<wbr/>ae<wbr/>Lock 2480 </td> 2481 <td class="entry_type"> 2482 <span class="entry_type_name entry_type_name_enum">byte</span> 2483 2484 <span class="entry_type_visibility"> [public as boolean]</span> 2485 2486 2487 <span class="entry_type_hwlevel">[legacy] </span> 2488 2489 2490 2491 <ul class="entry_type_enum"> 2492 <li> 2493 <span class="entry_type_enum_name">OFF (v3.2)</span> 2494 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 2495is free to update its parameters.<wbr/></p></span> 2496 </li> 2497 <li> 2498 <span class="entry_type_enum_name">ON (v3.2)</span> 2499 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 2500must not update the exposure and sensitivity parameters 2501while the lock is active.<wbr/></p> 2502<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 2503will still take effect while auto-exposure is locked.<wbr/></p> 2504<p>Some rare LEGACY devices may not support 2505this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 2506 </li> 2507 </ul> 2508 2509 </td> <!-- entry_type --> 2510 2511 <td class="entry_description"> 2512 <p>Whether auto-exposure (AE) is currently locked to its latest 2513calculated values.<wbr/></p> 2514 </td> 2515 2516 <td class="entry_units"> 2517 </td> 2518 2519 <td class="entry_range"> 2520 </td> 2521 2522 <td class="entry_hal_version"> 2523 <p>3.<wbr/>2</p> 2524 </td> 2525 2526 <td class="entry_tags"> 2527 <ul class="entry_tags"> 2528 <li><a href="#tag_BC">BC</a></li> 2529 </ul> 2530 </td> 2531 2532 </tr> 2533 <tr class="entries_header"> 2534 <th class="th_details" colspan="6">Details</th> 2535 </tr> 2536 <tr class="entry_cont"> 2537 <td class="entry_details" colspan="6"> 2538 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 2539and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 2540<p>Note that even when AE is locked,<wbr/> the flash may be fired if 2541the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 2542ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 2543<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 2544is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 2545<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 2546when AE is already locked,<wbr/> the camera device will not change the exposure time 2547(<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>) 2548parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 2549is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 2550<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/> 2551Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 2552<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 2553the AE if AE is locked by the camera device internally during precapture metering 2554sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 2555ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 2556will never succeed in a sequence of preview requests where AE lock is always set 2557to <code>false</code>.<wbr/></p> 2558<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 2559get locked do not necessarily correspond to the settings that were present in the 2560latest capture result received from the camera device,<wbr/> since additional captures 2561and AE updates may have occurred even before the result was sent out.<wbr/> If an 2562application is switching between automatic and manual control and wishes to eliminate 2563any flicker during the switch,<wbr/> the following procedure is recommended:</p> 2564<ol> 2565<li>Starting in auto-AE mode:</li> 2566<li>Lock AE</li> 2567<li>Wait for the first result to be output that has the AE locked</li> 2568<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 2569<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 2570</ol> 2571<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> 2572 </td> 2573 </tr> 2574 2575 2576 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2577 <!-- end of entry --> 2578 2579 2580 <tr class="entry" id="controls_android.control.aeMode"> 2581 <td class="entry_name 2582 " rowspan="3"> 2583 android.<wbr/>control.<wbr/>ae<wbr/>Mode 2584 </td> 2585 <td class="entry_type"> 2586 <span class="entry_type_name entry_type_name_enum">byte</span> 2587 2588 <span class="entry_type_visibility"> [public]</span> 2589 2590 2591 <span class="entry_type_hwlevel">[legacy] </span> 2592 2593 2594 2595 <ul class="entry_type_enum"> 2596 <li> 2597 <span class="entry_type_enum_name">OFF (v3.2)</span> 2598 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 2599<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2600<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 2601<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 2602device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 2603a flash unit for this camera device.<wbr/></p> 2604<p>Note that auto-white balance (AWB) and auto-focus (AF) 2605behavior is device dependent when AE is in OFF mode.<wbr/> 2606To have consistent behavior across different devices,<wbr/> 2607it is recommended to either set AWB and AF to OFF mode 2608or lock AWB and AF before setting AE to OFF.<wbr/> 2609See <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/> 2610<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> 2611for more details.<wbr/></p> 2612<p>LEGACY devices do not support the OFF mode and will 2613override attempts to use this value to ON.<wbr/></p></span> 2614 </li> 2615 <li> 2616 <span class="entry_type_enum_name">ON (v3.2)</span> 2617 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 2618with no flash control.<wbr/></p> 2619<p>The application's values for 2620<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2621<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2622<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 2623application has control over the various 2624android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 2625 </li> 2626 <li> 2627 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span> 2628 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2629the camera's flash unit,<wbr/> firing it in low-light 2630conditions.<wbr/></p> 2631<p>The flash may be fired during a precapture sequence 2632(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2633may be fired for captures for which the 2634<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2635STILL_<wbr/>CAPTURE</p></span> 2636 </li> 2637 <li> 2638 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span> 2639 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2640the camera's flash unit,<wbr/> always firing it for still 2641captures.<wbr/></p> 2642<p>The flash may be fired during a precapture sequence 2643(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2644will always be fired for captures for which the 2645<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2646STILL_<wbr/>CAPTURE</p></span> 2647 </li> 2648 <li> 2649 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span> 2650 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 2651reduction.<wbr/></p> 2652<p>If deemed necessary by the camera device,<wbr/> a red eye 2653reduction flash will fire during the precapture 2654sequence.<wbr/></p></span> 2655 </li> 2656 <li> 2657 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span> 2658 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p> 2659<p>It informs the camera device that an external flash has been turned on,<wbr/> and that 2660metering (and continuous focus if active) should be quickly recaculated to account 2661for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p> 2662<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the 2663other available AE modes.<wbr/></p> 2664<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 2665be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without 2666flash.<wbr/></p></span> 2667 </li> 2668 </ul> 2669 2670 </td> <!-- entry_type --> 2671 2672 <td class="entry_description"> 2673 <p>The desired mode for the camera device's 2674auto-exposure routine.<wbr/></p> 2675 </td> 2676 2677 <td class="entry_units"> 2678 </td> 2679 2680 <td class="entry_range"> 2681 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 2682 </td> 2683 2684 <td class="entry_hal_version"> 2685 <p>3.<wbr/>2</p> 2686 </td> 2687 2688 <td class="entry_tags"> 2689 <ul class="entry_tags"> 2690 <li><a href="#tag_BC">BC</a></li> 2691 </ul> 2692 </td> 2693 2694 </tr> 2695 <tr class="entries_header"> 2696 <th class="th_details" colspan="6">Details</th> 2697 </tr> 2698 <tr class="entry_cont"> 2699 <td class="entry_details" colspan="6"> 2700 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 2701AUTO.<wbr/></p> 2702<p>When set to any of the ON modes,<wbr/> the camera device's 2703auto-exposure routine is enabled,<wbr/> overriding the 2704application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 2705and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2706<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2707<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 2708is selected,<wbr/> the camera device's flash unit controls are 2709also overridden.<wbr/></p> 2710<p>The FLASH modes are only available if the camera device 2711has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 2712<p>If flash TORCH mode is desired,<wbr/> this field must be set to 2713ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 2714<p>When set to any of the ON modes,<wbr/> the values chosen by the 2715camera device auto-exposure routine for the overridden 2716fields for a given capture will be available in its 2717CaptureResult.<wbr/></p> 2718 </td> 2719 </tr> 2720 2721 2722 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2723 <!-- end of entry --> 2724 2725 2726 <tr class="entry" id="controls_android.control.aeRegions"> 2727 <td class="entry_name 2728 " rowspan="5"> 2729 android.<wbr/>control.<wbr/>ae<wbr/>Regions 2730 </td> 2731 <td class="entry_type"> 2732 <span class="entry_type_name">int32</span> 2733 <span class="entry_type_container">x</span> 2734 2735 <span class="entry_type_array"> 2736 5 x area_count 2737 </span> 2738 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2739 2740 2741 2742 2743 2744 2745 </td> <!-- entry_type --> 2746 2747 <td class="entry_description"> 2748 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 2749 </td> 2750 2751 <td class="entry_units"> 2752 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 2753 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 2754 distortion correction capability and mode 2755 </td> 2756 2757 <td class="entry_range"> 2758 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2759<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> 2760depending on distortion correction capability and mode</p> 2761 </td> 2762 2763 <td class="entry_hal_version"> 2764 <p>3.<wbr/>2</p> 2765 </td> 2766 2767 <td class="entry_tags"> 2768 <ul class="entry_tags"> 2769 <li><a href="#tag_BC">BC</a></li> 2770 </ul> 2771 </td> 2772 2773 </tr> 2774 <tr class="entries_header"> 2775 <th class="th_details" colspan="6">Details</th> 2776 </tr> 2777 <tr class="entry_cont"> 2778 <td class="entry_details" colspan="6"> 2779 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 2780Otherwise will always be present.<wbr/></p> 2781<p>The maximum number of regions supported by the device is determined by the value 2782of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 2783<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 2784system 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 2785the top-left pixel in the active pixel array,<wbr/> and 2786(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2787<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 2788active pixel array.<wbr/></p> 2789<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 2790system depends on the mode being set.<wbr/> 2791When the distortion correction mode is OFF,<wbr/> the coordinate system follows 2792<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 2793<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 2794(<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/> 2795<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 2796pixel in the pre-correction active pixel array.<wbr/> 2797When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 2798<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 2799<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 2800(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2801<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 2802active pixel array.<wbr/></p> 2803<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2804for every pixel in the area.<wbr/> This means that a large metering area 2805with the same weight as a smaller area will have more effect in 2806the metering result.<wbr/> Metering areas can partially overlap and the 2807camera device will add the weights in the overlap region.<wbr/></p> 2808<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 2809region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 2810weight is ignored.<wbr/></p> 2811<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2812camera device.<wbr/></p> 2813<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 2814capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2815region and output only the intersection rectangle as the metering region in the result 2816metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2817not reported in the result metadata.<wbr/></p> 2818<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 2819preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 2820pre-zoom field of view.<wbr/> This means that the same aeRegions values at different 2821<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The aeRegions 2822coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the 2823zoomed 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 2824aeRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the 2825scene 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 2826activeArraySize or preCorrectionActiveArraySize still depends on distortion correction 2827mode.<wbr/></p> 2828<p>For camera devices with the 2829<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> 2830capability,<wbr/> 2831<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 2832<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 2833coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 2834<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> 2835 </td> 2836 </tr> 2837 2838 <tr class="entries_header"> 2839 <th class="th_details" colspan="6">HAL Implementation Details</th> 2840 </tr> 2841 <tr class="entry_cont"> 2842 <td class="entry_details" colspan="6"> 2843 <p>The HAL level representation of MeteringRectangle[] is a 2844int[5 * area_<wbr/>count].<wbr/> 2845Every five elements represent a metering region of 2846(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2847The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2848exclusive on xmax and ymax.<wbr/> 2849HAL must always report metering regions in the coordinate system of pre-correction 2850active array.<wbr/></p> 2851 </td> 2852 </tr> 2853 2854 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2855 <!-- end of entry --> 2856 2857 2858 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 2859 <td class="entry_name 2860 " rowspan="3"> 2861 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 2862 </td> 2863 <td class="entry_type"> 2864 <span class="entry_type_name">int32</span> 2865 <span class="entry_type_container">x</span> 2866 2867 <span class="entry_type_array"> 2868 2 2869 </span> 2870 <span class="entry_type_visibility"> [public as rangeInt]</span> 2871 2872 2873 <span class="entry_type_hwlevel">[legacy] </span> 2874 2875 2876 2877 2878 </td> <!-- entry_type --> 2879 2880 <td class="entry_description"> 2881 <p>Range over which the auto-exposure routine can 2882adjust the capture frame rate to maintain good 2883exposure.<wbr/></p> 2884 </td> 2885 2886 <td class="entry_units"> 2887 Frames per second (FPS) 2888 </td> 2889 2890 <td class="entry_range"> 2891 <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> 2892 </td> 2893 2894 <td class="entry_hal_version"> 2895 <p>3.<wbr/>2</p> 2896 </td> 2897 2898 <td class="entry_tags"> 2899 <ul class="entry_tags"> 2900 <li><a href="#tag_BC">BC</a></li> 2901 </ul> 2902 </td> 2903 2904 </tr> 2905 <tr class="entries_header"> 2906 <th class="th_details" colspan="6">Details</th> 2907 </tr> 2908 <tr class="entry_cont"> 2909 <td class="entry_details" colspan="6"> 2910 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 2911manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 2912<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 2913 </td> 2914 </tr> 2915 2916 2917 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2918 <!-- end of entry --> 2919 2920 2921 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 2922 <td class="entry_name 2923 " rowspan="5"> 2924 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 2925 </td> 2926 <td class="entry_type"> 2927 <span class="entry_type_name entry_type_name_enum">byte</span> 2928 2929 <span class="entry_type_visibility"> [public]</span> 2930 2931 2932 <span class="entry_type_hwlevel">[limited] </span> 2933 2934 2935 2936 <ul class="entry_type_enum"> 2937 <li> 2938 <span class="entry_type_enum_name">IDLE (v3.2)</span> 2939 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2940 </li> 2941 <li> 2942 <span class="entry_type_enum_name">START (v3.2)</span> 2943 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 2944by the camera device.<wbr/></p> 2945<p>The exact effect of the precapture trigger depends on 2946the current AE mode and state.<wbr/></p></span> 2947 </li> 2948 <li> 2949 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 2950 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 2951precapture metering sequence,<wbr/> the auto-exposure routine will return to its 2952initial state.<wbr/></p></span> 2953 </li> 2954 </ul> 2955 2956 </td> <!-- entry_type --> 2957 2958 <td class="entry_description"> 2959 <p>Whether the camera device will trigger a precapture 2960metering sequence when it processes this request.<wbr/></p> 2961 </td> 2962 2963 <td class="entry_units"> 2964 </td> 2965 2966 <td class="entry_range"> 2967 </td> 2968 2969 <td class="entry_hal_version"> 2970 <p>3.<wbr/>2</p> 2971 </td> 2972 2973 <td class="entry_tags"> 2974 <ul class="entry_tags"> 2975 <li><a href="#tag_BC">BC</a></li> 2976 </ul> 2977 </td> 2978 2979 </tr> 2980 <tr class="entries_header"> 2981 <th class="th_details" colspan="6">Details</th> 2982 </tr> 2983 <tr class="entry_cont"> 2984 <td class="entry_details" colspan="6"> 2985 <p>This entry is normally set to IDLE,<wbr/> or is not 2986included at all in the request settings.<wbr/> When included and 2987set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 2988precapture metering sequence.<wbr/></p> 2989<p>When set to CANCEL,<wbr/> the camera device will cancel any active 2990precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 2991If a precapture metering sequence is already completed,<wbr/> and the camera 2992device has implicitly locked the AE for subsequent still capture,<wbr/> the 2993CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 2994<p>The precapture sequence should be triggered before starting a 2995high-quality still capture for final metering decisions to 2996be made,<wbr/> and for firing pre-capture flash pulses to estimate 2997scene brightness and required final capture flash power,<wbr/> when 2998the flash is enabled.<wbr/></p> 2999<p>Normally,<wbr/> this entry should be set to START for only a 3000single request,<wbr/> and the application should wait until the 3001sequence completes before starting a new one.<wbr/></p> 3002<p>When a precapture metering sequence is finished,<wbr/> the camera device 3003may lock the auto-exposure routine internally to be able to accurately expose the 3004subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 3005For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 3006submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 3007submit 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 3008with <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 3009still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 3010API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 3011internally locked AE if the application doesn't submit a still capture request after 3012the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 3013be used in devices that have earlier API levels.<wbr/></p> 3014<p>The exact effect of auto-exposure (AE) precapture trigger 3015depends on the current AE mode and state; see 3016<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 3017details.<wbr/></p> 3018<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 3019capturing a high-resolution JPEG image will automatically trigger a 3020precapture sequence before the high-resolution capture,<wbr/> including 3021potentially firing a pre-capture flash.<wbr/></p> 3022<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 3023simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 3024the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 3025focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 3026trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 3027changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 3028example.<wbr/></p> 3029<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 3030the camera device will complete them in the optimal order for that device.<wbr/></p> 3031 </td> 3032 </tr> 3033 3034 <tr class="entries_header"> 3035 <th class="th_details" colspan="6">HAL Implementation Details</th> 3036 </tr> 3037 <tr class="entry_cont"> 3038 <td class="entry_details" colspan="6"> 3039 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 3040(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 3041treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 3042AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 3043to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 3044 </td> 3045 </tr> 3046 3047 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3048 <!-- end of entry --> 3049 3050 3051 <tr class="entry" id="controls_android.control.afMode"> 3052 <td class="entry_name 3053 " rowspan="5"> 3054 android.<wbr/>control.<wbr/>af<wbr/>Mode 3055 </td> 3056 <td class="entry_type"> 3057 <span class="entry_type_name entry_type_name_enum">byte</span> 3058 3059 <span class="entry_type_visibility"> [public]</span> 3060 3061 3062 <span class="entry_type_hwlevel">[legacy] </span> 3063 3064 3065 3066 <ul class="entry_type_enum"> 3067 <li> 3068 <span class="entry_type_enum_name">OFF (v3.2)</span> 3069 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 3070<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 3071application.<wbr/></p></span> 3072 </li> 3073 <li> 3074 <span class="entry_type_enum_name">AUTO (v3.2)</span> 3075 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 3076<p>In this mode,<wbr/> the lens does not move unless 3077the autofocus trigger action is called.<wbr/> When that trigger 3078is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 3079the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 3080<p>Always supported if lens is not fixed focus.<wbr/></p> 3081<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 3082is fixed-focus.<wbr/></p> 3083<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 3084and sets the AF state to INACTIVE.<wbr/></p></span> 3085 </li> 3086 <li> 3087 <span class="entry_type_enum_name">MACRO (v3.2)</span> 3088 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 3089<p>In this mode,<wbr/> the lens does not move unless the 3090autofocus trigger action is called.<wbr/> When that trigger is 3091activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 3092the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 3093mode is optimized for focusing on objects very close to 3094the camera.<wbr/></p> 3095<p>When that trigger is activated,<wbr/> AF will transition to 3096ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 3097NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 3098position to default,<wbr/> and sets the AF state to 3099INACTIVE.<wbr/></p></span> 3100 </li> 3101 <li> 3102 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span> 3103 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 3104position continually to attempt to provide a 3105constantly-in-focus image stream.<wbr/></p> 3106<p>The focusing behavior should be suitable for good quality 3107video recording; typically this means slower focus 3108movement and no overshoots.<wbr/> When the AF trigger is not 3109involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 3110and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 3111states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 3112the algorithm should immediately transition into 3113AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 3114lens position until a cancel AF trigger is received.<wbr/></p> 3115<p>Once cancel is received,<wbr/> the algorithm should transition 3116back to INACTIVE and resume passive scan.<wbr/> Note that this 3117behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 3118ongoing PASSIVE_<wbr/>SCAN must immediately be 3119canceled.<wbr/></p></span> 3120 </li> 3121 <li> 3122 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span> 3123 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 3124position continually to attempt to provide a 3125constantly-in-focus image stream.<wbr/></p> 3126<p>The focusing behavior should be suitable for still image 3127capture; typically this means focusing as fast as 3128possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 3129algorithm should start in INACTIVE state,<wbr/> and then 3130transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 3131appropriate as it attempts to maintain focus.<wbr/> When the AF 3132trigger is activated,<wbr/> the algorithm should finish its 3133PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 3134AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 3135lens position until a cancel AF trigger is received.<wbr/></p> 3136<p>When the AF cancel trigger is activated,<wbr/> the algorithm 3137should transition back to INACTIVE and then act as if it 3138has just been started.<wbr/></p></span> 3139 </li> 3140 <li> 3141 <span class="entry_type_enum_name">EDOF (v3.2)</span> 3142 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 3143<p>The camera device will produce images with an extended 3144depth of field automatically; no special focusing 3145operations need to be done before taking a picture.<wbr/></p> 3146<p>AF triggers are ignored,<wbr/> and the AF state will always be 3147INACTIVE.<wbr/></p></span> 3148 </li> 3149 </ul> 3150 3151 </td> <!-- entry_type --> 3152 3153 <td class="entry_description"> 3154 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 3155mode it is set to.<wbr/></p> 3156 </td> 3157 3158 <td class="entry_units"> 3159 </td> 3160 3161 <td class="entry_range"> 3162 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 3163 </td> 3164 3165 <td class="entry_hal_version"> 3166 <p>3.<wbr/>2</p> 3167 </td> 3168 3169 <td class="entry_tags"> 3170 <ul class="entry_tags"> 3171 <li><a href="#tag_BC">BC</a></li> 3172 </ul> 3173 </td> 3174 3175 </tr> 3176 <tr class="entries_header"> 3177 <th class="th_details" colspan="6">Details</th> 3178 </tr> 3179 <tr class="entry_cont"> 3180 <td class="entry_details" colspan="6"> 3181 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 3182(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 3183when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 3184dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 3185setting <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> 3186<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 3187the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 3188in result metadata.<wbr/></p> 3189 </td> 3190 </tr> 3191 3192 <tr class="entries_header"> 3193 <th class="th_details" colspan="6">HAL Implementation Details</th> 3194 </tr> 3195 <tr class="entry_cont"> 3196 <td class="entry_details" colspan="6"> 3197 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 3198request (<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 3199up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 3200<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 3201locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 3202after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 3203the same focal plane remains in focus.<wbr/></p> 3204<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 3205scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 3206(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 3207same lock behavior as above.<wbr/></p> 3208<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 3209focus 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/> 3210However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 3211manual control.<wbr/></p> 3212<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 3213camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 3214remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 3215by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 3216that will arise on camera modules with open-loop VCMs.<wbr/></p> 3217 </td> 3218 </tr> 3219 3220 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3221 <!-- end of entry --> 3222 3223 3224 <tr class="entry" id="controls_android.control.afRegions"> 3225 <td class="entry_name 3226 " rowspan="5"> 3227 android.<wbr/>control.<wbr/>af<wbr/>Regions 3228 </td> 3229 <td class="entry_type"> 3230 <span class="entry_type_name">int32</span> 3231 <span class="entry_type_container">x</span> 3232 3233 <span class="entry_type_array"> 3234 5 x area_count 3235 </span> 3236 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3237 3238 3239 3240 3241 3242 3243 </td> <!-- entry_type --> 3244 3245 <td class="entry_description"> 3246 <p>List of metering areas to use for auto-focus.<wbr/></p> 3247 </td> 3248 3249 <td class="entry_units"> 3250 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 3251 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 3252 distortion correction capability and mode 3253 </td> 3254 3255 <td class="entry_range"> 3256 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3257<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> 3258depending on distortion correction capability and mode</p> 3259 </td> 3260 3261 <td class="entry_hal_version"> 3262 <p>3.<wbr/>2</p> 3263 </td> 3264 3265 <td class="entry_tags"> 3266 <ul class="entry_tags"> 3267 <li><a href="#tag_BC">BC</a></li> 3268 </ul> 3269 </td> 3270 3271 </tr> 3272 <tr class="entries_header"> 3273 <th class="th_details" colspan="6">Details</th> 3274 </tr> 3275 <tr class="entry_cont"> 3276 <td class="entry_details" colspan="6"> 3277 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 3278Otherwise will always be present.<wbr/></p> 3279<p>The maximum number of focus areas supported by the device is determined by the value 3280of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 3281<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 3282system 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 3283the top-left pixel in the active pixel array,<wbr/> and 3284(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3285<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 3286active pixel array.<wbr/></p> 3287<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 3288system depends on the mode being set.<wbr/> 3289When the distortion correction mode is OFF,<wbr/> the coordinate system follows 3290<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 3291<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 3292(<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/> 3293<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 3294pixel in the pre-correction active pixel array.<wbr/> 3295When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 3296<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 3297<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 3298(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3299<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 3300active pixel array.<wbr/></p> 3301<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 3302for every pixel in the area.<wbr/> This means that a large metering area 3303with the same weight as a smaller area will have more effect in 3304the metering result.<wbr/> Metering areas can partially overlap and the 3305camera device will add the weights in the overlap region.<wbr/></p> 3306<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 3307is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 3308ignored.<wbr/></p> 3309<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3310camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or 3311the region selected by the camera device as the focus area of interest.<wbr/></p> 3312<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 3313capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3314region and output only the intersection rectangle as the metering region in the result 3315metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3316not reported in the result metadata.<wbr/></p> 3317<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 3318preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 3319pre-zoom field of view.<wbr/> This means that the same afRegions values at different 3320<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The afRegions 3321coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the 3322zoomed 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 3323afRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the 3324scene 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 3325activeArraySize or preCorrectionActiveArraySize still depends on distortion correction 3326mode.<wbr/></p> 3327<p>For camera devices with the 3328<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> 3329capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 3330<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 3331coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 3332<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> 3333 </td> 3334 </tr> 3335 3336 <tr class="entries_header"> 3337 <th class="th_details" colspan="6">HAL Implementation Details</th> 3338 </tr> 3339 <tr class="entry_cont"> 3340 <td class="entry_details" colspan="6"> 3341 <p>The HAL level representation of MeteringRectangle[] is a 3342int[5 * area_<wbr/>count].<wbr/> 3343Every five elements represent a metering region of 3344(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3345The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3346exclusive on xmax and ymax.<wbr/> 3347HAL must always report metering regions in the coordinate system of pre-correction 3348active array.<wbr/></p> 3349 </td> 3350 </tr> 3351 3352 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3353 <!-- end of entry --> 3354 3355 3356 <tr class="entry" id="controls_android.control.afTrigger"> 3357 <td class="entry_name 3358 " rowspan="5"> 3359 android.<wbr/>control.<wbr/>af<wbr/>Trigger 3360 </td> 3361 <td class="entry_type"> 3362 <span class="entry_type_name entry_type_name_enum">byte</span> 3363 3364 <span class="entry_type_visibility"> [public]</span> 3365 3366 3367 <span class="entry_type_hwlevel">[legacy] </span> 3368 3369 3370 3371 <ul class="entry_type_enum"> 3372 <li> 3373 <span class="entry_type_enum_name">IDLE (v3.2)</span> 3374 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 3375 </li> 3376 <li> 3377 <span class="entry_type_enum_name">START (v3.2)</span> 3378 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 3379 </li> 3380 <li> 3381 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 3382 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 3383state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 3384 </li> 3385 </ul> 3386 3387 </td> <!-- entry_type --> 3388 3389 <td class="entry_description"> 3390 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 3391 </td> 3392 3393 <td class="entry_units"> 3394 </td> 3395 3396 <td class="entry_range"> 3397 </td> 3398 3399 <td class="entry_hal_version"> 3400 <p>3.<wbr/>2</p> 3401 </td> 3402 3403 <td class="entry_tags"> 3404 <ul class="entry_tags"> 3405 <li><a href="#tag_BC">BC</a></li> 3406 </ul> 3407 </td> 3408 3409 </tr> 3410 <tr class="entries_header"> 3411 <th class="th_details" colspan="6">Details</th> 3412 </tr> 3413 <tr class="entry_cont"> 3414 <td class="entry_details" colspan="6"> 3415 <p>This entry is normally set to IDLE,<wbr/> or is not 3416included at all in the request settings.<wbr/></p> 3417<p>When included and set to START,<wbr/> the camera device will trigger the 3418autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 3419<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 3420and return to its initial AF state.<wbr/></p> 3421<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 3422single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 3423START for multiple captures in a row means restarting the AF operation over 3424and over again.<wbr/></p> 3425<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> 3426<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> 3427simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 3428the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 3429focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 3430trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 3431changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 3432 </td> 3433 </tr> 3434 3435 <tr class="entries_header"> 3436 <th class="th_details" colspan="6">HAL Implementation Details</th> 3437 </tr> 3438 <tr class="entry_cont"> 3439 <td class="entry_details" colspan="6"> 3440 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 3441(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 3442treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 3443AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 3444to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 3445 </td> 3446 </tr> 3447 3448 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3449 <!-- end of entry --> 3450 3451 3452 <tr class="entry" id="controls_android.control.awbLock"> 3453 <td class="entry_name 3454 " rowspan="3"> 3455 android.<wbr/>control.<wbr/>awb<wbr/>Lock 3456 </td> 3457 <td class="entry_type"> 3458 <span class="entry_type_name entry_type_name_enum">byte</span> 3459 3460 <span class="entry_type_visibility"> [public as boolean]</span> 3461 3462 3463 <span class="entry_type_hwlevel">[legacy] </span> 3464 3465 3466 3467 <ul class="entry_type_enum"> 3468 <li> 3469 <span class="entry_type_enum_name">OFF (v3.2)</span> 3470 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 3471algorithm is free to update its parameters if in AUTO 3472mode.<wbr/></p></span> 3473 </li> 3474 <li> 3475 <span class="entry_type_enum_name">ON (v3.2)</span> 3476 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 3477algorithm will not update its parameters while the lock 3478is active.<wbr/></p></span> 3479 </li> 3480 </ul> 3481 3482 </td> <!-- entry_type --> 3483 3484 <td class="entry_description"> 3485 <p>Whether auto-white balance (AWB) is currently locked to its 3486latest calculated values.<wbr/></p> 3487 </td> 3488 3489 <td class="entry_units"> 3490 </td> 3491 3492 <td class="entry_range"> 3493 </td> 3494 3495 <td class="entry_hal_version"> 3496 <p>3.<wbr/>2</p> 3497 </td> 3498 3499 <td class="entry_tags"> 3500 <ul class="entry_tags"> 3501 <li><a href="#tag_BC">BC</a></li> 3502 </ul> 3503 </td> 3504 3505 </tr> 3506 <tr class="entries_header"> 3507 <th class="th_details" colspan="6">Details</th> 3508 </tr> 3509 <tr class="entry_cont"> 3510 <td class="entry_details" colspan="6"> 3511 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 3512and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 3513<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 3514get locked do not necessarily correspond to the settings that were present in the 3515latest capture result received from the camera device,<wbr/> since additional captures 3516and AWB updates may have occurred even before the result was sent out.<wbr/> If an 3517application is switching between automatic and manual control and wishes to eliminate 3518any flicker during the switch,<wbr/> the following procedure is recommended:</p> 3519<ol> 3520<li>Starting in auto-AWB mode:</li> 3521<li>Lock AWB</li> 3522<li>Wait for the first result to be output that has the AWB locked</li> 3523<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 3524<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 3525</ol> 3526<p>Note that AWB lock is only meaningful when 3527<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 3528AWB is already fixed to a specific setting.<wbr/></p> 3529<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 3530 </td> 3531 </tr> 3532 3533 3534 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3535 <!-- end of entry --> 3536 3537 3538 <tr class="entry" id="controls_android.control.awbMode"> 3539 <td class="entry_name 3540 " rowspan="3"> 3541 android.<wbr/>control.<wbr/>awb<wbr/>Mode 3542 </td> 3543 <td class="entry_type"> 3544 <span class="entry_type_name entry_type_name_enum">byte</span> 3545 3546 <span class="entry_type_visibility"> [public]</span> 3547 3548 3549 <span class="entry_type_hwlevel">[legacy] </span> 3550 3551 3552 3553 <ul class="entry_type_enum"> 3554 <li> 3555 <span class="entry_type_enum_name">OFF (v3.2)</span> 3556 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 3557<p>The application-selected color transform matrix 3558(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 3559(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 3560device for manual white balance control.<wbr/></p></span> 3561 </li> 3562 <li> 3563 <span class="entry_type_enum_name">AUTO (v3.2)</span> 3564 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 3565<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3566and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3567For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3568values used by the camera device for the transform and gains 3569will be available in the capture result for this request.<wbr/></p></span> 3570 </li> 3571 <li> 3572 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span> 3573 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3574the camera device uses incandescent light as the assumed scene 3575illumination for white balance.<wbr/></p> 3576<p>While the exact white balance transforms are up to the 3577camera device,<wbr/> they will approximately match the CIE 3578standard illuminant A.<wbr/></p> 3579<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3580and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3581For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3582values used by the camera device for the transform and gains 3583will be available in the capture result for this request.<wbr/></p></span> 3584 </li> 3585 <li> 3586 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> 3587 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3588the camera device uses fluorescent light as the assumed scene 3589illumination for white balance.<wbr/></p> 3590<p>While the exact white balance transforms are up to the 3591camera device,<wbr/> they will approximately match the CIE 3592standard illuminant F2.<wbr/></p> 3593<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3594and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3595For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3596values used by the camera device for the transform and gains 3597will be available in the capture result for this request.<wbr/></p></span> 3598 </li> 3599 <li> 3600 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span> 3601 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3602the camera device uses warm fluorescent light as the assumed scene 3603illumination for white balance.<wbr/></p> 3604<p>While the exact white balance transforms are up to the 3605camera device,<wbr/> they will approximately match the CIE 3606standard illuminant F4.<wbr/></p> 3607<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3608and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3609For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3610values used by the camera device for the transform and gains 3611will be available in the capture result for this request.<wbr/></p></span> 3612 </li> 3613 <li> 3614 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> 3615 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3616the camera device uses daylight light as the assumed scene 3617illumination for white balance.<wbr/></p> 3618<p>While the exact white balance transforms are up to the 3619camera device,<wbr/> they will approximately match the CIE 3620standard illuminant D65.<wbr/></p> 3621<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3622and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3623For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3624values used by the camera device for the transform and gains 3625will be available in the capture result for this request.<wbr/></p></span> 3626 </li> 3627 <li> 3628 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span> 3629 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3630the camera device uses cloudy daylight light as the assumed scene 3631illumination for white balance.<wbr/></p> 3632<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3633and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3634For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3635values used by the camera device for the transform and gains 3636will be available in the capture result for this request.<wbr/></p></span> 3637 </li> 3638 <li> 3639 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span> 3640 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3641the camera device uses twilight light as the assumed scene 3642illumination for white balance.<wbr/></p> 3643<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3644and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3645For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3646values used by the camera device for the transform and gains 3647will be available in the capture result for this request.<wbr/></p></span> 3648 </li> 3649 <li> 3650 <span class="entry_type_enum_name">SHADE (v3.2)</span> 3651 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3652the camera device uses shade light as the assumed scene 3653illumination for white balance.<wbr/></p> 3654<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3655and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3656For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3657values used by the camera device for the transform and gains 3658will be available in the capture result for this request.<wbr/></p></span> 3659 </li> 3660 </ul> 3661 3662 </td> <!-- entry_type --> 3663 3664 <td class="entry_description"> 3665 <p>Whether auto-white balance (AWB) is currently setting the color 3666transform fields,<wbr/> and what its illumination target 3667is.<wbr/></p> 3668 </td> 3669 3670 <td class="entry_units"> 3671 </td> 3672 3673 <td class="entry_range"> 3674 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 3675 </td> 3676 3677 <td class="entry_hal_version"> 3678 <p>3.<wbr/>2</p> 3679 </td> 3680 3681 <td class="entry_tags"> 3682 <ul class="entry_tags"> 3683 <li><a href="#tag_BC">BC</a></li> 3684 </ul> 3685 </td> 3686 3687 </tr> 3688 <tr class="entries_header"> 3689 <th class="th_details" colspan="6">Details</th> 3690 </tr> 3691 <tr class="entry_cont"> 3692 <td class="entry_details" colspan="6"> 3693 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 3694<p>When set to the AUTO mode,<wbr/> the camera device's auto-white balance 3695routine is enabled,<wbr/> overriding the application's selected 3696<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 3697<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> 3698is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 3699also 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 3700setting AE mode to OFF.<wbr/></p> 3701<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 3702routine is disabled.<wbr/> The application manually controls the white 3703balance 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> 3704and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 3705<p>When set to any other modes,<wbr/> the camera device's auto-white 3706balance routine is disabled.<wbr/> The camera device uses each 3707particular illumination target for white balance 3708adjustment.<wbr/> The application's values for 3709<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 3710<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 3711<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 3712 </td> 3713 </tr> 3714 3715 3716 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3717 <!-- end of entry --> 3718 3719 3720 <tr class="entry" id="controls_android.control.awbRegions"> 3721 <td class="entry_name 3722 " rowspan="5"> 3723 android.<wbr/>control.<wbr/>awb<wbr/>Regions 3724 </td> 3725 <td class="entry_type"> 3726 <span class="entry_type_name">int32</span> 3727 <span class="entry_type_container">x</span> 3728 3729 <span class="entry_type_array"> 3730 5 x area_count 3731 </span> 3732 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3733 3734 3735 3736 3737 3738 3739 </td> <!-- entry_type --> 3740 3741 <td class="entry_description"> 3742 <p>List of metering areas to use for auto-white-balance illuminant 3743estimation.<wbr/></p> 3744 </td> 3745 3746 <td class="entry_units"> 3747 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 3748 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 3749 distortion correction capability and mode 3750 </td> 3751 3752 <td class="entry_range"> 3753 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3754<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> 3755depending on distortion correction capability and mode</p> 3756 </td> 3757 3758 <td class="entry_hal_version"> 3759 <p>3.<wbr/>2</p> 3760 </td> 3761 3762 <td class="entry_tags"> 3763 <ul class="entry_tags"> 3764 <li><a href="#tag_BC">BC</a></li> 3765 </ul> 3766 </td> 3767 3768 </tr> 3769 <tr class="entries_header"> 3770 <th class="th_details" colspan="6">Details</th> 3771 </tr> 3772 <tr class="entry_cont"> 3773 <td class="entry_details" colspan="6"> 3774 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 3775Otherwise will always be present.<wbr/></p> 3776<p>The maximum number of regions supported by the device is determined by the value 3777of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 3778<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 3779system 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 3780the top-left pixel in the active pixel array,<wbr/> and 3781(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3782<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 3783active pixel array.<wbr/></p> 3784<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 3785system depends on the mode being set.<wbr/> 3786When the distortion correction mode is OFF,<wbr/> the coordinate system follows 3787<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 3788<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 3789(<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/> 3790<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 3791pixel in the pre-correction active pixel array.<wbr/> 3792When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 3793<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 3794<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 3795(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3796<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 3797active pixel array.<wbr/></p> 3798<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 3799for every pixel in the area.<wbr/> This means that a large metering area 3800with the same weight as a smaller area will have more effect in 3801the metering result.<wbr/> Metering areas can partially overlap and the 3802camera device will add the weights in the overlap region.<wbr/></p> 3803<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 3804only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 38050 weight is ignored.<wbr/></p> 3806<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3807camera device.<wbr/></p> 3808<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 3809capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3810region and output only the intersection rectangle as the metering region in the result 3811metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3812not reported in the result metadata.<wbr/></p> 3813<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 3814preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 3815pre-zoom field of view.<wbr/> This means that the same awbRegions values at different 3816<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The awbRegions 3817coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the 3818zoomed 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 3819awbRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of 3820the 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 3821activeArraySize or preCorrectionActiveArraySize still depends on distortion correction 3822mode.<wbr/></p> 3823<p>For camera devices with the 3824<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> 3825capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 3826<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 3827coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 3828<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> 3829 </td> 3830 </tr> 3831 3832 <tr class="entries_header"> 3833 <th class="th_details" colspan="6">HAL Implementation Details</th> 3834 </tr> 3835 <tr class="entry_cont"> 3836 <td class="entry_details" colspan="6"> 3837 <p>The HAL level representation of MeteringRectangle[] is a 3838int[5 * area_<wbr/>count].<wbr/> 3839Every five elements represent a metering region of 3840(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3841The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3842exclusive on xmax and ymax.<wbr/> 3843HAL must always report metering regions in the coordinate system of pre-correction 3844active array.<wbr/></p> 3845 </td> 3846 </tr> 3847 3848 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3849 <!-- end of entry --> 3850 3851 3852 <tr class="entry" id="controls_android.control.captureIntent"> 3853 <td class="entry_name 3854 " rowspan="3"> 3855 android.<wbr/>control.<wbr/>capture<wbr/>Intent 3856 </td> 3857 <td class="entry_type"> 3858 <span class="entry_type_name entry_type_name_enum">byte</span> 3859 3860 <span class="entry_type_visibility"> [public]</span> 3861 3862 3863 <span class="entry_type_hwlevel">[legacy] </span> 3864 3865 3866 3867 <ul class="entry_type_enum"> 3868 <li> 3869 <span class="entry_type_enum_name">CUSTOM (v3.2)</span> 3870 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 3871categories.<wbr/> The camera device will default to preview-like 3872behavior.<wbr/></p></span> 3873 </li> 3874 <li> 3875 <span class="entry_type_enum_name">PREVIEW (v3.2)</span> 3876 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 3877<p>The precapture trigger may be used to start off a metering 3878w/<wbr/>flash sequence.<wbr/></p></span> 3879 </li> 3880 <li> 3881 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span> 3882 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 3883use case.<wbr/></p> 3884<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 3885 </li> 3886 <li> 3887 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span> 3888 <span class="entry_type_enum_notes"><p>This request is for a video recording 3889use case.<wbr/></p></span> 3890 </li> 3891 <li> 3892 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span> 3893 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 3894image while recording video) use case.<wbr/></p> 3895<p>The camera device should take the highest-quality image 3896possible (given the other settings) without disrupting the 3897frame rate of video recording.<wbr/> </p></span> 3898 </li> 3899 <li> 3900 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 3901 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 3902application will stream full-resolution images and 3903reprocess one or several later for a final 3904capture.<wbr/></p></span> 3905 </li> 3906 <li> 3907 <span class="entry_type_enum_name">MANUAL (v3.2)</span> 3908 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 3909the applications want to directly control the capture parameters.<wbr/></p> 3910<p>For example,<wbr/> the application may wish to manually control 3911<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> 3912 </li> 3913 <li> 3914 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> 3915 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where 3916the application will use camera and inertial sensor data to 3917locate and track objects in the world.<wbr/></p> 3918<p>The camera device auto-exposure routine will limit the exposure time 3919of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span> 3920 </li> 3921 </ul> 3922 3923 </td> <!-- entry_type --> 3924 3925 <td class="entry_description"> 3926 <p>Information to the camera device 3A (auto-exposure,<wbr/> 3927auto-focus,<wbr/> auto-white balance) routines about the purpose 3928of this capture,<wbr/> to help the camera device to decide optimal 3A 3929strategy.<wbr/></p> 3930 </td> 3931 3932 <td class="entry_units"> 3933 </td> 3934 3935 <td class="entry_range"> 3936 </td> 3937 3938 <td class="entry_hal_version"> 3939 <p>3.<wbr/>2</p> 3940 </td> 3941 3942 <td class="entry_tags"> 3943 <ul class="entry_tags"> 3944 <li><a href="#tag_BC">BC</a></li> 3945 </ul> 3946 </td> 3947 3948 </tr> 3949 <tr class="entries_header"> 3950 <th class="th_details" colspan="6">Details</th> 3951 </tr> 3952 <tr class="entry_cont"> 3953 <td class="entry_details" colspan="6"> 3954 <p>This control (except for MANUAL) is only effective if 3955<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 3956<p>All intents are supported by all devices,<wbr/> except that: 3957 * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 3958PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> 3959 * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 3960MANUAL_<wbr/>SENSOR.<wbr/> 3961 * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 3962MOTION_<wbr/>TRACKING.<wbr/></p> 3963 </td> 3964 </tr> 3965 3966 3967 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3968 <!-- end of entry --> 3969 3970 3971 <tr class="entry" id="controls_android.control.effectMode"> 3972 <td class="entry_name 3973 " rowspan="3"> 3974 android.<wbr/>control.<wbr/>effect<wbr/>Mode 3975 </td> 3976 <td class="entry_type"> 3977 <span class="entry_type_name entry_type_name_enum">byte</span> 3978 3979 <span class="entry_type_visibility"> [public]</span> 3980 3981 3982 <span class="entry_type_hwlevel">[legacy] </span> 3983 3984 3985 3986 <ul class="entry_type_enum"> 3987 <li> 3988 <span class="entry_type_enum_name">OFF (v3.2)</span> 3989 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 3990 </li> 3991 <li> 3992 <span class="entry_type_enum_name">MONO (v3.2)</span> 3993 <span class="entry_type_enum_optional">[optional]</span> 3994 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 3995a single color.<wbr/></p> 3996<p>This will typically be grayscale.<wbr/></p></span> 3997 </li> 3998 <li> 3999 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span> 4000 <span class="entry_type_enum_optional">[optional]</span> 4001 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 4002are inverted.<wbr/></p></span> 4003 </li> 4004 <li> 4005 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span> 4006 <span class="entry_type_enum_optional">[optional]</span> 4007 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 4008image is wholly or partially reversed in 4009tone.<wbr/></p></span> 4010 </li> 4011 <li> 4012 <span class="entry_type_enum_name">SEPIA (v3.2)</span> 4013 <span class="entry_type_enum_optional">[optional]</span> 4014 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 4015gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 4016 </li> 4017 <li> 4018 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span> 4019 <span class="entry_type_enum_optional">[optional]</span> 4020 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 4021discrete regions of tone rather than a continuous 4022gradient of tones.<wbr/></p></span> 4023 </li> 4024 <li> 4025 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span> 4026 <span class="entry_type_enum_optional">[optional]</span> 4027 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 4028as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 4029 </li> 4030 <li> 4031 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span> 4032 <span class="entry_type_enum_optional">[optional]</span> 4033 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 4034as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 4035 </li> 4036 <li> 4037 <span class="entry_type_enum_name">AQUA (v3.2)</span> 4038 <span class="entry_type_enum_optional">[optional]</span> 4039 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 4040 </li> 4041 </ul> 4042 4043 </td> <!-- entry_type --> 4044 4045 <td class="entry_description"> 4046 <p>A special color effect to apply.<wbr/></p> 4047 </td> 4048 4049 <td class="entry_units"> 4050 </td> 4051 4052 <td class="entry_range"> 4053 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 4054 </td> 4055 4056 <td class="entry_hal_version"> 4057 <p>3.<wbr/>2</p> 4058 </td> 4059 4060 <td class="entry_tags"> 4061 <ul class="entry_tags"> 4062 <li><a href="#tag_BC">BC</a></li> 4063 </ul> 4064 </td> 4065 4066 </tr> 4067 <tr class="entries_header"> 4068 <th class="th_details" colspan="6">Details</th> 4069 </tr> 4070 <tr class="entry_cont"> 4071 <td class="entry_details" colspan="6"> 4072 <p>When this mode is set,<wbr/> a color effect will be applied 4073to images produced by the camera device.<wbr/> The interpretation 4074and implementation of these color effects is left to the 4075implementor of the camera device,<wbr/> and should not be 4076depended on to be consistent (or present) across all 4077devices.<wbr/></p> 4078 </td> 4079 </tr> 4080 4081 4082 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4083 <!-- end of entry --> 4084 4085 4086 <tr class="entry" id="controls_android.control.mode"> 4087 <td class="entry_name 4088 " rowspan="3"> 4089 android.<wbr/>control.<wbr/>mode 4090 </td> 4091 <td class="entry_type"> 4092 <span class="entry_type_name entry_type_name_enum">byte</span> 4093 4094 <span class="entry_type_visibility"> [public]</span> 4095 4096 4097 <span class="entry_type_hwlevel">[legacy] </span> 4098 4099 4100 4101 <ul class="entry_type_enum"> 4102 <li> 4103 <span class="entry_type_enum_name">OFF (v3.2)</span> 4104 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 4105<p>All control by the device's metering and focusing (3A) 4106routines is disabled,<wbr/> and no other settings in 4107android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 4108<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 4109device to select post-processing values for processing 4110blocks that do not allow for manual control,<wbr/> or are not 4111exposed by the camera API.<wbr/></p> 4112<p>However,<wbr/> the camera device's 3A routines may continue to 4113collect statistics and update their internal state so that 4114when control is switched to AUTO mode,<wbr/> good control values 4115can be immediately applied.<wbr/></p></span> 4116 </li> 4117 <li> 4118 <span class="entry_type_enum_name">AUTO (v3.2)</span> 4119 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 4120<p>Manual control of capture parameters is disabled.<wbr/> All 4121controls in android.<wbr/>control.<wbr/>* besides sceneMode take 4122effect.<wbr/></p></span> 4123 </li> 4124 <li> 4125 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span> 4126 <span class="entry_type_enum_optional">[optional]</span> 4127 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 4128<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 4129control.<wbr/>afMode controls; the camera device will ignore 4130those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 4131FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 4132This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 4133<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 4134contain some modes other than DISABLED).<wbr/></p> 4135<p>For extended scene modes such as BOKEH,<wbr/> please use USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE instead.<wbr/></p></span> 4136 </li> 4137 <li> 4138 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span> 4139 <span class="entry_type_enum_optional">[optional]</span> 4140 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 4141used by camera device background auto-exposure,<wbr/> auto-white balance and 4142auto-focus algorithms (3A) to update their statistics.<wbr/></p> 4143<p>Specifically,<wbr/> the 3A routines are locked to the last 4144values set from a request with AUTO,<wbr/> OFF,<wbr/> or 4145USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 4146collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 4147discarded by the camera device.<wbr/></p></span> 4148 </li> 4149 <li> 4150 <span class="entry_type_enum_name">USE_EXTENDED_SCENE_MODE (v3.5)</span> 4151 <span class="entry_type_enum_optional">[optional]</span> 4152 <span class="entry_type_enum_notes"><p>Use a specific extended scene mode.<wbr/></p> 4153<p>When extended scene mode is on,<wbr/> the camera device may override certain control 4154parameters,<wbr/> such as targetFpsRange,<wbr/> AE,<wbr/> AWB,<wbr/> and AF modes,<wbr/> to achieve best power and 4155quality tradeoffs.<wbr/> Only the mandatory stream combinations of LIMITED hardware level 4156are guaranteed.<wbr/></p> 4157<p>This setting can only be used if extended scene mode is supported (i.<wbr/>e.<wbr/> 4158android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Modes 4159contains some modes other than DISABLED).<wbr/></p></span> 4160 </li> 4161 </ul> 4162 4163 </td> <!-- entry_type --> 4164 4165 <td class="entry_description"> 4166 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 4167routines.<wbr/></p> 4168 </td> 4169 4170 <td class="entry_units"> 4171 </td> 4172 4173 <td class="entry_range"> 4174 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 4175 </td> 4176 4177 <td class="entry_hal_version"> 4178 <p>3.<wbr/>2</p> 4179 </td> 4180 4181 <td class="entry_tags"> 4182 <ul class="entry_tags"> 4183 <li><a href="#tag_BC">BC</a></li> 4184 </ul> 4185 </td> 4186 4187 </tr> 4188 <tr class="entries_header"> 4189 <th class="th_details" colspan="6">Details</th> 4190 </tr> 4191 <tr class="entry_cont"> 4192 <td class="entry_details" colspan="6"> 4193 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 4194by the camera device is disabled.<wbr/> The application must set the fields for 4195capture parameters itself.<wbr/></p> 4196<p>When set to AUTO,<wbr/> the individual algorithm controls in 4197android.<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> 4198<p>When set to USE_<wbr/>SCENE_<wbr/>MODE or USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 4199android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device 4200implements one of the scene mode or extended scene mode settings (such as ACTION,<wbr/> 4201SUNSET,<wbr/> PARTY,<wbr/> or BOKEH) as it wishes.<wbr/> The camera device scene mode 42023A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 4203<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 4204is that this frame will not be used by camera device background 3A statistics 4205update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 4206where the application doesn't want a 3A manual control capture to affect 4207the subsequent auto 3A capture results.<wbr/></p> 4208 </td> 4209 </tr> 4210 4211 4212 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4213 <!-- end of entry --> 4214 4215 4216 <tr class="entry" id="controls_android.control.sceneMode"> 4217 <td class="entry_name 4218 " rowspan="5"> 4219 android.<wbr/>control.<wbr/>scene<wbr/>Mode 4220 </td> 4221 <td class="entry_type"> 4222 <span class="entry_type_name entry_type_name_enum">byte</span> 4223 4224 <span class="entry_type_visibility"> [public]</span> 4225 4226 4227 <span class="entry_type_hwlevel">[legacy] </span> 4228 4229 4230 4231 <ul class="entry_type_enum"> 4232 <li> 4233 <span class="entry_type_enum_name">DISABLED (v3.2)</span> 4234 <span class="entry_type_enum_value">0</span> 4235 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 4236 </li> 4237 <li> 4238 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span> 4239 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 4240detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 4241auto-exposure routines.<wbr/></p> 4242<p>If face detection statistics are disabled 4243(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/> 4244this should still operate correctly (but will not return 4245face detection statistics to the framework).<wbr/></p> 4246<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4247<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> 4248remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 4249 </li> 4250 <li> 4251 <span class="entry_type_enum_name">ACTION (v3.2)</span> 4252 <span class="entry_type_enum_optional">[optional]</span> 4253 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 4254<p>Similar to SPORTS.<wbr/></p></span> 4255 </li> 4256 <li> 4257 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span> 4258 <span class="entry_type_enum_optional">[optional]</span> 4259 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 4260 </li> 4261 <li> 4262 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span> 4263 <span class="entry_type_enum_optional">[optional]</span> 4264 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 4265 </li> 4266 <li> 4267 <span class="entry_type_enum_name">NIGHT (v3.2)</span> 4268 <span class="entry_type_enum_optional">[optional]</span> 4269 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 4270 </li> 4271 <li> 4272 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span> 4273 <span class="entry_type_enum_optional">[optional]</span> 4274 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 4275settings.<wbr/></p></span> 4276 </li> 4277 <li> 4278 <span class="entry_type_enum_name">THEATRE (v3.2)</span> 4279 <span class="entry_type_enum_optional">[optional]</span> 4280 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 4281remain off.<wbr/></p></span> 4282 </li> 4283 <li> 4284 <span class="entry_type_enum_name">BEACH (v3.2)</span> 4285 <span class="entry_type_enum_optional">[optional]</span> 4286 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 4287 </li> 4288 <li> 4289 <span class="entry_type_enum_name">SNOW (v3.2)</span> 4290 <span class="entry_type_enum_optional">[optional]</span> 4291 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 4292 </li> 4293 <li> 4294 <span class="entry_type_enum_name">SUNSET (v3.2)</span> 4295 <span class="entry_type_enum_optional">[optional]</span> 4296 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 4297 </li> 4298 <li> 4299 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span> 4300 <span class="entry_type_enum_optional">[optional]</span> 4301 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 4302device motion (for example: due to hand shake).<wbr/></p></span> 4303 </li> 4304 <li> 4305 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span> 4306 <span class="entry_type_enum_optional">[optional]</span> 4307 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 4308 </li> 4309 <li> 4310 <span class="entry_type_enum_name">SPORTS (v3.2)</span> 4311 <span class="entry_type_enum_optional">[optional]</span> 4312 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 4313<p>Similar to ACTION.<wbr/></p></span> 4314 </li> 4315 <li> 4316 <span class="entry_type_enum_name">PARTY (v3.2)</span> 4317 <span class="entry_type_enum_optional">[optional]</span> 4318 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 4319people.<wbr/></p></span> 4320 </li> 4321 <li> 4322 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span> 4323 <span class="entry_type_enum_optional">[optional]</span> 4324 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 4325is a candle.<wbr/></p></span> 4326 </li> 4327 <li> 4328 <span class="entry_type_enum_name">BARCODE (v3.2)</span> 4329 <span class="entry_type_enum_optional">[optional]</span> 4330 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 4331for use by camera applications that wish to read the 4332barcode value.<wbr/></p></span> 4333 </li> 4334 <li> 4335 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span> 4336 <span class="entry_type_enum_deprecated">[deprecated]</span> 4337 <span class="entry_type_enum_optional">[optional]</span> 4338 <span class="entry_type_enum_hidden">[java_public]</span> 4339 <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> 4340and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 4341for high speed video recording.<wbr/></p> 4342<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 4343<p>The supported high speed video sizes and fps ranges are specified in 4344<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 4345output frame rates,<wbr/> the application is only allowed to select video size 4346and fps range combinations listed in this static metadata.<wbr/> The fps range 4347can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 4348<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 4349ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 4350controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 4351and post-processing parameters is possible.<wbr/> All other controls operate the 4352same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 4353android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 4354<ul> 4355<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 4356<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 4357<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 4358<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 4359<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 4360<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 4361<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 4362<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 4363<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 4364<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 4365<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li> 4366</ul> 4367<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 4368<ul> 4369<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> 4370<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 4371<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 4372<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 4373</ul> 4374<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 4375be lower than what camera can output,<wbr/> depending on the destination Surfaces for 4376the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 4377the application need check if the video encoder is capable of supporting the 4378high frame rate for a given video size,<wbr/> or it will end up with lower recording 4379frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 4380rate will be bounded by the screen refresh rate.<wbr/></p> 4381<p>The camera device will only support up to 2 output high speed streams 4382(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 4383in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 4384<ul> 4385<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 4386format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 4387min(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> 4388<li>The stream sizes are selected from the sizes reported by 4389<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 4390<li>No processed non-stalling or raw streams are configured.<wbr/></li> 4391</ul> 4392<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 4393<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/> 4394the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 4395and the returned capture result metadata will give the fps range choosen 4396by the camera device.<wbr/></p> 4397<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 4398reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 4399the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 4400 </li> 4401 <li> 4402 <span class="entry_type_enum_name">HDR (v3.2)</span> 4403 <span class="entry_type_enum_optional">[optional]</span> 4404 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 4405<p>In this scene mode,<wbr/> the camera device captures images 4406that keep a larger range of scene illumination levels 4407visible in the final image.<wbr/> For example,<wbr/> when taking a 4408picture of a object in front of a bright window,<wbr/> both 4409the object and the scene through the window may be 4410visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 4411one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 4412HDR mode generally takes much longer to capture a single 4413image,<wbr/> has no user control,<wbr/> and may have other artifacts 4414depending on the HDR method used.<wbr/></p> 4415<p>Therefore,<wbr/> HDR captures operate at a much slower rate 4416than regular captures.<wbr/></p> 4417<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 4418is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 4419STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 4420using a high dynamic range capture technique.<wbr/> On LEGACY 4421devices,<wbr/> captures that target a JPEG-format output will 4422be captured with HDR,<wbr/> and the capture intent is not 4423relevant.<wbr/></p> 4424<p>The HDR capture may involve the device capturing a burst 4425of images internally and combining them into one,<wbr/> or it 4426may involve the device using specialized high dynamic 4427range capture hardware.<wbr/> In all cases,<wbr/> a single image is 4428produced in response to a capture request submitted 4429while in HDR mode.<wbr/></p> 4430<p>Since substantial post-processing is generally needed to 4431produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG 4432outputs are supported for LIMITED/<wbr/>FULL device HDR 4433captures,<wbr/> and only JPEG outputs are supported for LEGACY 4434HDR captures.<wbr/> Using a RAW output for HDR capture is not 4435supported.<wbr/></p> 4436<p>Some devices may also support always-on HDR,<wbr/> which 4437applies HDR processing at full frame rate.<wbr/> For these 4438devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also 4439produce an HDR output with no frame rate impact compared 4440to normal operation,<wbr/> though the quality may be lower 4441than for STILL_<wbr/>CAPTURE intents.<wbr/></p> 4442<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types 4443or capture intents,<wbr/> the images captured will be as if 4444the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> 4445 </li> 4446 <li> 4447 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span> 4448 <span class="entry_type_enum_optional">[optional]</span> 4449 <span class="entry_type_enum_hidden">[hidden]</span> 4450 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 4451device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 4452under low light conditions.<wbr/></p> 4453<p>The camera device may be tuned to expose the images in a reduced 4454sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 4455if 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/> 4456the camera device auto-exposure routine tuning process may limit the actual 4457exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 4458exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 4459low light may be under-exposed when the sensor max exposure time (bounded by the 4460<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 4461ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 4462camera device auto-exposure routine to increase the sensitivity up to the max 4463sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 4464dark and the max exposure time is reached.<wbr/> The captured images may be noisier 4465compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 4466recommended that the application only use this scene mode when it is capable of 4467reducing the noise level of the captured images.<wbr/></p> 4468<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4469<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> 4470remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 4471 </li> 4472 <li> 4473 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span> 4474 <span class="entry_type_enum_optional">[optional]</span> 4475 <span class="entry_type_enum_hidden">[hidden]</span> 4476 <span class="entry_type_enum_value">100</span> 4477 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 4478<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 4479customized scene modes.<wbr/></p></span> 4480 </li> 4481 <li> 4482 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span> 4483 <span class="entry_type_enum_optional">[optional]</span> 4484 <span class="entry_type_enum_hidden">[hidden]</span> 4485 <span class="entry_type_enum_value">127</span> 4486 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 4487<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 4488customized scene modes.<wbr/></p></span> 4489 </li> 4490 </ul> 4491 4492 </td> <!-- entry_type --> 4493 4494 <td class="entry_description"> 4495 <p>Control for which scene mode is currently active.<wbr/></p> 4496 </td> 4497 4498 <td class="entry_units"> 4499 </td> 4500 4501 <td class="entry_range"> 4502 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 4503 </td> 4504 4505 <td class="entry_hal_version"> 4506 <p>3.<wbr/>2</p> 4507 </td> 4508 4509 <td class="entry_tags"> 4510 <ul class="entry_tags"> 4511 <li><a href="#tag_BC">BC</a></li> 4512 </ul> 4513 </td> 4514 4515 </tr> 4516 <tr class="entries_header"> 4517 <th class="th_details" colspan="6">Details</th> 4518 </tr> 4519 <tr class="entry_cont"> 4520 <td class="entry_details" colspan="6"> 4521 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 4522capture settings.<wbr/></p> 4523<p>This is the mode that that is active when 4524<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 4525disable <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> 4526while in use.<wbr/></p> 4527<p>The interpretation and implementation of these scene modes is left 4528to the implementor of the camera device.<wbr/> Their behavior will not be 4529consistent across all devices,<wbr/> and any given device may only implement 4530a subset of these modes.<wbr/></p> 4531 </td> 4532 </tr> 4533 4534 <tr class="entries_header"> 4535 <th class="th_details" colspan="6">HAL Implementation Details</th> 4536 </tr> 4537 <tr class="entry_cont"> 4538 <td class="entry_details" colspan="6"> 4539 <p>HAL implementations that include scene modes are expected to provide 4540the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4541<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 4542<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 4543<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 4544HAL must list supported video size and fps range in 4545<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/> 4546if the HAL has two different sensor configurations for normal streaming mode and high 4547speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the 4548HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy 4549HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 4550<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 4551capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 4552 </td> 4553 </tr> 4554 4555 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4556 <!-- end of entry --> 4557 4558 4559 <tr class="entry" id="controls_android.control.videoStabilizationMode"> 4560 <td class="entry_name 4561 " rowspan="3"> 4562 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 4563 </td> 4564 <td class="entry_type"> 4565 <span class="entry_type_name entry_type_name_enum">byte</span> 4566 4567 <span class="entry_type_visibility"> [public]</span> 4568 4569 4570 <span class="entry_type_hwlevel">[legacy] </span> 4571 4572 4573 4574 <ul class="entry_type_enum"> 4575 <li> 4576 <span class="entry_type_enum_name">OFF (v3.2)</span> 4577 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 4578 </li> 4579 <li> 4580 <span class="entry_type_enum_name">ON (v3.2)</span> 4581 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 4582 </li> 4583 </ul> 4584 4585 </td> <!-- entry_type --> 4586 4587 <td class="entry_description"> 4588 <p>Whether video stabilization is 4589active.<wbr/></p> 4590 </td> 4591 4592 <td class="entry_units"> 4593 </td> 4594 4595 <td class="entry_range"> 4596 </td> 4597 4598 <td class="entry_hal_version"> 4599 <p>3.<wbr/>2</p> 4600 </td> 4601 4602 <td class="entry_tags"> 4603 <ul class="entry_tags"> 4604 <li><a href="#tag_BC">BC</a></li> 4605 </ul> 4606 </td> 4607 4608 </tr> 4609 <tr class="entries_header"> 4610 <th class="th_details" colspan="6">Details</th> 4611 </tr> 4612 <tr class="entry_cont"> 4613 <td class="entry_details" colspan="6"> 4614 <p>Video stabilization automatically warps images from 4615the camera in order to stabilize motion between consecutive frames.<wbr/></p> 4616<p>If enabled,<wbr/> video stabilization can modify the 4617<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 4618<p>Switching between different video stabilization modes may take several 4619frames to initialize,<wbr/> the camera device will report the current mode 4620in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 4621the video stabilization modes in the first several capture results may 4622still be "OFF",<wbr/> and it will become "ON" when the initialization is 4623done.<wbr/></p> 4624<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 4625stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 4626that an output targeting a MediaRecorder or MediaCodec will be stabilized if 4627the recording resolution is less than or equal to 1920 x 1080 (width less than 4628or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 4629frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 4630<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 4631OFF if the recording output is not stabilized,<wbr/> or if there are no output 4632Surface types that can be stabilized.<wbr/></p> 4633<p>If a camera device supports both this mode and OIS 4634(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 4635produce undesirable interaction,<wbr/> so it is recommended not to enable 4636both at the same time.<wbr/></p> 4637 </td> 4638 </tr> 4639 4640 4641 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4642 <!-- end of entry --> 4643 4644 4645 <tr class="entry" id="controls_android.control.postRawSensitivityBoost"> 4646 <td class="entry_name 4647 " rowspan="3"> 4648 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost 4649 </td> 4650 <td class="entry_type"> 4651 <span class="entry_type_name">int32</span> 4652 4653 <span class="entry_type_visibility"> [public]</span> 4654 4655 4656 4657 4658 4659 4660 </td> <!-- entry_type --> 4661 4662 <td class="entry_description"> 4663 <p>The amount of additional sensitivity boost applied to output images 4664after RAW sensor data is captured.<wbr/></p> 4665 </td> 4666 4667 <td class="entry_units"> 4668 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 4669 </td> 4670 4671 <td class="entry_range"> 4672 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p> 4673 </td> 4674 4675 <td class="entry_hal_version"> 4676 <p>3.<wbr/>2</p> 4677 </td> 4678 4679 <td class="entry_tags"> 4680 </td> 4681 4682 </tr> 4683 <tr class="entries_header"> 4684 <th class="th_details" colspan="6">Details</th> 4685 </tr> 4686 <tr class="entry_cont"> 4687 <td class="entry_details" colspan="6"> 4688 <p>Some camera devices support additional digital sensitivity boosting in the 4689camera processing pipeline after sensor RAW image is captured.<wbr/> 4690Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not 4691have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> 4692<p>This key will be <code>null</code> for devices that do not support any RAW format 4693outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 4694present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 4695list <code>100</code> in this key.<wbr/></p> 4696<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the 4697boost to the nearest supported value.<wbr/> 4698The final boost value used will be available in the output capture result.<wbr/></p> 4699<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images 4700of such device will have the total sensitivity of 4701<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> 4702The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> 4703<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 4704OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 4705 </td> 4706 </tr> 4707 4708 4709 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4710 <!-- end of entry --> 4711 4712 4713 <tr class="entry" id="controls_android.control.enableZsl"> 4714 <td class="entry_name 4715 " rowspan="5"> 4716 android.<wbr/>control.<wbr/>enable<wbr/>Zsl 4717 </td> 4718 <td class="entry_type"> 4719 <span class="entry_type_name entry_type_name_enum">byte</span> 4720 4721 <span class="entry_type_visibility"> [public as boolean]</span> 4722 4723 4724 4725 4726 4727 <ul class="entry_type_enum"> 4728 <li> 4729 <span class="entry_type_enum_name">FALSE (v3.2)</span> 4730 <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 4731after previous requests.<wbr/></p></span> 4732 </li> 4733 <li> 4734 <span class="entry_type_enum_name">TRUE (v3.2)</span> 4735 <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 4736captured before previous requests.<wbr/></p></span> 4737 </li> 4738 </ul> 4739 4740 </td> <!-- entry_type --> 4741 4742 <td class="entry_description"> 4743 <p>Allow camera device to enable zero-shutter-lag mode for requests with 4744<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p> 4745 </td> 4746 4747 <td class="entry_units"> 4748 </td> 4749 4750 <td class="entry_range"> 4751 </td> 4752 4753 <td class="entry_hal_version"> 4754 <p>3.<wbr/>2</p> 4755 </td> 4756 4757 <td class="entry_tags"> 4758 </td> 4759 4760 </tr> 4761 <tr class="entries_header"> 4762 <th class="th_details" colspan="6">Details</th> 4763 </tr> 4764 <tr class="entry_cont"> 4765 <td class="entry_details" colspan="6"> 4766 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with 4767STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to 4768produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the 4769<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/> 4770Therefore,<wbr/> the contents of the output images and the result metadata may be out of order 4771compared to previous regular requests.<wbr/> enableZsl does not affect requests with other 4772capture intents.<wbr/></p> 4773<p>For example,<wbr/> when requests are submitted in the following order: 4774 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW 4775 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> 4776<p>The output images for request B may have contents captured before the output images for 4777request A,<wbr/> and the result metadata for request B may be older than the result metadata for 4778request A.<wbr/></p> 4779<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in 4780the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p> 4781<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in 4782TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always 4783<code>false</code> if present.<wbr/></p> 4784<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all 4785capture templates is always <code>false</code> if present.<wbr/></p> 4786<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p> 4787 </td> 4788 </tr> 4789 4790 <tr class="entries_header"> 4791 <th class="th_details" colspan="6">HAL Implementation Details</th> 4792 </tr> 4793 <tr class="entry_cont"> 4794 <td class="entry_details" colspan="6"> 4795 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE 4796capture intent.<wbr/></p> 4797 </td> 4798 </tr> 4799 4800 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4801 <!-- end of entry --> 4802 4803 4804 <tr class="entry" id="controls_android.control.extendedSceneMode"> 4805 <td class="entry_name 4806 " rowspan="3"> 4807 android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode 4808 </td> 4809 <td class="entry_type"> 4810 <span class="entry_type_name entry_type_name_enum">byte</span> 4811 4812 <span class="entry_type_visibility"> [public]</span> 4813 4814 4815 4816 4817 4818 <ul class="entry_type_enum"> 4819 <li> 4820 <span class="entry_type_enum_name">DISABLED (v3.5)</span> 4821 <span class="entry_type_enum_value">0</span> 4822 <span class="entry_type_enum_notes"><p>Extended scene mode is disabled.<wbr/></p></span> 4823 </li> 4824 <li> 4825 <span class="entry_type_enum_name">BOKEH_STILL_CAPTURE (v3.5)</span> 4826 <span class="entry_type_enum_notes"><p>High quality bokeh mode is enabled for all non-raw streams (including YUV,<wbr/> 4827JPEG,<wbr/> and IMPLEMENTATION_<wbr/>DEFINED) when capture intent is STILL_<wbr/>CAPTURE.<wbr/> Due to the 4828extra image processing,<wbr/> this mode may introduce additional stall to non-raw streams.<wbr/> 4829This mode should be used in high quality still capture use case.<wbr/></p></span> 4830 </li> 4831 <li> 4832 <span class="entry_type_enum_name">BOKEH_CONTINUOUS (v3.5)</span> 4833 <span class="entry_type_enum_notes"><p>Bokeh effect must not slow down capture rate relative to sensor raw output,<wbr/> 4834and the effect is applied to all processed streams no larger than the maximum 4835streaming dimension.<wbr/> This mode should be used if performance and power are a 4836priority,<wbr/> such as video recording.<wbr/></p></span> 4837 </li> 4838 <li> 4839 <span class="entry_type_enum_name">VENDOR_START (v3.5)</span> 4840 <span class="entry_type_enum_hidden">[hidden]</span> 4841 <span class="entry_type_enum_value">0x40</span> 4842 <span class="entry_type_enum_notes"><p>Vendor defined extended scene modes.<wbr/> These depend on vendor implementation.<wbr/></p></span> 4843 </li> 4844 </ul> 4845 4846 </td> <!-- entry_type --> 4847 4848 <td class="entry_description"> 4849 <p>Whether extended scene mode is enabled for a particular capture request.<wbr/></p> 4850 </td> 4851 4852 <td class="entry_units"> 4853 </td> 4854 4855 <td class="entry_range"> 4856 </td> 4857 4858 <td class="entry_hal_version"> 4859 <p>3.<wbr/>5</p> 4860 </td> 4861 4862 <td class="entry_tags"> 4863 </td> 4864 4865 </tr> 4866 <tr class="entries_header"> 4867 <th class="th_details" colspan="6">Details</th> 4868 </tr> 4869 <tr class="entry_cont"> 4870 <td class="entry_details" colspan="6"> 4871 <p>With bokeh mode,<wbr/> the camera device may blur out the parts of scene that are not in 4872focus,<wbr/> creating a bokeh (or shallow depth of field) effect for people or objects.<wbr/></p> 4873<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with STILL_<wbr/>CAPTURE capture intent,<wbr/> due to the extra 4874processing needed for high quality bokeh effect,<wbr/> the stall may be longer than when 4875capture intent is not STILL_<wbr/>CAPTURE.<wbr/></p> 4876<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with PREVIEW capture intent,<wbr/></p> 4877<ul> 4878<li>If the camera device has BURST_<wbr/>CAPTURE capability,<wbr/> the frame rate requirement of 4879BURST_<wbr/>CAPTURE must still be met.<wbr/></li> 4880<li>All streams not larger than the maximum streaming dimension for BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode 4881(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>) 4882will have preview bokeh effect applied.<wbr/></li> 4883</ul> 4884<p>When set to BOKEH_<wbr/>CONTINUOUS mode,<wbr/> configured streams dimension should not exceed this mode's 4885maximum streaming dimension in order to have bokeh effect applied.<wbr/> Bokeh effect may not 4886be available for streams larger than the maximum streaming dimension.<wbr/></p> 4887<p>Switching between different extended scene modes may involve reconfiguration of the camera 4888pipeline,<wbr/> resulting in long latency.<wbr/> The application should check this key against the 4889available session keys queried via 4890<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p> 4891<p>For a logical multi-camera,<wbr/> bokeh may be implemented by stereo vision from sub-cameras 4892with different field of view.<wbr/> As a result,<wbr/> when bokeh mode is enabled,<wbr/> the camera device 4893may 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 4894view may be smaller than when bokeh mode is off.<wbr/></p> 4895 </td> 4896 </tr> 4897 4898 4899 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4900 <!-- end of entry --> 4901 4902 4903 <tr class="entry" id="controls_android.control.zoomRatio"> 4904 <td class="entry_name 4905 " rowspan="5"> 4906 android.<wbr/>control.<wbr/>zoom<wbr/>Ratio 4907 </td> 4908 <td class="entry_type"> 4909 <span class="entry_type_name">float</span> 4910 4911 <span class="entry_type_visibility"> [public]</span> 4912 4913 4914 <span class="entry_type_hwlevel">[limited] </span> 4915 4916 4917 4918 4919 </td> <!-- entry_type --> 4920 4921 <td class="entry_description"> 4922 <p>The desired zoom ratio</p> 4923 </td> 4924 4925 <td class="entry_units"> 4926 </td> 4927 4928 <td class="entry_range"> 4929 <p><a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a></p> 4930 </td> 4931 4932 <td class="entry_hal_version"> 4933 <p>3.<wbr/>5</p> 4934 </td> 4935 4936 <td class="entry_tags"> 4937 </td> 4938 4939 </tr> 4940 <tr class="entries_header"> 4941 <th class="th_details" colspan="6">Details</th> 4942 </tr> 4943 <tr class="entry_cont"> 4944 <td class="entry_details" colspan="6"> 4945 <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 4946use this tag to specify the desired zoom level.<wbr/></p> 4947<p>By using this control,<wbr/> the application gains a simpler way to control zoom,<wbr/> which can 4948be a combination of optical and digital zoom.<wbr/> For example,<wbr/> a multi-camera system may 4949contain more than one lens with different focal lengths,<wbr/> and the user can use optical 4950zoom by switching between lenses.<wbr/> Using zoomRatio has benefits in the scenarios below:</p> 4951<ul> 4952<li>Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides 4953 better precision compared to an integer value of <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li> 4954<li>Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas 4955 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> doesn't.<wbr/></li> 4956</ul> 4957<p>To illustrate,<wbr/> here are several scenarios of different zoom ratios,<wbr/> crop regions,<wbr/> 4958and output streams,<wbr/> for a hypothetical camera device with an active array of size 4959<code>(2000,<wbr/>1500)</code>.<wbr/></p> 4960<ul> 4961<li>Camera Configuration:<ul> 4962<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li> 4963<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li> 4964<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li> 4965</ul> 4966</li> 4967<li>Case #1: 4:3 crop region with 2.<wbr/>0x zoom ratio<ul> 4968<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li> 4969<li>Crop region: <code>Rect(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code> (post zoom)</li> 4970</ul> 4971</li> 4972<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-43.png"/><ul> 4973<li><code>640x480</code> stream source area: <code>(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</code> (equal to crop region)</li> 4974<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (letterboxed)</li> 4975</ul> 4976</li> 4977<li>Case #2: 16:9 crop region with 2.<wbr/>0x zoom.<wbr/><ul> 4978<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li> 4979<li>Crop region: <code>Rect(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code></li> 4980<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-169.png"/></li> 4981<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (pillarboxed)</li> 4982<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (equal to crop region)</li> 4983</ul> 4984</li> 4985<li>Case #3: 1:1 crop region with 0.<wbr/>5x zoom out to ultrawide lens.<wbr/><ul> 4986<li>Zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)</li> 4987<li>Crop region: <code>Rect(250,<wbr/> 0,<wbr/> 1750,<wbr/> 1500)</code></li> 4988<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png"/></li> 4989<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (letterboxed)</li> 4990<li><code>1280x720</code> stream source area: <code>(250,<wbr/> 328,<wbr/> 1750,<wbr/> 1172)</code> (letterboxed)</li> 4991</ul> 4992</li> 4993</ul> 4994<p>As seen from the graphs above,<wbr/> the coordinate system of cropRegion now changes to the 4995effective after-zoom field-of-view,<wbr/> and is represented by the rectangle of (0,<wbr/> 0,<wbr/> 4996activeArrayWith,<wbr/> activeArrayHeight).<wbr/> The same applies to AE/<wbr/>AWB/<wbr/>AF regions,<wbr/> and faces.<wbr/> 4997This coordinate system change isn't applicable to RAW capture and its related 4998metadata such as intrinsicCalibration and lensShadingMap.<wbr/></p> 4999<p>Using the same hypothetical example above,<wbr/> and assuming output stream #1 (640x480) is 5000the viewfinder stream,<wbr/> the application can achieve 2.<wbr/>0x zoom in one of two ways:</p> 5001<ul> 5002<li>zoomRatio = 2.<wbr/>0,<wbr/> scaler.<wbr/>cropRegion = (0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</li> 5003<li>zoomRatio = 1.<wbr/>0 (default),<wbr/> scaler.<wbr/>cropRegion = (500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</li> 5004</ul> 5005<p>If the application intends to set aeRegions to be top-left quarter of the viewfinder 5006field-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 5007zoomRatio set to 2.<wbr/>0.<wbr/> Alternatively,<wbr/> the application can set aeRegions to the equivalent 5008region of (500,<wbr/> 375,<wbr/> 1000,<wbr/> 750) for zoomRatio of 1.<wbr/>0.<wbr/> If the application doesn't 5009explicitly 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> 5010<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> 5011must only be used for letterboxing or pillarboxing of the sensor active array,<wbr/> and no 5012FREEFORM 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 5013<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 5014windowboxing,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be 5015the active array.<wbr/></p> 5016<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 5017value != 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 5018effective zoom ratio achieved by the camera device,<wbr/> and the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> 5019adjusts for additional crops that are not zoom related.<wbr/> Otherwise,<wbr/> if the application 5020sets <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 5021<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> 5022<p>When the application requests a physical stream for a logical multi-camera,<wbr/> the 5023<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 5024the <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 5025physical camera device.<wbr/></p> 5026 </td> 5027 </tr> 5028 5029 <tr class="entries_header"> 5030 <th class="th_details" colspan="6">HAL Implementation Details</th> 5031 </tr> 5032 <tr class="entry_cont"> 5033 <td class="entry_details" colspan="6"> 5034 <p>For all capture request templates,<wbr/> this field must be set to 1.<wbr/>0 in order to have 5035consistent field of views between different modes.<wbr/></p> 5036 </td> 5037 </tr> 5038 5039 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5040 <!-- end of entry --> 5041 5042 5043 <tr class="entry" id="controls_android.control.afRegionsSet"> 5044 <td class="entry_name 5045 " rowspan="3"> 5046 android.<wbr/>control.<wbr/>af<wbr/>Regions<wbr/>Set 5047 </td> 5048 <td class="entry_type"> 5049 <span class="entry_type_name entry_type_name_enum">byte</span> 5050 5051 <span class="entry_type_visibility"> [fwk_only as boolean]</span> 5052 5053 5054 5055 5056 5057 <ul class="entry_type_enum"> 5058 <li> 5059 <span class="entry_type_enum_name">FALSE (v3.2)</span> 5060 <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> 5061 </li> 5062 <li> 5063 <span class="entry_type_enum_name">TRUE (v3.2)</span> 5064 <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> 5065 </li> 5066 </ul> 5067 5068 </td> <!-- entry_type --> 5069 5070 <td class="entry_description"> 5071 <p>Framework-only private key which informs camera fwk that the AF regions has been set 5072by 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 5073set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p> 5074 </td> 5075 5076 <td class="entry_units"> 5077 </td> 5078 5079 <td class="entry_range"> 5080 </td> 5081 5082 <td class="entry_hal_version"> 5083 <p>3.<wbr/>2</p> 5084 </td> 5085 5086 <td class="entry_tags"> 5087 </td> 5088 5089 </tr> 5090 <tr class="entries_header"> 5091 <th class="th_details" colspan="6">Details</th> 5092 </tr> 5093 <tr class="entry_cont"> 5094 <td class="entry_details" colspan="6"> 5095 <p>This must be set to TRUE by the camera2 java fwk when the camera client sets 5096<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 5097 </td> 5098 </tr> 5099 5100 5101 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5102 <!-- end of entry --> 5103 5104 5105 <tr class="entry" id="controls_android.control.aeRegionsSet"> 5106 <td class="entry_name 5107 " rowspan="3"> 5108 android.<wbr/>control.<wbr/>ae<wbr/>Regions<wbr/>Set 5109 </td> 5110 <td class="entry_type"> 5111 <span class="entry_type_name entry_type_name_enum">byte</span> 5112 5113 <span class="entry_type_visibility"> [fwk_only as boolean]</span> 5114 5115 5116 5117 5118 5119 <ul class="entry_type_enum"> 5120 <li> 5121 <span class="entry_type_enum_name">FALSE (v3.2)</span> 5122 <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> 5123 </li> 5124 <li> 5125 <span class="entry_type_enum_name">TRUE (v3.2)</span> 5126 <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> 5127 </li> 5128 </ul> 5129 5130 </td> <!-- entry_type --> 5131 5132 <td class="entry_description"> 5133 <p>Framework-only private key which informs camera fwk that the AE regions has been set 5134by 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 5135set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p> 5136 </td> 5137 5138 <td class="entry_units"> 5139 </td> 5140 5141 <td class="entry_range"> 5142 </td> 5143 5144 <td class="entry_hal_version"> 5145 <p>3.<wbr/>2</p> 5146 </td> 5147 5148 <td class="entry_tags"> 5149 </td> 5150 5151 </tr> 5152 <tr class="entries_header"> 5153 <th class="th_details" colspan="6">Details</th> 5154 </tr> 5155 <tr class="entry_cont"> 5156 <td class="entry_details" colspan="6"> 5157 <p>This must be set to TRUE by the camera2 java fwk when the camera client sets 5158<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 5159 </td> 5160 </tr> 5161 5162 5163 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5164 <!-- end of entry --> 5165 5166 5167 <tr class="entry" id="controls_android.control.awbRegionsSet"> 5168 <td class="entry_name 5169 " rowspan="3"> 5170 android.<wbr/>control.<wbr/>awb<wbr/>Regions<wbr/>Set 5171 </td> 5172 <td class="entry_type"> 5173 <span class="entry_type_name entry_type_name_enum">byte</span> 5174 5175 <span class="entry_type_visibility"> [fwk_only as boolean]</span> 5176 5177 5178 5179 5180 5181 <ul class="entry_type_enum"> 5182 <li> 5183 <span class="entry_type_enum_name">FALSE (v3.2)</span> 5184 <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> 5185 </li> 5186 <li> 5187 <span class="entry_type_enum_name">TRUE (v3.2)</span> 5188 <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> 5189 </li> 5190 </ul> 5191 5192 </td> <!-- entry_type --> 5193 5194 <td class="entry_description"> 5195 <p>Framework-only private key which informs camera fwk that the AF regions has been set 5196by 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 5197set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p> 5198 </td> 5199 5200 <td class="entry_units"> 5201 </td> 5202 5203 <td class="entry_range"> 5204 </td> 5205 5206 <td class="entry_hal_version"> 5207 <p>3.<wbr/>2</p> 5208 </td> 5209 5210 <td class="entry_tags"> 5211 </td> 5212 5213 </tr> 5214 <tr class="entries_header"> 5215 <th class="th_details" colspan="6">Details</th> 5216 </tr> 5217 <tr class="entry_cont"> 5218 <td class="entry_details" colspan="6"> 5219 <p>This must be set to TRUE by the camera2 java fwk when the camera client sets 5220<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 5221 </td> 5222 </tr> 5223 5224 5225 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5226 <!-- end of entry --> 5227 5228 5229 5230 <!-- end of kind --> 5231 </tbody> 5232 <tr><td colspan="7" class="kind">static</td></tr> 5233 5234 <thead class="entries_header"> 5235 <tr> 5236 <th class="th_name">Property Name</th> 5237 <th class="th_type">Type</th> 5238 <th class="th_description">Description</th> 5239 <th class="th_units">Units</th> 5240 <th class="th_range">Range</th> 5241 <th class="th_hal_version">Initial HIDL HAL version</th> 5242 <th class="th_tags">Tags</th> 5243 </tr> 5244 </thead> 5245 5246 <tbody> 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 5258 <td class="entry_name 5259 " rowspan="3"> 5260 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 5261 </td> 5262 <td class="entry_type"> 5263 <span class="entry_type_name">byte</span> 5264 <span class="entry_type_container">x</span> 5265 5266 <span class="entry_type_array"> 5267 n 5268 </span> 5269 <span class="entry_type_visibility"> [public as enumList]</span> 5270 5271 5272 <span class="entry_type_hwlevel">[legacy] </span> 5273 5274 5275 <div class="entry_type_notes">list of enums</div> 5276 5277 5278 </td> <!-- entry_type --> 5279 5280 <td class="entry_description"> 5281 <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 5282supported by this camera device.<wbr/></p> 5283 </td> 5284 5285 <td class="entry_units"> 5286 </td> 5287 5288 <td class="entry_range"> 5289 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p> 5290 </td> 5291 5292 <td class="entry_hal_version"> 5293 <p>3.<wbr/>2</p> 5294 </td> 5295 5296 <td class="entry_tags"> 5297 <ul class="entry_tags"> 5298 <li><a href="#tag_BC">BC</a></li> 5299 </ul> 5300 </td> 5301 5302 </tr> 5303 <tr class="entries_header"> 5304 <th class="th_details" colspan="6">Details</th> 5305 </tr> 5306 <tr class="entry_cont"> 5307 <td class="entry_details" colspan="6"> 5308 <p>Not all of the auto-exposure anti-banding modes may be 5309supported by a given camera device.<wbr/> This field lists the 5310valid anti-banding modes that the application may request 5311for this camera device with the 5312<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p> 5313 </td> 5314 </tr> 5315 5316 5317 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5318 <!-- end of entry --> 5319 5320 5321 <tr class="entry" id="static_android.control.aeAvailableModes"> 5322 <td class="entry_name 5323 " rowspan="3"> 5324 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 5325 </td> 5326 <td class="entry_type"> 5327 <span class="entry_type_name">byte</span> 5328 <span class="entry_type_container">x</span> 5329 5330 <span class="entry_type_array"> 5331 n 5332 </span> 5333 <span class="entry_type_visibility"> [public as enumList]</span> 5334 5335 5336 <span class="entry_type_hwlevel">[legacy] </span> 5337 5338 5339 <div class="entry_type_notes">list of enums</div> 5340 5341 5342 </td> <!-- entry_type --> 5343 5344 <td class="entry_description"> 5345 <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 5346device.<wbr/></p> 5347 </td> 5348 5349 <td class="entry_units"> 5350 </td> 5351 5352 <td class="entry_range"> 5353 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p> 5354 </td> 5355 5356 <td class="entry_hal_version"> 5357 <p>3.<wbr/>2</p> 5358 </td> 5359 5360 <td class="entry_tags"> 5361 <ul class="entry_tags"> 5362 <li><a href="#tag_BC">BC</a></li> 5363 </ul> 5364 </td> 5365 5366 </tr> 5367 <tr class="entries_header"> 5368 <th class="th_details" colspan="6">Details</th> 5369 </tr> 5370 <tr class="entry_cont"> 5371 <td class="entry_details" colspan="6"> 5372 <p>Not all the auto-exposure modes may be supported by a 5373given camera device,<wbr/> especially if no flash unit is 5374available.<wbr/> This entry lists the valid modes for 5375<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 5376<p>All camera devices support ON,<wbr/> and all camera devices with flash 5377units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 5378<p>FULL mode camera devices always support OFF mode,<wbr/> 5379which enables application control of camera exposure time,<wbr/> 5380sensitivity,<wbr/> and frame duration.<wbr/></p> 5381<p>LEGACY mode camera devices never support OFF mode.<wbr/> 5382LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR 5383capability.<wbr/></p> 5384 </td> 5385 </tr> 5386 5387 5388 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5389 <!-- end of entry --> 5390 5391 5392 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 5393 <td class="entry_name 5394 " rowspan="3"> 5395 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 5396 </td> 5397 <td class="entry_type"> 5398 <span class="entry_type_name">int32</span> 5399 <span class="entry_type_container">x</span> 5400 5401 <span class="entry_type_array"> 5402 2 x n 5403 </span> 5404 <span class="entry_type_visibility"> [public as rangeInt]</span> 5405 5406 5407 <span class="entry_type_hwlevel">[legacy] </span> 5408 5409 5410 <div class="entry_type_notes">list of pairs of frame rates</div> 5411 5412 5413 </td> <!-- entry_type --> 5414 5415 <td class="entry_description"> 5416 <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 5417this camera device.<wbr/></p> 5418 </td> 5419 5420 <td class="entry_units"> 5421 Frames per second (FPS) 5422 </td> 5423 5424 <td class="entry_range"> 5425 </td> 5426 5427 <td class="entry_hal_version"> 5428 <p>3.<wbr/>2</p> 5429 </td> 5430 5431 <td class="entry_tags"> 5432 <ul class="entry_tags"> 5433 <li><a href="#tag_BC">BC</a></li> 5434 </ul> 5435 </td> 5436 5437 </tr> 5438 <tr class="entries_header"> 5439 <th class="th_details" colspan="6">Details</th> 5440 </tr> 5441 <tr class="entry_cont"> 5442 <td class="entry_details" colspan="6"> 5443 <p>For devices at the LEGACY level or above:</p> 5444<ul> 5445<li> 5446<p>For constant-framerate recording,<wbr/> for each normal 5447<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a 5448<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 5449<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in 5450the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/> 5451<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is 5452supported by the device and has 5453<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will 5454always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p> 5455</li> 5456<li> 5457<p>Also,<wbr/> a camera device must either not support any 5458<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> 5459or support at least one 5460normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 5461<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p> 5462</li> 5463</ul> 5464<p>For devices at the LIMITED level or above:</p> 5465<ul> 5466<li>For devices that advertise NIR color filter arrangement in 5467<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 5468(<code>max</code>,<wbr/> <code>max</code>) where <code>max</code> = the maximum output frame rate of the maximum YUV_<wbr/>420_<wbr/>888 5469output size.<wbr/></li> 5470<li>For devices advertising any color filter arrangement other than NIR,<wbr/> or devices not 5471advertising color filter arrangement,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) and 5472(<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the 5473maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li> 5474</ul> 5475 </td> 5476 </tr> 5477 5478 5479 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5480 <!-- end of entry --> 5481 5482 5483 <tr class="entry" id="static_android.control.aeCompensationRange"> 5484 <td class="entry_name 5485 " rowspan="1"> 5486 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 5487 </td> 5488 <td class="entry_type"> 5489 <span class="entry_type_name">int32</span> 5490 <span class="entry_type_container">x</span> 5491 5492 <span class="entry_type_array"> 5493 2 5494 </span> 5495 <span class="entry_type_visibility"> [public as rangeInt]</span> 5496 5497 5498 <span class="entry_type_hwlevel">[legacy] </span> 5499 5500 5501 5502 5503 </td> <!-- entry_type --> 5504 5505 <td class="entry_description"> 5506 <p>Maximum and minimum exposure compensation values for 5507<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/> 5508that are supported by this camera device.<wbr/></p> 5509 </td> 5510 5511 <td class="entry_units"> 5512 </td> 5513 5514 <td class="entry_range"> 5515 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> 5516<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure 5517compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> 5518<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> 5519<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> 5520<p>LEGACY devices may support a smaller range than this.<wbr/></p> 5521 </td> 5522 5523 <td class="entry_hal_version"> 5524 <p>3.<wbr/>2</p> 5525 </td> 5526 5527 <td class="entry_tags"> 5528 <ul class="entry_tags"> 5529 <li><a href="#tag_BC">BC</a></li> 5530 </ul> 5531 </td> 5532 5533 </tr> 5534 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="static_android.control.aeCompensationStep"> 5541 <td class="entry_name 5542 " rowspan="5"> 5543 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 5544 </td> 5545 <td class="entry_type"> 5546 <span class="entry_type_name">rational</span> 5547 5548 <span class="entry_type_visibility"> [public]</span> 5549 5550 5551 <span class="entry_type_hwlevel">[legacy] </span> 5552 5553 5554 5555 5556 </td> <!-- entry_type --> 5557 5558 <td class="entry_description"> 5559 <p>Smallest step by which the exposure compensation 5560can be changed.<wbr/></p> 5561 </td> 5562 5563 <td class="entry_units"> 5564 Exposure Value (EV) 5565 </td> 5566 5567 <td class="entry_range"> 5568 </td> 5569 5570 <td class="entry_hal_version"> 5571 <p>3.<wbr/>2</p> 5572 </td> 5573 5574 <td class="entry_tags"> 5575 <ul class="entry_tags"> 5576 <li><a href="#tag_BC">BC</a></li> 5577 </ul> 5578 </td> 5579 5580 </tr> 5581 <tr class="entries_header"> 5582 <th class="th_details" colspan="6">Details</th> 5583 </tr> 5584 <tr class="entry_cont"> 5585 <td class="entry_details" colspan="6"> 5586 <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 5587a 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 5588that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> 5589<p>One unit of EV compensation changes the brightness of the captured image by a factor 5590of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p> 5591 </td> 5592 </tr> 5593 5594 <tr class="entries_header"> 5595 <th class="th_details" colspan="6">HAL Implementation Details</th> 5596 </tr> 5597 <tr class="entry_cont"> 5598 <td class="entry_details" colspan="6"> 5599 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p> 5600 </td> 5601 </tr> 5602 5603 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5604 <!-- end of entry --> 5605 5606 5607 <tr class="entry" id="static_android.control.afAvailableModes"> 5608 <td class="entry_name 5609 " rowspan="3"> 5610 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 5611 </td> 5612 <td class="entry_type"> 5613 <span class="entry_type_name">byte</span> 5614 <span class="entry_type_container">x</span> 5615 5616 <span class="entry_type_array"> 5617 n 5618 </span> 5619 <span class="entry_type_visibility"> [public as enumList]</span> 5620 5621 5622 <span class="entry_type_hwlevel">[legacy] </span> 5623 5624 5625 <div class="entry_type_notes">List of enums</div> 5626 5627 5628 </td> <!-- entry_type --> 5629 5630 <td class="entry_description"> 5631 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are 5632supported by this camera device.<wbr/></p> 5633 </td> 5634 5635 <td class="entry_units"> 5636 </td> 5637 5638 <td class="entry_range"> 5639 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p> 5640 </td> 5641 5642 <td class="entry_hal_version"> 5643 <p>3.<wbr/>2</p> 5644 </td> 5645 5646 <td class="entry_tags"> 5647 <ul class="entry_tags"> 5648 <li><a href="#tag_BC">BC</a></li> 5649 </ul> 5650 </td> 5651 5652 </tr> 5653 <tr class="entries_header"> 5654 <th class="th_details" colspan="6">Details</th> 5655 </tr> 5656 <tr class="entry_cont"> 5657 <td class="entry_details" colspan="6"> 5658 <p>Not all the auto-focus modes may be supported by a 5659given camera device.<wbr/> This entry lists the valid modes for 5660<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 5661<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all 5662camera devices with adjustable focuser units 5663(<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> 5664<p>LEGACY devices will support OFF mode only if they support 5665focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to 5666<code>0.<wbr/>0f</code>).<wbr/></p> 5667 </td> 5668 </tr> 5669 5670 5671 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5672 <!-- end of entry --> 5673 5674 5675 <tr class="entry" id="static_android.control.availableEffects"> 5676 <td class="entry_name 5677 " rowspan="3"> 5678 android.<wbr/>control.<wbr/>available<wbr/>Effects 5679 </td> 5680 <td class="entry_type"> 5681 <span class="entry_type_name">byte</span> 5682 <span class="entry_type_container">x</span> 5683 5684 <span class="entry_type_array"> 5685 n 5686 </span> 5687 <span class="entry_type_visibility"> [public as enumList]</span> 5688 5689 5690 <span class="entry_type_hwlevel">[legacy] </span> 5691 5692 5693 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 5694 5695 5696 </td> <!-- entry_type --> 5697 5698 <td class="entry_description"> 5699 <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 5700device.<wbr/></p> 5701 </td> 5702 5703 <td class="entry_units"> 5704 </td> 5705 5706 <td class="entry_range"> 5707 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p> 5708 </td> 5709 5710 <td class="entry_hal_version"> 5711 <p>3.<wbr/>2</p> 5712 </td> 5713 5714 <td class="entry_tags"> 5715 <ul class="entry_tags"> 5716 <li><a href="#tag_BC">BC</a></li> 5717 </ul> 5718 </td> 5719 5720 </tr> 5721 <tr class="entries_header"> 5722 <th class="th_details" colspan="6">Details</th> 5723 </tr> 5724 <tr class="entry_cont"> 5725 <td class="entry_details" colspan="6"> 5726 <p>This list contains the color effect modes that can be applied to 5727images produced by the camera device.<wbr/> 5728Implementations are not expected to be consistent across all devices.<wbr/> 5729If no color effect modes are available for a device,<wbr/> this will only list 5730OFF.<wbr/></p> 5731<p>A color effect will only be applied if 5732<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> 5733<p>This control has no effect on the operation of other control routines such 5734as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> 5735 </td> 5736 </tr> 5737 5738 5739 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5740 <!-- end of entry --> 5741 5742 5743 <tr class="entry" id="static_android.control.availableSceneModes"> 5744 <td class="entry_name 5745 " rowspan="3"> 5746 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 5747 </td> 5748 <td class="entry_type"> 5749 <span class="entry_type_name">byte</span> 5750 <span class="entry_type_container">x</span> 5751 5752 <span class="entry_type_array"> 5753 n 5754 </span> 5755 <span class="entry_type_visibility"> [public as enumList]</span> 5756 5757 5758 <span class="entry_type_hwlevel">[legacy] </span> 5759 5760 5761 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 5762 5763 5764 </td> <!-- entry_type --> 5765 5766 <td class="entry_description"> 5767 <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 5768device.<wbr/></p> 5769 </td> 5770 5771 <td class="entry_units"> 5772 </td> 5773 5774 <td class="entry_range"> 5775 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p> 5776 </td> 5777 5778 <td class="entry_hal_version"> 5779 <p>3.<wbr/>2</p> 5780 </td> 5781 5782 <td class="entry_tags"> 5783 <ul class="entry_tags"> 5784 <li><a href="#tag_BC">BC</a></li> 5785 </ul> 5786 </td> 5787 5788 </tr> 5789 <tr class="entries_header"> 5790 <th class="th_details" colspan="6">Details</th> 5791 </tr> 5792 <tr class="entry_cont"> 5793 <td class="entry_details" colspan="6"> 5794 <p>This list contains scene modes that can be set for the camera device.<wbr/> 5795Only scene modes that have been fully implemented for the 5796camera device may be included here.<wbr/> Implementations are not expected 5797to be consistent across all devices.<wbr/></p> 5798<p>If no scene modes are supported by the camera device,<wbr/> this 5799will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> 5800<p>FACE_<wbr/>PRIORITY is always listed if face detection is 5801supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> > 58020</code>).<wbr/></p> 5803 </td> 5804 </tr> 5805 5806 5807 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5808 <!-- end of entry --> 5809 5810 5811 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 5812 <td class="entry_name 5813 " rowspan="3"> 5814 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 5815 </td> 5816 <td class="entry_type"> 5817 <span class="entry_type_name">byte</span> 5818 <span class="entry_type_container">x</span> 5819 5820 <span class="entry_type_array"> 5821 n 5822 </span> 5823 <span class="entry_type_visibility"> [public as enumList]</span> 5824 5825 5826 <span class="entry_type_hwlevel">[legacy] </span> 5827 5828 5829 <div class="entry_type_notes">List of enums.<wbr/></div> 5830 5831 5832 </td> <!-- entry_type --> 5833 5834 <td class="entry_description"> 5835 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> 5836that are supported by this camera device.<wbr/></p> 5837 </td> 5838 5839 <td class="entry_units"> 5840 </td> 5841 5842 <td class="entry_range"> 5843 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p> 5844 </td> 5845 5846 <td class="entry_hal_version"> 5847 <p>3.<wbr/>2</p> 5848 </td> 5849 5850 <td class="entry_tags"> 5851 <ul class="entry_tags"> 5852 <li><a href="#tag_BC">BC</a></li> 5853 </ul> 5854 </td> 5855 5856 </tr> 5857 <tr class="entries_header"> 5858 <th class="th_details" colspan="6">Details</th> 5859 </tr> 5860 <tr class="entry_cont"> 5861 <td class="entry_details" colspan="6"> 5862 <p>OFF will always be listed.<wbr/></p> 5863 </td> 5864 </tr> 5865 5866 5867 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5868 <!-- end of entry --> 5869 5870 5871 <tr class="entry" id="static_android.control.awbAvailableModes"> 5872 <td class="entry_name 5873 " rowspan="3"> 5874 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 5875 </td> 5876 <td class="entry_type"> 5877 <span class="entry_type_name">byte</span> 5878 <span class="entry_type_container">x</span> 5879 5880 <span class="entry_type_array"> 5881 n 5882 </span> 5883 <span class="entry_type_visibility"> [public as enumList]</span> 5884 5885 5886 <span class="entry_type_hwlevel">[legacy] </span> 5887 5888 5889 <div class="entry_type_notes">List of enums</div> 5890 5891 5892 </td> <!-- entry_type --> 5893 5894 <td class="entry_description"> 5895 <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 5896camera device.<wbr/></p> 5897 </td> 5898 5899 <td class="entry_units"> 5900 </td> 5901 5902 <td class="entry_range"> 5903 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p> 5904 </td> 5905 5906 <td class="entry_hal_version"> 5907 <p>3.<wbr/>2</p> 5908 </td> 5909 5910 <td class="entry_tags"> 5911 <ul class="entry_tags"> 5912 <li><a href="#tag_BC">BC</a></li> 5913 </ul> 5914 </td> 5915 5916 </tr> 5917 <tr class="entries_header"> 5918 <th class="th_details" colspan="6">Details</th> 5919 </tr> 5920 <tr class="entry_cont"> 5921 <td class="entry_details" colspan="6"> 5922 <p>Not all the auto-white-balance modes may be supported by a 5923given camera device.<wbr/> This entry lists the valid modes for 5924<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 5925<p>All camera devices will support ON mode.<wbr/></p> 5926<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF 5927mode,<wbr/> which enables application control of white balance,<wbr/> by using 5928<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 5929mode camera devices.<wbr/></p> 5930 </td> 5931 </tr> 5932 5933 5934 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5935 <!-- end of entry --> 5936 5937 5938 <tr class="entry" id="static_android.control.maxRegions"> 5939 <td class="entry_name 5940 " rowspan="1"> 5941 android.<wbr/>control.<wbr/>max<wbr/>Regions 5942 </td> 5943 <td class="entry_type"> 5944 <span class="entry_type_name">int32</span> 5945 <span class="entry_type_container">x</span> 5946 5947 <span class="entry_type_array"> 5948 3 5949 </span> 5950 <span class="entry_type_visibility"> [ndk_public]</span> 5951 5952 5953 <span class="entry_type_hwlevel">[legacy] </span> 5954 5955 5956 5957 5958 </td> <!-- entry_type --> 5959 5960 <td class="entry_description"> 5961 <p>List of the maximum number of regions that can be used for metering in 5962auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 5963this corresponds to the maximum number of elements in 5964<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/> 5965and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 5966 </td> 5967 5968 <td class="entry_units"> 5969 </td> 5970 5971 <td class="entry_range"> 5972 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 5973this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 5974<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 5975 </td> 5976 5977 <td class="entry_hal_version"> 5978 <p>3.<wbr/>2</p> 5979 </td> 5980 5981 <td class="entry_tags"> 5982 <ul class="entry_tags"> 5983 <li><a href="#tag_BC">BC</a></li> 5984 </ul> 5985 </td> 5986 5987 </tr> 5988 5989 5990 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5991 <!-- end of entry --> 5992 5993 5994 <tr class="entry" id="static_android.control.maxRegionsAe"> 5995 <td class="entry_name 5996 " rowspan="5"> 5997 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae 5998 </td> 5999 <td class="entry_type"> 6000 <span class="entry_type_name">int32</span> 6001 6002 <span class="entry_type_visibility"> [java_public]</span> 6003 6004 <span class="entry_type_synthetic">[synthetic] </span> 6005 6006 <span class="entry_type_hwlevel">[legacy] </span> 6007 6008 6009 6010 6011 </td> <!-- entry_type --> 6012 6013 <td class="entry_description"> 6014 <p>The maximum number of metering regions that can be used by the auto-exposure (AE) 6015routine.<wbr/></p> 6016 </td> 6017 6018 <td class="entry_units"> 6019 </td> 6020 6021 <td class="entry_range"> 6022 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 6023value will be >= 1.<wbr/></p> 6024 </td> 6025 6026 <td class="entry_hal_version"> 6027 <p>3.<wbr/>2</p> 6028 </td> 6029 6030 <td class="entry_tags"> 6031 </td> 6032 6033 </tr> 6034 <tr class="entries_header"> 6035 <th class="th_details" colspan="6">Details</th> 6036 </tr> 6037 <tr class="entry_cont"> 6038 <td class="entry_details" colspan="6"> 6039 <p>This corresponds to the maximum allowed number of elements in 6040<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 6041 </td> 6042 </tr> 6043 6044 <tr class="entries_header"> 6045 <th class="th_details" colspan="6">HAL Implementation Details</th> 6046 </tr> 6047 <tr class="entry_cont"> 6048 <td class="entry_details" colspan="6"> 6049 <p>This entry is private to the framework.<wbr/> Fill in 6050maxRegions to have this entry be automatically populated.<wbr/></p> 6051 </td> 6052 </tr> 6053 6054 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6055 <!-- end of entry --> 6056 6057 6058 <tr class="entry" id="static_android.control.maxRegionsAwb"> 6059 <td class="entry_name 6060 " rowspan="5"> 6061 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb 6062 </td> 6063 <td class="entry_type"> 6064 <span class="entry_type_name">int32</span> 6065 6066 <span class="entry_type_visibility"> [java_public]</span> 6067 6068 <span class="entry_type_synthetic">[synthetic] </span> 6069 6070 <span class="entry_type_hwlevel">[legacy] </span> 6071 6072 6073 6074 6075 </td> <!-- entry_type --> 6076 6077 <td class="entry_description"> 6078 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) 6079routine.<wbr/></p> 6080 </td> 6081 6082 <td class="entry_units"> 6083 </td> 6084 6085 <td class="entry_range"> 6086 <p>Value will be >= 0.<wbr/></p> 6087 </td> 6088 6089 <td class="entry_hal_version"> 6090 <p>3.<wbr/>2</p> 6091 </td> 6092 6093 <td class="entry_tags"> 6094 </td> 6095 6096 </tr> 6097 <tr class="entries_header"> 6098 <th class="th_details" colspan="6">Details</th> 6099 </tr> 6100 <tr class="entry_cont"> 6101 <td class="entry_details" colspan="6"> 6102 <p>This corresponds to the maximum allowed number of elements in 6103<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 6104 </td> 6105 </tr> 6106 6107 <tr class="entries_header"> 6108 <th class="th_details" colspan="6">HAL Implementation Details</th> 6109 </tr> 6110 <tr class="entry_cont"> 6111 <td class="entry_details" colspan="6"> 6112 <p>This entry is private to the framework.<wbr/> Fill in 6113maxRegions to have this entry be automatically populated.<wbr/></p> 6114 </td> 6115 </tr> 6116 6117 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6118 <!-- end of entry --> 6119 6120 6121 <tr class="entry" id="static_android.control.maxRegionsAf"> 6122 <td class="entry_name 6123 " rowspan="5"> 6124 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af 6125 </td> 6126 <td class="entry_type"> 6127 <span class="entry_type_name">int32</span> 6128 6129 <span class="entry_type_visibility"> [java_public]</span> 6130 6131 <span class="entry_type_synthetic">[synthetic] </span> 6132 6133 <span class="entry_type_hwlevel">[legacy] </span> 6134 6135 6136 6137 6138 </td> <!-- entry_type --> 6139 6140 <td class="entry_description"> 6141 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> 6142 </td> 6143 6144 <td class="entry_units"> 6145 </td> 6146 6147 <td class="entry_range"> 6148 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 6149value will be >= 1.<wbr/></p> 6150 </td> 6151 6152 <td class="entry_hal_version"> 6153 <p>3.<wbr/>2</p> 6154 </td> 6155 6156 <td class="entry_tags"> 6157 </td> 6158 6159 </tr> 6160 <tr class="entries_header"> 6161 <th class="th_details" colspan="6">Details</th> 6162 </tr> 6163 <tr class="entry_cont"> 6164 <td class="entry_details" colspan="6"> 6165 <p>This corresponds to the maximum allowed number of elements in 6166<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 6167 </td> 6168 </tr> 6169 6170 <tr class="entries_header"> 6171 <th class="th_details" colspan="6">HAL Implementation Details</th> 6172 </tr> 6173 <tr class="entry_cont"> 6174 <td class="entry_details" colspan="6"> 6175 <p>This entry is private to the framework.<wbr/> Fill in 6176maxRegions to have this entry be automatically populated.<wbr/></p> 6177 </td> 6178 </tr> 6179 6180 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6181 <!-- end of entry --> 6182 6183 6184 <tr class="entry" id="static_android.control.sceneModeOverrides"> 6185 <td class="entry_name 6186 " rowspan="5"> 6187 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 6188 </td> 6189 <td class="entry_type"> 6190 <span class="entry_type_name">byte</span> 6191 <span class="entry_type_container">x</span> 6192 6193 <span class="entry_type_array"> 6194 3 x length(availableSceneModes) 6195 </span> 6196 <span class="entry_type_visibility"> [system]</span> 6197 6198 6199 <span class="entry_type_hwlevel">[limited] </span> 6200 6201 6202 6203 6204 </td> <!-- entry_type --> 6205 6206 <td class="entry_description"> 6207 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 6208settings to use with each available scene mode.<wbr/></p> 6209 </td> 6210 6211 <td class="entry_units"> 6212 </td> 6213 6214 <td class="entry_range"> 6215 <p>For each available scene mode,<wbr/> the list must contain three 6216entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 6217<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 6218by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 6219where aeMode has the lowest index position.<wbr/></p> 6220 </td> 6221 6222 <td class="entry_hal_version"> 6223 <p>3.<wbr/>2</p> 6224 </td> 6225 6226 <td class="entry_tags"> 6227 <ul class="entry_tags"> 6228 <li><a href="#tag_BC">BC</a></li> 6229 </ul> 6230 </td> 6231 6232 </tr> 6233 <tr class="entries_header"> 6234 <th class="th_details" colspan="6">Details</th> 6235 </tr> 6236 <tr class="entry_cont"> 6237 <td class="entry_details" colspan="6"> 6238 <p>When a scene mode is enabled,<wbr/> the camera device is expected 6239to 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/> 6240and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 6241that scene mode.<wbr/></p> 6242<p>The order of this list matches that of availableSceneModes,<wbr/> 6243with 3 entries for each mode.<wbr/> The overrides listed 6244for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/> 6245since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 6246<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 6247used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 6248is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and 6249FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p> 6250<p>For example,<wbr/> if availableSceneModes contains 6251<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 6252expects sceneModeOverrides to have 9 entries formatted like: 6253<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 6254ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 6255 </td> 6256 </tr> 6257 6258 <tr class="entries_header"> 6259 <th class="th_details" colspan="6">HAL Implementation Details</th> 6260 </tr> 6261 <tr class="entry_cont"> 6262 <td class="entry_details" colspan="6"> 6263 <p>To maintain backward compatibility,<wbr/> this list will be made available 6264in the static metadata of the camera service.<wbr/> The camera service will 6265use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 6266<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 6267mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p> 6268 </td> 6269 </tr> 6270 6271 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6272 <!-- end of entry --> 6273 6274 6275 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> 6276 <td class="entry_name 6277 " rowspan="5"> 6278 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations 6279 </td> 6280 <td class="entry_type"> 6281 <span class="entry_type_name">int32</span> 6282 <span class="entry_type_container">x</span> 6283 6284 <span class="entry_type_array"> 6285 5 x n 6286 </span> 6287 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 6288 6289 6290 <span class="entry_type_hwlevel">[limited] </span> 6291 6292 6293 6294 6295 </td> <!-- entry_type --> 6296 6297 <td class="entry_description"> 6298 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations 6299supported 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> 6300 </td> 6301 6302 <td class="entry_units"> 6303 </td> 6304 6305 <td class="entry_range"> 6306 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> 6307 </td> 6308 6309 <td class="entry_hal_version"> 6310 <p>3.<wbr/>2</p> 6311 </td> 6312 6313 <td class="entry_tags"> 6314 <ul class="entry_tags"> 6315 <li><a href="#tag_V1">V1</a></li> 6316 </ul> 6317 </td> 6318 6319 </tr> 6320 <tr class="entries_header"> 6321 <th class="th_details" colspan="6">Details</th> 6322 </tr> 6323 <tr class="entry_cont"> 6324 <td class="entry_details" colspan="6"> 6325 <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/> 6326this metadata will list the supported high speed video size,<wbr/> fps range and max batch size 6327configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes 6328reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> 6329for processed non-stalling formats.<wbr/></p> 6330<p>For the high speed video use case,<wbr/> the application must 6331select the video size and fps range from this metadata to configure the recording and 6332preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends 6333to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to 6334configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata 6335by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the 6336recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application 6337must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams 6338must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p> 6339<p>The min and max fps will be multiple times of 30fps.<wbr/></p> 6340<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/> 6341to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate 6342multiple frames together and send to camera device for processing where the request 6343controls are same for all the frames in this batch.<wbr/> Max batch size indicates 6344the max possible number of frames the camera device will group together for this high 6345speed stream configuration.<wbr/> This max batch size will be used to generate a high speed 6346recording request list by 6347<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/> 6348The max batch size for each configuration will satisfy below conditions:</p> 6349<ul> 6350<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/> 6351if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li> 6352<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but 6353the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch 6354size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li> 6355<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li> 6356</ul> 6357<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/> 6358in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p> 6359<p>This fps ranges in this configuration list can only be used to create requests 6360that are submitted to a high speed camera capture session created by 6361<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 6362The fps ranges reported in this metadata must not be used to setup capture requests for 6363normal capture session,<wbr/> or it will cause request error.<wbr/></p> 6364 </td> 6365 </tr> 6366 6367 <tr class="entries_header"> 6368 <th class="th_details" colspan="6">HAL Implementation Details</th> 6369 </tr> 6370 <tr class="entry_cont"> 6371 <td class="entry_details" colspan="6"> 6372 <p>All the sizes listed in this configuration will be a subset of the sizes reported by 6373<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> 6374Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum 6375of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> 6376<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps 6377sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application 6378usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused 6379stutter when starting recording as much as possible,<wbr/> the application may want to ensure 6380the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise 6381the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/> 6382For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise 6383[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to 6384do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start 6385recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps 6386values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps 6387values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must 6388switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p> 6389 </td> 6390 </tr> 6391 6392 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6393 <!-- end of entry --> 6394 6395 6396 <tr class="entry" id="static_android.control.aeLockAvailable"> 6397 <td class="entry_name 6398 " rowspan="3"> 6399 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available 6400 </td> 6401 <td class="entry_type"> 6402 <span class="entry_type_name entry_type_name_enum">byte</span> 6403 6404 <span class="entry_type_visibility"> [public as boolean]</span> 6405 6406 6407 <span class="entry_type_hwlevel">[legacy] </span> 6408 6409 6410 6411 <ul class="entry_type_enum"> 6412 <li> 6413 <span class="entry_type_enum_name">FALSE (v3.2)</span> 6414 </li> 6415 <li> 6416 <span class="entry_type_enum_name">TRUE (v3.2)</span> 6417 </li> 6418 </ul> 6419 6420 </td> <!-- entry_type --> 6421 6422 <td class="entry_description"> 6423 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p> 6424 </td> 6425 6426 <td class="entry_units"> 6427 </td> 6428 6429 <td class="entry_range"> 6430 </td> 6431 6432 <td class="entry_hal_version"> 6433 <p>3.<wbr/>2</p> 6434 </td> 6435 6436 <td class="entry_tags"> 6437 <ul class="entry_tags"> 6438 <li><a href="#tag_BC">BC</a></li> 6439 </ul> 6440 </td> 6441 6442 </tr> 6443 <tr class="entries_header"> 6444 <th class="th_details" colspan="6">Details</th> 6445 </tr> 6446 <tr class="entry_cont"> 6447 <td class="entry_details" colspan="6"> 6448 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always 6449list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 6450 </td> 6451 </tr> 6452 6453 6454 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6455 <!-- end of entry --> 6456 6457 6458 <tr class="entry" id="static_android.control.awbLockAvailable"> 6459 <td class="entry_name 6460 " rowspan="3"> 6461 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available 6462 </td> 6463 <td class="entry_type"> 6464 <span class="entry_type_name entry_type_name_enum">byte</span> 6465 6466 <span class="entry_type_visibility"> [public as boolean]</span> 6467 6468 6469 <span class="entry_type_hwlevel">[legacy] </span> 6470 6471 6472 6473 <ul class="entry_type_enum"> 6474 <li> 6475 <span class="entry_type_enum_name">FALSE (v3.2)</span> 6476 </li> 6477 <li> 6478 <span class="entry_type_enum_name">TRUE (v3.2)</span> 6479 </li> 6480 </ul> 6481 6482 </td> <!-- entry_type --> 6483 6484 <td class="entry_description"> 6485 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p> 6486 </td> 6487 6488 <td class="entry_units"> 6489 </td> 6490 6491 <td class="entry_range"> 6492 </td> 6493 6494 <td class="entry_hal_version"> 6495 <p>3.<wbr/>2</p> 6496 </td> 6497 6498 <td class="entry_tags"> 6499 <ul class="entry_tags"> 6500 <li><a href="#tag_BC">BC</a></li> 6501 </ul> 6502 </td> 6503 6504 </tr> 6505 <tr class="entries_header"> 6506 <th class="th_details" colspan="6">Details</th> 6507 </tr> 6508 <tr class="entry_cont"> 6509 <td class="entry_details" colspan="6"> 6510 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will 6511always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 6512 </td> 6513 </tr> 6514 6515 6516 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6517 <!-- end of entry --> 6518 6519 6520 <tr class="entry" id="static_android.control.availableModes"> 6521 <td class="entry_name 6522 " rowspan="3"> 6523 android.<wbr/>control.<wbr/>available<wbr/>Modes 6524 </td> 6525 <td class="entry_type"> 6526 <span class="entry_type_name">byte</span> 6527 <span class="entry_type_container">x</span> 6528 6529 <span class="entry_type_array"> 6530 n 6531 </span> 6532 <span class="entry_type_visibility"> [public as enumList]</span> 6533 6534 6535 <span class="entry_type_hwlevel">[legacy] </span> 6536 6537 6538 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div> 6539 6540 6541 </td> <!-- entry_type --> 6542 6543 <td class="entry_description"> 6544 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera 6545device.<wbr/></p> 6546 </td> 6547 6548 <td class="entry_units"> 6549 </td> 6550 6551 <td class="entry_range"> 6552 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p> 6553 </td> 6554 6555 <td class="entry_hal_version"> 6556 <p>3.<wbr/>2</p> 6557 </td> 6558 6559 <td class="entry_tags"> 6560 </td> 6561 6562 </tr> 6563 <tr class="entries_header"> 6564 <th class="th_details" colspan="6">Details</th> 6565 </tr> 6566 <tr class="entry_cont"> 6567 <td class="entry_details" colspan="6"> 6568 <p>This list contains control modes that can be set for the camera device.<wbr/> 6569LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL 6570devices will always support OFF,<wbr/> AUTO modes.<wbr/></p> 6571 </td> 6572 </tr> 6573 6574 6575 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6576 <!-- end of entry --> 6577 6578 6579 <tr class="entry" id="static_android.control.postRawSensitivityBoostRange"> 6580 <td class="entry_name 6581 " rowspan="5"> 6582 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range 6583 </td> 6584 <td class="entry_type"> 6585 <span class="entry_type_name">int32</span> 6586 <span class="entry_type_container">x</span> 6587 6588 <span class="entry_type_array"> 6589 2 6590 </span> 6591 <span class="entry_type_visibility"> [public as rangeInt]</span> 6592 6593 6594 6595 6596 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div> 6597 6598 6599 </td> <!-- entry_type --> 6600 6601 <td class="entry_description"> 6602 <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported 6603by this camera device.<wbr/></p> 6604 </td> 6605 6606 <td class="entry_units"> 6607 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 6608 </td> 6609 6610 <td class="entry_range"> 6611 </td> 6612 6613 <td class="entry_hal_version"> 6614 <p>3.<wbr/>2</p> 6615 </td> 6616 6617 <td class="entry_tags"> 6618 </td> 6619 6620 </tr> 6621 <tr class="entries_header"> 6622 <th class="th_details" colspan="6">Details</th> 6623 </tr> 6624 <tr class="entry_cont"> 6625 <td class="entry_details" colspan="6"> 6626 <p>Devices support post RAW sensitivity boost will advertise 6627<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling 6628post RAW sensitivity boost.<wbr/></p> 6629<p>This key will be <code>null</code> for devices that do not support any RAW format 6630outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 6631present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 6632list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p> 6633 </td> 6634 </tr> 6635 6636 <tr class="entries_header"> 6637 <th class="th_details" colspan="6">HAL Implementation Details</th> 6638 </tr> 6639 <tr class="entry_cont"> 6640 <td class="entry_details" colspan="6"> 6641 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera 6642framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output 6643formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports 6644any of RAW output formats.<wbr/></p> 6645 </td> 6646 </tr> 6647 6648 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6649 <!-- end of entry --> 6650 6651 6652 <tr class="entry" id="static_android.control.availableExtendedSceneModeMaxSizes"> 6653 <td class="entry_name 6654 " rowspan="5"> 6655 android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Max<wbr/>Sizes 6656 </td> 6657 <td class="entry_type"> 6658 <span class="entry_type_name">int32</span> 6659 <span class="entry_type_container">x</span> 6660 6661 <span class="entry_type_array"> 6662 3 x n 6663 </span> 6664 <span class="entry_type_visibility"> [ndk_public]</span> 6665 6666 6667 <span class="entry_type_hwlevel">[limited] </span> 6668 6669 6670 <div class="entry_type_notes">List of extended scene modes and the corresponding max streaming sizes.<wbr/></div> 6671 6672 6673 </td> <!-- entry_type --> 6674 6675 <td class="entry_description"> 6676 <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 6677by this camera device,<wbr/> and each extended scene mode's maximum streaming (non-stall) size 6678with effect.<wbr/></p> 6679 </td> 6680 6681 <td class="entry_units"> 6682 (mode,<wbr/> width,<wbr/> height) 6683 </td> 6684 6685 <td class="entry_range"> 6686 </td> 6687 6688 <td class="entry_hal_version"> 6689 <p>3.<wbr/>5</p> 6690 </td> 6691 6692 <td class="entry_tags"> 6693 </td> 6694 6695 </tr> 6696 <tr class="entries_header"> 6697 <th class="th_details" colspan="6">Details</th> 6698 </tr> 6699 <tr class="entry_cont"> 6700 <td class="entry_details" colspan="6"> 6701 <p>For DISABLED mode,<wbr/> the camera behaves normally with no extended scene mode enabled.<wbr/></p> 6702<p>For BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode,<wbr/> the maximum streaming dimension specifies the limit 6703under which bokeh is effective when capture intent is PREVIEW.<wbr/> Note that when capture 6704intent is PREVIEW,<wbr/> the bokeh effect may not be as high in quality compared to 6705STILL_<wbr/>CAPTURE intent in order to maintain reasonable frame rate.<wbr/> The maximum streaming 6706dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE resolutions in 6707availableStreamConfigurations,<wbr/> or (0,<wbr/> 0) if preview bokeh is not supported.<wbr/> If the 6708application configures a stream larger than the maximum streaming dimension,<wbr/> bokeh 6709effect may not be applied for this stream for PREVIEW intent.<wbr/></p> 6710<p>For BOKEH_<wbr/>CONTINUOUS mode,<wbr/> the maximum streaming dimension specifies the limit under 6711which bokeh is effective.<wbr/> This dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE 6712resolutions in availableStreamConfigurations,<wbr/> and if the sensor maximum resolution is 6713larger than or equal to 1080p,<wbr/> the maximum streaming dimension must be at least 1080p.<wbr/> 6714If the application configures a stream with larger dimension,<wbr/> the stream may not have 6715bokeh effect applied.<wbr/></p> 6716 </td> 6717 </tr> 6718 6719 <tr class="entries_header"> 6720 <th class="th_details" colspan="6">HAL Implementation Details</th> 6721 </tr> 6722 <tr class="entry_cont"> 6723 <td class="entry_details" colspan="6"> 6724 <p>For available extended scene modes,<wbr/> DISABLED will always be listed.<wbr/></p> 6725<p>HAL must support at list one non-OFF extended scene mode if extendedSceneMode control is 6726available on the camera device.<wbr/> For DISABLED mode,<wbr/> the maximum streaming resolution must 6727be set to (0,<wbr/> 0).<wbr/></p> 6728 </td> 6729 </tr> 6730 6731 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6732 <!-- end of entry --> 6733 6734 6735 <tr class="entry" id="static_android.control.availableExtendedSceneModeZoomRatioRanges"> 6736 <td class="entry_name 6737 " rowspan="3"> 6738 android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Zoom<wbr/>Ratio<wbr/>Ranges 6739 </td> 6740 <td class="entry_type"> 6741 <span class="entry_type_name">float</span> 6742 <span class="entry_type_container">x</span> 6743 6744 <span class="entry_type_array"> 6745 2 x n 6746 </span> 6747 <span class="entry_type_visibility"> [ndk_public]</span> 6748 6749 6750 <span class="entry_type_hwlevel">[limited] </span> 6751 6752 6753 <div class="entry_type_notes">Zoom ranges for all supported non-OFF extended scene modes.<wbr/></div> 6754 6755 6756 </td> <!-- entry_type --> 6757 6758 <td class="entry_description"> 6759 <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> 6760 </td> 6761 6762 <td class="entry_units"> 6763 (minZoom,<wbr/> maxZoom) 6764 </td> 6765 6766 <td class="entry_range"> 6767 </td> 6768 6769 <td class="entry_hal_version"> 6770 <p>3.<wbr/>5</p> 6771 </td> 6772 6773 <td class="entry_tags"> 6774 </td> 6775 6776 </tr> 6777 <tr class="entries_header"> 6778 <th class="th_details" colspan="6">Details</th> 6779 </tr> 6780 <tr class="entry_cont"> 6781 <td class="entry_details" colspan="6"> 6782 <p>When extended scene mode is set,<wbr/> the camera device may have limited range of zoom ratios 6783compared to when extended scene mode is DISABLED.<wbr/> This tag lists the zoom ratio ranges 6784for all supported non-DISABLED extended scene modes,<wbr/> in the same order as in 6785android.<wbr/>control.<wbr/>available<wbr/>Extended.<wbr/></p> 6786<p>Range [1.<wbr/>0,<wbr/> 1.<wbr/>0] means that no zoom (optical or digital) is supported.<wbr/></p> 6787 </td> 6788 </tr> 6789 6790 6791 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6792 <!-- end of entry --> 6793 6794 6795 <tr class="entry" id="static_android.control.availableExtendedSceneModeCapabilities"> 6796 <td class="entry_name 6797 " rowspan="3"> 6798 android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Capabilities 6799 </td> 6800 <td class="entry_type"> 6801 <span class="entry_type_name">int32</span> 6802 <span class="entry_type_container">x</span> 6803 6804 <span class="entry_type_array"> 6805 n 6806 </span> 6807 <span class="entry_type_visibility"> [public as capability]</span> 6808 6809 <span class="entry_type_synthetic">[synthetic] </span> 6810 6811 6812 6813 6814 6815 </td> <!-- entry_type --> 6816 6817 <td class="entry_description"> 6818 <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 6819are supported by this camera device,<wbr/> and each extended scene mode's capabilities such 6820as maximum streaming size,<wbr/> and supported zoom ratio ranges.<wbr/></p> 6821 </td> 6822 6823 <td class="entry_units"> 6824 </td> 6825 6826 <td class="entry_range"> 6827 </td> 6828 6829 <td class="entry_hal_version"> 6830 <p>3.<wbr/>5</p> 6831 </td> 6832 6833 <td class="entry_tags"> 6834 </td> 6835 6836 </tr> 6837 <tr class="entries_header"> 6838 <th class="th_details" colspan="6">Details</th> 6839 </tr> 6840 <tr class="entry_cont"> 6841 <td class="entry_details" colspan="6"> 6842 <p>For DISABLED mode,<wbr/> the camera behaves normally with no extended scene mode enabled.<wbr/></p> 6843<p>For BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode,<wbr/> the maximum streaming dimension specifies the limit 6844under which bokeh is effective when capture intent is PREVIEW.<wbr/> Note that when capture 6845intent is PREVIEW,<wbr/> the bokeh effect may not be as high quality compared to STILL_<wbr/>CAPTURE 6846intent in order to maintain reasonable frame rate.<wbr/> The maximum streaming dimension must 6847be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE resolutions in availableStreamConfigurations,<wbr/> or 6848(0,<wbr/> 0) if preview bokeh is not supported.<wbr/> If the application configures a stream 6849larger than the maximum streaming dimension,<wbr/> bokeh effect may not be applied for this 6850stream for PREVIEW intent.<wbr/></p> 6851<p>For BOKEH_<wbr/>CONTINUOUS mode,<wbr/> the maximum streaming dimension specifies the limit under 6852which bokeh is effective.<wbr/> This dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE 6853resolutions in availableStreamConfigurations,<wbr/> and if the sensor maximum resolution is 6854larger than or equal to 1080p,<wbr/> the maximum streaming dimension must be at least 1080p.<wbr/> 6855If the application configures a stream with larger dimension,<wbr/> the stream may not have 6856bokeh effect applied.<wbr/></p> 6857<p>When extended scene mode is set,<wbr/> the camera device may have limited range of zoom ratios 6858compared to when the mode is DISABLED.<wbr/> availableExtendedSceneModeCapabilities lists the 6859zoom ranges for all supported extended modes.<wbr/> A range of (1.<wbr/>0,<wbr/> 1.<wbr/>0) means that no zoom 6860(optical or digital) is supported.<wbr/></p> 6861 </td> 6862 </tr> 6863 6864 6865 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6866 <!-- end of entry --> 6867 6868 6869 <tr class="entry" id="static_android.control.zoomRatioRange"> 6870 <td class="entry_name 6871 " rowspan="5"> 6872 android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range 6873 </td> 6874 <td class="entry_type"> 6875 <span class="entry_type_name">float</span> 6876 <span class="entry_type_container">x</span> 6877 6878 <span class="entry_type_array"> 6879 2 6880 </span> 6881 <span class="entry_type_visibility"> [public as rangeFloat]</span> 6882 6883 6884 <span class="entry_type_hwlevel">[limited] </span> 6885 6886 6887 <div class="entry_type_notes">The range of zoom ratios that this camera device supports.<wbr/></div> 6888 6889 6890 </td> <!-- entry_type --> 6891 6892 <td class="entry_description"> 6893 <p>Minimum and maximum zoom ratios supported by this camera device.<wbr/></p> 6894 </td> 6895 6896 <td class="entry_units"> 6897 A pair of zoom ratio in floating-points: (minZoom,<wbr/> maxZoom) 6898 </td> 6899 6900 <td class="entry_range"> 6901 <p>maxZoom >= 1.<wbr/>0 >= minZoom</p> 6902 </td> 6903 6904 <td class="entry_hal_version"> 6905 <p>3.<wbr/>5</p> 6906 </td> 6907 6908 <td class="entry_tags"> 6909 </td> 6910 6911 </tr> 6912 <tr class="entries_header"> 6913 <th class="th_details" colspan="6">Details</th> 6914 </tr> 6915 <tr class="entry_cont"> 6916 <td class="entry_details" colspan="6"> 6917 <p>If the camera device supports zoom-out from 1x zoom,<wbr/> minZoom will be less than 1.<wbr/>0,<wbr/> and 6918setting <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 6919of view.<wbr/></p> 6920 </td> 6921 </tr> 6922 6923 <tr class="entries_header"> 6924 <th class="th_details" colspan="6">HAL Implementation Details</th> 6925 </tr> 6926 <tr class="entry_cont"> 6927 <td class="entry_details" colspan="6"> 6928 <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> 6929must be less than or equal to maxZoom.<wbr/> The camera framework makes sure to always 6930control 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 6931used to do horizontal or vertical cropping (but not both) to achieve aspect ratio 6932different than the camera sensor's native aspect ratio.<wbr/></p> 6933<p>For a logical multi-camera device,<wbr/> this key must either be reported for both the logical 6934camera device and all its physical sub-cameras,<wbr/> or none of them.<wbr/></p> 6935<p>When the key is not reported,<wbr/> camera framework derives the application-facing 6936zoomRatioRange to be (1,<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>).<wbr/></p> 6937 </td> 6938 </tr> 6939 6940 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6941 <!-- end of entry --> 6942 6943 6944 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution"> 6945 <td class="entry_name 6946 " rowspan="5"> 6947 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution 6948 </td> 6949 <td class="entry_type"> 6950 <span class="entry_type_name">int32</span> 6951 <span class="entry_type_container">x</span> 6952 6953 <span class="entry_type_array"> 6954 5 x n 6955 </span> 6956 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 6957 6958 6959 6960 6961 6962 6963 </td> <!-- entry_type --> 6964 6965 <td class="entry_description"> 6966 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations 6967supported by the camera device,<wbr/> in the format of 6968(width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max),<wbr/> 6969when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 6970<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> 6971 </td> 6972 6973 <td class="entry_units"> 6974 </td> 6975 6976 <td class="entry_range"> 6977 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> 6978 </td> 6979 6980 <td class="entry_hal_version"> 6981 <p>3.<wbr/>6</p> 6982 </td> 6983 6984 <td class="entry_tags"> 6985 <ul class="entry_tags"> 6986 <li><a href="#tag_V1">V1</a></li> 6987 </ul> 6988 </td> 6989 6990 </tr> 6991 <tr class="entries_header"> 6992 <th class="th_details" colspan="6">Details</th> 6993 </tr> 6994 <tr class="entry_cont"> 6995 <td class="entry_details" colspan="6"> 6996 <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 6997which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 6998<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> 6999 </td> 7000 </tr> 7001 7002 <tr class="entries_header"> 7003 <th class="th_details" colspan="6">HAL Implementation Details</th> 7004 </tr> 7005 <tr class="entry_cont"> 7006 <td class="entry_details" colspan="6"> 7007 <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> 7008 </td> 7009 </tr> 7010 7011 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7012 <!-- end of entry --> 7013 7014 7015 7016 <!-- end of kind --> 7017 </tbody> 7018 <tr><td colspan="7" class="kind">dynamic</td></tr> 7019 7020 <thead class="entries_header"> 7021 <tr> 7022 <th class="th_name">Property Name</th> 7023 <th class="th_type">Type</th> 7024 <th class="th_description">Description</th> 7025 <th class="th_units">Units</th> 7026 <th class="th_range">Range</th> 7027 <th class="th_hal_version">Initial HIDL HAL version</th> 7028 <th class="th_tags">Tags</th> 7029 </tr> 7030 </thead> 7031 7032 <tbody> 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 7044 <td class="entry_name 7045 entry_name_deprecated 7046 " rowspan="3"> 7047 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 7048 </td> 7049 <td class="entry_type"> 7050 <span class="entry_type_name">int32</span> 7051 7052 <span class="entry_type_visibility"> [system]</span> 7053 7054 7055 7056 <span class="entry_type_deprecated">[deprecated] </span> 7057 7058 7059 7060 </td> <!-- entry_type --> 7061 7062 <td class="entry_description"> 7063 <p>The ID sent with the latest 7064CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 7065 </td> 7066 7067 <td class="entry_units"> 7068 </td> 7069 7070 <td class="entry_range"> 7071 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 7072 </td> 7073 7074 <td class="entry_hal_version"> 7075 <p>3.<wbr/>2</p> 7076 </td> 7077 7078 <td class="entry_tags"> 7079 </td> 7080 7081 </tr> 7082 <tr class="entries_header"> 7083 <th class="th_details" colspan="6">Details</th> 7084 </tr> 7085 <tr class="entry_cont"> 7086 <td class="entry_details" colspan="6"> 7087 <p>Must be 0 if no 7088CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 7089by HAL.<wbr/> Always updated even if AE algorithm ignores the 7090trigger</p> 7091 </td> 7092 </tr> 7093 7094 7095 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7096 <!-- end of entry --> 7097 7098 7099 <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> 7100 <td class="entry_name 7101 " rowspan="5"> 7102 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 7103 </td> 7104 <td class="entry_type"> 7105 <span class="entry_type_name entry_type_name_enum">byte</span> 7106 7107 <span class="entry_type_visibility"> [public]</span> 7108 7109 7110 <span class="entry_type_hwlevel">[legacy] </span> 7111 7112 7113 7114 <ul class="entry_type_enum"> 7115 <li> 7116 <span class="entry_type_enum_name">OFF (v3.2)</span> 7117 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 7118avoid banding problems.<wbr/></p></span> 7119 </li> 7120 <li> 7121 <span class="entry_type_enum_name">50HZ (v3.2)</span> 7122 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 7123avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 7124 </li> 7125 <li> 7126 <span class="entry_type_enum_name">60HZ (v3.2)</span> 7127 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 7128avoid banding problems with 60Hz illumination 7129sources.<wbr/></p></span> 7130 </li> 7131 <li> 7132 <span class="entry_type_enum_name">AUTO (v3.2)</span> 7133 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 7134antibanding routine to the current illumination 7135condition.<wbr/> This is the default mode if AUTO is 7136available on given camera device.<wbr/></p></span> 7137 </li> 7138 </ul> 7139 7140 </td> <!-- entry_type --> 7141 7142 <td class="entry_description"> 7143 <p>The desired setting for the camera device's auto-exposure 7144algorithm's antibanding compensation.<wbr/></p> 7145 </td> 7146 7147 <td class="entry_units"> 7148 </td> 7149 7150 <td class="entry_range"> 7151 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 7152 </td> 7153 7154 <td class="entry_hal_version"> 7155 <p>3.<wbr/>2</p> 7156 </td> 7157 7158 <td class="entry_tags"> 7159 <ul class="entry_tags"> 7160 <li><a href="#tag_BC">BC</a></li> 7161 </ul> 7162 </td> 7163 7164 </tr> 7165 <tr class="entries_header"> 7166 <th class="th_details" colspan="6">Details</th> 7167 </tr> 7168 <tr class="entry_cont"> 7169 <td class="entry_details" colspan="6"> 7170 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 7171lights,<wbr/> flicker at the rate of the power supply frequency 7172(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 7173typically not noticeable to a person,<wbr/> it can be visible to 7174a camera device.<wbr/> If a camera sets its exposure time to the 7175wrong value,<wbr/> the flicker may become visible in the 7176viewfinder as flicker or in a final captured image,<wbr/> as a 7177set of variable-brightness bands across the image.<wbr/></p> 7178<p>Therefore,<wbr/> the auto-exposure routines of camera devices 7179include antibanding routines that ensure that the chosen 7180exposure value will not cause such banding.<wbr/> The choice of 7181exposure time depends on the rate of flicker,<wbr/> which the 7182camera device can detect automatically,<wbr/> or the expected 7183rate can be selected by the application using this 7184control.<wbr/></p> 7185<p>A given camera device may not support all of the possible 7186options for the antibanding mode.<wbr/> The 7187<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 7188the available modes for a given camera device.<wbr/></p> 7189<p>AUTO mode is the default if it is available on given 7190camera device.<wbr/> When AUTO mode is not available,<wbr/> the 7191default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 7192and 60HZ will be available.<wbr/></p> 7193<p>If manual exposure control is enabled (by setting 7194<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/> 7195then this setting has no effect,<wbr/> and the application must 7196ensure it selects exposure times that do not cause banding 7197issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 7198the application in this.<wbr/></p> 7199 </td> 7200 </tr> 7201 7202 <tr class="entries_header"> 7203 <th class="th_details" colspan="6">HAL Implementation Details</th> 7204 </tr> 7205 <tr class="entry_cont"> 7206 <td class="entry_details" colspan="6"> 7207 <p>For all capture request templates,<wbr/> this field must be set 7208to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 7209the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 721060HZ must be available.<wbr/></p> 7211<p>If manual exposure control is enabled (by setting 7212<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/> 7213then the exposure values provided by the application must not be 7214adjusted for antibanding.<wbr/></p> 7215 </td> 7216 </tr> 7217 7218 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7219 <!-- end of entry --> 7220 7221 7222 <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> 7223 <td class="entry_name 7224 " rowspan="3"> 7225 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 7226 </td> 7227 <td class="entry_type"> 7228 <span class="entry_type_name">int32</span> 7229 7230 <span class="entry_type_visibility"> [public]</span> 7231 7232 7233 <span class="entry_type_hwlevel">[legacy] </span> 7234 7235 7236 7237 7238 </td> <!-- entry_type --> 7239 7240 <td class="entry_description"> 7241 <p>Adjustment to auto-exposure (AE) target image 7242brightness.<wbr/></p> 7243 </td> 7244 7245 <td class="entry_units"> 7246 Compensation steps 7247 </td> 7248 7249 <td class="entry_range"> 7250 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 7251 </td> 7252 7253 <td class="entry_hal_version"> 7254 <p>3.<wbr/>2</p> 7255 </td> 7256 7257 <td class="entry_tags"> 7258 <ul class="entry_tags"> 7259 <li><a href="#tag_BC">BC</a></li> 7260 </ul> 7261 </td> 7262 7263 </tr> 7264 <tr class="entries_header"> 7265 <th class="th_details" colspan="6">Details</th> 7266 </tr> 7267 <tr class="entry_cont"> 7268 <td class="entry_details" colspan="6"> 7269 <p>The adjustment is measured as a count of steps,<wbr/> with the 7270step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 7271allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 7272<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 7273will mean an exposure compensation of +2 EV; -3 will mean an 7274exposure compensation of -1 EV.<wbr/> One EV represents a doubling 7275of image brightness.<wbr/> Note that this control will only be 7276effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 7277will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 7278<p>In the event of exposure compensation value being changed,<wbr/> camera device 7279may take several frames to reach the newly requested exposure target.<wbr/> 7280During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 7281state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 7282change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 7283FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 7284 </td> 7285 </tr> 7286 7287 7288 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7289 <!-- end of entry --> 7290 7291 7292 <tr class="entry" id="dynamic_android.control.aeLock"> 7293 <td class="entry_name 7294 " rowspan="3"> 7295 android.<wbr/>control.<wbr/>ae<wbr/>Lock 7296 </td> 7297 <td class="entry_type"> 7298 <span class="entry_type_name entry_type_name_enum">byte</span> 7299 7300 <span class="entry_type_visibility"> [public as boolean]</span> 7301 7302 7303 <span class="entry_type_hwlevel">[legacy] </span> 7304 7305 7306 7307 <ul class="entry_type_enum"> 7308 <li> 7309 <span class="entry_type_enum_name">OFF (v3.2)</span> 7310 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 7311is free to update its parameters.<wbr/></p></span> 7312 </li> 7313 <li> 7314 <span class="entry_type_enum_name">ON (v3.2)</span> 7315 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 7316must not update the exposure and sensitivity parameters 7317while the lock is active.<wbr/></p> 7318<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 7319will still take effect while auto-exposure is locked.<wbr/></p> 7320<p>Some rare LEGACY devices may not support 7321this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 7322 </li> 7323 </ul> 7324 7325 </td> <!-- entry_type --> 7326 7327 <td class="entry_description"> 7328 <p>Whether auto-exposure (AE) is currently locked to its latest 7329calculated values.<wbr/></p> 7330 </td> 7331 7332 <td class="entry_units"> 7333 </td> 7334 7335 <td class="entry_range"> 7336 </td> 7337 7338 <td class="entry_hal_version"> 7339 <p>3.<wbr/>2</p> 7340 </td> 7341 7342 <td class="entry_tags"> 7343 <ul class="entry_tags"> 7344 <li><a href="#tag_BC">BC</a></li> 7345 </ul> 7346 </td> 7347 7348 </tr> 7349 <tr class="entries_header"> 7350 <th class="th_details" colspan="6">Details</th> 7351 </tr> 7352 <tr class="entry_cont"> 7353 <td class="entry_details" colspan="6"> 7354 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 7355and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 7356<p>Note that even when AE is locked,<wbr/> the flash may be fired if 7357the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 7358ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 7359<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 7360is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 7361<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 7362when AE is already locked,<wbr/> the camera device will not change the exposure time 7363(<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>) 7364parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 7365is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 7366<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/> 7367Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 7368<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 7369the AE if AE is locked by the camera device internally during precapture metering 7370sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 7371ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 7372will never succeed in a sequence of preview requests where AE lock is always set 7373to <code>false</code>.<wbr/></p> 7374<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 7375get locked do not necessarily correspond to the settings that were present in the 7376latest capture result received from the camera device,<wbr/> since additional captures 7377and AE updates may have occurred even before the result was sent out.<wbr/> If an 7378application is switching between automatic and manual control and wishes to eliminate 7379any flicker during the switch,<wbr/> the following procedure is recommended:</p> 7380<ol> 7381<li>Starting in auto-AE mode:</li> 7382<li>Lock AE</li> 7383<li>Wait for the first result to be output that has the AE locked</li> 7384<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 7385<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 7386</ol> 7387<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> 7388 </td> 7389 </tr> 7390 7391 7392 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7393 <!-- end of entry --> 7394 7395 7396 <tr class="entry" id="dynamic_android.control.aeMode"> 7397 <td class="entry_name 7398 " rowspan="3"> 7399 android.<wbr/>control.<wbr/>ae<wbr/>Mode 7400 </td> 7401 <td class="entry_type"> 7402 <span class="entry_type_name entry_type_name_enum">byte</span> 7403 7404 <span class="entry_type_visibility"> [public]</span> 7405 7406 7407 <span class="entry_type_hwlevel">[legacy] </span> 7408 7409 7410 7411 <ul class="entry_type_enum"> 7412 <li> 7413 <span class="entry_type_enum_name">OFF (v3.2)</span> 7414 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 7415<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 7416<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 7417<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 7418device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 7419a flash unit for this camera device.<wbr/></p> 7420<p>Note that auto-white balance (AWB) and auto-focus (AF) 7421behavior is device dependent when AE is in OFF mode.<wbr/> 7422To have consistent behavior across different devices,<wbr/> 7423it is recommended to either set AWB and AF to OFF mode 7424or lock AWB and AF before setting AE to OFF.<wbr/> 7425See <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/> 7426<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> 7427for more details.<wbr/></p> 7428<p>LEGACY devices do not support the OFF mode and will 7429override attempts to use this value to ON.<wbr/></p></span> 7430 </li> 7431 <li> 7432 <span class="entry_type_enum_name">ON (v3.2)</span> 7433 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 7434with no flash control.<wbr/></p> 7435<p>The application's values for 7436<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 7437<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 7438<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 7439application has control over the various 7440android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 7441 </li> 7442 <li> 7443 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span> 7444 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 7445the camera's flash unit,<wbr/> firing it in low-light 7446conditions.<wbr/></p> 7447<p>The flash may be fired during a precapture sequence 7448(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 7449may be fired for captures for which the 7450<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 7451STILL_<wbr/>CAPTURE</p></span> 7452 </li> 7453 <li> 7454 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span> 7455 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 7456the camera's flash unit,<wbr/> always firing it for still 7457captures.<wbr/></p> 7458<p>The flash may be fired during a precapture sequence 7459(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 7460will always be fired for captures for which the 7461<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 7462STILL_<wbr/>CAPTURE</p></span> 7463 </li> 7464 <li> 7465 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span> 7466 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 7467reduction.<wbr/></p> 7468<p>If deemed necessary by the camera device,<wbr/> a red eye 7469reduction flash will fire during the precapture 7470sequence.<wbr/></p></span> 7471 </li> 7472 <li> 7473 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span> 7474 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p> 7475<p>It informs the camera device that an external flash has been turned on,<wbr/> and that 7476metering (and continuous focus if active) should be quickly recaculated to account 7477for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p> 7478<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the 7479other available AE modes.<wbr/></p> 7480<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 7481be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without 7482flash.<wbr/></p></span> 7483 </li> 7484 </ul> 7485 7486 </td> <!-- entry_type --> 7487 7488 <td class="entry_description"> 7489 <p>The desired mode for the camera device's 7490auto-exposure routine.<wbr/></p> 7491 </td> 7492 7493 <td class="entry_units"> 7494 </td> 7495 7496 <td class="entry_range"> 7497 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 7498 </td> 7499 7500 <td class="entry_hal_version"> 7501 <p>3.<wbr/>2</p> 7502 </td> 7503 7504 <td class="entry_tags"> 7505 <ul class="entry_tags"> 7506 <li><a href="#tag_BC">BC</a></li> 7507 </ul> 7508 </td> 7509 7510 </tr> 7511 <tr class="entries_header"> 7512 <th class="th_details" colspan="6">Details</th> 7513 </tr> 7514 <tr class="entry_cont"> 7515 <td class="entry_details" colspan="6"> 7516 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 7517AUTO.<wbr/></p> 7518<p>When set to any of the ON modes,<wbr/> the camera device's 7519auto-exposure routine is enabled,<wbr/> overriding the 7520application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 7521and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 7522<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 7523<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 7524is selected,<wbr/> the camera device's flash unit controls are 7525also overridden.<wbr/></p> 7526<p>The FLASH modes are only available if the camera device 7527has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 7528<p>If flash TORCH mode is desired,<wbr/> this field must be set to 7529ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 7530<p>When set to any of the ON modes,<wbr/> the values chosen by the 7531camera device auto-exposure routine for the overridden 7532fields for a given capture will be available in its 7533CaptureResult.<wbr/></p> 7534 </td> 7535 </tr> 7536 7537 7538 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7539 <!-- end of entry --> 7540 7541 7542 <tr class="entry" id="dynamic_android.control.aeRegions"> 7543 <td class="entry_name 7544 " rowspan="5"> 7545 android.<wbr/>control.<wbr/>ae<wbr/>Regions 7546 </td> 7547 <td class="entry_type"> 7548 <span class="entry_type_name">int32</span> 7549 <span class="entry_type_container">x</span> 7550 7551 <span class="entry_type_array"> 7552 5 x area_count 7553 </span> 7554 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 7555 7556 7557 7558 7559 7560 7561 </td> <!-- entry_type --> 7562 7563 <td class="entry_description"> 7564 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 7565 </td> 7566 7567 <td class="entry_units"> 7568 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 7569 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 7570 distortion correction capability and mode 7571 </td> 7572 7573 <td class="entry_range"> 7574 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 7575<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> 7576depending on distortion correction capability and mode</p> 7577 </td> 7578 7579 <td class="entry_hal_version"> 7580 <p>3.<wbr/>2</p> 7581 </td> 7582 7583 <td class="entry_tags"> 7584 <ul class="entry_tags"> 7585 <li><a href="#tag_BC">BC</a></li> 7586 </ul> 7587 </td> 7588 7589 </tr> 7590 <tr class="entries_header"> 7591 <th class="th_details" colspan="6">Details</th> 7592 </tr> 7593 <tr class="entry_cont"> 7594 <td class="entry_details" colspan="6"> 7595 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 7596Otherwise will always be present.<wbr/></p> 7597<p>The maximum number of regions supported by the device is determined by the value 7598of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 7599<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 7600system 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 7601the top-left pixel in the active pixel array,<wbr/> and 7602(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7603<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 7604active pixel array.<wbr/></p> 7605<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 7606system depends on the mode being set.<wbr/> 7607When the distortion correction mode is OFF,<wbr/> the coordinate system follows 7608<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 7609<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 7610(<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/> 7611<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 7612pixel in the pre-correction active pixel array.<wbr/> 7613When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 7614<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 7615<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 7616(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7617<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 7618active pixel array.<wbr/></p> 7619<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 7620for every pixel in the area.<wbr/> This means that a large metering area 7621with the same weight as a smaller area will have more effect in 7622the metering result.<wbr/> Metering areas can partially overlap and the 7623camera device will add the weights in the overlap region.<wbr/></p> 7624<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 7625region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 7626weight is ignored.<wbr/></p> 7627<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 7628camera device.<wbr/></p> 7629<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 7630capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 7631region and output only the intersection rectangle as the metering region in the result 7632metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 7633not reported in the result metadata.<wbr/></p> 7634<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 7635preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 7636pre-zoom field of view.<wbr/> This means that the same aeRegions values at different 7637<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The aeRegions 7638coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the 7639zoomed 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 7640aeRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the 7641scene 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 7642activeArraySize or preCorrectionActiveArraySize still depends on distortion correction 7643mode.<wbr/></p> 7644<p>For camera devices with the 7645<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> 7646capability,<wbr/> 7647<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 7648<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 7649coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 7650<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> 7651 </td> 7652 </tr> 7653 7654 <tr class="entries_header"> 7655 <th class="th_details" colspan="6">HAL Implementation Details</th> 7656 </tr> 7657 <tr class="entry_cont"> 7658 <td class="entry_details" colspan="6"> 7659 <p>The HAL level representation of MeteringRectangle[] is a 7660int[5 * area_<wbr/>count].<wbr/> 7661Every five elements represent a metering region of 7662(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 7663The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 7664exclusive on xmax and ymax.<wbr/> 7665HAL must always report metering regions in the coordinate system of pre-correction 7666active array.<wbr/></p> 7667 </td> 7668 </tr> 7669 7670 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7671 <!-- end of entry --> 7672 7673 7674 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> 7675 <td class="entry_name 7676 " rowspan="3"> 7677 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 7678 </td> 7679 <td class="entry_type"> 7680 <span class="entry_type_name">int32</span> 7681 <span class="entry_type_container">x</span> 7682 7683 <span class="entry_type_array"> 7684 2 7685 </span> 7686 <span class="entry_type_visibility"> [public as rangeInt]</span> 7687 7688 7689 <span class="entry_type_hwlevel">[legacy] </span> 7690 7691 7692 7693 7694 </td> <!-- entry_type --> 7695 7696 <td class="entry_description"> 7697 <p>Range over which the auto-exposure routine can 7698adjust the capture frame rate to maintain good 7699exposure.<wbr/></p> 7700 </td> 7701 7702 <td class="entry_units"> 7703 Frames per second (FPS) 7704 </td> 7705 7706 <td class="entry_range"> 7707 <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> 7708 </td> 7709 7710 <td class="entry_hal_version"> 7711 <p>3.<wbr/>2</p> 7712 </td> 7713 7714 <td class="entry_tags"> 7715 <ul class="entry_tags"> 7716 <li><a href="#tag_BC">BC</a></li> 7717 </ul> 7718 </td> 7719 7720 </tr> 7721 <tr class="entries_header"> 7722 <th class="th_details" colspan="6">Details</th> 7723 </tr> 7724 <tr class="entry_cont"> 7725 <td class="entry_details" colspan="6"> 7726 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 7727manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 7728<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 7729 </td> 7730 </tr> 7731 7732 7733 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7734 <!-- end of entry --> 7735 7736 7737 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> 7738 <td class="entry_name 7739 " rowspan="5"> 7740 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 7741 </td> 7742 <td class="entry_type"> 7743 <span class="entry_type_name entry_type_name_enum">byte</span> 7744 7745 <span class="entry_type_visibility"> [public]</span> 7746 7747 7748 <span class="entry_type_hwlevel">[limited] </span> 7749 7750 7751 7752 <ul class="entry_type_enum"> 7753 <li> 7754 <span class="entry_type_enum_name">IDLE (v3.2)</span> 7755 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 7756 </li> 7757 <li> 7758 <span class="entry_type_enum_name">START (v3.2)</span> 7759 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 7760by the camera device.<wbr/></p> 7761<p>The exact effect of the precapture trigger depends on 7762the current AE mode and state.<wbr/></p></span> 7763 </li> 7764 <li> 7765 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 7766 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 7767precapture metering sequence,<wbr/> the auto-exposure routine will return to its 7768initial state.<wbr/></p></span> 7769 </li> 7770 </ul> 7771 7772 </td> <!-- entry_type --> 7773 7774 <td class="entry_description"> 7775 <p>Whether the camera device will trigger a precapture 7776metering sequence when it processes this request.<wbr/></p> 7777 </td> 7778 7779 <td class="entry_units"> 7780 </td> 7781 7782 <td class="entry_range"> 7783 </td> 7784 7785 <td class="entry_hal_version"> 7786 <p>3.<wbr/>2</p> 7787 </td> 7788 7789 <td class="entry_tags"> 7790 <ul class="entry_tags"> 7791 <li><a href="#tag_BC">BC</a></li> 7792 </ul> 7793 </td> 7794 7795 </tr> 7796 <tr class="entries_header"> 7797 <th class="th_details" colspan="6">Details</th> 7798 </tr> 7799 <tr class="entry_cont"> 7800 <td class="entry_details" colspan="6"> 7801 <p>This entry is normally set to IDLE,<wbr/> or is not 7802included at all in the request settings.<wbr/> When included and 7803set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 7804precapture metering sequence.<wbr/></p> 7805<p>When set to CANCEL,<wbr/> the camera device will cancel any active 7806precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 7807If a precapture metering sequence is already completed,<wbr/> and the camera 7808device has implicitly locked the AE for subsequent still capture,<wbr/> the 7809CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 7810<p>The precapture sequence should be triggered before starting a 7811high-quality still capture for final metering decisions to 7812be made,<wbr/> and for firing pre-capture flash pulses to estimate 7813scene brightness and required final capture flash power,<wbr/> when 7814the flash is enabled.<wbr/></p> 7815<p>Normally,<wbr/> this entry should be set to START for only a 7816single request,<wbr/> and the application should wait until the 7817sequence completes before starting a new one.<wbr/></p> 7818<p>When a precapture metering sequence is finished,<wbr/> the camera device 7819may lock the auto-exposure routine internally to be able to accurately expose the 7820subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 7821For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 7822submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 7823submit 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 7824with <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 7825still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 7826API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 7827internally locked AE if the application doesn't submit a still capture request after 7828the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 7829be used in devices that have earlier API levels.<wbr/></p> 7830<p>The exact effect of auto-exposure (AE) precapture trigger 7831depends on the current AE mode and state; see 7832<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 7833details.<wbr/></p> 7834<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 7835capturing a high-resolution JPEG image will automatically trigger a 7836precapture sequence before the high-resolution capture,<wbr/> including 7837potentially firing a pre-capture flash.<wbr/></p> 7838<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 7839simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 7840the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 7841focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 7842trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 7843changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 7844example.<wbr/></p> 7845<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 7846the camera device will complete them in the optimal order for that device.<wbr/></p> 7847 </td> 7848 </tr> 7849 7850 <tr class="entries_header"> 7851 <th class="th_details" colspan="6">HAL Implementation Details</th> 7852 </tr> 7853 <tr class="entry_cont"> 7854 <td class="entry_details" colspan="6"> 7855 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 7856(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 7857treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 7858AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 7859to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 7860 </td> 7861 </tr> 7862 7863 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7864 <!-- end of entry --> 7865 7866 7867 <tr class="entry" id="dynamic_android.control.aeState"> 7868 <td class="entry_name 7869 " rowspan="3"> 7870 android.<wbr/>control.<wbr/>ae<wbr/>State 7871 </td> 7872 <td class="entry_type"> 7873 <span class="entry_type_name entry_type_name_enum">byte</span> 7874 7875 <span class="entry_type_visibility"> [public]</span> 7876 7877 7878 <span class="entry_type_hwlevel">[limited] </span> 7879 7880 7881 7882 <ul class="entry_type_enum"> 7883 <li> 7884 <span class="entry_type_enum_name">INACTIVE (v3.2)</span> 7885 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> 7886<p>When a camera device is opened,<wbr/> it starts in 7887this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 7888this state in capture result.<wbr/></p></span> 7889 </li> 7890 <li> 7891 <span class="entry_type_enum_name">SEARCHING (v3.2)</span> 7892 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 7893for the current scene.<wbr/></p> 7894<p>This is a transient state,<wbr/> the camera device may skip 7895reporting this state in capture result.<wbr/></p></span> 7896 </li> 7897 <li> 7898 <span class="entry_type_enum_name">CONVERGED (v3.2)</span> 7899 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 7900current scene.<wbr/></p></span> 7901 </li> 7902 <li> 7903 <span class="entry_type_enum_name">LOCKED (v3.2)</span> 7904 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 7905 </li> 7906 <li> 7907 <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span> 7908 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 7909needs to be fired for good quality still 7910capture.<wbr/></p></span> 7911 </li> 7912 <li> 7913 <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span> 7914 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 7915and is currently executing it.<wbr/></p> 7916<p>Precapture can be triggered through setting 7917<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently 7918active and completed (if it causes camera device internal AE lock) precapture 7919metering sequence can be canceled through setting 7920<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p> 7921<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED 7922or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient 7923state,<wbr/> the camera device may skip reporting this state in 7924capture result.<wbr/></p></span> 7925 </li> 7926 </ul> 7927 7928 </td> <!-- entry_type --> 7929 7930 <td class="entry_description"> 7931 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p> 7932 </td> 7933 7934 <td class="entry_units"> 7935 </td> 7936 7937 <td class="entry_range"> 7938 </td> 7939 7940 <td class="entry_hal_version"> 7941 <p>3.<wbr/>2</p> 7942 </td> 7943 7944 <td class="entry_tags"> 7945 </td> 7946 7947 </tr> 7948 <tr class="entries_header"> 7949 <th class="th_details" colspan="6">Details</th> 7950 </tr> 7951 <tr class="entry_cont"> 7952 <td class="entry_details" colspan="6"> 7953 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 7954resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 7955or <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 7956the algorithm states to INACTIVE.<wbr/></p> 7957<p>The camera device can do several state transitions between two results,<wbr/> if it is 7958allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 7959seen in a result.<wbr/></p> 7960<p>The state in the result is the state for this image (in sync with this image): if 7961AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 7962be good to use.<wbr/></p> 7963<p>Below are state transition tables for different AE modes.<wbr/></p> 7964<table> 7965<thead> 7966<tr> 7967<th align="center">State</th> 7968<th align="center">Transition Cause</th> 7969<th align="center">New State</th> 7970<th align="center">Notes</th> 7971</tr> 7972</thead> 7973<tbody> 7974<tr> 7975<td align="center">INACTIVE</td> 7976<td align="center"></td> 7977<td align="center">INACTIVE</td> 7978<td align="center">Camera device auto exposure algorithm is disabled</td> 7979</tr> 7980</tbody> 7981</table> 7982<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p> 7983<table> 7984<thead> 7985<tr> 7986<th align="center">State</th> 7987<th align="center">Transition Cause</th> 7988<th align="center">New State</th> 7989<th align="center">Notes</th> 7990</tr> 7991</thead> 7992<tbody> 7993<tr> 7994<td align="center">INACTIVE</td> 7995<td align="center">Camera device initiates AE scan</td> 7996<td align="center">SEARCHING</td> 7997<td align="center">Values changing</td> 7998</tr> 7999<tr> 8000<td align="center">INACTIVE</td> 8001<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 8002<td align="center">LOCKED</td> 8003<td align="center">Values locked</td> 8004</tr> 8005<tr> 8006<td align="center">SEARCHING</td> 8007<td align="center">Camera device finishes AE scan</td> 8008<td align="center">CONVERGED</td> 8009<td align="center">Good values,<wbr/> not changing</td> 8010</tr> 8011<tr> 8012<td align="center">SEARCHING</td> 8013<td align="center">Camera device finishes AE scan</td> 8014<td align="center">FLASH_<wbr/>REQUIRED</td> 8015<td align="center">Converged but too dark w/<wbr/>o flash</td> 8016</tr> 8017<tr> 8018<td align="center">SEARCHING</td> 8019<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 8020<td align="center">LOCKED</td> 8021<td align="center">Values locked</td> 8022</tr> 8023<tr> 8024<td align="center">CONVERGED</td> 8025<td align="center">Camera device initiates AE scan</td> 8026<td align="center">SEARCHING</td> 8027<td align="center">Values changing</td> 8028</tr> 8029<tr> 8030<td align="center">CONVERGED</td> 8031<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 8032<td align="center">LOCKED</td> 8033<td align="center">Values locked</td> 8034</tr> 8035<tr> 8036<td align="center">FLASH_<wbr/>REQUIRED</td> 8037<td align="center">Camera device initiates AE scan</td> 8038<td align="center">SEARCHING</td> 8039<td align="center">Values changing</td> 8040</tr> 8041<tr> 8042<td align="center">FLASH_<wbr/>REQUIRED</td> 8043<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 8044<td align="center">LOCKED</td> 8045<td align="center">Values locked</td> 8046</tr> 8047<tr> 8048<td align="center">LOCKED</td> 8049<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 8050<td align="center">SEARCHING</td> 8051<td align="center">Values not good after unlock</td> 8052</tr> 8053<tr> 8054<td align="center">LOCKED</td> 8055<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 8056<td align="center">CONVERGED</td> 8057<td align="center">Values good after unlock</td> 8058</tr> 8059<tr> 8060<td align="center">LOCKED</td> 8061<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 8062<td align="center">FLASH_<wbr/>REQUIRED</td> 8063<td align="center">Exposure good,<wbr/> but too dark</td> 8064</tr> 8065<tr> 8066<td align="center">PRECAPTURE</td> 8067<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 8068<td align="center">CONVERGED</td> 8069<td align="center">Ready for high-quality capture</td> 8070</tr> 8071<tr> 8072<td align="center">PRECAPTURE</td> 8073<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 8074<td align="center">LOCKED</td> 8075<td align="center">Ready for high-quality capture</td> 8076</tr> 8077<tr> 8078<td align="center">LOCKED</td> 8079<td align="center">aeLock is ON and aePrecaptureTrigger is START</td> 8080<td align="center">LOCKED</td> 8081<td align="center">Precapture trigger is ignored when AE is already locked</td> 8082</tr> 8083<tr> 8084<td align="center">LOCKED</td> 8085<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td> 8086<td align="center">LOCKED</td> 8087<td align="center">Precapture trigger is ignored when AE is already locked</td> 8088</tr> 8089<tr> 8090<td align="center">Any state (excluding LOCKED)</td> 8091<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 8092<td align="center">PRECAPTURE</td> 8093<td align="center">Start AE precapture metering sequence</td> 8094</tr> 8095<tr> 8096<td align="center">Any state (excluding LOCKED)</td> 8097<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td> 8098<td align="center">INACTIVE</td> 8099<td align="center">Currently active precapture metering sequence is canceled</td> 8100</tr> 8101</tbody> 8102</table> 8103<p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in 8104<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 8105the camera device finishes AE scan and it's too dark without flash.<wbr/></p> 8106<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 8107without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 8108can be skipped in that manner is called a transient state.<wbr/></p> 8109<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions 8110listed in above table,<wbr/> it is also legal for the camera device to skip one or more 8111transient states between two results.<wbr/> See below table for examples:</p> 8112<table> 8113<thead> 8114<tr> 8115<th align="center">State</th> 8116<th align="center">Transition Cause</th> 8117<th align="center">New State</th> 8118<th align="center">Notes</th> 8119</tr> 8120</thead> 8121<tbody> 8122<tr> 8123<td align="center">INACTIVE</td> 8124<td align="center">Camera device finished AE scan</td> 8125<td align="center">CONVERGED</td> 8126<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 8127</tr> 8128<tr> 8129<td align="center">Any state (excluding LOCKED)</td> 8130<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td> 8131<td align="center">FLASH_<wbr/>REQUIRED</td> 8132<td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 8133</tr> 8134<tr> 8135<td align="center">Any state (excluding LOCKED)</td> 8136<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td> 8137<td align="center">CONVERGED</td> 8138<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 8139</tr> 8140<tr> 8141<td align="center">Any state (excluding LOCKED)</td> 8142<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 8143<td align="center">FLASH_<wbr/>REQUIRED</td> 8144<td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence is canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> 8145</tr> 8146<tr> 8147<td align="center">Any state (excluding LOCKED)</td> 8148<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 8149<td align="center">CONVERGED</td> 8150<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> 8151</tr> 8152<tr> 8153<td align="center">CONVERGED</td> 8154<td align="center">Camera device finished AE scan</td> 8155<td align="center">FLASH_<wbr/>REQUIRED</td> 8156<td align="center">Converged but too dark w/<wbr/>o flash after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 8157</tr> 8158<tr> 8159<td align="center">FLASH_<wbr/>REQUIRED</td> 8160<td align="center">Camera device finished AE scan</td> 8161<td align="center">CONVERGED</td> 8162<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 8163</tr> 8164</tbody> 8165</table> 8166 </td> 8167 </tr> 8168 8169 8170 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8171 <!-- end of entry --> 8172 8173 8174 <tr class="entry" id="dynamic_android.control.afMode"> 8175 <td class="entry_name 8176 " rowspan="5"> 8177 android.<wbr/>control.<wbr/>af<wbr/>Mode 8178 </td> 8179 <td class="entry_type"> 8180 <span class="entry_type_name entry_type_name_enum">byte</span> 8181 8182 <span class="entry_type_visibility"> [public]</span> 8183 8184 8185 <span class="entry_type_hwlevel">[legacy] </span> 8186 8187 8188 8189 <ul class="entry_type_enum"> 8190 <li> 8191 <span class="entry_type_enum_name">OFF (v3.2)</span> 8192 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 8193<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 8194application.<wbr/></p></span> 8195 </li> 8196 <li> 8197 <span class="entry_type_enum_name">AUTO (v3.2)</span> 8198 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 8199<p>In this mode,<wbr/> the lens does not move unless 8200the autofocus trigger action is called.<wbr/> When that trigger 8201is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 8202the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 8203<p>Always supported if lens is not fixed focus.<wbr/></p> 8204<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 8205is fixed-focus.<wbr/></p> 8206<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 8207and sets the AF state to INACTIVE.<wbr/></p></span> 8208 </li> 8209 <li> 8210 <span class="entry_type_enum_name">MACRO (v3.2)</span> 8211 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 8212<p>In this mode,<wbr/> the lens does not move unless the 8213autofocus trigger action is called.<wbr/> When that trigger is 8214activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 8215the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 8216mode is optimized for focusing on objects very close to 8217the camera.<wbr/></p> 8218<p>When that trigger is activated,<wbr/> AF will transition to 8219ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 8220NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 8221position to default,<wbr/> and sets the AF state to 8222INACTIVE.<wbr/></p></span> 8223 </li> 8224 <li> 8225 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span> 8226 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 8227position continually to attempt to provide a 8228constantly-in-focus image stream.<wbr/></p> 8229<p>The focusing behavior should be suitable for good quality 8230video recording; typically this means slower focus 8231movement and no overshoots.<wbr/> When the AF trigger is not 8232involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 8233and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 8234states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 8235the algorithm should immediately transition into 8236AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 8237lens position until a cancel AF trigger is received.<wbr/></p> 8238<p>Once cancel is received,<wbr/> the algorithm should transition 8239back to INACTIVE and resume passive scan.<wbr/> Note that this 8240behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 8241ongoing PASSIVE_<wbr/>SCAN must immediately be 8242canceled.<wbr/></p></span> 8243 </li> 8244 <li> 8245 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span> 8246 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 8247position continually to attempt to provide a 8248constantly-in-focus image stream.<wbr/></p> 8249<p>The focusing behavior should be suitable for still image 8250capture; typically this means focusing as fast as 8251possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 8252algorithm should start in INACTIVE state,<wbr/> and then 8253transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 8254appropriate as it attempts to maintain focus.<wbr/> When the AF 8255trigger is activated,<wbr/> the algorithm should finish its 8256PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 8257AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 8258lens position until a cancel AF trigger is received.<wbr/></p> 8259<p>When the AF cancel trigger is activated,<wbr/> the algorithm 8260should transition back to INACTIVE and then act as if it 8261has just been started.<wbr/></p></span> 8262 </li> 8263 <li> 8264 <span class="entry_type_enum_name">EDOF (v3.2)</span> 8265 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 8266<p>The camera device will produce images with an extended 8267depth of field automatically; no special focusing 8268operations need to be done before taking a picture.<wbr/></p> 8269<p>AF triggers are ignored,<wbr/> and the AF state will always be 8270INACTIVE.<wbr/></p></span> 8271 </li> 8272 </ul> 8273 8274 </td> <!-- entry_type --> 8275 8276 <td class="entry_description"> 8277 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 8278mode it is set to.<wbr/></p> 8279 </td> 8280 8281 <td class="entry_units"> 8282 </td> 8283 8284 <td class="entry_range"> 8285 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 8286 </td> 8287 8288 <td class="entry_hal_version"> 8289 <p>3.<wbr/>2</p> 8290 </td> 8291 8292 <td class="entry_tags"> 8293 <ul class="entry_tags"> 8294 <li><a href="#tag_BC">BC</a></li> 8295 </ul> 8296 </td> 8297 8298 </tr> 8299 <tr class="entries_header"> 8300 <th class="th_details" colspan="6">Details</th> 8301 </tr> 8302 <tr class="entry_cont"> 8303 <td class="entry_details" colspan="6"> 8304 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 8305(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 8306when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 8307dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 8308setting <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> 8309<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 8310the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 8311in result metadata.<wbr/></p> 8312 </td> 8313 </tr> 8314 8315 <tr class="entries_header"> 8316 <th class="th_details" colspan="6">HAL Implementation Details</th> 8317 </tr> 8318 <tr class="entry_cont"> 8319 <td class="entry_details" colspan="6"> 8320 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 8321request (<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 8322up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 8323<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 8324locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 8325after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 8326the same focal plane remains in focus.<wbr/></p> 8327<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 8328scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 8329(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 8330same lock behavior as above.<wbr/></p> 8331<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 8332focus 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/> 8333However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 8334manual control.<wbr/></p> 8335<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 8336camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 8337remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 8338by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 8339that will arise on camera modules with open-loop VCMs.<wbr/></p> 8340 </td> 8341 </tr> 8342 8343 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8344 <!-- end of entry --> 8345 8346 8347 <tr class="entry" id="dynamic_android.control.afRegions"> 8348 <td class="entry_name 8349 " rowspan="5"> 8350 android.<wbr/>control.<wbr/>af<wbr/>Regions 8351 </td> 8352 <td class="entry_type"> 8353 <span class="entry_type_name">int32</span> 8354 <span class="entry_type_container">x</span> 8355 8356 <span class="entry_type_array"> 8357 5 x area_count 8358 </span> 8359 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 8360 8361 8362 8363 8364 8365 8366 </td> <!-- entry_type --> 8367 8368 <td class="entry_description"> 8369 <p>List of metering areas to use for auto-focus.<wbr/></p> 8370 </td> 8371 8372 <td class="entry_units"> 8373 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 8374 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 8375 distortion correction capability and mode 8376 </td> 8377 8378 <td class="entry_range"> 8379 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 8380<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> 8381depending on distortion correction capability and mode</p> 8382 </td> 8383 8384 <td class="entry_hal_version"> 8385 <p>3.<wbr/>2</p> 8386 </td> 8387 8388 <td class="entry_tags"> 8389 <ul class="entry_tags"> 8390 <li><a href="#tag_BC">BC</a></li> 8391 </ul> 8392 </td> 8393 8394 </tr> 8395 <tr class="entries_header"> 8396 <th class="th_details" colspan="6">Details</th> 8397 </tr> 8398 <tr class="entry_cont"> 8399 <td class="entry_details" colspan="6"> 8400 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 8401Otherwise will always be present.<wbr/></p> 8402<p>The maximum number of focus areas supported by the device is determined by the value 8403of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 8404<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 8405system 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 8406the top-left pixel in the active pixel array,<wbr/> and 8407(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 8408<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 8409active pixel array.<wbr/></p> 8410<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 8411system depends on the mode being set.<wbr/> 8412When the distortion correction mode is OFF,<wbr/> the coordinate system follows 8413<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 8414<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 8415(<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/> 8416<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 8417pixel in the pre-correction active pixel array.<wbr/> 8418When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 8419<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 8420<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 8421(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 8422<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 8423active pixel array.<wbr/></p> 8424<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 8425for every pixel in the area.<wbr/> This means that a large metering area 8426with the same weight as a smaller area will have more effect in 8427the metering result.<wbr/> Metering areas can partially overlap and the 8428camera device will add the weights in the overlap region.<wbr/></p> 8429<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 8430is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 8431ignored.<wbr/></p> 8432<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 8433camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or 8434the region selected by the camera device as the focus area of interest.<wbr/></p> 8435<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 8436capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 8437region and output only the intersection rectangle as the metering region in the result 8438metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 8439not reported in the result metadata.<wbr/></p> 8440<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 8441preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 8442pre-zoom field of view.<wbr/> This means that the same afRegions values at different 8443<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The afRegions 8444coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the 8445zoomed 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 8446afRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the 8447scene 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 8448activeArraySize or preCorrectionActiveArraySize still depends on distortion correction 8449mode.<wbr/></p> 8450<p>For camera devices with the 8451<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> 8452capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 8453<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 8454coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 8455<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> 8456 </td> 8457 </tr> 8458 8459 <tr class="entries_header"> 8460 <th class="th_details" colspan="6">HAL Implementation Details</th> 8461 </tr> 8462 <tr class="entry_cont"> 8463 <td class="entry_details" colspan="6"> 8464 <p>The HAL level representation of MeteringRectangle[] is a 8465int[5 * area_<wbr/>count].<wbr/> 8466Every five elements represent a metering region of 8467(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 8468The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 8469exclusive on xmax and ymax.<wbr/> 8470HAL must always report metering regions in the coordinate system of pre-correction 8471active array.<wbr/></p> 8472 </td> 8473 </tr> 8474 8475 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8476 <!-- end of entry --> 8477 8478 8479 <tr class="entry" id="dynamic_android.control.afTrigger"> 8480 <td class="entry_name 8481 " rowspan="5"> 8482 android.<wbr/>control.<wbr/>af<wbr/>Trigger 8483 </td> 8484 <td class="entry_type"> 8485 <span class="entry_type_name entry_type_name_enum">byte</span> 8486 8487 <span class="entry_type_visibility"> [public]</span> 8488 8489 8490 <span class="entry_type_hwlevel">[legacy] </span> 8491 8492 8493 8494 <ul class="entry_type_enum"> 8495 <li> 8496 <span class="entry_type_enum_name">IDLE (v3.2)</span> 8497 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 8498 </li> 8499 <li> 8500 <span class="entry_type_enum_name">START (v3.2)</span> 8501 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 8502 </li> 8503 <li> 8504 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 8505 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 8506state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 8507 </li> 8508 </ul> 8509 8510 </td> <!-- entry_type --> 8511 8512 <td class="entry_description"> 8513 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 8514 </td> 8515 8516 <td class="entry_units"> 8517 </td> 8518 8519 <td class="entry_range"> 8520 </td> 8521 8522 <td class="entry_hal_version"> 8523 <p>3.<wbr/>2</p> 8524 </td> 8525 8526 <td class="entry_tags"> 8527 <ul class="entry_tags"> 8528 <li><a href="#tag_BC">BC</a></li> 8529 </ul> 8530 </td> 8531 8532 </tr> 8533 <tr class="entries_header"> 8534 <th class="th_details" colspan="6">Details</th> 8535 </tr> 8536 <tr class="entry_cont"> 8537 <td class="entry_details" colspan="6"> 8538 <p>This entry is normally set to IDLE,<wbr/> or is not 8539included at all in the request settings.<wbr/></p> 8540<p>When included and set to START,<wbr/> the camera device will trigger the 8541autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 8542<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 8543and return to its initial AF state.<wbr/></p> 8544<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 8545single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 8546START for multiple captures in a row means restarting the AF operation over 8547and over again.<wbr/></p> 8548<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> 8549<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> 8550simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 8551the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 8552focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 8553trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 8554changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 8555 </td> 8556 </tr> 8557 8558 <tr class="entries_header"> 8559 <th class="th_details" colspan="6">HAL Implementation Details</th> 8560 </tr> 8561 <tr class="entry_cont"> 8562 <td class="entry_details" colspan="6"> 8563 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 8564(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 8565treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 8566AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 8567to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 8568 </td> 8569 </tr> 8570 8571 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8572 <!-- end of entry --> 8573 8574 8575 <tr class="entry" id="dynamic_android.control.afState"> 8576 <td class="entry_name 8577 " rowspan="3"> 8578 android.<wbr/>control.<wbr/>af<wbr/>State 8579 </td> 8580 <td class="entry_type"> 8581 <span class="entry_type_name entry_type_name_enum">byte</span> 8582 8583 <span class="entry_type_visibility"> [public]</span> 8584 8585 8586 <span class="entry_type_hwlevel">[legacy] </span> 8587 8588 8589 8590 <ul class="entry_type_enum"> 8591 <li> 8592 <span class="entry_type_enum_name">INACTIVE (v3.2)</span> 8593 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked 8594to scan.<wbr/></p> 8595<p>When a camera device is opened,<wbr/> it starts in this 8596state.<wbr/> This is a transient state,<wbr/> the camera device may 8597skip reporting this state in capture 8598result.<wbr/></p></span> 8599 </li> 8600 <li> 8601 <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span> 8602 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the 8603camera device in a continuous autofocus mode.<wbr/></p> 8604<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 8605state,<wbr/> the camera device may skip reporting this state in 8606capture result.<wbr/></p></span> 8607 </li> 8608 <li> 8609 <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span> 8610 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may 8611restart scanning at any time.<wbr/></p> 8612<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 8613state,<wbr/> the camera device may skip reporting this state in 8614capture result.<wbr/></p></span> 8615 </li> 8616 <li> 8617 <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span> 8618 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was 8619triggered by AF trigger.<wbr/></p> 8620<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient 8621state,<wbr/> the camera device may skip reporting this state in 8622capture result.<wbr/></p></span> 8623 </li> 8624 <li> 8625 <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span> 8626 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked 8627focus.<wbr/></p> 8628<p>This state is reached only after an explicit START AF trigger has been 8629sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> 8630<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 8631a 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> 8632 </li> 8633 <li> 8634 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span> 8635 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked 8636focus.<wbr/></p> 8637<p>This state is reached only after an explicit START AF trigger has been 8638sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> 8639<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 8640a 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> 8641 </li> 8642 <li> 8643 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span> 8644 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> 8645and may restart scanning at any time.<wbr/></p> 8646<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera 8647device may skip reporting this state in capture result.<wbr/></p> 8648<p>LEGACY camera devices do not support this state.<wbr/> When a passive 8649scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> 8650 </li> 8651 </ul> 8652 8653 </td> <!-- entry_type --> 8654 8655 <td class="entry_description"> 8656 <p>Current state of auto-focus (AF) algorithm.<wbr/></p> 8657 </td> 8658 8659 <td class="entry_units"> 8660 </td> 8661 8662 <td class="entry_range"> 8663 </td> 8664 8665 <td class="entry_hal_version"> 8666 <p>3.<wbr/>2</p> 8667 </td> 8668 8669 <td class="entry_tags"> 8670 </td> 8671 8672 </tr> 8673 <tr class="entries_header"> 8674 <th class="th_details" colspan="6">Details</th> 8675 </tr> 8676 <tr class="entry_cont"> 8677 <td class="entry_details" colspan="6"> 8678 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 8679resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 8680or <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 8681the algorithm states to INACTIVE.<wbr/></p> 8682<p>The camera device can do several state transitions between two results,<wbr/> if it is 8683allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 8684seen in a result.<wbr/></p> 8685<p>The state in the result is the state for this image (in sync with this image): if 8686AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 8687be sharp.<wbr/></p> 8688<p>Below are state transition tables for different AF modes.<wbr/></p> 8689<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> 8690<table> 8691<thead> 8692<tr> 8693<th align="center">State</th> 8694<th align="center">Transition Cause</th> 8695<th align="center">New State</th> 8696<th align="center">Notes</th> 8697</tr> 8698</thead> 8699<tbody> 8700<tr> 8701<td align="center">INACTIVE</td> 8702<td align="center"></td> 8703<td align="center">INACTIVE</td> 8704<td align="center">Never changes</td> 8705</tr> 8706</tbody> 8707</table> 8708<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> 8709<table> 8710<thead> 8711<tr> 8712<th align="center">State</th> 8713<th align="center">Transition Cause</th> 8714<th align="center">New State</th> 8715<th align="center">Notes</th> 8716</tr> 8717</thead> 8718<tbody> 8719<tr> 8720<td align="center">INACTIVE</td> 8721<td align="center">AF_<wbr/>TRIGGER</td> 8722<td align="center">ACTIVE_<wbr/>SCAN</td> 8723<td align="center">Start AF sweep,<wbr/> Lens now moving</td> 8724</tr> 8725<tr> 8726<td align="center">ACTIVE_<wbr/>SCAN</td> 8727<td align="center">AF sweep done</td> 8728<td align="center">FOCUSED_<wbr/>LOCKED</td> 8729<td align="center">Focused,<wbr/> Lens now locked</td> 8730</tr> 8731<tr> 8732<td align="center">ACTIVE_<wbr/>SCAN</td> 8733<td align="center">AF sweep done</td> 8734<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8735<td align="center">Not focused,<wbr/> Lens now locked</td> 8736</tr> 8737<tr> 8738<td align="center">ACTIVE_<wbr/>SCAN</td> 8739<td align="center">AF_<wbr/>CANCEL</td> 8740<td align="center">INACTIVE</td> 8741<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 8742</tr> 8743<tr> 8744<td align="center">FOCUSED_<wbr/>LOCKED</td> 8745<td align="center">AF_<wbr/>CANCEL</td> 8746<td align="center">INACTIVE</td> 8747<td align="center">Cancel/<wbr/>reset AF</td> 8748</tr> 8749<tr> 8750<td align="center">FOCUSED_<wbr/>LOCKED</td> 8751<td align="center">AF_<wbr/>TRIGGER</td> 8752<td align="center">ACTIVE_<wbr/>SCAN</td> 8753<td align="center">Start new sweep,<wbr/> Lens now moving</td> 8754</tr> 8755<tr> 8756<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8757<td align="center">AF_<wbr/>CANCEL</td> 8758<td align="center">INACTIVE</td> 8759<td align="center">Cancel/<wbr/>reset AF</td> 8760</tr> 8761<tr> 8762<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8763<td align="center">AF_<wbr/>TRIGGER</td> 8764<td align="center">ACTIVE_<wbr/>SCAN</td> 8765<td align="center">Start new sweep,<wbr/> Lens now moving</td> 8766</tr> 8767<tr> 8768<td align="center">Any state</td> 8769<td align="center">Mode change</td> 8770<td align="center">INACTIVE</td> 8771<td align="center"></td> 8772</tr> 8773</tbody> 8774</table> 8775<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 8776without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 8777can be skipped in that manner is called a transient state.<wbr/></p> 8778<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 8779state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 8780one or more transient states between two results.<wbr/> See below table for examples:</p> 8781<table> 8782<thead> 8783<tr> 8784<th align="center">State</th> 8785<th align="center">Transition Cause</th> 8786<th align="center">New State</th> 8787<th align="center">Notes</th> 8788</tr> 8789</thead> 8790<tbody> 8791<tr> 8792<td align="center">INACTIVE</td> 8793<td align="center">AF_<wbr/>TRIGGER</td> 8794<td align="center">FOCUSED_<wbr/>LOCKED</td> 8795<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 8796</tr> 8797<tr> 8798<td align="center">INACTIVE</td> 8799<td align="center">AF_<wbr/>TRIGGER</td> 8800<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8801<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 8802</tr> 8803<tr> 8804<td align="center">FOCUSED_<wbr/>LOCKED</td> 8805<td align="center">AF_<wbr/>TRIGGER</td> 8806<td align="center">FOCUSED_<wbr/>LOCKED</td> 8807<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 8808</tr> 8809<tr> 8810<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8811<td align="center">AF_<wbr/>TRIGGER</td> 8812<td align="center">FOCUSED_<wbr/>LOCKED</td> 8813<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 8814</tr> 8815</tbody> 8816</table> 8817<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> 8818<table> 8819<thead> 8820<tr> 8821<th align="center">State</th> 8822<th align="center">Transition Cause</th> 8823<th align="center">New State</th> 8824<th align="center">Notes</th> 8825</tr> 8826</thead> 8827<tbody> 8828<tr> 8829<td align="center">INACTIVE</td> 8830<td align="center">Camera device initiates new scan</td> 8831<td align="center">PASSIVE_<wbr/>SCAN</td> 8832<td align="center">Start AF scan,<wbr/> Lens now moving</td> 8833</tr> 8834<tr> 8835<td align="center">INACTIVE</td> 8836<td align="center">AF_<wbr/>TRIGGER</td> 8837<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8838<td align="center">AF state query,<wbr/> Lens now locked</td> 8839</tr> 8840<tr> 8841<td align="center">PASSIVE_<wbr/>SCAN</td> 8842<td align="center">Camera device completes current scan</td> 8843<td align="center">PASSIVE_<wbr/>FOCUSED</td> 8844<td align="center">End AF scan,<wbr/> Lens now locked</td> 8845</tr> 8846<tr> 8847<td align="center">PASSIVE_<wbr/>SCAN</td> 8848<td align="center">Camera device fails current scan</td> 8849<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 8850<td align="center">End AF scan,<wbr/> Lens now locked</td> 8851</tr> 8852<tr> 8853<td align="center">PASSIVE_<wbr/>SCAN</td> 8854<td align="center">AF_<wbr/>TRIGGER</td> 8855<td align="center">FOCUSED_<wbr/>LOCKED</td> 8856<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> 8857</tr> 8858<tr> 8859<td align="center">PASSIVE_<wbr/>SCAN</td> 8860<td align="center">AF_<wbr/>TRIGGER</td> 8861<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8862<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> 8863</tr> 8864<tr> 8865<td align="center">PASSIVE_<wbr/>SCAN</td> 8866<td align="center">AF_<wbr/>CANCEL</td> 8867<td align="center">INACTIVE</td> 8868<td align="center">Reset lens position,<wbr/> Lens now locked</td> 8869</tr> 8870<tr> 8871<td align="center">PASSIVE_<wbr/>FOCUSED</td> 8872<td align="center">Camera device initiates new scan</td> 8873<td align="center">PASSIVE_<wbr/>SCAN</td> 8874<td align="center">Start AF scan,<wbr/> Lens now moving</td> 8875</tr> 8876<tr> 8877<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 8878<td align="center">Camera device initiates new scan</td> 8879<td align="center">PASSIVE_<wbr/>SCAN</td> 8880<td align="center">Start AF scan,<wbr/> Lens now moving</td> 8881</tr> 8882<tr> 8883<td align="center">PASSIVE_<wbr/>FOCUSED</td> 8884<td align="center">AF_<wbr/>TRIGGER</td> 8885<td align="center">FOCUSED_<wbr/>LOCKED</td> 8886<td align="center">Immediate transition,<wbr/> lens now locked</td> 8887</tr> 8888<tr> 8889<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 8890<td align="center">AF_<wbr/>TRIGGER</td> 8891<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8892<td align="center">Immediate transition,<wbr/> lens now locked</td> 8893</tr> 8894<tr> 8895<td align="center">FOCUSED_<wbr/>LOCKED</td> 8896<td align="center">AF_<wbr/>TRIGGER</td> 8897<td align="center">FOCUSED_<wbr/>LOCKED</td> 8898<td align="center">No effect</td> 8899</tr> 8900<tr> 8901<td align="center">FOCUSED_<wbr/>LOCKED</td> 8902<td align="center">AF_<wbr/>CANCEL</td> 8903<td align="center">INACTIVE</td> 8904<td align="center">Restart AF scan</td> 8905</tr> 8906<tr> 8907<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8908<td align="center">AF_<wbr/>TRIGGER</td> 8909<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8910<td align="center">No effect</td> 8911</tr> 8912<tr> 8913<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8914<td align="center">AF_<wbr/>CANCEL</td> 8915<td align="center">INACTIVE</td> 8916<td align="center">Restart AF scan</td> 8917</tr> 8918</tbody> 8919</table> 8920<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> 8921<table> 8922<thead> 8923<tr> 8924<th align="center">State</th> 8925<th align="center">Transition Cause</th> 8926<th align="center">New State</th> 8927<th align="center">Notes</th> 8928</tr> 8929</thead> 8930<tbody> 8931<tr> 8932<td align="center">INACTIVE</td> 8933<td align="center">Camera device initiates new scan</td> 8934<td align="center">PASSIVE_<wbr/>SCAN</td> 8935<td align="center">Start AF scan,<wbr/> Lens now moving</td> 8936</tr> 8937<tr> 8938<td align="center">INACTIVE</td> 8939<td align="center">AF_<wbr/>TRIGGER</td> 8940<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8941<td align="center">AF state query,<wbr/> Lens now locked</td> 8942</tr> 8943<tr> 8944<td align="center">PASSIVE_<wbr/>SCAN</td> 8945<td align="center">Camera device completes current scan</td> 8946<td align="center">PASSIVE_<wbr/>FOCUSED</td> 8947<td align="center">End AF scan,<wbr/> Lens now locked</td> 8948</tr> 8949<tr> 8950<td align="center">PASSIVE_<wbr/>SCAN</td> 8951<td align="center">Camera device fails current scan</td> 8952<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 8953<td align="center">End AF scan,<wbr/> Lens now locked</td> 8954</tr> 8955<tr> 8956<td align="center">PASSIVE_<wbr/>SCAN</td> 8957<td align="center">AF_<wbr/>TRIGGER</td> 8958<td align="center">FOCUSED_<wbr/>LOCKED</td> 8959<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td> 8960</tr> 8961<tr> 8962<td align="center">PASSIVE_<wbr/>SCAN</td> 8963<td align="center">AF_<wbr/>TRIGGER</td> 8964<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8965<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> 8966</tr> 8967<tr> 8968<td align="center">PASSIVE_<wbr/>SCAN</td> 8969<td align="center">AF_<wbr/>CANCEL</td> 8970<td align="center">INACTIVE</td> 8971<td align="center">Reset lens position,<wbr/> Lens now locked</td> 8972</tr> 8973<tr> 8974<td align="center">PASSIVE_<wbr/>FOCUSED</td> 8975<td align="center">Camera device initiates new scan</td> 8976<td align="center">PASSIVE_<wbr/>SCAN</td> 8977<td align="center">Start AF scan,<wbr/> Lens now moving</td> 8978</tr> 8979<tr> 8980<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 8981<td align="center">Camera device initiates new scan</td> 8982<td align="center">PASSIVE_<wbr/>SCAN</td> 8983<td align="center">Start AF scan,<wbr/> Lens now moving</td> 8984</tr> 8985<tr> 8986<td align="center">PASSIVE_<wbr/>FOCUSED</td> 8987<td align="center">AF_<wbr/>TRIGGER</td> 8988<td align="center">FOCUSED_<wbr/>LOCKED</td> 8989<td align="center">Immediate trans.<wbr/> Lens now locked</td> 8990</tr> 8991<tr> 8992<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 8993<td align="center">AF_<wbr/>TRIGGER</td> 8994<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 8995<td align="center">Immediate trans.<wbr/> Lens now locked</td> 8996</tr> 8997<tr> 8998<td align="center">FOCUSED_<wbr/>LOCKED</td> 8999<td align="center">AF_<wbr/>TRIGGER</td> 9000<td align="center">FOCUSED_<wbr/>LOCKED</td> 9001<td align="center">No effect</td> 9002</tr> 9003<tr> 9004<td align="center">FOCUSED_<wbr/>LOCKED</td> 9005<td align="center">AF_<wbr/>CANCEL</td> 9006<td align="center">INACTIVE</td> 9007<td align="center">Restart AF scan</td> 9008</tr> 9009<tr> 9010<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 9011<td align="center">AF_<wbr/>TRIGGER</td> 9012<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 9013<td align="center">No effect</td> 9014</tr> 9015<tr> 9016<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 9017<td align="center">AF_<wbr/>CANCEL</td> 9018<td align="center">INACTIVE</td> 9019<td align="center">Restart AF scan</td> 9020</tr> 9021</tbody> 9022</table> 9023<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 9024(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 9025camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 9026will be evaluated in the context of the new mode in the request.<wbr/> 9027See below table for examples:</p> 9028<table> 9029<thead> 9030<tr> 9031<th align="center">State</th> 9032<th align="center">Transition Cause</th> 9033<th align="center">New State</th> 9034<th align="center">Notes</th> 9035</tr> 9036</thead> 9037<tbody> 9038<tr> 9039<td align="center">any state</td> 9040<td align="center">CAF-->AUTO mode switch</td> 9041<td align="center">INACTIVE</td> 9042<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 9043</tr> 9044<tr> 9045<td align="center">any state</td> 9046<td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 9047<td align="center">trigger-reachable states from INACTIVE</td> 9048<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 9049</tr> 9050<tr> 9051<td align="center">any state</td> 9052<td align="center">AUTO-->CAF mode switch</td> 9053<td align="center">passively reachable states from INACTIVE</td> 9054<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 9055</tr> 9056</tbody> 9057</table> 9058 </td> 9059 </tr> 9060 9061 9062 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9063 <!-- end of entry --> 9064 9065 9066 <tr class="entry" id="dynamic_android.control.afTriggerId"> 9067 <td class="entry_name 9068 entry_name_deprecated 9069 " rowspan="3"> 9070 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 9071 </td> 9072 <td class="entry_type"> 9073 <span class="entry_type_name">int32</span> 9074 9075 <span class="entry_type_visibility"> [system]</span> 9076 9077 9078 9079 <span class="entry_type_deprecated">[deprecated] </span> 9080 9081 9082 9083 </td> <!-- entry_type --> 9084 9085 <td class="entry_description"> 9086 <p>The ID sent with the latest 9087CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 9088 </td> 9089 9090 <td class="entry_units"> 9091 </td> 9092 9093 <td class="entry_range"> 9094 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 9095 </td> 9096 9097 <td class="entry_hal_version"> 9098 <p>3.<wbr/>2</p> 9099 </td> 9100 9101 <td class="entry_tags"> 9102 </td> 9103 9104 </tr> 9105 <tr class="entries_header"> 9106 <th class="th_details" colspan="6">Details</th> 9107 </tr> 9108 <tr class="entry_cont"> 9109 <td class="entry_details" colspan="6"> 9110 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 9111received yet by HAL.<wbr/> Always updated even if AF algorithm 9112ignores the trigger</p> 9113 </td> 9114 </tr> 9115 9116 9117 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9118 <!-- end of entry --> 9119 9120 9121 <tr class="entry" id="dynamic_android.control.awbLock"> 9122 <td class="entry_name 9123 " rowspan="3"> 9124 android.<wbr/>control.<wbr/>awb<wbr/>Lock 9125 </td> 9126 <td class="entry_type"> 9127 <span class="entry_type_name entry_type_name_enum">byte</span> 9128 9129 <span class="entry_type_visibility"> [public as boolean]</span> 9130 9131 9132 <span class="entry_type_hwlevel">[legacy] </span> 9133 9134 9135 9136 <ul class="entry_type_enum"> 9137 <li> 9138 <span class="entry_type_enum_name">OFF (v3.2)</span> 9139 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 9140algorithm is free to update its parameters if in AUTO 9141mode.<wbr/></p></span> 9142 </li> 9143 <li> 9144 <span class="entry_type_enum_name">ON (v3.2)</span> 9145 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 9146algorithm will not update its parameters while the lock 9147is active.<wbr/></p></span> 9148 </li> 9149 </ul> 9150 9151 </td> <!-- entry_type --> 9152 9153 <td class="entry_description"> 9154 <p>Whether auto-white balance (AWB) is currently locked to its 9155latest calculated values.<wbr/></p> 9156 </td> 9157 9158 <td class="entry_units"> 9159 </td> 9160 9161 <td class="entry_range"> 9162 </td> 9163 9164 <td class="entry_hal_version"> 9165 <p>3.<wbr/>2</p> 9166 </td> 9167 9168 <td class="entry_tags"> 9169 <ul class="entry_tags"> 9170 <li><a href="#tag_BC">BC</a></li> 9171 </ul> 9172 </td> 9173 9174 </tr> 9175 <tr class="entries_header"> 9176 <th class="th_details" colspan="6">Details</th> 9177 </tr> 9178 <tr class="entry_cont"> 9179 <td class="entry_details" colspan="6"> 9180 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 9181and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 9182<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 9183get locked do not necessarily correspond to the settings that were present in the 9184latest capture result received from the camera device,<wbr/> since additional captures 9185and AWB updates may have occurred even before the result was sent out.<wbr/> If an 9186application is switching between automatic and manual control and wishes to eliminate 9187any flicker during the switch,<wbr/> the following procedure is recommended:</p> 9188<ol> 9189<li>Starting in auto-AWB mode:</li> 9190<li>Lock AWB</li> 9191<li>Wait for the first result to be output that has the AWB locked</li> 9192<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 9193<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 9194</ol> 9195<p>Note that AWB lock is only meaningful when 9196<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 9197AWB is already fixed to a specific setting.<wbr/></p> 9198<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 9199 </td> 9200 </tr> 9201 9202 9203 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9204 <!-- end of entry --> 9205 9206 9207 <tr class="entry" id="dynamic_android.control.awbMode"> 9208 <td class="entry_name 9209 " rowspan="3"> 9210 android.<wbr/>control.<wbr/>awb<wbr/>Mode 9211 </td> 9212 <td class="entry_type"> 9213 <span class="entry_type_name entry_type_name_enum">byte</span> 9214 9215 <span class="entry_type_visibility"> [public]</span> 9216 9217 9218 <span class="entry_type_hwlevel">[legacy] </span> 9219 9220 9221 9222 <ul class="entry_type_enum"> 9223 <li> 9224 <span class="entry_type_enum_name">OFF (v3.2)</span> 9225 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 9226<p>The application-selected color transform matrix 9227(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 9228(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 9229device for manual white balance control.<wbr/></p></span> 9230 </li> 9231 <li> 9232 <span class="entry_type_enum_name">AUTO (v3.2)</span> 9233 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 9234<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 9235and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 9236For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 9237values used by the camera device for the transform and gains 9238will be available in the capture result for this request.<wbr/></p></span> 9239 </li> 9240 <li> 9241 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span> 9242 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 9243the camera device uses incandescent light as the assumed scene 9244illumination for white balance.<wbr/></p> 9245<p>While the exact white balance transforms are up to the 9246camera device,<wbr/> they will approximately match the CIE 9247standard illuminant A.<wbr/></p> 9248<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 9249and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 9250For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 9251values used by the camera device for the transform and gains 9252will be available in the capture result for this request.<wbr/></p></span> 9253 </li> 9254 <li> 9255 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> 9256 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 9257the camera device uses fluorescent light as the assumed scene 9258illumination for white balance.<wbr/></p> 9259<p>While the exact white balance transforms are up to the 9260camera device,<wbr/> they will approximately match the CIE 9261standard illuminant F2.<wbr/></p> 9262<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 9263and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 9264For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 9265values used by the camera device for the transform and gains 9266will be available in the capture result for this request.<wbr/></p></span> 9267 </li> 9268 <li> 9269 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span> 9270 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 9271the camera device uses warm fluorescent light as the assumed scene 9272illumination for white balance.<wbr/></p> 9273<p>While the exact white balance transforms are up to the 9274camera device,<wbr/> they will approximately match the CIE 9275standard illuminant F4.<wbr/></p> 9276<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 9277and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 9278For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 9279values used by the camera device for the transform and gains 9280will be available in the capture result for this request.<wbr/></p></span> 9281 </li> 9282 <li> 9283 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> 9284 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 9285the camera device uses daylight light as the assumed scene 9286illumination for white balance.<wbr/></p> 9287<p>While the exact white balance transforms are up to the 9288camera device,<wbr/> they will approximately match the CIE 9289standard illuminant D65.<wbr/></p> 9290<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 9291and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 9292For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 9293values used by the camera device for the transform and gains 9294will be available in the capture result for this request.<wbr/></p></span> 9295 </li> 9296 <li> 9297 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span> 9298 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 9299the camera device uses cloudy daylight light as the assumed scene 9300illumination for white balance.<wbr/></p> 9301<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 9302and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 9303For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 9304values used by the camera device for the transform and gains 9305will be available in the capture result for this request.<wbr/></p></span> 9306 </li> 9307 <li> 9308 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span> 9309 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 9310the camera device uses twilight light as the assumed scene 9311illumination for white balance.<wbr/></p> 9312<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 9313and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 9314For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 9315values used by the camera device for the transform and gains 9316will be available in the capture result for this request.<wbr/></p></span> 9317 </li> 9318 <li> 9319 <span class="entry_type_enum_name">SHADE (v3.2)</span> 9320 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 9321the camera device uses shade light as the assumed scene 9322illumination for white balance.<wbr/></p> 9323<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 9324and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 9325For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 9326values used by the camera device for the transform and gains 9327will be available in the capture result for this request.<wbr/></p></span> 9328 </li> 9329 </ul> 9330 9331 </td> <!-- entry_type --> 9332 9333 <td class="entry_description"> 9334 <p>Whether auto-white balance (AWB) is currently setting the color 9335transform fields,<wbr/> and what its illumination target 9336is.<wbr/></p> 9337 </td> 9338 9339 <td class="entry_units"> 9340 </td> 9341 9342 <td class="entry_range"> 9343 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 9344 </td> 9345 9346 <td class="entry_hal_version"> 9347 <p>3.<wbr/>2</p> 9348 </td> 9349 9350 <td class="entry_tags"> 9351 <ul class="entry_tags"> 9352 <li><a href="#tag_BC">BC</a></li> 9353 </ul> 9354 </td> 9355 9356 </tr> 9357 <tr class="entries_header"> 9358 <th class="th_details" colspan="6">Details</th> 9359 </tr> 9360 <tr class="entry_cont"> 9361 <td class="entry_details" colspan="6"> 9362 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 9363<p>When set to the AUTO mode,<wbr/> the camera device's auto-white balance 9364routine is enabled,<wbr/> overriding the application's selected 9365<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 9366<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> 9367is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 9368also 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 9369setting AE mode to OFF.<wbr/></p> 9370<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 9371routine is disabled.<wbr/> The application manually controls the white 9372balance 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> 9373and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 9374<p>When set to any other modes,<wbr/> the camera device's auto-white 9375balance routine is disabled.<wbr/> The camera device uses each 9376particular illumination target for white balance 9377adjustment.<wbr/> The application's values for 9378<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 9379<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 9380<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 9381 </td> 9382 </tr> 9383 9384 9385 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9386 <!-- end of entry --> 9387 9388 9389 <tr class="entry" id="dynamic_android.control.awbRegions"> 9390 <td class="entry_name 9391 " rowspan="5"> 9392 android.<wbr/>control.<wbr/>awb<wbr/>Regions 9393 </td> 9394 <td class="entry_type"> 9395 <span class="entry_type_name">int32</span> 9396 <span class="entry_type_container">x</span> 9397 9398 <span class="entry_type_array"> 9399 5 x area_count 9400 </span> 9401 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 9402 9403 9404 9405 9406 9407 9408 </td> <!-- entry_type --> 9409 9410 <td class="entry_description"> 9411 <p>List of metering areas to use for auto-white-balance illuminant 9412estimation.<wbr/></p> 9413 </td> 9414 9415 <td class="entry_units"> 9416 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 9417 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on 9418 distortion correction capability and mode 9419 </td> 9420 9421 <td class="entry_range"> 9422 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 9423<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> 9424depending on distortion correction capability and mode</p> 9425 </td> 9426 9427 <td class="entry_hal_version"> 9428 <p>3.<wbr/>2</p> 9429 </td> 9430 9431 <td class="entry_tags"> 9432 <ul class="entry_tags"> 9433 <li><a href="#tag_BC">BC</a></li> 9434 </ul> 9435 </td> 9436 9437 </tr> 9438 <tr class="entries_header"> 9439 <th class="th_details" colspan="6">Details</th> 9440 </tr> 9441 <tr class="entry_cont"> 9442 <td class="entry_details" colspan="6"> 9443 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 9444Otherwise will always be present.<wbr/></p> 9445<p>The maximum number of regions supported by the device is determined by the value 9446of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 9447<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 9448system 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 9449the top-left pixel in the active pixel array,<wbr/> and 9450(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 9451<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 9452active pixel array.<wbr/></p> 9453<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 9454system depends on the mode being set.<wbr/> 9455When the distortion correction mode is OFF,<wbr/> the coordinate system follows 9456<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 9457<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and 9458(<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/> 9459<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 9460pixel in the pre-correction active pixel array.<wbr/> 9461When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 9462<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 9463<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and 9464(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 9465<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 9466active pixel array.<wbr/></p> 9467<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 9468for every pixel in the area.<wbr/> This means that a large metering area 9469with the same weight as a smaller area will have more effect in 9470the metering result.<wbr/> Metering areas can partially overlap and the 9471camera device will add the weights in the overlap region.<wbr/></p> 9472<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 9473only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 94740 weight is ignored.<wbr/></p> 9475<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 9476camera device.<wbr/></p> 9477<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 9478capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 9479region and output only the intersection rectangle as the metering region in the result 9480metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 9481not reported in the result metadata.<wbr/></p> 9482<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 9483preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 9484pre-zoom field of view.<wbr/> This means that the same awbRegions values at different 9485<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The awbRegions 9486coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the 9487zoomed 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 9488awbRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of 9489the 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 9490activeArraySize or preCorrectionActiveArraySize still depends on distortion correction 9491mode.<wbr/></p> 9492<p>For camera devices with the 9493<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> 9494capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 9495<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 9496coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 9497<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> 9498 </td> 9499 </tr> 9500 9501 <tr class="entries_header"> 9502 <th class="th_details" colspan="6">HAL Implementation Details</th> 9503 </tr> 9504 <tr class="entry_cont"> 9505 <td class="entry_details" colspan="6"> 9506 <p>The HAL level representation of MeteringRectangle[] is a 9507int[5 * area_<wbr/>count].<wbr/> 9508Every five elements represent a metering region of 9509(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 9510The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 9511exclusive on xmax and ymax.<wbr/> 9512HAL must always report metering regions in the coordinate system of pre-correction 9513active array.<wbr/></p> 9514 </td> 9515 </tr> 9516 9517 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9518 <!-- end of entry --> 9519 9520 9521 <tr class="entry" id="dynamic_android.control.captureIntent"> 9522 <td class="entry_name 9523 " rowspan="3"> 9524 android.<wbr/>control.<wbr/>capture<wbr/>Intent 9525 </td> 9526 <td class="entry_type"> 9527 <span class="entry_type_name entry_type_name_enum">byte</span> 9528 9529 <span class="entry_type_visibility"> [public]</span> 9530 9531 9532 <span class="entry_type_hwlevel">[legacy] </span> 9533 9534 9535 9536 <ul class="entry_type_enum"> 9537 <li> 9538 <span class="entry_type_enum_name">CUSTOM (v3.2)</span> 9539 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 9540categories.<wbr/> The camera device will default to preview-like 9541behavior.<wbr/></p></span> 9542 </li> 9543 <li> 9544 <span class="entry_type_enum_name">PREVIEW (v3.2)</span> 9545 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 9546<p>The precapture trigger may be used to start off a metering 9547w/<wbr/>flash sequence.<wbr/></p></span> 9548 </li> 9549 <li> 9550 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span> 9551 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 9552use case.<wbr/></p> 9553<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 9554 </li> 9555 <li> 9556 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span> 9557 <span class="entry_type_enum_notes"><p>This request is for a video recording 9558use case.<wbr/></p></span> 9559 </li> 9560 <li> 9561 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span> 9562 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 9563image while recording video) use case.<wbr/></p> 9564<p>The camera device should take the highest-quality image 9565possible (given the other settings) without disrupting the 9566frame rate of video recording.<wbr/> </p></span> 9567 </li> 9568 <li> 9569 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 9570 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 9571application will stream full-resolution images and 9572reprocess one or several later for a final 9573capture.<wbr/></p></span> 9574 </li> 9575 <li> 9576 <span class="entry_type_enum_name">MANUAL (v3.2)</span> 9577 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 9578the applications want to directly control the capture parameters.<wbr/></p> 9579<p>For example,<wbr/> the application may wish to manually control 9580<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> 9581 </li> 9582 <li> 9583 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> 9584 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where 9585the application will use camera and inertial sensor data to 9586locate and track objects in the world.<wbr/></p> 9587<p>The camera device auto-exposure routine will limit the exposure time 9588of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span> 9589 </li> 9590 </ul> 9591 9592 </td> <!-- entry_type --> 9593 9594 <td class="entry_description"> 9595 <p>Information to the camera device 3A (auto-exposure,<wbr/> 9596auto-focus,<wbr/> auto-white balance) routines about the purpose 9597of this capture,<wbr/> to help the camera device to decide optimal 3A 9598strategy.<wbr/></p> 9599 </td> 9600 9601 <td class="entry_units"> 9602 </td> 9603 9604 <td class="entry_range"> 9605 </td> 9606 9607 <td class="entry_hal_version"> 9608 <p>3.<wbr/>2</p> 9609 </td> 9610 9611 <td class="entry_tags"> 9612 <ul class="entry_tags"> 9613 <li><a href="#tag_BC">BC</a></li> 9614 </ul> 9615 </td> 9616 9617 </tr> 9618 <tr class="entries_header"> 9619 <th class="th_details" colspan="6">Details</th> 9620 </tr> 9621 <tr class="entry_cont"> 9622 <td class="entry_details" colspan="6"> 9623 <p>This control (except for MANUAL) is only effective if 9624<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 9625<p>All intents are supported by all devices,<wbr/> except that: 9626 * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 9627PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> 9628 * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 9629MANUAL_<wbr/>SENSOR.<wbr/> 9630 * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 9631MOTION_<wbr/>TRACKING.<wbr/></p> 9632 </td> 9633 </tr> 9634 9635 9636 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9637 <!-- end of entry --> 9638 9639 9640 <tr class="entry" id="dynamic_android.control.awbState"> 9641 <td class="entry_name 9642 " rowspan="3"> 9643 android.<wbr/>control.<wbr/>awb<wbr/>State 9644 </td> 9645 <td class="entry_type"> 9646 <span class="entry_type_name entry_type_name_enum">byte</span> 9647 9648 <span class="entry_type_visibility"> [public]</span> 9649 9650 9651 <span class="entry_type_hwlevel">[limited] </span> 9652 9653 9654 9655 <ul class="entry_type_enum"> 9656 <li> 9657 <span class="entry_type_enum_name">INACTIVE (v3.2)</span> 9658 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> 9659<p>When a camera device is opened,<wbr/> it starts in this 9660state.<wbr/> This is a transient state,<wbr/> the camera device may 9661skip reporting this state in capture 9662result.<wbr/></p></span> 9663 </li> 9664 <li> 9665 <span class="entry_type_enum_name">SEARCHING (v3.2)</span> 9666 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 9667values for the current scene.<wbr/></p> 9668<p>This is a transient state,<wbr/> the camera device 9669may skip reporting this state in capture result.<wbr/></p></span> 9670 </li> 9671 <li> 9672 <span class="entry_type_enum_name">CONVERGED (v3.2)</span> 9673 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 9674current scene.<wbr/></p></span> 9675 </li> 9676 <li> 9677 <span class="entry_type_enum_name">LOCKED (v3.2)</span> 9678 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 9679 </li> 9680 </ul> 9681 9682 </td> <!-- entry_type --> 9683 9684 <td class="entry_description"> 9685 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p> 9686 </td> 9687 9688 <td class="entry_units"> 9689 </td> 9690 9691 <td class="entry_range"> 9692 </td> 9693 9694 <td class="entry_hal_version"> 9695 <p>3.<wbr/>2</p> 9696 </td> 9697 9698 <td class="entry_tags"> 9699 </td> 9700 9701 </tr> 9702 <tr class="entries_header"> 9703 <th class="th_details" colspan="6">Details</th> 9704 </tr> 9705 <tr class="entry_cont"> 9706 <td class="entry_details" colspan="6"> 9707 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 9708resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 9709or <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 9710the algorithm states to INACTIVE.<wbr/></p> 9711<p>The camera device can do several state transitions between two results,<wbr/> if it is 9712allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 9713a result.<wbr/></p> 9714<p>The state in the result is the state for this image (in sync with this image): if 9715AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 9716be good to use.<wbr/></p> 9717<p>Below are state transition tables for different AWB modes.<wbr/></p> 9718<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 9719<table> 9720<thead> 9721<tr> 9722<th align="center">State</th> 9723<th align="center">Transition Cause</th> 9724<th align="center">New State</th> 9725<th align="center">Notes</th> 9726</tr> 9727</thead> 9728<tbody> 9729<tr> 9730<td align="center">INACTIVE</td> 9731<td align="center"></td> 9732<td align="center">INACTIVE</td> 9733<td align="center">Camera device auto white balance algorithm is disabled</td> 9734</tr> 9735</tbody> 9736</table> 9737<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 9738<table> 9739<thead> 9740<tr> 9741<th align="center">State</th> 9742<th align="center">Transition Cause</th> 9743<th align="center">New State</th> 9744<th align="center">Notes</th> 9745</tr> 9746</thead> 9747<tbody> 9748<tr> 9749<td align="center">INACTIVE</td> 9750<td align="center">Camera device initiates AWB scan</td> 9751<td align="center">SEARCHING</td> 9752<td align="center">Values changing</td> 9753</tr> 9754<tr> 9755<td align="center">INACTIVE</td> 9756<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 9757<td align="center">LOCKED</td> 9758<td align="center">Values locked</td> 9759</tr> 9760<tr> 9761<td align="center">SEARCHING</td> 9762<td align="center">Camera device finishes AWB scan</td> 9763<td align="center">CONVERGED</td> 9764<td align="center">Good values,<wbr/> not changing</td> 9765</tr> 9766<tr> 9767<td align="center">SEARCHING</td> 9768<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 9769<td align="center">LOCKED</td> 9770<td align="center">Values locked</td> 9771</tr> 9772<tr> 9773<td align="center">CONVERGED</td> 9774<td align="center">Camera device initiates AWB scan</td> 9775<td align="center">SEARCHING</td> 9776<td align="center">Values changing</td> 9777</tr> 9778<tr> 9779<td align="center">CONVERGED</td> 9780<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 9781<td align="center">LOCKED</td> 9782<td align="center">Values locked</td> 9783</tr> 9784<tr> 9785<td align="center">LOCKED</td> 9786<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 9787<td align="center">SEARCHING</td> 9788<td align="center">Values not good after unlock</td> 9789</tr> 9790</tbody> 9791</table> 9792<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 9793without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 9794can be skipped in that manner is called a transient state.<wbr/></p> 9795<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 9796listed in above table,<wbr/> it is also legal for the camera device to skip one or more 9797transient states between two results.<wbr/> See below table for examples:</p> 9798<table> 9799<thead> 9800<tr> 9801<th align="center">State</th> 9802<th align="center">Transition Cause</th> 9803<th align="center">New State</th> 9804<th align="center">Notes</th> 9805</tr> 9806</thead> 9807<tbody> 9808<tr> 9809<td align="center">INACTIVE</td> 9810<td align="center">Camera device finished AWB scan</td> 9811<td align="center">CONVERGED</td> 9812<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 9813</tr> 9814<tr> 9815<td align="center">LOCKED</td> 9816<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 9817<td align="center">CONVERGED</td> 9818<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 9819</tr> 9820</tbody> 9821</table> 9822 </td> 9823 </tr> 9824 9825 9826 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9827 <!-- end of entry --> 9828 9829 9830 <tr class="entry" id="dynamic_android.control.effectMode"> 9831 <td class="entry_name 9832 " rowspan="3"> 9833 android.<wbr/>control.<wbr/>effect<wbr/>Mode 9834 </td> 9835 <td class="entry_type"> 9836 <span class="entry_type_name entry_type_name_enum">byte</span> 9837 9838 <span class="entry_type_visibility"> [public]</span> 9839 9840 9841 <span class="entry_type_hwlevel">[legacy] </span> 9842 9843 9844 9845 <ul class="entry_type_enum"> 9846 <li> 9847 <span class="entry_type_enum_name">OFF (v3.2)</span> 9848 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 9849 </li> 9850 <li> 9851 <span class="entry_type_enum_name">MONO (v3.2)</span> 9852 <span class="entry_type_enum_optional">[optional]</span> 9853 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 9854a single color.<wbr/></p> 9855<p>This will typically be grayscale.<wbr/></p></span> 9856 </li> 9857 <li> 9858 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span> 9859 <span class="entry_type_enum_optional">[optional]</span> 9860 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 9861are inverted.<wbr/></p></span> 9862 </li> 9863 <li> 9864 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span> 9865 <span class="entry_type_enum_optional">[optional]</span> 9866 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 9867image is wholly or partially reversed in 9868tone.<wbr/></p></span> 9869 </li> 9870 <li> 9871 <span class="entry_type_enum_name">SEPIA (v3.2)</span> 9872 <span class="entry_type_enum_optional">[optional]</span> 9873 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 9874gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 9875 </li> 9876 <li> 9877 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span> 9878 <span class="entry_type_enum_optional">[optional]</span> 9879 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 9880discrete regions of tone rather than a continuous 9881gradient of tones.<wbr/></p></span> 9882 </li> 9883 <li> 9884 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span> 9885 <span class="entry_type_enum_optional">[optional]</span> 9886 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 9887as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 9888 </li> 9889 <li> 9890 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span> 9891 <span class="entry_type_enum_optional">[optional]</span> 9892 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 9893as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 9894 </li> 9895 <li> 9896 <span class="entry_type_enum_name">AQUA (v3.2)</span> 9897 <span class="entry_type_enum_optional">[optional]</span> 9898 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 9899 </li> 9900 </ul> 9901 9902 </td> <!-- entry_type --> 9903 9904 <td class="entry_description"> 9905 <p>A special color effect to apply.<wbr/></p> 9906 </td> 9907 9908 <td class="entry_units"> 9909 </td> 9910 9911 <td class="entry_range"> 9912 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 9913 </td> 9914 9915 <td class="entry_hal_version"> 9916 <p>3.<wbr/>2</p> 9917 </td> 9918 9919 <td class="entry_tags"> 9920 <ul class="entry_tags"> 9921 <li><a href="#tag_BC">BC</a></li> 9922 </ul> 9923 </td> 9924 9925 </tr> 9926 <tr class="entries_header"> 9927 <th class="th_details" colspan="6">Details</th> 9928 </tr> 9929 <tr class="entry_cont"> 9930 <td class="entry_details" colspan="6"> 9931 <p>When this mode is set,<wbr/> a color effect will be applied 9932to images produced by the camera device.<wbr/> The interpretation 9933and implementation of these color effects is left to the 9934implementor of the camera device,<wbr/> and should not be 9935depended on to be consistent (or present) across all 9936devices.<wbr/></p> 9937 </td> 9938 </tr> 9939 9940 9941 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9942 <!-- end of entry --> 9943 9944 9945 <tr class="entry" id="dynamic_android.control.mode"> 9946 <td class="entry_name 9947 " rowspan="3"> 9948 android.<wbr/>control.<wbr/>mode 9949 </td> 9950 <td class="entry_type"> 9951 <span class="entry_type_name entry_type_name_enum">byte</span> 9952 9953 <span class="entry_type_visibility"> [public]</span> 9954 9955 9956 <span class="entry_type_hwlevel">[legacy] </span> 9957 9958 9959 9960 <ul class="entry_type_enum"> 9961 <li> 9962 <span class="entry_type_enum_name">OFF (v3.2)</span> 9963 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 9964<p>All control by the device's metering and focusing (3A) 9965routines is disabled,<wbr/> and no other settings in 9966android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 9967<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 9968device to select post-processing values for processing 9969blocks that do not allow for manual control,<wbr/> or are not 9970exposed by the camera API.<wbr/></p> 9971<p>However,<wbr/> the camera device's 3A routines may continue to 9972collect statistics and update their internal state so that 9973when control is switched to AUTO mode,<wbr/> good control values 9974can be immediately applied.<wbr/></p></span> 9975 </li> 9976 <li> 9977 <span class="entry_type_enum_name">AUTO (v3.2)</span> 9978 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 9979<p>Manual control of capture parameters is disabled.<wbr/> All 9980controls in android.<wbr/>control.<wbr/>* besides sceneMode take 9981effect.<wbr/></p></span> 9982 </li> 9983 <li> 9984 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span> 9985 <span class="entry_type_enum_optional">[optional]</span> 9986 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 9987<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 9988control.<wbr/>afMode controls; the camera device will ignore 9989those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 9990FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 9991This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 9992<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 9993contain some modes other than DISABLED).<wbr/></p> 9994<p>For extended scene modes such as BOKEH,<wbr/> please use USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE instead.<wbr/></p></span> 9995 </li> 9996 <li> 9997 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span> 9998 <span class="entry_type_enum_optional">[optional]</span> 9999 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 10000used by camera device background auto-exposure,<wbr/> auto-white balance and 10001auto-focus algorithms (3A) to update their statistics.<wbr/></p> 10002<p>Specifically,<wbr/> the 3A routines are locked to the last 10003values set from a request with AUTO,<wbr/> OFF,<wbr/> or 10004USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 10005collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 10006discarded by the camera device.<wbr/></p></span> 10007 </li> 10008 <li> 10009 <span class="entry_type_enum_name">USE_EXTENDED_SCENE_MODE (v3.5)</span> 10010 <span class="entry_type_enum_optional">[optional]</span> 10011 <span class="entry_type_enum_notes"><p>Use a specific extended scene mode.<wbr/></p> 10012<p>When extended scene mode is on,<wbr/> the camera device may override certain control 10013parameters,<wbr/> such as targetFpsRange,<wbr/> AE,<wbr/> AWB,<wbr/> and AF modes,<wbr/> to achieve best power and 10014quality tradeoffs.<wbr/> Only the mandatory stream combinations of LIMITED hardware level 10015are guaranteed.<wbr/></p> 10016<p>This setting can only be used if extended scene mode is supported (i.<wbr/>e.<wbr/> 10017android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Modes 10018contains some modes other than DISABLED).<wbr/></p></span> 10019 </li> 10020 </ul> 10021 10022 </td> <!-- entry_type --> 10023 10024 <td class="entry_description"> 10025 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 10026routines.<wbr/></p> 10027 </td> 10028 10029 <td class="entry_units"> 10030 </td> 10031 10032 <td class="entry_range"> 10033 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 10034 </td> 10035 10036 <td class="entry_hal_version"> 10037 <p>3.<wbr/>2</p> 10038 </td> 10039 10040 <td class="entry_tags"> 10041 <ul class="entry_tags"> 10042 <li><a href="#tag_BC">BC</a></li> 10043 </ul> 10044 </td> 10045 10046 </tr> 10047 <tr class="entries_header"> 10048 <th class="th_details" colspan="6">Details</th> 10049 </tr> 10050 <tr class="entry_cont"> 10051 <td class="entry_details" colspan="6"> 10052 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 10053by the camera device is disabled.<wbr/> The application must set the fields for 10054capture parameters itself.<wbr/></p> 10055<p>When set to AUTO,<wbr/> the individual algorithm controls in 10056android.<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> 10057<p>When set to USE_<wbr/>SCENE_<wbr/>MODE or USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 10058android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device 10059implements one of the scene mode or extended scene mode settings (such as ACTION,<wbr/> 10060SUNSET,<wbr/> PARTY,<wbr/> or BOKEH) as it wishes.<wbr/> The camera device scene mode 100613A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 10062<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 10063is that this frame will not be used by camera device background 3A statistics 10064update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 10065where the application doesn't want a 3A manual control capture to affect 10066the subsequent auto 3A capture results.<wbr/></p> 10067 </td> 10068 </tr> 10069 10070 10071 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10072 <!-- end of entry --> 10073 10074 10075 <tr class="entry" id="dynamic_android.control.sceneMode"> 10076 <td class="entry_name 10077 " rowspan="5"> 10078 android.<wbr/>control.<wbr/>scene<wbr/>Mode 10079 </td> 10080 <td class="entry_type"> 10081 <span class="entry_type_name entry_type_name_enum">byte</span> 10082 10083 <span class="entry_type_visibility"> [public]</span> 10084 10085 10086 <span class="entry_type_hwlevel">[legacy] </span> 10087 10088 10089 10090 <ul class="entry_type_enum"> 10091 <li> 10092 <span class="entry_type_enum_name">DISABLED (v3.2)</span> 10093 <span class="entry_type_enum_value">0</span> 10094 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 10095 </li> 10096 <li> 10097 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span> 10098 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 10099detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 10100auto-exposure routines.<wbr/></p> 10101<p>If face detection statistics are disabled 10102(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/> 10103this should still operate correctly (but will not return 10104face detection statistics to the framework).<wbr/></p> 10105<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 10106<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> 10107remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 10108 </li> 10109 <li> 10110 <span class="entry_type_enum_name">ACTION (v3.2)</span> 10111 <span class="entry_type_enum_optional">[optional]</span> 10112 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 10113<p>Similar to SPORTS.<wbr/></p></span> 10114 </li> 10115 <li> 10116 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span> 10117 <span class="entry_type_enum_optional">[optional]</span> 10118 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 10119 </li> 10120 <li> 10121 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span> 10122 <span class="entry_type_enum_optional">[optional]</span> 10123 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 10124 </li> 10125 <li> 10126 <span class="entry_type_enum_name">NIGHT (v3.2)</span> 10127 <span class="entry_type_enum_optional">[optional]</span> 10128 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 10129 </li> 10130 <li> 10131 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span> 10132 <span class="entry_type_enum_optional">[optional]</span> 10133 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 10134settings.<wbr/></p></span> 10135 </li> 10136 <li> 10137 <span class="entry_type_enum_name">THEATRE (v3.2)</span> 10138 <span class="entry_type_enum_optional">[optional]</span> 10139 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 10140remain off.<wbr/></p></span> 10141 </li> 10142 <li> 10143 <span class="entry_type_enum_name">BEACH (v3.2)</span> 10144 <span class="entry_type_enum_optional">[optional]</span> 10145 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 10146 </li> 10147 <li> 10148 <span class="entry_type_enum_name">SNOW (v3.2)</span> 10149 <span class="entry_type_enum_optional">[optional]</span> 10150 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 10151 </li> 10152 <li> 10153 <span class="entry_type_enum_name">SUNSET (v3.2)</span> 10154 <span class="entry_type_enum_optional">[optional]</span> 10155 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 10156 </li> 10157 <li> 10158 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span> 10159 <span class="entry_type_enum_optional">[optional]</span> 10160 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 10161device motion (for example: due to hand shake).<wbr/></p></span> 10162 </li> 10163 <li> 10164 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span> 10165 <span class="entry_type_enum_optional">[optional]</span> 10166 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 10167 </li> 10168 <li> 10169 <span class="entry_type_enum_name">SPORTS (v3.2)</span> 10170 <span class="entry_type_enum_optional">[optional]</span> 10171 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 10172<p>Similar to ACTION.<wbr/></p></span> 10173 </li> 10174 <li> 10175 <span class="entry_type_enum_name">PARTY (v3.2)</span> 10176 <span class="entry_type_enum_optional">[optional]</span> 10177 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 10178people.<wbr/></p></span> 10179 </li> 10180 <li> 10181 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span> 10182 <span class="entry_type_enum_optional">[optional]</span> 10183 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 10184is a candle.<wbr/></p></span> 10185 </li> 10186 <li> 10187 <span class="entry_type_enum_name">BARCODE (v3.2)</span> 10188 <span class="entry_type_enum_optional">[optional]</span> 10189 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 10190for use by camera applications that wish to read the 10191barcode value.<wbr/></p></span> 10192 </li> 10193 <li> 10194 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span> 10195 <span class="entry_type_enum_deprecated">[deprecated]</span> 10196 <span class="entry_type_enum_optional">[optional]</span> 10197 <span class="entry_type_enum_hidden">[java_public]</span> 10198 <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> 10199and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 10200for high speed video recording.<wbr/></p> 10201<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 10202<p>The supported high speed video sizes and fps ranges are specified in 10203<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 10204output frame rates,<wbr/> the application is only allowed to select video size 10205and fps range combinations listed in this static metadata.<wbr/> The fps range 10206can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 10207<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 10208ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 10209controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 10210and post-processing parameters is possible.<wbr/> All other controls operate the 10211same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 10212android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 10213<ul> 10214<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 10215<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 10216<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 10217<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 10218<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 10219<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 10220<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 10221<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 10222<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 10223<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 10224<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li> 10225</ul> 10226<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 10227<ul> 10228<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> 10229<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 10230<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 10231<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 10232</ul> 10233<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 10234be lower than what camera can output,<wbr/> depending on the destination Surfaces for 10235the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 10236the application need check if the video encoder is capable of supporting the 10237high frame rate for a given video size,<wbr/> or it will end up with lower recording 10238frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 10239rate will be bounded by the screen refresh rate.<wbr/></p> 10240<p>The camera device will only support up to 2 output high speed streams 10241(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 10242in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 10243<ul> 10244<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 10245format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 10246min(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> 10247<li>The stream sizes are selected from the sizes reported by 10248<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 10249<li>No processed non-stalling or raw streams are configured.<wbr/></li> 10250</ul> 10251<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 10252<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/> 10253the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 10254and the returned capture result metadata will give the fps range choosen 10255by the camera device.<wbr/></p> 10256<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 10257reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 10258the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 10259 </li> 10260 <li> 10261 <span class="entry_type_enum_name">HDR (v3.2)</span> 10262 <span class="entry_type_enum_optional">[optional]</span> 10263 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 10264<p>In this scene mode,<wbr/> the camera device captures images 10265that keep a larger range of scene illumination levels 10266visible in the final image.<wbr/> For example,<wbr/> when taking a 10267picture of a object in front of a bright window,<wbr/> both 10268the object and the scene through the window may be 10269visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 10270one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 10271HDR mode generally takes much longer to capture a single 10272image,<wbr/> has no user control,<wbr/> and may have other artifacts 10273depending on the HDR method used.<wbr/></p> 10274<p>Therefore,<wbr/> HDR captures operate at a much slower rate 10275than regular captures.<wbr/></p> 10276<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 10277is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 10278STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 10279using a high dynamic range capture technique.<wbr/> On LEGACY 10280devices,<wbr/> captures that target a JPEG-format output will 10281be captured with HDR,<wbr/> and the capture intent is not 10282relevant.<wbr/></p> 10283<p>The HDR capture may involve the device capturing a burst 10284of images internally and combining them into one,<wbr/> or it 10285may involve the device using specialized high dynamic 10286range capture hardware.<wbr/> In all cases,<wbr/> a single image is 10287produced in response to a capture request submitted 10288while in HDR mode.<wbr/></p> 10289<p>Since substantial post-processing is generally needed to 10290produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG 10291outputs are supported for LIMITED/<wbr/>FULL device HDR 10292captures,<wbr/> and only JPEG outputs are supported for LEGACY 10293HDR captures.<wbr/> Using a RAW output for HDR capture is not 10294supported.<wbr/></p> 10295<p>Some devices may also support always-on HDR,<wbr/> which 10296applies HDR processing at full frame rate.<wbr/> For these 10297devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also 10298produce an HDR output with no frame rate impact compared 10299to normal operation,<wbr/> though the quality may be lower 10300than for STILL_<wbr/>CAPTURE intents.<wbr/></p> 10301<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types 10302or capture intents,<wbr/> the images captured will be as if 10303the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> 10304 </li> 10305 <li> 10306 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span> 10307 <span class="entry_type_enum_optional">[optional]</span> 10308 <span class="entry_type_enum_hidden">[hidden]</span> 10309 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 10310device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 10311under low light conditions.<wbr/></p> 10312<p>The camera device may be tuned to expose the images in a reduced 10313sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 10314if 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/> 10315the camera device auto-exposure routine tuning process may limit the actual 10316exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 10317exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 10318low light may be under-exposed when the sensor max exposure time (bounded by the 10319<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 10320ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 10321camera device auto-exposure routine to increase the sensitivity up to the max 10322sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 10323dark and the max exposure time is reached.<wbr/> The captured images may be noisier 10324compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 10325recommended that the application only use this scene mode when it is capable of 10326reducing the noise level of the captured images.<wbr/></p> 10327<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 10328<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> 10329remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 10330 </li> 10331 <li> 10332 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span> 10333 <span class="entry_type_enum_optional">[optional]</span> 10334 <span class="entry_type_enum_hidden">[hidden]</span> 10335 <span class="entry_type_enum_value">100</span> 10336 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 10337<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 10338customized scene modes.<wbr/></p></span> 10339 </li> 10340 <li> 10341 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span> 10342 <span class="entry_type_enum_optional">[optional]</span> 10343 <span class="entry_type_enum_hidden">[hidden]</span> 10344 <span class="entry_type_enum_value">127</span> 10345 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 10346<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 10347customized scene modes.<wbr/></p></span> 10348 </li> 10349 </ul> 10350 10351 </td> <!-- entry_type --> 10352 10353 <td class="entry_description"> 10354 <p>Control for which scene mode is currently active.<wbr/></p> 10355 </td> 10356 10357 <td class="entry_units"> 10358 </td> 10359 10360 <td class="entry_range"> 10361 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 10362 </td> 10363 10364 <td class="entry_hal_version"> 10365 <p>3.<wbr/>2</p> 10366 </td> 10367 10368 <td class="entry_tags"> 10369 <ul class="entry_tags"> 10370 <li><a href="#tag_BC">BC</a></li> 10371 </ul> 10372 </td> 10373 10374 </tr> 10375 <tr class="entries_header"> 10376 <th class="th_details" colspan="6">Details</th> 10377 </tr> 10378 <tr class="entry_cont"> 10379 <td class="entry_details" colspan="6"> 10380 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 10381capture settings.<wbr/></p> 10382<p>This is the mode that that is active when 10383<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 10384disable <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> 10385while in use.<wbr/></p> 10386<p>The interpretation and implementation of these scene modes is left 10387to the implementor of the camera device.<wbr/> Their behavior will not be 10388consistent across all devices,<wbr/> and any given device may only implement 10389a subset of these modes.<wbr/></p> 10390 </td> 10391 </tr> 10392 10393 <tr class="entries_header"> 10394 <th class="th_details" colspan="6">HAL Implementation Details</th> 10395 </tr> 10396 <tr class="entry_cont"> 10397 <td class="entry_details" colspan="6"> 10398 <p>HAL implementations that include scene modes are expected to provide 10399the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 10400<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 10401<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 10402<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 10403HAL must list supported video size and fps range in 10404<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/> 10405if the HAL has two different sensor configurations for normal streaming mode and high 10406speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the 10407HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy 10408HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 10409<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 10410capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 10411 </td> 10412 </tr> 10413 10414 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10415 <!-- end of entry --> 10416 10417 10418 <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> 10419 <td class="entry_name 10420 " rowspan="3"> 10421 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 10422 </td> 10423 <td class="entry_type"> 10424 <span class="entry_type_name entry_type_name_enum">byte</span> 10425 10426 <span class="entry_type_visibility"> [public]</span> 10427 10428 10429 <span class="entry_type_hwlevel">[legacy] </span> 10430 10431 10432 10433 <ul class="entry_type_enum"> 10434 <li> 10435 <span class="entry_type_enum_name">OFF (v3.2)</span> 10436 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 10437 </li> 10438 <li> 10439 <span class="entry_type_enum_name">ON (v3.2)</span> 10440 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 10441 </li> 10442 </ul> 10443 10444 </td> <!-- entry_type --> 10445 10446 <td class="entry_description"> 10447 <p>Whether video stabilization is 10448active.<wbr/></p> 10449 </td> 10450 10451 <td class="entry_units"> 10452 </td> 10453 10454 <td class="entry_range"> 10455 </td> 10456 10457 <td class="entry_hal_version"> 10458 <p>3.<wbr/>2</p> 10459 </td> 10460 10461 <td class="entry_tags"> 10462 <ul class="entry_tags"> 10463 <li><a href="#tag_BC">BC</a></li> 10464 </ul> 10465 </td> 10466 10467 </tr> 10468 <tr class="entries_header"> 10469 <th class="th_details" colspan="6">Details</th> 10470 </tr> 10471 <tr class="entry_cont"> 10472 <td class="entry_details" colspan="6"> 10473 <p>Video stabilization automatically warps images from 10474the camera in order to stabilize motion between consecutive frames.<wbr/></p> 10475<p>If enabled,<wbr/> video stabilization can modify the 10476<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 10477<p>Switching between different video stabilization modes may take several 10478frames to initialize,<wbr/> the camera device will report the current mode 10479in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 10480the video stabilization modes in the first several capture results may 10481still be "OFF",<wbr/> and it will become "ON" when the initialization is 10482done.<wbr/></p> 10483<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 10484stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 10485that an output targeting a MediaRecorder or MediaCodec will be stabilized if 10486the recording resolution is less than or equal to 1920 x 1080 (width less than 10487or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 10488frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 10489<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 10490OFF if the recording output is not stabilized,<wbr/> or if there are no output 10491Surface types that can be stabilized.<wbr/></p> 10492<p>If a camera device supports both this mode and OIS 10493(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 10494produce undesirable interaction,<wbr/> so it is recommended not to enable 10495both at the same time.<wbr/></p> 10496 </td> 10497 </tr> 10498 10499 10500 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10501 <!-- end of entry --> 10502 10503 10504 <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost"> 10505 <td class="entry_name 10506 " rowspan="3"> 10507 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost 10508 </td> 10509 <td class="entry_type"> 10510 <span class="entry_type_name">int32</span> 10511 10512 <span class="entry_type_visibility"> [public]</span> 10513 10514 10515 10516 10517 10518 10519 </td> <!-- entry_type --> 10520 10521 <td class="entry_description"> 10522 <p>The amount of additional sensitivity boost applied to output images 10523after RAW sensor data is captured.<wbr/></p> 10524 </td> 10525 10526 <td class="entry_units"> 10527 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 10528 </td> 10529 10530 <td class="entry_range"> 10531 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p> 10532 </td> 10533 10534 <td class="entry_hal_version"> 10535 <p>3.<wbr/>2</p> 10536 </td> 10537 10538 <td class="entry_tags"> 10539 </td> 10540 10541 </tr> 10542 <tr class="entries_header"> 10543 <th class="th_details" colspan="6">Details</th> 10544 </tr> 10545 <tr class="entry_cont"> 10546 <td class="entry_details" colspan="6"> 10547 <p>Some camera devices support additional digital sensitivity boosting in the 10548camera processing pipeline after sensor RAW image is captured.<wbr/> 10549Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not 10550have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> 10551<p>This key will be <code>null</code> for devices that do not support any RAW format 10552outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 10553present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 10554list <code>100</code> in this key.<wbr/></p> 10555<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the 10556boost to the nearest supported value.<wbr/> 10557The final boost value used will be available in the output capture result.<wbr/></p> 10558<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images 10559of such device will have the total sensitivity of 10560<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> 10561The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> 10562<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 10563OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 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.enableZsl"> 10573 <td class="entry_name 10574 " rowspan="5"> 10575 android.<wbr/>control.<wbr/>enable<wbr/>Zsl 10576 </td> 10577 <td class="entry_type"> 10578 <span class="entry_type_name entry_type_name_enum">byte</span> 10579 10580 <span class="entry_type_visibility"> [public as boolean]</span> 10581 10582 10583 10584 10585 10586 <ul class="entry_type_enum"> 10587 <li> 10588 <span class="entry_type_enum_name">FALSE (v3.2)</span> 10589 <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 10590after previous requests.<wbr/></p></span> 10591 </li> 10592 <li> 10593 <span class="entry_type_enum_name">TRUE (v3.2)</span> 10594 <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 10595captured before previous requests.<wbr/></p></span> 10596 </li> 10597 </ul> 10598 10599 </td> <!-- entry_type --> 10600 10601 <td class="entry_description"> 10602 <p>Allow camera device to enable zero-shutter-lag mode for requests with 10603<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p> 10604 </td> 10605 10606 <td class="entry_units"> 10607 </td> 10608 10609 <td class="entry_range"> 10610 </td> 10611 10612 <td class="entry_hal_version"> 10613 <p>3.<wbr/>2</p> 10614 </td> 10615 10616 <td class="entry_tags"> 10617 </td> 10618 10619 </tr> 10620 <tr class="entries_header"> 10621 <th class="th_details" colspan="6">Details</th> 10622 </tr> 10623 <tr class="entry_cont"> 10624 <td class="entry_details" colspan="6"> 10625 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with 10626STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to 10627produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the 10628<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/> 10629Therefore,<wbr/> the contents of the output images and the result metadata may be out of order 10630compared to previous regular requests.<wbr/> enableZsl does not affect requests with other 10631capture intents.<wbr/></p> 10632<p>For example,<wbr/> when requests are submitted in the following order: 10633 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW 10634 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> 10635<p>The output images for request B may have contents captured before the output images for 10636request A,<wbr/> and the result metadata for request B may be older than the result metadata for 10637request A.<wbr/></p> 10638<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in 10639the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p> 10640<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in 10641TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always 10642<code>false</code> if present.<wbr/></p> 10643<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all 10644capture templates is always <code>false</code> if present.<wbr/></p> 10645<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p> 10646 </td> 10647 </tr> 10648 10649 <tr class="entries_header"> 10650 <th class="th_details" colspan="6">HAL Implementation Details</th> 10651 </tr> 10652 <tr class="entry_cont"> 10653 <td class="entry_details" colspan="6"> 10654 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE 10655capture intent.<wbr/></p> 10656 </td> 10657 </tr> 10658 10659 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10660 <!-- end of entry --> 10661 10662 10663 <tr class="entry" id="dynamic_android.control.afSceneChange"> 10664 <td class="entry_name 10665 " rowspan="3"> 10666 android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change 10667 </td> 10668 <td class="entry_type"> 10669 <span class="entry_type_name entry_type_name_enum">byte</span> 10670 10671 <span class="entry_type_visibility"> [public]</span> 10672 10673 10674 10675 10676 10677 <ul class="entry_type_enum"> 10678 <li> 10679 <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span> 10680 <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span> 10681 </li> 10682 <li> 10683 <span class="entry_type_enum_name">DETECTED (v3.3)</span> 10684 <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span> 10685 </li> 10686 </ul> 10687 10688 </td> <!-- entry_type --> 10689 10690 <td class="entry_description"> 10691 <p>Whether a significant scene change is detected within the currently-set AF 10692region(s).<wbr/></p> 10693 </td> 10694 10695 <td class="entry_units"> 10696 </td> 10697 10698 <td class="entry_range"> 10699 </td> 10700 10701 <td class="entry_hal_version"> 10702 <p>3.<wbr/>3</p> 10703 </td> 10704 10705 <td class="entry_tags"> 10706 </td> 10707 10708 </tr> 10709 <tr class="entries_header"> 10710 <th class="th_details" colspan="6">Details</th> 10711 </tr> 10712 <tr class="entry_cont"> 10713 <td class="entry_details" colspan="6"> 10714 <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/> 10715such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a 10716significant illumination change,<wbr/> this value will be set to DETECTED for a single capture 10717result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar 10718to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p> 10719<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> 10720 </td> 10721 </tr> 10722 10723 10724 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10725 <!-- end of entry --> 10726 10727 10728 <tr class="entry" id="dynamic_android.control.extendedSceneMode"> 10729 <td class="entry_name 10730 " rowspan="3"> 10731 android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode 10732 </td> 10733 <td class="entry_type"> 10734 <span class="entry_type_name entry_type_name_enum">byte</span> 10735 10736 <span class="entry_type_visibility"> [public]</span> 10737 10738 10739 10740 10741 10742 <ul class="entry_type_enum"> 10743 <li> 10744 <span class="entry_type_enum_name">DISABLED (v3.5)</span> 10745 <span class="entry_type_enum_value">0</span> 10746 <span class="entry_type_enum_notes"><p>Extended scene mode is disabled.<wbr/></p></span> 10747 </li> 10748 <li> 10749 <span class="entry_type_enum_name">BOKEH_STILL_CAPTURE (v3.5)</span> 10750 <span class="entry_type_enum_notes"><p>High quality bokeh mode is enabled for all non-raw streams (including YUV,<wbr/> 10751JPEG,<wbr/> and IMPLEMENTATION_<wbr/>DEFINED) when capture intent is STILL_<wbr/>CAPTURE.<wbr/> Due to the 10752extra image processing,<wbr/> this mode may introduce additional stall to non-raw streams.<wbr/> 10753This mode should be used in high quality still capture use case.<wbr/></p></span> 10754 </li> 10755 <li> 10756 <span class="entry_type_enum_name">BOKEH_CONTINUOUS (v3.5)</span> 10757 <span class="entry_type_enum_notes"><p>Bokeh effect must not slow down capture rate relative to sensor raw output,<wbr/> 10758and the effect is applied to all processed streams no larger than the maximum 10759streaming dimension.<wbr/> This mode should be used if performance and power are a 10760priority,<wbr/> such as video recording.<wbr/></p></span> 10761 </li> 10762 <li> 10763 <span class="entry_type_enum_name">VENDOR_START (v3.5)</span> 10764 <span class="entry_type_enum_hidden">[hidden]</span> 10765 <span class="entry_type_enum_value">0x40</span> 10766 <span class="entry_type_enum_notes"><p>Vendor defined extended scene modes.<wbr/> These depend on vendor implementation.<wbr/></p></span> 10767 </li> 10768 </ul> 10769 10770 </td> <!-- entry_type --> 10771 10772 <td class="entry_description"> 10773 <p>Whether extended scene mode is enabled for a particular capture request.<wbr/></p> 10774 </td> 10775 10776 <td class="entry_units"> 10777 </td> 10778 10779 <td class="entry_range"> 10780 </td> 10781 10782 <td class="entry_hal_version"> 10783 <p>3.<wbr/>5</p> 10784 </td> 10785 10786 <td class="entry_tags"> 10787 </td> 10788 10789 </tr> 10790 <tr class="entries_header"> 10791 <th class="th_details" colspan="6">Details</th> 10792 </tr> 10793 <tr class="entry_cont"> 10794 <td class="entry_details" colspan="6"> 10795 <p>With bokeh mode,<wbr/> the camera device may blur out the parts of scene that are not in 10796focus,<wbr/> creating a bokeh (or shallow depth of field) effect for people or objects.<wbr/></p> 10797<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with STILL_<wbr/>CAPTURE capture intent,<wbr/> due to the extra 10798processing needed for high quality bokeh effect,<wbr/> the stall may be longer than when 10799capture intent is not STILL_<wbr/>CAPTURE.<wbr/></p> 10800<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with PREVIEW capture intent,<wbr/></p> 10801<ul> 10802<li>If the camera device has BURST_<wbr/>CAPTURE capability,<wbr/> the frame rate requirement of 10803BURST_<wbr/>CAPTURE must still be met.<wbr/></li> 10804<li>All streams not larger than the maximum streaming dimension for BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode 10805(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>) 10806will have preview bokeh effect applied.<wbr/></li> 10807</ul> 10808<p>When set to BOKEH_<wbr/>CONTINUOUS mode,<wbr/> configured streams dimension should not exceed this mode's 10809maximum streaming dimension in order to have bokeh effect applied.<wbr/> Bokeh effect may not 10810be available for streams larger than the maximum streaming dimension.<wbr/></p> 10811<p>Switching between different extended scene modes may involve reconfiguration of the camera 10812pipeline,<wbr/> resulting in long latency.<wbr/> The application should check this key against the 10813available session keys queried via 10814<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p> 10815<p>For a logical multi-camera,<wbr/> bokeh may be implemented by stereo vision from sub-cameras 10816with different field of view.<wbr/> As a result,<wbr/> when bokeh mode is enabled,<wbr/> the camera device 10817may 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 10818view may be smaller than when bokeh mode is off.<wbr/></p> 10819 </td> 10820 </tr> 10821 10822 10823 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10824 <!-- end of entry --> 10825 10826 10827 <tr class="entry" id="dynamic_android.control.zoomRatio"> 10828 <td class="entry_name 10829 " rowspan="5"> 10830 android.<wbr/>control.<wbr/>zoom<wbr/>Ratio 10831 </td> 10832 <td class="entry_type"> 10833 <span class="entry_type_name">float</span> 10834 10835 <span class="entry_type_visibility"> [public]</span> 10836 10837 10838 <span class="entry_type_hwlevel">[limited] </span> 10839 10840 10841 10842 10843 </td> <!-- entry_type --> 10844 10845 <td class="entry_description"> 10846 <p>The desired zoom ratio</p> 10847 </td> 10848 10849 <td class="entry_units"> 10850 </td> 10851 10852 <td class="entry_range"> 10853 <p><a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a></p> 10854 </td> 10855 10856 <td class="entry_hal_version"> 10857 <p>3.<wbr/>5</p> 10858 </td> 10859 10860 <td class="entry_tags"> 10861 </td> 10862 10863 </tr> 10864 <tr class="entries_header"> 10865 <th class="th_details" colspan="6">Details</th> 10866 </tr> 10867 <tr class="entry_cont"> 10868 <td class="entry_details" colspan="6"> 10869 <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 10870use this tag to specify the desired zoom level.<wbr/></p> 10871<p>By using this control,<wbr/> the application gains a simpler way to control zoom,<wbr/> which can 10872be a combination of optical and digital zoom.<wbr/> For example,<wbr/> a multi-camera system may 10873contain more than one lens with different focal lengths,<wbr/> and the user can use optical 10874zoom by switching between lenses.<wbr/> Using zoomRatio has benefits in the scenarios below:</p> 10875<ul> 10876<li>Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides 10877 better precision compared to an integer value of <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li> 10878<li>Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas 10879 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> doesn't.<wbr/></li> 10880</ul> 10881<p>To illustrate,<wbr/> here are several scenarios of different zoom ratios,<wbr/> crop regions,<wbr/> 10882and output streams,<wbr/> for a hypothetical camera device with an active array of size 10883<code>(2000,<wbr/>1500)</code>.<wbr/></p> 10884<ul> 10885<li>Camera Configuration:<ul> 10886<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li> 10887<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li> 10888<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li> 10889</ul> 10890</li> 10891<li>Case #1: 4:3 crop region with 2.<wbr/>0x zoom ratio<ul> 10892<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li> 10893<li>Crop region: <code>Rect(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code> (post zoom)</li> 10894</ul> 10895</li> 10896<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-43.png"/><ul> 10897<li><code>640x480</code> stream source area: <code>(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</code> (equal to crop region)</li> 10898<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (letterboxed)</li> 10899</ul> 10900</li> 10901<li>Case #2: 16:9 crop region with 2.<wbr/>0x zoom.<wbr/><ul> 10902<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li> 10903<li>Crop region: <code>Rect(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code></li> 10904<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-169.png"/></li> 10905<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (pillarboxed)</li> 10906<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (equal to crop region)</li> 10907</ul> 10908</li> 10909<li>Case #3: 1:1 crop region with 0.<wbr/>5x zoom out to ultrawide lens.<wbr/><ul> 10910<li>Zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)</li> 10911<li>Crop region: <code>Rect(250,<wbr/> 0,<wbr/> 1750,<wbr/> 1500)</code></li> 10912<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png"/></li> 10913<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (letterboxed)</li> 10914<li><code>1280x720</code> stream source area: <code>(250,<wbr/> 328,<wbr/> 1750,<wbr/> 1172)</code> (letterboxed)</li> 10915</ul> 10916</li> 10917</ul> 10918<p>As seen from the graphs above,<wbr/> the coordinate system of cropRegion now changes to the 10919effective after-zoom field-of-view,<wbr/> and is represented by the rectangle of (0,<wbr/> 0,<wbr/> 10920activeArrayWith,<wbr/> activeArrayHeight).<wbr/> The same applies to AE/<wbr/>AWB/<wbr/>AF regions,<wbr/> and faces.<wbr/> 10921This coordinate system change isn't applicable to RAW capture and its related 10922metadata such as intrinsicCalibration and lensShadingMap.<wbr/></p> 10923<p>Using the same hypothetical example above,<wbr/> and assuming output stream #1 (640x480) is 10924the viewfinder stream,<wbr/> the application can achieve 2.<wbr/>0x zoom in one of two ways:</p> 10925<ul> 10926<li>zoomRatio = 2.<wbr/>0,<wbr/> scaler.<wbr/>cropRegion = (0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</li> 10927<li>zoomRatio = 1.<wbr/>0 (default),<wbr/> scaler.<wbr/>cropRegion = (500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</li> 10928</ul> 10929<p>If the application intends to set aeRegions to be top-left quarter of the viewfinder 10930field-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 10931zoomRatio set to 2.<wbr/>0.<wbr/> Alternatively,<wbr/> the application can set aeRegions to the equivalent 10932region of (500,<wbr/> 375,<wbr/> 1000,<wbr/> 750) for zoomRatio of 1.<wbr/>0.<wbr/> If the application doesn't 10933explicitly 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> 10934<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> 10935must only be used for letterboxing or pillarboxing of the sensor active array,<wbr/> and no 10936FREEFORM 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 10937<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 10938windowboxing,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be 10939the active array.<wbr/></p> 10940<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 10941value != 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 10942effective zoom ratio achieved by the camera device,<wbr/> and the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> 10943adjusts for additional crops that are not zoom related.<wbr/> Otherwise,<wbr/> if the application 10944sets <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 10945<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> 10946<p>When the application requests a physical stream for a logical multi-camera,<wbr/> the 10947<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 10948the <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 10949physical camera device.<wbr/></p> 10950 </td> 10951 </tr> 10952 10953 <tr class="entries_header"> 10954 <th class="th_details" colspan="6">HAL Implementation Details</th> 10955 </tr> 10956 <tr class="entry_cont"> 10957 <td class="entry_details" colspan="6"> 10958 <p>For all capture request templates,<wbr/> this field must be set to 1.<wbr/>0 in order to have 10959consistent field of views between different modes.<wbr/></p> 10960 </td> 10961 </tr> 10962 10963 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10964 <!-- end of entry --> 10965 10966 10967 10968 <!-- end of kind --> 10969 </tbody> 10970 10971 <!-- end of section --> 10972 <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr> 10973 10974 10975 <tr><td colspan="7" class="kind">controls</td></tr> 10976 10977 <thead class="entries_header"> 10978 <tr> 10979 <th class="th_name">Property Name</th> 10980 <th class="th_type">Type</th> 10981 <th class="th_description">Description</th> 10982 <th class="th_units">Units</th> 10983 <th class="th_range">Range</th> 10984 <th class="th_hal_version">Initial HIDL HAL version</th> 10985 <th class="th_tags">Tags</th> 10986 </tr> 10987 </thead> 10988 10989 <tbody> 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 11000 <tr class="entry" id="controls_android.demosaic.mode"> 11001 <td class="entry_name 11002 " rowspan="1"> 11003 android.<wbr/>demosaic.<wbr/>mode 11004 </td> 11005 <td class="entry_type"> 11006 <span class="entry_type_name entry_type_name_enum">byte</span> 11007 11008 <span class="entry_type_visibility"> [system]</span> 11009 11010 11011 11012 11013 11014 <ul class="entry_type_enum"> 11015 <li> 11016 <span class="entry_type_enum_name">FAST (v3.2)</span> 11017 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 11018Bayer RAW output.<wbr/></p></span> 11019 </li> 11020 <li> 11021 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 11022 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down 11023relative to raw output.<wbr/></p></span> 11024 </li> 11025 </ul> 11026 11027 </td> <!-- entry_type --> 11028 11029 <td class="entry_description"> 11030 <p>Controls the quality of the demosaicing 11031processing.<wbr/></p> 11032 </td> 11033 11034 <td class="entry_units"> 11035 </td> 11036 11037 <td class="entry_range"> 11038 </td> 11039 11040 <td class="entry_hal_version"> 11041 <p>3.<wbr/>2</p> 11042 </td> 11043 11044 <td class="entry_tags"> 11045 <ul class="entry_tags"> 11046 <li><a href="#tag_FUTURE">FUTURE</a></li> 11047 </ul> 11048 </td> 11049 11050 </tr> 11051 11052 11053 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11054 <!-- end of entry --> 11055 11056 11057 11058 <!-- end of kind --> 11059 </tbody> 11060 11061 <!-- end of section --> 11062 <tr><td colspan="7" id="section_edge" class="section">edge</td></tr> 11063 11064 11065 <tr><td colspan="7" class="kind">controls</td></tr> 11066 11067 <thead class="entries_header"> 11068 <tr> 11069 <th class="th_name">Property Name</th> 11070 <th class="th_type">Type</th> 11071 <th class="th_description">Description</th> 11072 <th class="th_units">Units</th> 11073 <th class="th_range">Range</th> 11074 <th class="th_hal_version">Initial HIDL HAL version</th> 11075 <th class="th_tags">Tags</th> 11076 </tr> 11077 </thead> 11078 11079 <tbody> 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 11090 <tr class="entry" id="controls_android.edge.mode"> 11091 <td class="entry_name 11092 " rowspan="5"> 11093 android.<wbr/>edge.<wbr/>mode 11094 </td> 11095 <td class="entry_type"> 11096 <span class="entry_type_name entry_type_name_enum">byte</span> 11097 11098 <span class="entry_type_visibility"> [public]</span> 11099 11100 11101 <span class="entry_type_hwlevel">[full] </span> 11102 11103 11104 11105 <ul class="entry_type_enum"> 11106 <li> 11107 <span class="entry_type_enum_name">OFF (v3.2)</span> 11108 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 11109 </li> 11110 <li> 11111 <span class="entry_type_enum_name">FAST (v3.2)</span> 11112 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 11113relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 11114slow down frame rate relative to sensor.<wbr/></p></span> 11115 </li> 11116 <li> 11117 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 11118 <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> 11119 </li> 11120 <li> 11121 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 11122 <span class="entry_type_enum_optional">[optional]</span> 11123 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different 11124levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording 11125resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) 11126or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge 11127enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned 11128so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST 11129(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 11130<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 11131with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 11132high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 11133produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 11134high-resolution buffers must not have edge enhancement applied to maximize efficiency of 11135preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 11136buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 11137reasonable preview quality.<wbr/></p> 11138<p>This mode is guaranteed to be supported by devices that support either the 11139YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 11140(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 11141be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 11142 </li> 11143 </ul> 11144 11145 </td> <!-- entry_type --> 11146 11147 <td class="entry_description"> 11148 <p>Operation mode for edge 11149enhancement.<wbr/></p> 11150 </td> 11151 11152 <td class="entry_units"> 11153 </td> 11154 11155 <td class="entry_range"> 11156 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 11157 </td> 11158 11159 <td class="entry_hal_version"> 11160 <p>3.<wbr/>2</p> 11161 </td> 11162 11163 <td class="entry_tags"> 11164 <ul class="entry_tags"> 11165 <li><a href="#tag_V1">V1</a></li> 11166 <li><a href="#tag_REPROC">REPROC</a></li> 11167 </ul> 11168 </td> 11169 11170 </tr> 11171 <tr class="entries_header"> 11172 <th class="th_details" colspan="6">Details</th> 11173 </tr> 11174 <tr class="entry_cont"> 11175 <td class="entry_details" colspan="6"> 11176 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 11177no enhancement will be applied by the camera device.<wbr/></p> 11178<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 11179will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 11180camera device will use the highest-quality enhancement algorithms,<wbr/> 11181even if it slows down capture rate.<wbr/> FAST means the camera device will 11182not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 11183edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 11184amount of enhancement applied.<wbr/></p> 11185<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 11186buffer of high-resolution images during preview and reprocess image(s) from that buffer 11187into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 11188edge enhancement to low-resolution streams (below maximum recording resolution) to 11189maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 11190since those will be reprocessed later if necessary.<wbr/></p> 11191<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 11192device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 11193The camera device may adjust its internal edge enhancement parameters for best 11194image 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> 11195 </td> 11196 </tr> 11197 11198 <tr class="entries_header"> 11199 <th class="th_details" colspan="6">HAL Implementation Details</th> 11200 </tr> 11201 <tr class="entry_cont"> 11202 <td class="entry_details" colspan="6"> 11203 <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 11204adjust the internal edge enhancement reduction parameters appropriately to get the best 11205quality images.<wbr/></p> 11206 </td> 11207 </tr> 11208 11209 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11210 <!-- end of entry --> 11211 11212 11213 <tr class="entry" id="controls_android.edge.strength"> 11214 <td class="entry_name 11215 " rowspan="1"> 11216 android.<wbr/>edge.<wbr/>strength 11217 </td> 11218 <td class="entry_type"> 11219 <span class="entry_type_name">byte</span> 11220 11221 <span class="entry_type_visibility"> [system]</span> 11222 11223 11224 11225 11226 11227 11228 </td> <!-- entry_type --> 11229 11230 <td class="entry_description"> 11231 <p>Control the amount of edge enhancement 11232applied to the images</p> 11233 </td> 11234 11235 <td class="entry_units"> 11236 1-10; 10 is maximum sharpening 11237 </td> 11238 11239 <td class="entry_range"> 11240 </td> 11241 11242 <td class="entry_hal_version"> 11243 <p>3.<wbr/>2</p> 11244 </td> 11245 11246 <td class="entry_tags"> 11247 <ul class="entry_tags"> 11248 <li><a href="#tag_FUTURE">FUTURE</a></li> 11249 </ul> 11250 </td> 11251 11252 </tr> 11253 11254 11255 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11256 <!-- end of entry --> 11257 11258 11259 11260 <!-- end of kind --> 11261 </tbody> 11262 <tr><td colspan="7" class="kind">static</td></tr> 11263 11264 <thead class="entries_header"> 11265 <tr> 11266 <th class="th_name">Property Name</th> 11267 <th class="th_type">Type</th> 11268 <th class="th_description">Description</th> 11269 <th class="th_units">Units</th> 11270 <th class="th_range">Range</th> 11271 <th class="th_hal_version">Initial HIDL HAL version</th> 11272 <th class="th_tags">Tags</th> 11273 </tr> 11274 </thead> 11275 11276 <tbody> 11277 11278 11279 11280 11281 11282 11283 11284 11285 11286 11287 <tr class="entry" id="static_android.edge.availableEdgeModes"> 11288 <td class="entry_name 11289 " rowspan="5"> 11290 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 11291 </td> 11292 <td class="entry_type"> 11293 <span class="entry_type_name">byte</span> 11294 <span class="entry_type_container">x</span> 11295 11296 <span class="entry_type_array"> 11297 n 11298 </span> 11299 <span class="entry_type_visibility"> [public as enumList]</span> 11300 11301 11302 <span class="entry_type_hwlevel">[full] </span> 11303 11304 11305 <div class="entry_type_notes">list of enums</div> 11306 11307 11308 </td> <!-- entry_type --> 11309 11310 <td class="entry_description"> 11311 <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 11312device.<wbr/></p> 11313 </td> 11314 11315 <td class="entry_units"> 11316 </td> 11317 11318 <td class="entry_range"> 11319 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p> 11320 </td> 11321 11322 <td class="entry_hal_version"> 11323 <p>3.<wbr/>2</p> 11324 </td> 11325 11326 <td class="entry_tags"> 11327 <ul class="entry_tags"> 11328 <li><a href="#tag_V1">V1</a></li> 11329 <li><a href="#tag_REPROC">REPROC</a></li> 11330 </ul> 11331 </td> 11332 11333 </tr> 11334 <tr class="entries_header"> 11335 <th class="th_details" colspan="6">Details</th> 11336 </tr> 11337 <tr class="entry_cont"> 11338 <td class="entry_details" colspan="6"> 11339 <p>Full-capability camera devices must always support OFF; camera devices that support 11340YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will 11341list FAST.<wbr/></p> 11342 </td> 11343 </tr> 11344 11345 <tr class="entries_header"> 11346 <th class="th_details" colspan="6">HAL Implementation Details</th> 11347 </tr> 11348 <tr class="entry_cont"> 11349 <td class="entry_details" colspan="6"> 11350 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available 11351on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 11352That is,<wbr/> if the highest quality implementation on the camera device does not slow down 11353capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 11354 </td> 11355 </tr> 11356 11357 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11358 <!-- end of entry --> 11359 11360 11361 11362 <!-- end of kind --> 11363 </tbody> 11364 <tr><td colspan="7" class="kind">dynamic</td></tr> 11365 11366 <thead class="entries_header"> 11367 <tr> 11368 <th class="th_name">Property Name</th> 11369 <th class="th_type">Type</th> 11370 <th class="th_description">Description</th> 11371 <th class="th_units">Units</th> 11372 <th class="th_range">Range</th> 11373 <th class="th_hal_version">Initial HIDL HAL version</th> 11374 <th class="th_tags">Tags</th> 11375 </tr> 11376 </thead> 11377 11378 <tbody> 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 <tr class="entry" id="dynamic_android.edge.mode"> 11390 <td class="entry_name 11391 " rowspan="5"> 11392 android.<wbr/>edge.<wbr/>mode 11393 </td> 11394 <td class="entry_type"> 11395 <span class="entry_type_name entry_type_name_enum">byte</span> 11396 11397 <span class="entry_type_visibility"> [public]</span> 11398 11399 11400 <span class="entry_type_hwlevel">[full] </span> 11401 11402 11403 11404 <ul class="entry_type_enum"> 11405 <li> 11406 <span class="entry_type_enum_name">OFF (v3.2)</span> 11407 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 11408 </li> 11409 <li> 11410 <span class="entry_type_enum_name">FAST (v3.2)</span> 11411 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 11412relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 11413slow down frame rate relative to sensor.<wbr/></p></span> 11414 </li> 11415 <li> 11416 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 11417 <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> 11418 </li> 11419 <li> 11420 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 11421 <span class="entry_type_enum_optional">[optional]</span> 11422 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different 11423levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording 11424resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) 11425or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge 11426enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned 11427so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST 11428(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 11429<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 11430with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 11431high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 11432produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 11433high-resolution buffers must not have edge enhancement applied to maximize efficiency of 11434preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 11435buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 11436reasonable preview quality.<wbr/></p> 11437<p>This mode is guaranteed to be supported by devices that support either the 11438YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 11439(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 11440be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 11441 </li> 11442 </ul> 11443 11444 </td> <!-- entry_type --> 11445 11446 <td class="entry_description"> 11447 <p>Operation mode for edge 11448enhancement.<wbr/></p> 11449 </td> 11450 11451 <td class="entry_units"> 11452 </td> 11453 11454 <td class="entry_range"> 11455 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 11456 </td> 11457 11458 <td class="entry_hal_version"> 11459 <p>3.<wbr/>2</p> 11460 </td> 11461 11462 <td class="entry_tags"> 11463 <ul class="entry_tags"> 11464 <li><a href="#tag_V1">V1</a></li> 11465 <li><a href="#tag_REPROC">REPROC</a></li> 11466 </ul> 11467 </td> 11468 11469 </tr> 11470 <tr class="entries_header"> 11471 <th class="th_details" colspan="6">Details</th> 11472 </tr> 11473 <tr class="entry_cont"> 11474 <td class="entry_details" colspan="6"> 11475 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 11476no enhancement will be applied by the camera device.<wbr/></p> 11477<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 11478will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 11479camera device will use the highest-quality enhancement algorithms,<wbr/> 11480even if it slows down capture rate.<wbr/> FAST means the camera device will 11481not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 11482edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 11483amount of enhancement applied.<wbr/></p> 11484<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 11485buffer of high-resolution images during preview and reprocess image(s) from that buffer 11486into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 11487edge enhancement to low-resolution streams (below maximum recording resolution) to 11488maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 11489since those will be reprocessed later if necessary.<wbr/></p> 11490<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 11491device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 11492The camera device may adjust its internal edge enhancement parameters for best 11493image 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> 11494 </td> 11495 </tr> 11496 11497 <tr class="entries_header"> 11498 <th class="th_details" colspan="6">HAL Implementation Details</th> 11499 </tr> 11500 <tr class="entry_cont"> 11501 <td class="entry_details" colspan="6"> 11502 <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 11503adjust the internal edge enhancement reduction parameters appropriately to get the best 11504quality images.<wbr/></p> 11505 </td> 11506 </tr> 11507 11508 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11509 <!-- end of entry --> 11510 11511 11512 11513 <!-- end of kind --> 11514 </tbody> 11515 11516 <!-- end of section --> 11517 <tr><td colspan="7" id="section_flash" class="section">flash</td></tr> 11518 11519 11520 <tr><td colspan="7" class="kind">controls</td></tr> 11521 11522 <thead class="entries_header"> 11523 <tr> 11524 <th class="th_name">Property Name</th> 11525 <th class="th_type">Type</th> 11526 <th class="th_description">Description</th> 11527 <th class="th_units">Units</th> 11528 <th class="th_range">Range</th> 11529 <th class="th_hal_version">Initial HIDL HAL version</th> 11530 <th class="th_tags">Tags</th> 11531 </tr> 11532 </thead> 11533 11534 <tbody> 11535 11536 11537 11538 11539 11540 11541 11542 11543 11544 11545 <tr class="entry" id="controls_android.flash.firingPower"> 11546 <td class="entry_name 11547 " rowspan="3"> 11548 android.<wbr/>flash.<wbr/>firing<wbr/>Power 11549 </td> 11550 <td class="entry_type"> 11551 <span class="entry_type_name">byte</span> 11552 11553 <span class="entry_type_visibility"> [system]</span> 11554 11555 11556 11557 11558 11559 11560 </td> <!-- entry_type --> 11561 11562 <td class="entry_description"> 11563 <p>Power for flash firing/<wbr/>torch</p> 11564 </td> 11565 11566 <td class="entry_units"> 11567 10 is max power; 0 is no flash.<wbr/> Linear 11568 </td> 11569 11570 <td class="entry_range"> 11571 <p>0 - 10</p> 11572 </td> 11573 11574 <td class="entry_hal_version"> 11575 <p>3.<wbr/>2</p> 11576 </td> 11577 11578 <td class="entry_tags"> 11579 <ul class="entry_tags"> 11580 <li><a href="#tag_FUTURE">FUTURE</a></li> 11581 </ul> 11582 </td> 11583 11584 </tr> 11585 <tr class="entries_header"> 11586 <th class="th_details" colspan="6">Details</th> 11587 </tr> 11588 <tr class="entry_cont"> 11589 <td class="entry_details" colspan="6"> 11590 <p>Power for snapshot may use a different scale than 11591for torch mode.<wbr/> Only one entry for torch mode will be 11592used</p> 11593 </td> 11594 </tr> 11595 11596 11597 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11598 <!-- end of entry --> 11599 11600 11601 <tr class="entry" id="controls_android.flash.firingTime"> 11602 <td class="entry_name 11603 " rowspan="3"> 11604 android.<wbr/>flash.<wbr/>firing<wbr/>Time 11605 </td> 11606 <td class="entry_type"> 11607 <span class="entry_type_name">int64</span> 11608 11609 <span class="entry_type_visibility"> [system]</span> 11610 11611 11612 11613 11614 11615 11616 </td> <!-- entry_type --> 11617 11618 <td class="entry_description"> 11619 <p>Firing time of flash relative to start of 11620exposure</p> 11621 </td> 11622 11623 <td class="entry_units"> 11624 nanoseconds 11625 </td> 11626 11627 <td class="entry_range"> 11628 <p>0-(exposure time-flash duration)</p> 11629 </td> 11630 11631 <td class="entry_hal_version"> 11632 <p>3.<wbr/>2</p> 11633 </td> 11634 11635 <td class="entry_tags"> 11636 <ul class="entry_tags"> 11637 <li><a href="#tag_FUTURE">FUTURE</a></li> 11638 </ul> 11639 </td> 11640 11641 </tr> 11642 <tr class="entries_header"> 11643 <th class="th_details" colspan="6">Details</th> 11644 </tr> 11645 <tr class="entry_cont"> 11646 <td class="entry_details" colspan="6"> 11647 <p>Clamped to (0,<wbr/> exposure time - flash 11648duration).<wbr/></p> 11649 </td> 11650 </tr> 11651 11652 11653 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11654 <!-- end of entry --> 11655 11656 11657 <tr class="entry" id="controls_android.flash.mode"> 11658 <td class="entry_name 11659 " rowspan="3"> 11660 android.<wbr/>flash.<wbr/>mode 11661 </td> 11662 <td class="entry_type"> 11663 <span class="entry_type_name entry_type_name_enum">byte</span> 11664 11665 <span class="entry_type_visibility"> [public]</span> 11666 11667 11668 <span class="entry_type_hwlevel">[legacy] </span> 11669 11670 11671 11672 <ul class="entry_type_enum"> 11673 <li> 11674 <span class="entry_type_enum_name">OFF (v3.2)</span> 11675 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 11676 </li> 11677 <li> 11678 <span class="entry_type_enum_name">SINGLE (v3.2)</span> 11679 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 11680for this capture.<wbr/></p></span> 11681 </li> 11682 <li> 11683 <span class="entry_type_enum_name">TORCH (v3.2)</span> 11684 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 11685 </li> 11686 </ul> 11687 11688 </td> <!-- entry_type --> 11689 11690 <td class="entry_description"> 11691 <p>The desired mode for for the camera device's flash control.<wbr/></p> 11692 </td> 11693 11694 <td class="entry_units"> 11695 </td> 11696 11697 <td class="entry_range"> 11698 </td> 11699 11700 <td class="entry_hal_version"> 11701 <p>3.<wbr/>2</p> 11702 </td> 11703 11704 <td class="entry_tags"> 11705 <ul class="entry_tags"> 11706 <li><a href="#tag_BC">BC</a></li> 11707 </ul> 11708 </td> 11709 11710 </tr> 11711 <tr class="entries_header"> 11712 <th class="th_details" colspan="6">Details</th> 11713 </tr> 11714 <tr class="entry_cont"> 11715 <td class="entry_details" colspan="6"> 11716 <p>This control is only effective when flash unit is available 11717(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 11718<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/> 11719Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 11720ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 11721<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 11722<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 11723device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 11724control should be used along with auto-exposure (AE) precapture metering sequence 11725(<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> 11726<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 11727for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 11728<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> 11729 </td> 11730 </tr> 11731 11732 11733 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11734 <!-- end of entry --> 11735 11736 11737 11738 <!-- end of kind --> 11739 </tbody> 11740 <tr><td colspan="7" class="kind">static</td></tr> 11741 11742 <thead class="entries_header"> 11743 <tr> 11744 <th class="th_name">Property Name</th> 11745 <th class="th_type">Type</th> 11746 <th class="th_description">Description</th> 11747 <th class="th_units">Units</th> 11748 <th class="th_range">Range</th> 11749 <th class="th_hal_version">Initial HIDL HAL version</th> 11750 <th class="th_tags">Tags</th> 11751 </tr> 11752 </thead> 11753 11754 <tbody> 11755 11756 11757 11758 11759 11760 11761 11762 11763 11764 11765 11766 11767 <tr class="entry" id="static_android.flash.info.available"> 11768 <td class="entry_name 11769 " rowspan="3"> 11770 android.<wbr/>flash.<wbr/>info.<wbr/>available 11771 </td> 11772 <td class="entry_type"> 11773 <span class="entry_type_name entry_type_name_enum">byte</span> 11774 11775 <span class="entry_type_visibility"> [public as boolean]</span> 11776 11777 11778 <span class="entry_type_hwlevel">[legacy] </span> 11779 11780 11781 11782 <ul class="entry_type_enum"> 11783 <li> 11784 <span class="entry_type_enum_name">FALSE (v3.2)</span> 11785 </li> 11786 <li> 11787 <span class="entry_type_enum_name">TRUE (v3.2)</span> 11788 </li> 11789 </ul> 11790 11791 </td> <!-- entry_type --> 11792 11793 <td class="entry_description"> 11794 <p>Whether this camera device has a 11795flash unit.<wbr/></p> 11796 </td> 11797 11798 <td class="entry_units"> 11799 </td> 11800 11801 <td class="entry_range"> 11802 </td> 11803 11804 <td class="entry_hal_version"> 11805 <p>3.<wbr/>2</p> 11806 </td> 11807 11808 <td class="entry_tags"> 11809 <ul class="entry_tags"> 11810 <li><a href="#tag_BC">BC</a></li> 11811 </ul> 11812 </td> 11813 11814 </tr> 11815 <tr class="entries_header"> 11816 <th class="th_details" colspan="6">Details</th> 11817 </tr> 11818 <tr class="entry_cont"> 11819 <td class="entry_details" colspan="6"> 11820 <p>Will be <code>false</code> if no flash is available.<wbr/></p> 11821<p>If there is no flash unit,<wbr/> none of the flash controls do 11822anything.<wbr/></p> 11823 </td> 11824 </tr> 11825 11826 11827 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11828 <!-- end of entry --> 11829 11830 11831 <tr class="entry" id="static_android.flash.info.chargeDuration"> 11832 <td class="entry_name 11833 " rowspan="3"> 11834 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 11835 </td> 11836 <td class="entry_type"> 11837 <span class="entry_type_name">int64</span> 11838 11839 <span class="entry_type_visibility"> [system]</span> 11840 11841 11842 11843 11844 11845 11846 </td> <!-- entry_type --> 11847 11848 <td class="entry_description"> 11849 <p>Time taken before flash can fire 11850again</p> 11851 </td> 11852 11853 <td class="entry_units"> 11854 nanoseconds 11855 </td> 11856 11857 <td class="entry_range"> 11858 <p>0-1e9</p> 11859 </td> 11860 11861 <td class="entry_hal_version"> 11862 <p>3.<wbr/>2</p> 11863 </td> 11864 11865 <td class="entry_tags"> 11866 <ul class="entry_tags"> 11867 <li><a href="#tag_FUTURE">FUTURE</a></li> 11868 </ul> 11869 </td> 11870 11871 </tr> 11872 <tr class="entries_header"> 11873 <th class="th_details" colspan="6">Details</th> 11874 </tr> 11875 <tr class="entry_cont"> 11876 <td class="entry_details" colspan="6"> 11877 <p>1 second too long/<wbr/>too short for recharge? Should 11878this be power-dependent?</p> 11879 </td> 11880 </tr> 11881 11882 11883 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11884 <!-- end of entry --> 11885 11886 11887 11888 11889 11890 <tr class="entry" id="static_android.flash.colorTemperature"> 11891 <td class="entry_name 11892 " rowspan="1"> 11893 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 11894 </td> 11895 <td class="entry_type"> 11896 <span class="entry_type_name">byte</span> 11897 11898 <span class="entry_type_visibility"> [system]</span> 11899 11900 11901 11902 11903 11904 11905 </td> <!-- entry_type --> 11906 11907 <td class="entry_description"> 11908 <p>The x,<wbr/>y whitepoint of the 11909flash</p> 11910 </td> 11911 11912 <td class="entry_units"> 11913 pair of floats 11914 </td> 11915 11916 <td class="entry_range"> 11917 <p>0-1 for both</p> 11918 </td> 11919 11920 <td class="entry_hal_version"> 11921 <p>3.<wbr/>2</p> 11922 </td> 11923 11924 <td class="entry_tags"> 11925 <ul class="entry_tags"> 11926 <li><a href="#tag_FUTURE">FUTURE</a></li> 11927 </ul> 11928 </td> 11929 11930 </tr> 11931 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="static_android.flash.maxEnergy"> 11938 <td class="entry_name 11939 " rowspan="1"> 11940 android.<wbr/>flash.<wbr/>max<wbr/>Energy 11941 </td> 11942 <td class="entry_type"> 11943 <span class="entry_type_name">byte</span> 11944 11945 <span class="entry_type_visibility"> [system]</span> 11946 11947 11948 11949 11950 11951 11952 </td> <!-- entry_type --> 11953 11954 <td class="entry_description"> 11955 <p>Max energy output of the flash for a full 11956power single flash</p> 11957 </td> 11958 11959 <td class="entry_units"> 11960 lumen-seconds 11961 </td> 11962 11963 <td class="entry_range"> 11964 <p>>= 0</p> 11965 </td> 11966 11967 <td class="entry_hal_version"> 11968 <p>3.<wbr/>2</p> 11969 </td> 11970 11971 <td class="entry_tags"> 11972 <ul class="entry_tags"> 11973 <li><a href="#tag_FUTURE">FUTURE</a></li> 11974 </ul> 11975 </td> 11976 11977 </tr> 11978 11979 11980 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11981 <!-- end of entry --> 11982 11983 11984 11985 <!-- end of kind --> 11986 </tbody> 11987 <tr><td colspan="7" class="kind">dynamic</td></tr> 11988 11989 <thead class="entries_header"> 11990 <tr> 11991 <th class="th_name">Property Name</th> 11992 <th class="th_type">Type</th> 11993 <th class="th_description">Description</th> 11994 <th class="th_units">Units</th> 11995 <th class="th_range">Range</th> 11996 <th class="th_hal_version">Initial HIDL HAL version</th> 11997 <th class="th_tags">Tags</th> 11998 </tr> 11999 </thead> 12000 12001 <tbody> 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 <tr class="entry" id="dynamic_android.flash.firingPower"> 12013 <td class="entry_name 12014 " rowspan="3"> 12015 android.<wbr/>flash.<wbr/>firing<wbr/>Power 12016 </td> 12017 <td class="entry_type"> 12018 <span class="entry_type_name">byte</span> 12019 12020 <span class="entry_type_visibility"> [system]</span> 12021 12022 12023 12024 12025 12026 12027 </td> <!-- entry_type --> 12028 12029 <td class="entry_description"> 12030 <p>Power for flash firing/<wbr/>torch</p> 12031 </td> 12032 12033 <td class="entry_units"> 12034 10 is max power; 0 is no flash.<wbr/> Linear 12035 </td> 12036 12037 <td class="entry_range"> 12038 <p>0 - 10</p> 12039 </td> 12040 12041 <td class="entry_hal_version"> 12042 <p>3.<wbr/>2</p> 12043 </td> 12044 12045 <td class="entry_tags"> 12046 <ul class="entry_tags"> 12047 <li><a href="#tag_FUTURE">FUTURE</a></li> 12048 </ul> 12049 </td> 12050 12051 </tr> 12052 <tr class="entries_header"> 12053 <th class="th_details" colspan="6">Details</th> 12054 </tr> 12055 <tr class="entry_cont"> 12056 <td class="entry_details" colspan="6"> 12057 <p>Power for snapshot may use a different scale than 12058for torch mode.<wbr/> Only one entry for torch mode will be 12059used</p> 12060 </td> 12061 </tr> 12062 12063 12064 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12065 <!-- end of entry --> 12066 12067 12068 <tr class="entry" id="dynamic_android.flash.firingTime"> 12069 <td class="entry_name 12070 " rowspan="3"> 12071 android.<wbr/>flash.<wbr/>firing<wbr/>Time 12072 </td> 12073 <td class="entry_type"> 12074 <span class="entry_type_name">int64</span> 12075 12076 <span class="entry_type_visibility"> [system]</span> 12077 12078 12079 12080 12081 12082 12083 </td> <!-- entry_type --> 12084 12085 <td class="entry_description"> 12086 <p>Firing time of flash relative to start of 12087exposure</p> 12088 </td> 12089 12090 <td class="entry_units"> 12091 nanoseconds 12092 </td> 12093 12094 <td class="entry_range"> 12095 <p>0-(exposure time-flash duration)</p> 12096 </td> 12097 12098 <td class="entry_hal_version"> 12099 <p>3.<wbr/>2</p> 12100 </td> 12101 12102 <td class="entry_tags"> 12103 <ul class="entry_tags"> 12104 <li><a href="#tag_FUTURE">FUTURE</a></li> 12105 </ul> 12106 </td> 12107 12108 </tr> 12109 <tr class="entries_header"> 12110 <th class="th_details" colspan="6">Details</th> 12111 </tr> 12112 <tr class="entry_cont"> 12113 <td class="entry_details" colspan="6"> 12114 <p>Clamped to (0,<wbr/> exposure time - flash 12115duration).<wbr/></p> 12116 </td> 12117 </tr> 12118 12119 12120 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12121 <!-- end of entry --> 12122 12123 12124 <tr class="entry" id="dynamic_android.flash.mode"> 12125 <td class="entry_name 12126 " rowspan="3"> 12127 android.<wbr/>flash.<wbr/>mode 12128 </td> 12129 <td class="entry_type"> 12130 <span class="entry_type_name entry_type_name_enum">byte</span> 12131 12132 <span class="entry_type_visibility"> [public]</span> 12133 12134 12135 <span class="entry_type_hwlevel">[legacy] </span> 12136 12137 12138 12139 <ul class="entry_type_enum"> 12140 <li> 12141 <span class="entry_type_enum_name">OFF (v3.2)</span> 12142 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 12143 </li> 12144 <li> 12145 <span class="entry_type_enum_name">SINGLE (v3.2)</span> 12146 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 12147for this capture.<wbr/></p></span> 12148 </li> 12149 <li> 12150 <span class="entry_type_enum_name">TORCH (v3.2)</span> 12151 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 12152 </li> 12153 </ul> 12154 12155 </td> <!-- entry_type --> 12156 12157 <td class="entry_description"> 12158 <p>The desired mode for for the camera device's flash control.<wbr/></p> 12159 </td> 12160 12161 <td class="entry_units"> 12162 </td> 12163 12164 <td class="entry_range"> 12165 </td> 12166 12167 <td class="entry_hal_version"> 12168 <p>3.<wbr/>2</p> 12169 </td> 12170 12171 <td class="entry_tags"> 12172 <ul class="entry_tags"> 12173 <li><a href="#tag_BC">BC</a></li> 12174 </ul> 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>This control is only effective when flash unit is available 12184(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 12185<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/> 12186Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 12187ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 12188<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 12189<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 12190device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 12191control should be used along with auto-exposure (AE) precapture metering sequence 12192(<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> 12193<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 12194for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 12195<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> 12196 </td> 12197 </tr> 12198 12199 12200 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12201 <!-- end of entry --> 12202 12203 12204 <tr class="entry" id="dynamic_android.flash.state"> 12205 <td class="entry_name 12206 " rowspan="3"> 12207 android.<wbr/>flash.<wbr/>state 12208 </td> 12209 <td class="entry_type"> 12210 <span class="entry_type_name entry_type_name_enum">byte</span> 12211 12212 <span class="entry_type_visibility"> [public]</span> 12213 12214 12215 <span class="entry_type_hwlevel">[limited] </span> 12216 12217 12218 12219 <ul class="entry_type_enum"> 12220 <li> 12221 <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span> 12222 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 12223 </li> 12224 <li> 12225 <span class="entry_type_enum_name">CHARGING (v3.2)</span> 12226 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 12227 </li> 12228 <li> 12229 <span class="entry_type_enum_name">READY (v3.2)</span> 12230 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 12231 </li> 12232 <li> 12233 <span class="entry_type_enum_name">FIRED (v3.2)</span> 12234 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 12235 </li> 12236 <li> 12237 <span class="entry_type_enum_name">PARTIAL (v3.2)</span> 12238 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p> 12239<p>This is usually due to the next or previous frame having 12240the flash fire,<wbr/> and the flash spilling into this capture 12241due to hardware limitations.<wbr/></p></span> 12242 </li> 12243 </ul> 12244 12245 </td> <!-- entry_type --> 12246 12247 <td class="entry_description"> 12248 <p>Current state of the flash 12249unit.<wbr/></p> 12250 </td> 12251 12252 <td class="entry_units"> 12253 </td> 12254 12255 <td class="entry_range"> 12256 </td> 12257 12258 <td class="entry_hal_version"> 12259 <p>3.<wbr/>2</p> 12260 </td> 12261 12262 <td class="entry_tags"> 12263 </td> 12264 12265 </tr> 12266 <tr class="entries_header"> 12267 <th class="th_details" colspan="6">Details</th> 12268 </tr> 12269 <tr class="entry_cont"> 12270 <td class="entry_details" colspan="6"> 12271 <p>When the camera device doesn't have flash unit 12272(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/> 12273Other states indicate the current flash status.<wbr/></p> 12274<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p> 12275<ul> 12276<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li> 12277<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH 12278 will always return FIRED.<wbr/></li> 12279<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH 12280 will always return FIRED.<wbr/></li> 12281</ul> 12282<p>In all other conditions the state will not be available on 12283LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p> 12284 </td> 12285 </tr> 12286 12287 12288 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12289 <!-- end of entry --> 12290 12291 12292 12293 <!-- end of kind --> 12294 </tbody> 12295 12296 <!-- end of section --> 12297 <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr> 12298 12299 12300 <tr><td colspan="7" class="kind">controls</td></tr> 12301 12302 <thead class="entries_header"> 12303 <tr> 12304 <th class="th_name">Property Name</th> 12305 <th class="th_type">Type</th> 12306 <th class="th_description">Description</th> 12307 <th class="th_units">Units</th> 12308 <th class="th_range">Range</th> 12309 <th class="th_hal_version">Initial HIDL HAL version</th> 12310 <th class="th_tags">Tags</th> 12311 </tr> 12312 </thead> 12313 12314 <tbody> 12315 12316 12317 12318 12319 12320 12321 12322 12323 12324 12325 <tr class="entry" id="controls_android.hotPixel.mode"> 12326 <td class="entry_name 12327 " rowspan="3"> 12328 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 12329 </td> 12330 <td class="entry_type"> 12331 <span class="entry_type_name entry_type_name_enum">byte</span> 12332 12333 <span class="entry_type_visibility"> [public]</span> 12334 12335 12336 12337 12338 12339 <ul class="entry_type_enum"> 12340 <li> 12341 <span class="entry_type_enum_name">OFF (v3.2)</span> 12342 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 12343<p>The frame rate must not be reduced relative to sensor raw output 12344for this option.<wbr/></p> 12345<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> 12346 </li> 12347 <li> 12348 <span class="entry_type_enum_name">FAST (v3.2)</span> 12349 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 12350rate relative to sensor raw output.<wbr/></p> 12351<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> 12352 </li> 12353 <li> 12354 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 12355 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 12356of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 12357<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> 12358 </li> 12359 </ul> 12360 12361 </td> <!-- entry_type --> 12362 12363 <td class="entry_description"> 12364 <p>Operational mode for hot pixel correction.<wbr/></p> 12365 </td> 12366 12367 <td class="entry_units"> 12368 </td> 12369 12370 <td class="entry_range"> 12371 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 12372 </td> 12373 12374 <td class="entry_hal_version"> 12375 <p>3.<wbr/>2</p> 12376 </td> 12377 12378 <td class="entry_tags"> 12379 <ul class="entry_tags"> 12380 <li><a href="#tag_V1">V1</a></li> 12381 <li><a href="#tag_RAW">RAW</a></li> 12382 </ul> 12383 </td> 12384 12385 </tr> 12386 <tr class="entries_header"> 12387 <th class="th_details" colspan="6">Details</th> 12388 </tr> 12389 <tr class="entry_cont"> 12390 <td class="entry_details" colspan="6"> 12391 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 12392that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 12393are stuck at an arbitrary value or are oversensitive).<wbr/></p> 12394 </td> 12395 </tr> 12396 12397 12398 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12399 <!-- end of entry --> 12400 12401 12402 12403 <!-- end of kind --> 12404 </tbody> 12405 <tr><td colspan="7" class="kind">static</td></tr> 12406 12407 <thead class="entries_header"> 12408 <tr> 12409 <th class="th_name">Property Name</th> 12410 <th class="th_type">Type</th> 12411 <th class="th_description">Description</th> 12412 <th class="th_units">Units</th> 12413 <th class="th_range">Range</th> 12414 <th class="th_hal_version">Initial HIDL HAL version</th> 12415 <th class="th_tags">Tags</th> 12416 </tr> 12417 </thead> 12418 12419 <tbody> 12420 12421 12422 12423 12424 12425 12426 12427 12428 12429 12430 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 12431 <td class="entry_name 12432 " rowspan="5"> 12433 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 12434 </td> 12435 <td class="entry_type"> 12436 <span class="entry_type_name">byte</span> 12437 <span class="entry_type_container">x</span> 12438 12439 <span class="entry_type_array"> 12440 n 12441 </span> 12442 <span class="entry_type_visibility"> [public as enumList]</span> 12443 12444 12445 12446 12447 <div class="entry_type_notes">list of enums</div> 12448 12449 12450 </td> <!-- entry_type --> 12451 12452 <td class="entry_description"> 12453 <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 12454camera device.<wbr/></p> 12455 </td> 12456 12457 <td class="entry_units"> 12458 </td> 12459 12460 <td class="entry_range"> 12461 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p> 12462 </td> 12463 12464 <td class="entry_hal_version"> 12465 <p>3.<wbr/>2</p> 12466 </td> 12467 12468 <td class="entry_tags"> 12469 <ul class="entry_tags"> 12470 <li><a href="#tag_V1">V1</a></li> 12471 <li><a href="#tag_RAW">RAW</a></li> 12472 </ul> 12473 </td> 12474 12475 </tr> 12476 <tr class="entries_header"> 12477 <th class="th_details" colspan="6">Details</th> 12478 </tr> 12479 <tr class="entry_cont"> 12480 <td class="entry_details" colspan="6"> 12481 <p>FULL mode camera devices will always support FAST.<wbr/></p> 12482 </td> 12483 </tr> 12484 12485 <tr class="entries_header"> 12486 <th class="th_details" colspan="6">HAL Implementation Details</th> 12487 </tr> 12488 <tr class="entry_cont"> 12489 <td class="entry_details" colspan="6"> 12490 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 12491pixels than actual pixels on the camera sensor.<wbr/> 12492HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available 12493on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 12494That is,<wbr/> if the highest quality implementation on the camera device does not slow down 12495capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 12496 </td> 12497 </tr> 12498 12499 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12500 <!-- end of entry --> 12501 12502 12503 12504 <!-- end of kind --> 12505 </tbody> 12506 <tr><td colspan="7" class="kind">dynamic</td></tr> 12507 12508 <thead class="entries_header"> 12509 <tr> 12510 <th class="th_name">Property Name</th> 12511 <th class="th_type">Type</th> 12512 <th class="th_description">Description</th> 12513 <th class="th_units">Units</th> 12514 <th class="th_range">Range</th> 12515 <th class="th_hal_version">Initial HIDL HAL version</th> 12516 <th class="th_tags">Tags</th> 12517 </tr> 12518 </thead> 12519 12520 <tbody> 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12531 <tr class="entry" id="dynamic_android.hotPixel.mode"> 12532 <td class="entry_name 12533 " rowspan="3"> 12534 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 12535 </td> 12536 <td class="entry_type"> 12537 <span class="entry_type_name entry_type_name_enum">byte</span> 12538 12539 <span class="entry_type_visibility"> [public]</span> 12540 12541 12542 12543 12544 12545 <ul class="entry_type_enum"> 12546 <li> 12547 <span class="entry_type_enum_name">OFF (v3.2)</span> 12548 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 12549<p>The frame rate must not be reduced relative to sensor raw output 12550for this option.<wbr/></p> 12551<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> 12552 </li> 12553 <li> 12554 <span class="entry_type_enum_name">FAST (v3.2)</span> 12555 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 12556rate relative to sensor raw output.<wbr/></p> 12557<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> 12558 </li> 12559 <li> 12560 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 12561 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 12562of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 12563<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> 12564 </li> 12565 </ul> 12566 12567 </td> <!-- entry_type --> 12568 12569 <td class="entry_description"> 12570 <p>Operational mode for hot pixel correction.<wbr/></p> 12571 </td> 12572 12573 <td class="entry_units"> 12574 </td> 12575 12576 <td class="entry_range"> 12577 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 12578 </td> 12579 12580 <td class="entry_hal_version"> 12581 <p>3.<wbr/>2</p> 12582 </td> 12583 12584 <td class="entry_tags"> 12585 <ul class="entry_tags"> 12586 <li><a href="#tag_V1">V1</a></li> 12587 <li><a href="#tag_RAW">RAW</a></li> 12588 </ul> 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>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 12598that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 12599are stuck at an arbitrary value or are oversensitive).<wbr/></p> 12600 </td> 12601 </tr> 12602 12603 12604 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12605 <!-- end of entry --> 12606 12607 12608 12609 <!-- end of kind --> 12610 </tbody> 12611 12612 <!-- end of section --> 12613 <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr> 12614 12615 12616 <tr><td colspan="7" class="kind">controls</td></tr> 12617 12618 <thead class="entries_header"> 12619 <tr> 12620 <th class="th_name">Property Name</th> 12621 <th class="th_type">Type</th> 12622 <th class="th_description">Description</th> 12623 <th class="th_units">Units</th> 12624 <th class="th_range">Range</th> 12625 <th class="th_hal_version">Initial HIDL HAL version</th> 12626 <th class="th_tags">Tags</th> 12627 </tr> 12628 </thead> 12629 12630 <tbody> 12631 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 <tr class="entry" id="controls_android.jpeg.gpsLocation"> 12642 <td class="entry_name 12643 " rowspan="3"> 12644 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 12645 </td> 12646 <td class="entry_type"> 12647 <span class="entry_type_name">byte</span> 12648 12649 <span class="entry_type_visibility"> [java_public as location]</span> 12650 12651 <span class="entry_type_synthetic">[synthetic] </span> 12652 12653 <span class="entry_type_hwlevel">[legacy] </span> 12654 12655 12656 12657 12658 </td> <!-- entry_type --> 12659 12660 <td class="entry_description"> 12661 <p>A location object to use when generating image GPS metadata.<wbr/></p> 12662 </td> 12663 12664 <td class="entry_units"> 12665 </td> 12666 12667 <td class="entry_range"> 12668 </td> 12669 12670 <td class="entry_hal_version"> 12671 <p>3.<wbr/>2</p> 12672 </td> 12673 12674 <td class="entry_tags"> 12675 </td> 12676 12677 </tr> 12678 <tr class="entries_header"> 12679 <th class="th_details" colspan="6">Details</th> 12680 </tr> 12681 <tr class="entry_cont"> 12682 <td class="entry_details" colspan="6"> 12683 <p>Setting a location object in a request will include the GPS coordinates of the location 12684into any JPEG images captured based on the request.<wbr/> These coordinates can then be 12685viewed by anyone who receives the JPEG image.<wbr/></p> 12686<p>This tag is also used for HEIC image capture.<wbr/></p> 12687 </td> 12688 </tr> 12689 12690 12691 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12692 <!-- end of entry --> 12693 12694 12695 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 12696 <td class="entry_name 12697 " rowspan="3"> 12698 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 12699 </td> 12700 <td class="entry_type"> 12701 <span class="entry_type_name">double</span> 12702 <span class="entry_type_container">x</span> 12703 12704 <span class="entry_type_array"> 12705 3 12706 </span> 12707 <span class="entry_type_visibility"> [ndk_public]</span> 12708 12709 12710 <span class="entry_type_hwlevel">[legacy] </span> 12711 12712 12713 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 12714 12715 12716 </td> <!-- entry_type --> 12717 12718 <td class="entry_description"> 12719 <p>GPS coordinates to include in output JPEG 12720EXIF.<wbr/></p> 12721 </td> 12722 12723 <td class="entry_units"> 12724 </td> 12725 12726 <td class="entry_range"> 12727 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 12728 </td> 12729 12730 <td class="entry_hal_version"> 12731 <p>3.<wbr/>2</p> 12732 </td> 12733 12734 <td class="entry_tags"> 12735 <ul class="entry_tags"> 12736 <li><a href="#tag_BC">BC</a></li> 12737 </ul> 12738 </td> 12739 12740 </tr> 12741 <tr class="entries_header"> 12742 <th class="th_details" colspan="6">Details</th> 12743 </tr> 12744 <tr class="entry_cont"> 12745 <td class="entry_details" colspan="6"> 12746 <p>This tag is also used for HEIC image capture.<wbr/></p> 12747 </td> 12748 </tr> 12749 12750 12751 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12752 <!-- end of entry --> 12753 12754 12755 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 12756 <td class="entry_name 12757 " rowspan="3"> 12758 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 12759 </td> 12760 <td class="entry_type"> 12761 <span class="entry_type_name">byte</span> 12762 12763 <span class="entry_type_visibility"> [ndk_public as string]</span> 12764 12765 12766 <span class="entry_type_hwlevel">[legacy] </span> 12767 12768 12769 12770 12771 </td> <!-- entry_type --> 12772 12773 <td class="entry_description"> 12774 <p>32 characters describing GPS algorithm to 12775include in EXIF.<wbr/></p> 12776 </td> 12777 12778 <td class="entry_units"> 12779 UTF-8 null-terminated string 12780 </td> 12781 12782 <td class="entry_range"> 12783 </td> 12784 12785 <td class="entry_hal_version"> 12786 <p>3.<wbr/>2</p> 12787 </td> 12788 12789 <td class="entry_tags"> 12790 <ul class="entry_tags"> 12791 <li><a href="#tag_BC">BC</a></li> 12792 </ul> 12793 </td> 12794 12795 </tr> 12796 <tr class="entries_header"> 12797 <th class="th_details" colspan="6">Details</th> 12798 </tr> 12799 <tr class="entry_cont"> 12800 <td class="entry_details" colspan="6"> 12801 <p>This tag is also used for HEIC image capture.<wbr/></p> 12802 </td> 12803 </tr> 12804 12805 12806 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12807 <!-- end of entry --> 12808 12809 12810 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 12811 <td class="entry_name 12812 " rowspan="3"> 12813 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 12814 </td> 12815 <td class="entry_type"> 12816 <span class="entry_type_name">int64</span> 12817 12818 <span class="entry_type_visibility"> [ndk_public]</span> 12819 12820 12821 <span class="entry_type_hwlevel">[legacy] </span> 12822 12823 12824 12825 12826 </td> <!-- entry_type --> 12827 12828 <td class="entry_description"> 12829 <p>Time GPS fix was made to include in 12830EXIF.<wbr/></p> 12831 </td> 12832 12833 <td class="entry_units"> 12834 UTC in seconds since January 1,<wbr/> 1970 12835 </td> 12836 12837 <td class="entry_range"> 12838 </td> 12839 12840 <td class="entry_hal_version"> 12841 <p>3.<wbr/>2</p> 12842 </td> 12843 12844 <td class="entry_tags"> 12845 <ul class="entry_tags"> 12846 <li><a href="#tag_BC">BC</a></li> 12847 </ul> 12848 </td> 12849 12850 </tr> 12851 <tr class="entries_header"> 12852 <th class="th_details" colspan="6">Details</th> 12853 </tr> 12854 <tr class="entry_cont"> 12855 <td class="entry_details" colspan="6"> 12856 <p>This tag is also used for HEIC image capture.<wbr/></p> 12857 </td> 12858 </tr> 12859 12860 12861 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12862 <!-- end of entry --> 12863 12864 12865 <tr class="entry" id="controls_android.jpeg.orientation"> 12866 <td class="entry_name 12867 " rowspan="3"> 12868 android.<wbr/>jpeg.<wbr/>orientation 12869 </td> 12870 <td class="entry_type"> 12871 <span class="entry_type_name">int32</span> 12872 12873 <span class="entry_type_visibility"> [public]</span> 12874 12875 12876 <span class="entry_type_hwlevel">[legacy] </span> 12877 12878 12879 12880 12881 </td> <!-- entry_type --> 12882 12883 <td class="entry_description"> 12884 <p>The orientation for a JPEG image.<wbr/></p> 12885 </td> 12886 12887 <td class="entry_units"> 12888 Degrees in multiples of 90 12889 </td> 12890 12891 <td class="entry_range"> 12892 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 12893 </td> 12894 12895 <td class="entry_hal_version"> 12896 <p>3.<wbr/>2</p> 12897 </td> 12898 12899 <td class="entry_tags"> 12900 <ul class="entry_tags"> 12901 <li><a href="#tag_BC">BC</a></li> 12902 </ul> 12903 </td> 12904 12905 </tr> 12906 <tr class="entries_header"> 12907 <th class="th_details" colspan="6">Details</th> 12908 </tr> 12909 <tr class="entry_cont"> 12910 <td class="entry_details" colspan="6"> 12911 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 12912to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 12913upright.<wbr/></p> 12914<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 12915rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 12916the thumbnail data will also be rotated.<wbr/></p> 12917<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 12918by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 12919<p>To translate from the device orientation given by the Android sensor APIs for camera 12920sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p> 12921<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 12922 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 12923 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 12924 12925 //<wbr/> Round device orientation to a multiple of 90 12926 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 12927 12928 //<wbr/> Reverse device orientation for front-facing cameras 12929 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 12930 if (facingFront) deviceOrientation = -deviceOrientation; 12931 12932 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 12933 //<wbr/> the image upright relative to the device orientation 12934 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 12935 12936 return jpegOrientation; 12937} 12938</code></pre> 12939<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will 12940also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p> 12941<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which 12942case the rotation is reflected by 12943<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by 12944rotating the image data itself.<wbr/></p> 12945 </td> 12946 </tr> 12947 12948 12949 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12950 <!-- end of entry --> 12951 12952 12953 <tr class="entry" id="controls_android.jpeg.quality"> 12954 <td class="entry_name 12955 " rowspan="3"> 12956 android.<wbr/>jpeg.<wbr/>quality 12957 </td> 12958 <td class="entry_type"> 12959 <span class="entry_type_name">byte</span> 12960 12961 <span class="entry_type_visibility"> [public]</span> 12962 12963 12964 <span class="entry_type_hwlevel">[legacy] </span> 12965 12966 12967 12968 12969 </td> <!-- entry_type --> 12970 12971 <td class="entry_description"> 12972 <p>Compression quality of the final JPEG 12973image.<wbr/></p> 12974 </td> 12975 12976 <td class="entry_units"> 12977 </td> 12978 12979 <td class="entry_range"> 12980 <p>1-100; larger is higher quality</p> 12981 </td> 12982 12983 <td class="entry_hal_version"> 12984 <p>3.<wbr/>2</p> 12985 </td> 12986 12987 <td class="entry_tags"> 12988 <ul class="entry_tags"> 12989 <li><a href="#tag_BC">BC</a></li> 12990 </ul> 12991 </td> 12992 12993 </tr> 12994 <tr class="entries_header"> 12995 <th class="th_details" colspan="6">Details</th> 12996 </tr> 12997 <tr class="entry_cont"> 12998 <td class="entry_details" colspan="6"> 12999 <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality 13000of the HEIC image capture.<wbr/></p> 13001 </td> 13002 </tr> 13003 13004 13005 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13006 <!-- end of entry --> 13007 13008 13009 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 13010 <td class="entry_name 13011 " rowspan="3"> 13012 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 13013 </td> 13014 <td class="entry_type"> 13015 <span class="entry_type_name">byte</span> 13016 13017 <span class="entry_type_visibility"> [public]</span> 13018 13019 13020 <span class="entry_type_hwlevel">[legacy] </span> 13021 13022 13023 13024 13025 </td> <!-- entry_type --> 13026 13027 <td class="entry_description"> 13028 <p>Compression quality of JPEG 13029thumbnail.<wbr/></p> 13030 </td> 13031 13032 <td class="entry_units"> 13033 </td> 13034 13035 <td class="entry_range"> 13036 <p>1-100; larger is higher quality</p> 13037 </td> 13038 13039 <td class="entry_hal_version"> 13040 <p>3.<wbr/>2</p> 13041 </td> 13042 13043 <td class="entry_tags"> 13044 <ul class="entry_tags"> 13045 <li><a href="#tag_BC">BC</a></li> 13046 </ul> 13047 </td> 13048 13049 </tr> 13050 <tr class="entries_header"> 13051 <th class="th_details" colspan="6">Details</th> 13052 </tr> 13053 <tr class="entry_cont"> 13054 <td class="entry_details" colspan="6"> 13055 <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p> 13056 </td> 13057 </tr> 13058 13059 13060 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13061 <!-- end of entry --> 13062 13063 13064 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 13065 <td class="entry_name 13066 " rowspan="5"> 13067 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 13068 </td> 13069 <td class="entry_type"> 13070 <span class="entry_type_name">int32</span> 13071 <span class="entry_type_container">x</span> 13072 13073 <span class="entry_type_array"> 13074 2 13075 </span> 13076 <span class="entry_type_visibility"> [public as size]</span> 13077 13078 13079 <span class="entry_type_hwlevel">[legacy] </span> 13080 13081 13082 13083 13084 </td> <!-- entry_type --> 13085 13086 <td class="entry_description"> 13087 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 13088 </td> 13089 13090 <td class="entry_units"> 13091 </td> 13092 13093 <td class="entry_range"> 13094 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 13095 </td> 13096 13097 <td class="entry_hal_version"> 13098 <p>3.<wbr/>2</p> 13099 </td> 13100 13101 <td class="entry_tags"> 13102 <ul class="entry_tags"> 13103 <li><a href="#tag_BC">BC</a></li> 13104 </ul> 13105 </td> 13106 13107 </tr> 13108 <tr class="entries_header"> 13109 <th class="th_details" colspan="6">Details</th> 13110 </tr> 13111 <tr class="entry_cont"> 13112 <td class="entry_details" colspan="6"> 13113 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 13114but the captured JPEG will still be a valid image.<wbr/></p> 13115<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 13116should have the same aspect ratio as the main JPEG output.<wbr/></p> 13117<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 13118ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 13119For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1312016:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 13121generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 13122Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 13123<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 13124the camera device will handle thumbnail rotation in one of the following ways:</p> 13125<ul> 13126<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 13127 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 13128<li>Rotate the jpeg and thumbnail image data and not set 13129 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 13130 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 13131 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 13132 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 13133 size.<wbr/></li> 13134</ul> 13135<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the 13136the thumbnail rotation is reflected by 13137<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by 13138rotating the thumbnail data itself.<wbr/></p> 13139 </td> 13140 </tr> 13141 13142 <tr class="entries_header"> 13143 <th class="th_details" colspan="6">HAL Implementation Details</th> 13144 </tr> 13145 <tr class="entry_cont"> 13146 <td class="entry_details" colspan="6"> 13147 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 13148The cropping must be done on the primary jpeg image rather than the sensor pre-correction 13149active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't 13150apply to the thumbnail image cropping.<wbr/></p> 13151 </td> 13152 </tr> 13153 13154 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13155 <!-- end of entry --> 13156 13157 13158 13159 <!-- end of kind --> 13160 </tbody> 13161 <tr><td colspan="7" class="kind">static</td></tr> 13162 13163 <thead class="entries_header"> 13164 <tr> 13165 <th class="th_name">Property Name</th> 13166 <th class="th_type">Type</th> 13167 <th class="th_description">Description</th> 13168 <th class="th_units">Units</th> 13169 <th class="th_range">Range</th> 13170 <th class="th_hal_version">Initial HIDL HAL version</th> 13171 <th class="th_tags">Tags</th> 13172 </tr> 13173 </thead> 13174 13175 <tbody> 13176 13177 13178 13179 13180 13181 13182 13183 13184 13185 13186 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 13187 <td class="entry_name 13188 " rowspan="3"> 13189 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 13190 </td> 13191 <td class="entry_type"> 13192 <span class="entry_type_name">int32</span> 13193 <span class="entry_type_container">x</span> 13194 13195 <span class="entry_type_array"> 13196 2 x n 13197 </span> 13198 <span class="entry_type_visibility"> [public as size]</span> 13199 13200 13201 <span class="entry_type_hwlevel">[legacy] </span> 13202 13203 13204 13205 13206 </td> <!-- entry_type --> 13207 13208 <td class="entry_description"> 13209 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this 13210camera device.<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_BC">BC</a></li> 13226 </ul> 13227 </td> 13228 13229 </tr> 13230 <tr class="entries_header"> 13231 <th class="th_details" colspan="6">Details</th> 13232 </tr> 13233 <tr class="entry_cont"> 13234 <td class="entry_details" colspan="6"> 13235 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no 13236thumbnail should be generated.<wbr/></p> 13237<p>Below condiditions will be satisfied for this size list:</p> 13238<ul> 13239<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 13240If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 13241<li>The aspect ratio of the largest thumbnail size will be same as the 13242aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 13243The largest size is defined as the size that has the largest pixel area 13244in a given size list.<wbr/></li> 13245<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 13246one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 13247and vice versa.<wbr/></li> 13248<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li> 13249</ul> 13250<p>This list is also used as supported thumbnail sizes for HEIC image format capture.<wbr/></p> 13251 </td> 13252 </tr> 13253 13254 13255 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13256 <!-- end of entry --> 13257 13258 13259 <tr class="entry" id="static_android.jpeg.maxSize"> 13260 <td class="entry_name 13261 " rowspan="3"> 13262 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 13263 </td> 13264 <td class="entry_type"> 13265 <span class="entry_type_name">int32</span> 13266 13267 <span class="entry_type_visibility"> [system]</span> 13268 13269 13270 13271 13272 13273 13274 </td> <!-- entry_type --> 13275 13276 <td class="entry_description"> 13277 <p>Maximum size in bytes for the compressed 13278JPEG buffer,<wbr/> in default sensor pixel mode (see <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>)</p> 13279 </td> 13280 13281 <td class="entry_units"> 13282 </td> 13283 13284 <td class="entry_range"> 13285 <p>Must be large enough to fit any JPEG produced by 13286the camera</p> 13287 </td> 13288 13289 <td class="entry_hal_version"> 13290 <p>3.<wbr/>2</p> 13291 </td> 13292 13293 <td class="entry_tags"> 13294 </td> 13295 13296 </tr> 13297 <tr class="entries_header"> 13298 <th class="th_details" colspan="6">Details</th> 13299 </tr> 13300 <tr class="entry_cont"> 13301 <td class="entry_details" colspan="6"> 13302 <p>This is used for sizing the gralloc buffers for 13303JPEG</p> 13304 </td> 13305 </tr> 13306 13307 13308 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13309 <!-- end of entry --> 13310 13311 13312 13313 <!-- end of kind --> 13314 </tbody> 13315 <tr><td colspan="7" class="kind">dynamic</td></tr> 13316 13317 <thead class="entries_header"> 13318 <tr> 13319 <th class="th_name">Property Name</th> 13320 <th class="th_type">Type</th> 13321 <th class="th_description">Description</th> 13322 <th class="th_units">Units</th> 13323 <th class="th_range">Range</th> 13324 <th class="th_hal_version">Initial HIDL HAL version</th> 13325 <th class="th_tags">Tags</th> 13326 </tr> 13327 </thead> 13328 13329 <tbody> 13330 13331 13332 13333 13334 13335 13336 13337 13338 13339 13340 <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> 13341 <td class="entry_name 13342 " rowspan="3"> 13343 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 13344 </td> 13345 <td class="entry_type"> 13346 <span class="entry_type_name">byte</span> 13347 13348 <span class="entry_type_visibility"> [java_public as location]</span> 13349 13350 <span class="entry_type_synthetic">[synthetic] </span> 13351 13352 <span class="entry_type_hwlevel">[legacy] </span> 13353 13354 13355 13356 13357 </td> <!-- entry_type --> 13358 13359 <td class="entry_description"> 13360 <p>A location object to use when generating image GPS metadata.<wbr/></p> 13361 </td> 13362 13363 <td class="entry_units"> 13364 </td> 13365 13366 <td class="entry_range"> 13367 </td> 13368 13369 <td class="entry_hal_version"> 13370 <p>3.<wbr/>2</p> 13371 </td> 13372 13373 <td class="entry_tags"> 13374 </td> 13375 13376 </tr> 13377 <tr class="entries_header"> 13378 <th class="th_details" colspan="6">Details</th> 13379 </tr> 13380 <tr class="entry_cont"> 13381 <td class="entry_details" colspan="6"> 13382 <p>Setting a location object in a request will include the GPS coordinates of the location 13383into any JPEG images captured based on the request.<wbr/> These coordinates can then be 13384viewed by anyone who receives the JPEG image.<wbr/></p> 13385<p>This tag is also used for HEIC image capture.<wbr/></p> 13386 </td> 13387 </tr> 13388 13389 13390 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13391 <!-- end of entry --> 13392 13393 13394 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 13395 <td class="entry_name 13396 " rowspan="3"> 13397 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 13398 </td> 13399 <td class="entry_type"> 13400 <span class="entry_type_name">double</span> 13401 <span class="entry_type_container">x</span> 13402 13403 <span class="entry_type_array"> 13404 3 13405 </span> 13406 <span class="entry_type_visibility"> [ndk_public]</span> 13407 13408 13409 <span class="entry_type_hwlevel">[legacy] </span> 13410 13411 13412 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 13413 13414 13415 </td> <!-- entry_type --> 13416 13417 <td class="entry_description"> 13418 <p>GPS coordinates to include in output JPEG 13419EXIF.<wbr/></p> 13420 </td> 13421 13422 <td class="entry_units"> 13423 </td> 13424 13425 <td class="entry_range"> 13426 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 13427 </td> 13428 13429 <td class="entry_hal_version"> 13430 <p>3.<wbr/>2</p> 13431 </td> 13432 13433 <td class="entry_tags"> 13434 <ul class="entry_tags"> 13435 <li><a href="#tag_BC">BC</a></li> 13436 </ul> 13437 </td> 13438 13439 </tr> 13440 <tr class="entries_header"> 13441 <th class="th_details" colspan="6">Details</th> 13442 </tr> 13443 <tr class="entry_cont"> 13444 <td class="entry_details" colspan="6"> 13445 <p>This tag is also used for HEIC image capture.<wbr/></p> 13446 </td> 13447 </tr> 13448 13449 13450 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13451 <!-- end of entry --> 13452 13453 13454 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 13455 <td class="entry_name 13456 " rowspan="3"> 13457 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 13458 </td> 13459 <td class="entry_type"> 13460 <span class="entry_type_name">byte</span> 13461 13462 <span class="entry_type_visibility"> [ndk_public as string]</span> 13463 13464 13465 <span class="entry_type_hwlevel">[legacy] </span> 13466 13467 13468 13469 13470 </td> <!-- entry_type --> 13471 13472 <td class="entry_description"> 13473 <p>32 characters describing GPS algorithm to 13474include in EXIF.<wbr/></p> 13475 </td> 13476 13477 <td class="entry_units"> 13478 UTF-8 null-terminated string 13479 </td> 13480 13481 <td class="entry_range"> 13482 </td> 13483 13484 <td class="entry_hal_version"> 13485 <p>3.<wbr/>2</p> 13486 </td> 13487 13488 <td class="entry_tags"> 13489 <ul class="entry_tags"> 13490 <li><a href="#tag_BC">BC</a></li> 13491 </ul> 13492 </td> 13493 13494 </tr> 13495 <tr class="entries_header"> 13496 <th class="th_details" colspan="6">Details</th> 13497 </tr> 13498 <tr class="entry_cont"> 13499 <td class="entry_details" colspan="6"> 13500 <p>This tag is also used for HEIC image capture.<wbr/></p> 13501 </td> 13502 </tr> 13503 13504 13505 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13506 <!-- end of entry --> 13507 13508 13509 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 13510 <td class="entry_name 13511 " rowspan="3"> 13512 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 13513 </td> 13514 <td class="entry_type"> 13515 <span class="entry_type_name">int64</span> 13516 13517 <span class="entry_type_visibility"> [ndk_public]</span> 13518 13519 13520 <span class="entry_type_hwlevel">[legacy] </span> 13521 13522 13523 13524 13525 </td> <!-- entry_type --> 13526 13527 <td class="entry_description"> 13528 <p>Time GPS fix was made to include in 13529EXIF.<wbr/></p> 13530 </td> 13531 13532 <td class="entry_units"> 13533 UTC in seconds since January 1,<wbr/> 1970 13534 </td> 13535 13536 <td class="entry_range"> 13537 </td> 13538 13539 <td class="entry_hal_version"> 13540 <p>3.<wbr/>2</p> 13541 </td> 13542 13543 <td class="entry_tags"> 13544 <ul class="entry_tags"> 13545 <li><a href="#tag_BC">BC</a></li> 13546 </ul> 13547 </td> 13548 13549 </tr> 13550 <tr class="entries_header"> 13551 <th class="th_details" colspan="6">Details</th> 13552 </tr> 13553 <tr class="entry_cont"> 13554 <td class="entry_details" colspan="6"> 13555 <p>This tag is also used for HEIC image capture.<wbr/></p> 13556 </td> 13557 </tr> 13558 13559 13560 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13561 <!-- end of entry --> 13562 13563 13564 <tr class="entry" id="dynamic_android.jpeg.orientation"> 13565 <td class="entry_name 13566 " rowspan="3"> 13567 android.<wbr/>jpeg.<wbr/>orientation 13568 </td> 13569 <td class="entry_type"> 13570 <span class="entry_type_name">int32</span> 13571 13572 <span class="entry_type_visibility"> [public]</span> 13573 13574 13575 <span class="entry_type_hwlevel">[legacy] </span> 13576 13577 13578 13579 13580 </td> <!-- entry_type --> 13581 13582 <td class="entry_description"> 13583 <p>The orientation for a JPEG image.<wbr/></p> 13584 </td> 13585 13586 <td class="entry_units"> 13587 Degrees in multiples of 90 13588 </td> 13589 13590 <td class="entry_range"> 13591 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 13592 </td> 13593 13594 <td class="entry_hal_version"> 13595 <p>3.<wbr/>2</p> 13596 </td> 13597 13598 <td class="entry_tags"> 13599 <ul class="entry_tags"> 13600 <li><a href="#tag_BC">BC</a></li> 13601 </ul> 13602 </td> 13603 13604 </tr> 13605 <tr class="entries_header"> 13606 <th class="th_details" colspan="6">Details</th> 13607 </tr> 13608 <tr class="entry_cont"> 13609 <td class="entry_details" colspan="6"> 13610 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 13611to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 13612upright.<wbr/></p> 13613<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 13614rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 13615the thumbnail data will also be rotated.<wbr/></p> 13616<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 13617by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 13618<p>To translate from the device orientation given by the Android sensor APIs for camera 13619sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p> 13620<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 13621 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 13622 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 13623 13624 //<wbr/> Round device orientation to a multiple of 90 13625 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 13626 13627 //<wbr/> Reverse device orientation for front-facing cameras 13628 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 13629 if (facingFront) deviceOrientation = -deviceOrientation; 13630 13631 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 13632 //<wbr/> the image upright relative to the device orientation 13633 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 13634 13635 return jpegOrientation; 13636} 13637</code></pre> 13638<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will 13639also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p> 13640<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which 13641case the rotation is reflected by 13642<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by 13643rotating the image data itself.<wbr/></p> 13644 </td> 13645 </tr> 13646 13647 13648 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13649 <!-- end of entry --> 13650 13651 13652 <tr class="entry" id="dynamic_android.jpeg.quality"> 13653 <td class="entry_name 13654 " rowspan="3"> 13655 android.<wbr/>jpeg.<wbr/>quality 13656 </td> 13657 <td class="entry_type"> 13658 <span class="entry_type_name">byte</span> 13659 13660 <span class="entry_type_visibility"> [public]</span> 13661 13662 13663 <span class="entry_type_hwlevel">[legacy] </span> 13664 13665 13666 13667 13668 </td> <!-- entry_type --> 13669 13670 <td class="entry_description"> 13671 <p>Compression quality of the final JPEG 13672image.<wbr/></p> 13673 </td> 13674 13675 <td class="entry_units"> 13676 </td> 13677 13678 <td class="entry_range"> 13679 <p>1-100; larger is higher quality</p> 13680 </td> 13681 13682 <td class="entry_hal_version"> 13683 <p>3.<wbr/>2</p> 13684 </td> 13685 13686 <td class="entry_tags"> 13687 <ul class="entry_tags"> 13688 <li><a href="#tag_BC">BC</a></li> 13689 </ul> 13690 </td> 13691 13692 </tr> 13693 <tr class="entries_header"> 13694 <th class="th_details" colspan="6">Details</th> 13695 </tr> 13696 <tr class="entry_cont"> 13697 <td class="entry_details" colspan="6"> 13698 <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality 13699of the HEIC image capture.<wbr/></p> 13700 </td> 13701 </tr> 13702 13703 13704 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13705 <!-- end of entry --> 13706 13707 13708 <tr class="entry" id="dynamic_android.jpeg.size"> 13709 <td class="entry_name 13710 " rowspan="3"> 13711 android.<wbr/>jpeg.<wbr/>size 13712 </td> 13713 <td class="entry_type"> 13714 <span class="entry_type_name">int32</span> 13715 13716 <span class="entry_type_visibility"> [system]</span> 13717 13718 13719 13720 13721 13722 13723 </td> <!-- entry_type --> 13724 13725 <td class="entry_description"> 13726 <p>The size of the compressed JPEG image,<wbr/> in 13727bytes</p> 13728 </td> 13729 13730 <td class="entry_units"> 13731 </td> 13732 13733 <td class="entry_range"> 13734 <p>>= 0</p> 13735 </td> 13736 13737 <td class="entry_hal_version"> 13738 <p>3.<wbr/>2</p> 13739 </td> 13740 13741 <td class="entry_tags"> 13742 <ul class="entry_tags"> 13743 <li><a href="#tag_FUTURE">FUTURE</a></li> 13744 </ul> 13745 </td> 13746 13747 </tr> 13748 <tr class="entries_header"> 13749 <th class="th_details" colspan="6">Details</th> 13750 </tr> 13751 <tr class="entry_cont"> 13752 <td class="entry_details" colspan="6"> 13753 <p>If no JPEG output is produced for the request,<wbr/> 13754this must be 0.<wbr/></p> 13755<p>Otherwise,<wbr/> this describes the real size of the compressed 13756JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 13757if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 13758has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 13759the JPEG stream will be 1000000 bytes,<wbr/> of which the first 13760500000 make up the real data.<wbr/></p> 13761 </td> 13762 </tr> 13763 13764 13765 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13766 <!-- end of entry --> 13767 13768 13769 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 13770 <td class="entry_name 13771 " rowspan="3"> 13772 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 13773 </td> 13774 <td class="entry_type"> 13775 <span class="entry_type_name">byte</span> 13776 13777 <span class="entry_type_visibility"> [public]</span> 13778 13779 13780 <span class="entry_type_hwlevel">[legacy] </span> 13781 13782 13783 13784 13785 </td> <!-- entry_type --> 13786 13787 <td class="entry_description"> 13788 <p>Compression quality of JPEG 13789thumbnail.<wbr/></p> 13790 </td> 13791 13792 <td class="entry_units"> 13793 </td> 13794 13795 <td class="entry_range"> 13796 <p>1-100; larger is higher quality</p> 13797 </td> 13798 13799 <td class="entry_hal_version"> 13800 <p>3.<wbr/>2</p> 13801 </td> 13802 13803 <td class="entry_tags"> 13804 <ul class="entry_tags"> 13805 <li><a href="#tag_BC">BC</a></li> 13806 </ul> 13807 </td> 13808 13809 </tr> 13810 <tr class="entries_header"> 13811 <th class="th_details" colspan="6">Details</th> 13812 </tr> 13813 <tr class="entry_cont"> 13814 <td class="entry_details" colspan="6"> 13815 <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p> 13816 </td> 13817 </tr> 13818 13819 13820 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13821 <!-- end of entry --> 13822 13823 13824 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 13825 <td class="entry_name 13826 " rowspan="5"> 13827 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 13828 </td> 13829 <td class="entry_type"> 13830 <span class="entry_type_name">int32</span> 13831 <span class="entry_type_container">x</span> 13832 13833 <span class="entry_type_array"> 13834 2 13835 </span> 13836 <span class="entry_type_visibility"> [public as size]</span> 13837 13838 13839 <span class="entry_type_hwlevel">[legacy] </span> 13840 13841 13842 13843 13844 </td> <!-- entry_type --> 13845 13846 <td class="entry_description"> 13847 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 13848 </td> 13849 13850 <td class="entry_units"> 13851 </td> 13852 13853 <td class="entry_range"> 13854 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 13855 </td> 13856 13857 <td class="entry_hal_version"> 13858 <p>3.<wbr/>2</p> 13859 </td> 13860 13861 <td class="entry_tags"> 13862 <ul class="entry_tags"> 13863 <li><a href="#tag_BC">BC</a></li> 13864 </ul> 13865 </td> 13866 13867 </tr> 13868 <tr class="entries_header"> 13869 <th class="th_details" colspan="6">Details</th> 13870 </tr> 13871 <tr class="entry_cont"> 13872 <td class="entry_details" colspan="6"> 13873 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 13874but the captured JPEG will still be a valid image.<wbr/></p> 13875<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 13876should have the same aspect ratio as the main JPEG output.<wbr/></p> 13877<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 13878ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 13879For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1388016:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 13881generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 13882Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 13883<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 13884the camera device will handle thumbnail rotation in one of the following ways:</p> 13885<ul> 13886<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 13887 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 13888<li>Rotate the jpeg and thumbnail image data and not set 13889 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 13890 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 13891 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 13892 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 13893 size.<wbr/></li> 13894</ul> 13895<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the 13896the thumbnail rotation is reflected by 13897<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by 13898rotating the thumbnail data itself.<wbr/></p> 13899 </td> 13900 </tr> 13901 13902 <tr class="entries_header"> 13903 <th class="th_details" colspan="6">HAL Implementation Details</th> 13904 </tr> 13905 <tr class="entry_cont"> 13906 <td class="entry_details" colspan="6"> 13907 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 13908The cropping must be done on the primary jpeg image rather than the sensor pre-correction 13909active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't 13910apply to the thumbnail image cropping.<wbr/></p> 13911 </td> 13912 </tr> 13913 13914 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13915 <!-- end of entry --> 13916 13917 13918 13919 <!-- end of kind --> 13920 </tbody> 13921 13922 <!-- end of section --> 13923 <tr><td colspan="7" id="section_lens" class="section">lens</td></tr> 13924 13925 13926 <tr><td colspan="7" class="kind">controls</td></tr> 13927 13928 <thead class="entries_header"> 13929 <tr> 13930 <th class="th_name">Property Name</th> 13931 <th class="th_type">Type</th> 13932 <th class="th_description">Description</th> 13933 <th class="th_units">Units</th> 13934 <th class="th_range">Range</th> 13935 <th class="th_hal_version">Initial HIDL HAL version</th> 13936 <th class="th_tags">Tags</th> 13937 </tr> 13938 </thead> 13939 13940 <tbody> 13941 13942 13943 13944 13945 13946 13947 13948 13949 13950 13951 <tr class="entry" id="controls_android.lens.aperture"> 13952 <td class="entry_name 13953 " rowspan="3"> 13954 android.<wbr/>lens.<wbr/>aperture 13955 </td> 13956 <td class="entry_type"> 13957 <span class="entry_type_name">float</span> 13958 13959 <span class="entry_type_visibility"> [public]</span> 13960 13961 13962 <span class="entry_type_hwlevel">[full] </span> 13963 13964 13965 13966 13967 </td> <!-- entry_type --> 13968 13969 <td class="entry_description"> 13970 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 13971effective aperture diameter.<wbr/></p> 13972 </td> 13973 13974 <td class="entry_units"> 13975 The f-number (f/<wbr/>N) 13976 </td> 13977 13978 <td class="entry_range"> 13979 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 13980 </td> 13981 13982 <td class="entry_hal_version"> 13983 <p>3.<wbr/>2</p> 13984 </td> 13985 13986 <td class="entry_tags"> 13987 <ul class="entry_tags"> 13988 <li><a href="#tag_V1">V1</a></li> 13989 </ul> 13990 </td> 13991 13992 </tr> 13993 <tr class="entries_header"> 13994 <th class="th_details" colspan="6">Details</th> 13995 </tr> 13996 <tr class="entry_cont"> 13997 <td class="entry_details" colspan="6"> 13998 <p>Setting this value is only supported on the camera devices that have a variable 13999aperture lens.<wbr/></p> 14000<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 14001this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 14002<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> 14003to achieve manual exposure control.<wbr/></p> 14004<p>The requested aperture value may take several frames to reach the 14005requested value; the camera device will report the current (intermediate) 14006aperture size in capture result metadata while the aperture is changing.<wbr/> 14007While 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> 14008<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 14009the ON modes,<wbr/> this will be overridden by the camera device 14010auto-exposure algorithm,<wbr/> the overridden values are then provided 14011back to the user in the corresponding result.<wbr/></p> 14012 </td> 14013 </tr> 14014 14015 14016 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14017 <!-- end of entry --> 14018 14019 14020 <tr class="entry" id="controls_android.lens.filterDensity"> 14021 <td class="entry_name 14022 " rowspan="3"> 14023 android.<wbr/>lens.<wbr/>filter<wbr/>Density 14024 </td> 14025 <td class="entry_type"> 14026 <span class="entry_type_name">float</span> 14027 14028 <span class="entry_type_visibility"> [public]</span> 14029 14030 14031 <span class="entry_type_hwlevel">[full] </span> 14032 14033 14034 14035 14036 </td> <!-- entry_type --> 14037 14038 <td class="entry_description"> 14039 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 14040 </td> 14041 14042 <td class="entry_units"> 14043 Exposure Value (EV) 14044 </td> 14045 14046 <td class="entry_range"> 14047 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 14048 </td> 14049 14050 <td class="entry_hal_version"> 14051 <p>3.<wbr/>2</p> 14052 </td> 14053 14054 <td class="entry_tags"> 14055 <ul class="entry_tags"> 14056 <li><a href="#tag_V1">V1</a></li> 14057 </ul> 14058 </td> 14059 14060 </tr> 14061 <tr class="entries_header"> 14062 <th class="th_details" colspan="6">Details</th> 14063 </tr> 14064 <tr class="entry_cont"> 14065 <td class="entry_details" colspan="6"> 14066 <p>This control will not be supported on most camera devices.<wbr/></p> 14067<p>Lens filters are typically used to lower the amount of light the 14068sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 14069step is the standard logarithmic representation,<wbr/> which are 14070non-negative,<wbr/> and inversely proportional to the amount of light 14071hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 14072in no reduction of the incoming light,<wbr/> and setting this to 2 would 14073mean that the filter is set to reduce incoming light by two stops 14074(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 14075<p>It may take several frames before the lens filter density changes 14076to the requested value.<wbr/> While the filter density is still changing,<wbr/> 14077<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 14078 </td> 14079 </tr> 14080 14081 14082 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14083 <!-- end of entry --> 14084 14085 14086 <tr class="entry" id="controls_android.lens.focalLength"> 14087 <td class="entry_name 14088 " rowspan="5"> 14089 android.<wbr/>lens.<wbr/>focal<wbr/>Length 14090 </td> 14091 <td class="entry_type"> 14092 <span class="entry_type_name">float</span> 14093 14094 <span class="entry_type_visibility"> [public]</span> 14095 14096 14097 <span class="entry_type_hwlevel">[legacy] </span> 14098 14099 14100 14101 14102 </td> <!-- entry_type --> 14103 14104 <td class="entry_description"> 14105 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 14106 </td> 14107 14108 <td class="entry_units"> 14109 Millimeters 14110 </td> 14111 14112 <td class="entry_range"> 14113 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 14114 </td> 14115 14116 <td class="entry_hal_version"> 14117 <p>3.<wbr/>2</p> 14118 </td> 14119 14120 <td class="entry_tags"> 14121 <ul class="entry_tags"> 14122 <li><a href="#tag_V1">V1</a></li> 14123 </ul> 14124 </td> 14125 14126 </tr> 14127 <tr class="entries_header"> 14128 <th class="th_details" colspan="6">Details</th> 14129 </tr> 14130 <tr class="entry_cont"> 14131 <td class="entry_details" colspan="6"> 14132 <p>This setting controls the physical focal length of the camera 14133device's lens.<wbr/> Changing the focal length changes the field of 14134view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 14135<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 14136setting won't be applied instantaneously,<wbr/> and it may take several 14137frames before the lens can change to the requested focal length.<wbr/> 14138While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 14139be set to MOVING.<wbr/></p> 14140<p>Optical zoom via this control will not be supported on most devices.<wbr/> Starting from API 14141level 30,<wbr/> the camera device may combine optical and digital zoom through the 14142<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> control.<wbr/></p> 14143 </td> 14144 </tr> 14145 14146 <tr class="entries_header"> 14147 <th class="th_details" colspan="6">HAL Implementation Details</th> 14148 </tr> 14149 <tr class="entry_cont"> 14150 <td class="entry_details" colspan="6"> 14151 <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and 14152cropRegion change in the same request,<wbr/> the camera device must make sure that the new 14153focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there 14154is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied 14155immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device 14156will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p> 14157<p>Starting from API level 30,<wbr/> it's strongly recommended for HAL to implement the 14158combination 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 14159lieu 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> 14160 </td> 14161 </tr> 14162 14163 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14164 <!-- end of entry --> 14165 14166 14167 <tr class="entry" id="controls_android.lens.focusDistance"> 14168 <td class="entry_name 14169 " rowspan="3"> 14170 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 14171 </td> 14172 <td class="entry_type"> 14173 <span class="entry_type_name">float</span> 14174 14175 <span class="entry_type_visibility"> [public]</span> 14176 14177 14178 <span class="entry_type_hwlevel">[full] </span> 14179 14180 14181 14182 14183 </td> <!-- entry_type --> 14184 14185 <td class="entry_description"> 14186 <p>Desired distance to plane of sharpest focus,<wbr/> 14187measured from frontmost surface of the lens.<wbr/></p> 14188 </td> 14189 14190 <td class="entry_units"> 14191 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 14192 </td> 14193 14194 <td class="entry_range"> 14195 <p>>= 0</p> 14196 </td> 14197 14198 <td class="entry_hal_version"> 14199 <p>3.<wbr/>2</p> 14200 </td> 14201 14202 <td class="entry_tags"> 14203 <ul class="entry_tags"> 14204 <li><a href="#tag_BC">BC</a></li> 14205 <li><a href="#tag_V1">V1</a></li> 14206 </ul> 14207 </td> 14208 14209 </tr> 14210 <tr class="entries_header"> 14211 <th class="th_details" colspan="6">Details</th> 14212 </tr> 14213 <tr class="entry_cont"> 14214 <td class="entry_details" colspan="6"> 14215 <p>This control can be used for setting manual focus,<wbr/> on devices that support 14216the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see 14217<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p> 14218<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to 14219<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> 14220<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 14221instantaneously,<wbr/> and it may take several frames before the lens 14222can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 14223<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 14224<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code> 14225for infinity focus.<wbr/></p> 14226 </td> 14227 </tr> 14228 14229 14230 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14231 <!-- end of entry --> 14232 14233 14234 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 14235 <td class="entry_name 14236 " rowspan="3"> 14237 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 14238 </td> 14239 <td class="entry_type"> 14240 <span class="entry_type_name entry_type_name_enum">byte</span> 14241 14242 <span class="entry_type_visibility"> [public]</span> 14243 14244 14245 <span class="entry_type_hwlevel">[limited] </span> 14246 14247 14248 14249 <ul class="entry_type_enum"> 14250 <li> 14251 <span class="entry_type_enum_name">OFF (v3.2)</span> 14252 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 14253 </li> 14254 <li> 14255 <span class="entry_type_enum_name">ON (v3.2)</span> 14256 <span class="entry_type_enum_optional">[optional]</span> 14257 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 14258 </li> 14259 </ul> 14260 14261 </td> <!-- entry_type --> 14262 14263 <td class="entry_description"> 14264 <p>Sets whether the camera device uses optical image stabilization (OIS) 14265when capturing images.<wbr/></p> 14266 </td> 14267 14268 <td class="entry_units"> 14269 </td> 14270 14271 <td class="entry_range"> 14272 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 14273 </td> 14274 14275 <td class="entry_hal_version"> 14276 <p>3.<wbr/>2</p> 14277 </td> 14278 14279 <td class="entry_tags"> 14280 <ul class="entry_tags"> 14281 <li><a href="#tag_V1">V1</a></li> 14282 </ul> 14283 </td> 14284 14285 </tr> 14286 <tr class="entries_header"> 14287 <th class="th_details" colspan="6">Details</th> 14288 </tr> 14289 <tr class="entry_cont"> 14290 <td class="entry_details" colspan="6"> 14291 <p>OIS is used to compensate for motion blur due to small 14292movements of the camera during capture.<wbr/> Unlike digital image 14293stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 14294makes use of mechanical elements to stabilize the camera 14295sensor,<wbr/> and thus allows for longer exposure times before 14296camera shake becomes apparent.<wbr/></p> 14297<p>Switching between different optical stabilization modes may take several 14298frames to initialize,<wbr/> the camera device will report the current mode in 14299capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 14300optical stabilization modes in the first several capture results may still 14301be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 14302<p>If a camera device supports both OIS and digital image stabilization 14303(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 14304interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 14305<p>Not all devices will support OIS; see 14306<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 14307available controls.<wbr/></p> 14308 </td> 14309 </tr> 14310 14311 14312 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14313 <!-- end of entry --> 14314 14315 14316 14317 <!-- end of kind --> 14318 </tbody> 14319 <tr><td colspan="7" class="kind">static</td></tr> 14320 14321 <thead class="entries_header"> 14322 <tr> 14323 <th class="th_name">Property Name</th> 14324 <th class="th_type">Type</th> 14325 <th class="th_description">Description</th> 14326 <th class="th_units">Units</th> 14327 <th class="th_range">Range</th> 14328 <th class="th_hal_version">Initial HIDL HAL version</th> 14329 <th class="th_tags">Tags</th> 14330 </tr> 14331 </thead> 14332 14333 <tbody> 14334 14335 14336 14337 14338 14339 14340 14341 14342 14343 14344 14345 14346 <tr class="entry" id="static_android.lens.info.availableApertures"> 14347 <td class="entry_name 14348 " rowspan="3"> 14349 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 14350 </td> 14351 <td class="entry_type"> 14352 <span class="entry_type_name">float</span> 14353 <span class="entry_type_container">x</span> 14354 14355 <span class="entry_type_array"> 14356 n 14357 </span> 14358 <span class="entry_type_visibility"> [public]</span> 14359 14360 14361 <span class="entry_type_hwlevel">[full] </span> 14362 14363 14364 14365 14366 </td> <!-- entry_type --> 14367 14368 <td class="entry_description"> 14369 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are 14370supported by this camera device.<wbr/></p> 14371 </td> 14372 14373 <td class="entry_units"> 14374 The aperture f-number 14375 </td> 14376 14377 <td class="entry_range"> 14378 </td> 14379 14380 <td class="entry_hal_version"> 14381 <p>3.<wbr/>2</p> 14382 </td> 14383 14384 <td class="entry_tags"> 14385 <ul class="entry_tags"> 14386 <li><a href="#tag_V1">V1</a></li> 14387 </ul> 14388 </td> 14389 14390 </tr> 14391 <tr class="entries_header"> 14392 <th class="th_details" colspan="6">Details</th> 14393 </tr> 14394 <tr class="entry_cont"> 14395 <td class="entry_details" colspan="6"> 14396 <p>If the camera device doesn't support a variable lens aperture,<wbr/> 14397this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p> 14398<p>If the camera device supports a variable aperture,<wbr/> the aperture values 14399in this list will be sorted in ascending order.<wbr/></p> 14400 </td> 14401 </tr> 14402 14403 14404 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14405 <!-- end of entry --> 14406 14407 14408 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 14409 <td class="entry_name 14410 " rowspan="3"> 14411 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 14412 </td> 14413 <td class="entry_type"> 14414 <span class="entry_type_name">float</span> 14415 <span class="entry_type_container">x</span> 14416 14417 <span class="entry_type_array"> 14418 n 14419 </span> 14420 <span class="entry_type_visibility"> [public]</span> 14421 14422 14423 <span class="entry_type_hwlevel">[full] </span> 14424 14425 14426 14427 14428 </td> <!-- entry_type --> 14429 14430 <td class="entry_description"> 14431 <p>List of neutral density filter values for 14432<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p> 14433 </td> 14434 14435 <td class="entry_units"> 14436 Exposure value (EV) 14437 </td> 14438 14439 <td class="entry_range"> 14440 <p>Values are >= 0</p> 14441 </td> 14442 14443 <td class="entry_hal_version"> 14444 <p>3.<wbr/>2</p> 14445 </td> 14446 14447 <td class="entry_tags"> 14448 <ul class="entry_tags"> 14449 <li><a href="#tag_V1">V1</a></li> 14450 </ul> 14451 </td> 14452 14453 </tr> 14454 <tr class="entries_header"> 14455 <th class="th_details" colspan="6">Details</th> 14456 </tr> 14457 <tr class="entry_cont"> 14458 <td class="entry_details" colspan="6"> 14459 <p>If a neutral density filter is not supported by this camera device,<wbr/> 14460this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every 14461filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p> 14462 </td> 14463 </tr> 14464 14465 14466 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14467 <!-- end of entry --> 14468 14469 14470 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 14471 <td class="entry_name 14472 " rowspan="3"> 14473 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 14474 </td> 14475 <td class="entry_type"> 14476 <span class="entry_type_name">float</span> 14477 <span class="entry_type_container">x</span> 14478 14479 <span class="entry_type_array"> 14480 n 14481 </span> 14482 <span class="entry_type_visibility"> [public]</span> 14483 14484 14485 <span class="entry_type_hwlevel">[legacy] </span> 14486 14487 14488 <div class="entry_type_notes">The list of available focal lengths</div> 14489 14490 14491 </td> <!-- entry_type --> 14492 14493 <td class="entry_description"> 14494 <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 14495device.<wbr/></p> 14496 </td> 14497 14498 <td class="entry_units"> 14499 Millimeters 14500 </td> 14501 14502 <td class="entry_range"> 14503 <p>Values are > 0</p> 14504 </td> 14505 14506 <td class="entry_hal_version"> 14507 <p>3.<wbr/>2</p> 14508 </td> 14509 14510 <td class="entry_tags"> 14511 <ul class="entry_tags"> 14512 <li><a href="#tag_BC">BC</a></li> 14513 <li><a href="#tag_V1">V1</a></li> 14514 </ul> 14515 </td> 14516 14517 </tr> 14518 <tr class="entries_header"> 14519 <th class="th_details" colspan="6">Details</th> 14520 </tr> 14521 <tr class="entry_cont"> 14522 <td class="entry_details" colspan="6"> 14523 <p>If optical zoom is not supported,<wbr/> this list will only contain 14524a single value corresponding to the fixed focal length of the 14525device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported 14526by the camera device,<wbr/> in ascending order.<wbr/></p> 14527 </td> 14528 </tr> 14529 14530 14531 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14532 <!-- end of entry --> 14533 14534 14535 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 14536 <td class="entry_name 14537 " rowspan="3"> 14538 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 14539 </td> 14540 <td class="entry_type"> 14541 <span class="entry_type_name">byte</span> 14542 <span class="entry_type_container">x</span> 14543 14544 <span class="entry_type_array"> 14545 n 14546 </span> 14547 <span class="entry_type_visibility"> [public as enumList]</span> 14548 14549 14550 <span class="entry_type_hwlevel">[limited] </span> 14551 14552 14553 <div class="entry_type_notes">list of enums</div> 14554 14555 14556 </td> <!-- entry_type --> 14557 14558 <td class="entry_description"> 14559 <p>List of optical image stabilization (OIS) modes for 14560<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> 14561 </td> 14562 14563 <td class="entry_units"> 14564 </td> 14565 14566 <td class="entry_range"> 14567 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p> 14568 </td> 14569 14570 <td class="entry_hal_version"> 14571 <p>3.<wbr/>2</p> 14572 </td> 14573 14574 <td class="entry_tags"> 14575 <ul class="entry_tags"> 14576 <li><a href="#tag_V1">V1</a></li> 14577 </ul> 14578 </td> 14579 14580 </tr> 14581 <tr class="entries_header"> 14582 <th class="th_details" colspan="6">Details</th> 14583 </tr> 14584 <tr class="entry_cont"> 14585 <td class="entry_details" colspan="6"> 14586 <p>If OIS is not supported by a given camera device,<wbr/> this list will 14587contain only OFF.<wbr/></p> 14588 </td> 14589 </tr> 14590 14591 14592 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14593 <!-- end of entry --> 14594 14595 14596 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 14597 <td class="entry_name 14598 " rowspan="3"> 14599 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 14600 </td> 14601 <td class="entry_type"> 14602 <span class="entry_type_name">float</span> 14603 14604 <span class="entry_type_visibility"> [public]</span> 14605 14606 14607 <span class="entry_type_hwlevel">[limited] </span> 14608 14609 14610 14611 14612 </td> <!-- entry_type --> 14613 14614 <td class="entry_description"> 14615 <p>Hyperfocal distance for this lens.<wbr/></p> 14616 </td> 14617 14618 <td class="entry_units"> 14619 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 14620 </td> 14621 14622 <td class="entry_range"> 14623 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is 14624within <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> 14625 </td> 14626 14627 <td class="entry_hal_version"> 14628 <p>3.<wbr/>2</p> 14629 </td> 14630 14631 <td class="entry_tags"> 14632 </td> 14633 14634 </tr> 14635 <tr class="entries_header"> 14636 <th class="th_details" colspan="6">Details</th> 14637 </tr> 14638 <tr class="entry_cont"> 14639 <td class="entry_details" colspan="6"> 14640 <p>If the lens is not fixed focus,<wbr/> the camera device will report this 14641field 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> 14642 </td> 14643 </tr> 14644 14645 14646 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14647 <!-- end of entry --> 14648 14649 14650 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 14651 <td class="entry_name 14652 " rowspan="5"> 14653 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 14654 </td> 14655 <td class="entry_type"> 14656 <span class="entry_type_name">float</span> 14657 14658 <span class="entry_type_visibility"> [public]</span> 14659 14660 14661 <span class="entry_type_hwlevel">[limited] </span> 14662 14663 14664 14665 14666 </td> <!-- entry_type --> 14667 14668 <td class="entry_description"> 14669 <p>Shortest distance from frontmost surface 14670of the lens that can be brought into sharp focus.<wbr/></p> 14671 </td> 14672 14673 <td class="entry_units"> 14674 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 14675 </td> 14676 14677 <td class="entry_range"> 14678 <p>>= 0</p> 14679 </td> 14680 14681 <td class="entry_hal_version"> 14682 <p>3.<wbr/>2</p> 14683 </td> 14684 14685 <td class="entry_tags"> 14686 <ul class="entry_tags"> 14687 <li><a href="#tag_V1">V1</a></li> 14688 </ul> 14689 </td> 14690 14691 </tr> 14692 <tr class="entries_header"> 14693 <th class="th_details" colspan="6">Details</th> 14694 </tr> 14695 <tr class="entry_cont"> 14696 <td class="entry_details" colspan="6"> 14697 <p>If the lens is fixed-focus,<wbr/> this will be 146980.<wbr/></p> 14699 </td> 14700 </tr> 14701 14702 <tr class="entries_header"> 14703 <th class="th_details" colspan="6">HAL Implementation Details</th> 14704 </tr> 14705 <tr class="entry_cont"> 14706 <td class="entry_details" colspan="6"> 14707 <p>Mandatory for FULL devices; LIMITED devices 14708must always set this value to 0 for fixed-focus; and may omit 14709the minimum focus distance otherwise.<wbr/></p> 14710<p>This field is also mandatory for all devices advertising 14711the MANUAL_<wbr/>SENSOR capability.<wbr/></p> 14712 </td> 14713 </tr> 14714 14715 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14716 <!-- end of entry --> 14717 14718 14719 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 14720 <td class="entry_name 14721 " rowspan="3"> 14722 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 14723 </td> 14724 <td class="entry_type"> 14725 <span class="entry_type_name">int32</span> 14726 <span class="entry_type_container">x</span> 14727 14728 <span class="entry_type_array"> 14729 2 14730 </span> 14731 <span class="entry_type_visibility"> [ndk_public as size]</span> 14732 14733 14734 <span class="entry_type_hwlevel">[full] </span> 14735 14736 14737 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 14738 14739 14740 </td> <!-- entry_type --> 14741 14742 <td class="entry_description"> 14743 <p>Dimensions of lens shading map.<wbr/></p> 14744 </td> 14745 14746 <td class="entry_units"> 14747 </td> 14748 14749 <td class="entry_range"> 14750 <p>Both values >= 1</p> 14751 </td> 14752 14753 <td class="entry_hal_version"> 14754 <p>3.<wbr/>2</p> 14755 </td> 14756 14757 <td class="entry_tags"> 14758 <ul class="entry_tags"> 14759 <li><a href="#tag_V1">V1</a></li> 14760 </ul> 14761 </td> 14762 14763 </tr> 14764 <tr class="entries_header"> 14765 <th class="th_details" colspan="6">Details</th> 14766 </tr> 14767 <tr class="entry_cont"> 14768 <td class="entry_details" colspan="6"> 14769 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 14770must be smaller than 64x64.<wbr/></p> 14771 </td> 14772 </tr> 14773 14774 14775 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14776 <!-- end of entry --> 14777 14778 14779 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 14780 <td class="entry_name 14781 " rowspan="5"> 14782 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 14783 </td> 14784 <td class="entry_type"> 14785 <span class="entry_type_name entry_type_name_enum">byte</span> 14786 14787 <span class="entry_type_visibility"> [public]</span> 14788 14789 14790 <span class="entry_type_hwlevel">[limited] </span> 14791 14792 14793 14794 <ul class="entry_type_enum"> 14795 <li> 14796 <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span> 14797 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 14798<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p> 14799<p>Setting the lens to the same focus distance on separate occasions may 14800result in a different real focus distance,<wbr/> depending on factors such 14801as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 14802and the device temperature.<wbr/> The focus distance value will still be 14803in 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 14804represents the farthest focus.<wbr/></p></span> 14805 </li> 14806 <li> 14807 <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span> 14808 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p> 14809<p>However,<wbr/> setting the lens to the same focus distance 14810on separate occasions may result in a different real 14811focus distance,<wbr/> depending on factors such as the 14812orientation of the device,<wbr/> the age of the focusing 14813mechanism,<wbr/> and the device temperature.<wbr/></p></span> 14814 </li> 14815 <li> 14816 <span class="entry_type_enum_name">CALIBRATED (v3.2)</span> 14817 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and 14818is calibrated.<wbr/></p> 14819<p>The lens mechanism is calibrated so that setting the 14820same focus distance is repeatable on multiple 14821occasions with good accuracy,<wbr/> and the focus distance 14822corresponds to the real physical distance to the plane 14823of best focus.<wbr/></p></span> 14824 </li> 14825 </ul> 14826 14827 </td> <!-- entry_type --> 14828 14829 <td class="entry_description"> 14830 <p>The lens focus distance calibration quality.<wbr/></p> 14831 </td> 14832 14833 <td class="entry_units"> 14834 </td> 14835 14836 <td class="entry_range"> 14837 </td> 14838 14839 <td class="entry_hal_version"> 14840 <p>3.<wbr/>2</p> 14841 </td> 14842 14843 <td class="entry_tags"> 14844 <ul class="entry_tags"> 14845 <li><a href="#tag_V1">V1</a></li> 14846 </ul> 14847 </td> 14848 14849 </tr> 14850 <tr class="entries_header"> 14851 <th class="th_details" colspan="6">Details</th> 14852 </tr> 14853 <tr class="entry_cont"> 14854 <td class="entry_details" colspan="6"> 14855 <p>The lens focus distance calibration quality determines the reliability of 14856focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 14857<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 14858<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 14859<p>APPROXIMATE and CALIBRATED devices report the focus metadata in 14860units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> 14861and increasing positive numbers represent focusing closer and closer 14862to the camera device.<wbr/> The focus distance control also uses diopters 14863on these devices.<wbr/></p> 14864<p>UNCALIBRATED devices do not use units that are directly comparable 14865to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest 14866focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the 14867nearest focus the device can achieve.<wbr/></p> 14868 </td> 14869 </tr> 14870 14871 <tr class="entries_header"> 14872 <th class="th_details" colspan="6">HAL Implementation Details</th> 14873 </tr> 14874 <tr class="entry_cont"> 14875 <td class="entry_details" colspan="6"> 14876 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity 14877focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) 14878and the lens focus distance is set to 0 diopters 14879(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity 14880and is stably focused at infinity even if the device tilts.<wbr/> It may take the 14881lens some time to move; during the move the lens state should be MOVING and 14882the output diopter value should be changing toward 0.<wbr/></p> 14883 </td> 14884 </tr> 14885 14886 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14887 <!-- end of entry --> 14888 14889 14890 14891 14892 14893 <tr class="entry" id="static_android.lens.facing"> 14894 <td class="entry_name 14895 " rowspan="1"> 14896 android.<wbr/>lens.<wbr/>facing 14897 </td> 14898 <td class="entry_type"> 14899 <span class="entry_type_name entry_type_name_enum">byte</span> 14900 14901 <span class="entry_type_visibility"> [public]</span> 14902 14903 14904 <span class="entry_type_hwlevel">[legacy] </span> 14905 14906 14907 14908 <ul class="entry_type_enum"> 14909 <li> 14910 <span class="entry_type_enum_name">FRONT (v3.2)</span> 14911 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span> 14912 </li> 14913 <li> 14914 <span class="entry_type_enum_name">BACK (v3.2)</span> 14915 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span> 14916 </li> 14917 <li> 14918 <span class="entry_type_enum_name">EXTERNAL (v3.2)</span> 14919 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the 14920device's screen.<wbr/></p></span> 14921 </li> 14922 </ul> 14923 14924 </td> <!-- entry_type --> 14925 14926 <td class="entry_description"> 14927 <p>Direction the camera faces relative to 14928device screen.<wbr/></p> 14929 </td> 14930 14931 <td class="entry_units"> 14932 </td> 14933 14934 <td class="entry_range"> 14935 </td> 14936 14937 <td class="entry_hal_version"> 14938 <p>3.<wbr/>2</p> 14939 </td> 14940 14941 <td class="entry_tags"> 14942 </td> 14943 14944 </tr> 14945 14946 14947 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14948 <!-- end of entry --> 14949 14950 14951 <tr class="entry" id="static_android.lens.poseRotation"> 14952 <td class="entry_name 14953 " rowspan="3"> 14954 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 14955 </td> 14956 <td class="entry_type"> 14957 <span class="entry_type_name">float</span> 14958 <span class="entry_type_container">x</span> 14959 14960 <span class="entry_type_array"> 14961 4 14962 </span> 14963 <span class="entry_type_visibility"> [public]</span> 14964 14965 14966 14967 14968 14969 14970 </td> <!-- entry_type --> 14971 14972 <td class="entry_description"> 14973 <p>The orientation of the camera relative to the sensor 14974coordinate system.<wbr/></p> 14975 </td> 14976 14977 <td class="entry_units"> 14978 14979 Quaternion coefficients 14980 14981 </td> 14982 14983 <td class="entry_range"> 14984 </td> 14985 14986 <td class="entry_hal_version"> 14987 <p>3.<wbr/>2</p> 14988 </td> 14989 14990 <td class="entry_tags"> 14991 <ul class="entry_tags"> 14992 <li><a href="#tag_DEPTH">DEPTH</a></li> 14993 </ul> 14994 </td> 14995 14996 </tr> 14997 <tr class="entries_header"> 14998 <th class="th_details" colspan="6">Details</th> 14999 </tr> 15000 <tr class="entry_cont"> 15001 <td class="entry_details" colspan="6"> 15002 <p>The four coefficients that describe the quaternion 15003rotation from the Android sensor coordinate system to a 15004camera-aligned coordinate system where the X-axis is 15005aligned with the long side of the image sensor,<wbr/> the Y-axis 15006is aligned with the short side of the image sensor,<wbr/> and 15007the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 15008<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 15009to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 15010amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 15011<pre><code> theta = 2 * acos(w) 15012a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 15013a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 15014a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 15015</code></pre> 15016<p>To create a 3x3 rotation matrix that applies the rotation 15017defined by this quaternion,<wbr/> the following matrix can be 15018used:</p> 15019<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 15020 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 15021 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 15022</code></pre> 15023<p>This matrix can then be used to apply the rotation to a 15024 column vector point with</p> 15025<p><code>p' = Rp</code></p> 15026<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 15027 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 15028<p>If <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> the quaternion rotation cannot 15029 be accurately represented by the camera device,<wbr/> and will be represented by 15030 default values matching its default facing.<wbr/></p> 15031 </td> 15032 </tr> 15033 15034 15035 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15036 <!-- end of entry --> 15037 15038 15039 <tr class="entry" id="static_android.lens.poseTranslation"> 15040 <td class="entry_name 15041 " rowspan="3"> 15042 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 15043 </td> 15044 <td class="entry_type"> 15045 <span class="entry_type_name">float</span> 15046 <span class="entry_type_container">x</span> 15047 15048 <span class="entry_type_array"> 15049 3 15050 </span> 15051 <span class="entry_type_visibility"> [public]</span> 15052 15053 15054 15055 15056 15057 15058 </td> <!-- entry_type --> 15059 15060 <td class="entry_description"> 15061 <p>Position of the camera optical center.<wbr/></p> 15062 </td> 15063 15064 <td class="entry_units"> 15065 Meters 15066 </td> 15067 15068 <td class="entry_range"> 15069 </td> 15070 15071 <td class="entry_hal_version"> 15072 <p>3.<wbr/>2</p> 15073 </td> 15074 15075 <td class="entry_tags"> 15076 <ul class="entry_tags"> 15077 <li><a href="#tag_DEPTH">DEPTH</a></li> 15078 </ul> 15079 </td> 15080 15081 </tr> 15082 <tr class="entries_header"> 15083 <th class="th_details" colspan="6">Details</th> 15084 </tr> 15085 <tr class="entry_cont"> 15086 <td class="entry_details" colspan="6"> 15087 <p>The position of the camera device's lens optical center,<wbr/> 15088as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p> 15089<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 15090is relative to the optical center of the largest camera device facing in the same 15091direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor 15092coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor 15093coordinate system,<wbr/> but not the origin.<wbr/></p> 15094<p>If this device is the largest or only camera device with a given facing,<wbr/> then this 15095position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm 15096from the main sensor along the +X axis (to the right from the user's perspective) will 15097report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/> Note that this means that,<wbr/> for many computer vision 15098applications,<wbr/> the position needs to be negated to convert it to a translation from the 15099camera to the origin.<wbr/></p> 15100<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first 15101the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source 15102camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the 15103<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 15104relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination 15105camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination 15106camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel 15107coordinates.<wbr/></p> 15108<p>To compare this against a real image from the destination camera,<wbr/> the destination camera 15109image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p> 15110<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 15111the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as 15112with PRIMARY_<wbr/>CAMERA.<wbr/></p> 15113<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> this position cannot be accurately 15114represented by the camera device,<wbr/> and will be represented as <code>(0,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 15115 </td> 15116 </tr> 15117 15118 15119 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15120 <!-- end of entry --> 15121 15122 15123 <tr class="entry" id="static_android.lens.intrinsicCalibration"> 15124 <td class="entry_name 15125 " rowspan="3"> 15126 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 15127 </td> 15128 <td class="entry_type"> 15129 <span class="entry_type_name">float</span> 15130 <span class="entry_type_container">x</span> 15131 15132 <span class="entry_type_array"> 15133 5 15134 </span> 15135 <span class="entry_type_visibility"> [public]</span> 15136 15137 15138 15139 15140 15141 15142 </td> <!-- entry_type --> 15143 15144 <td class="entry_description"> 15145 <p>The parameters for this camera device's intrinsic 15146calibration.<wbr/></p> 15147 </td> 15148 15149 <td class="entry_units"> 15150 15151 Pixels in the 15152 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 15153 coordinate system.<wbr/> 15154 15155 </td> 15156 15157 <td class="entry_range"> 15158 </td> 15159 15160 <td class="entry_hal_version"> 15161 <p>3.<wbr/>2</p> 15162 </td> 15163 15164 <td class="entry_tags"> 15165 <ul class="entry_tags"> 15166 <li><a href="#tag_DEPTH">DEPTH</a></li> 15167 </ul> 15168 </td> 15169 15170 </tr> 15171 <tr class="entries_header"> 15172 <th class="th_details" colspan="6">Details</th> 15173 </tr> 15174 <tr class="entry_cont"> 15175 <td class="entry_details" colspan="6"> 15176 <p>The five calibration parameters that describe the 15177transform from camera-centric 3D coordinates to sensor 15178pixel coordinates:</p> 15179<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 15180</code></pre> 15181<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 15182focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 15183axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 15184being aligned with the lens plane.<wbr/></p> 15185<p>These are typically used within a transformation matrix K:</p> 15186<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 15187 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 15188 0 0,<wbr/> 1 ] 15189</code></pre> 15190<p>which can then be combined with the camera pose rotation 15191<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 15192<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the 15193complete transform from world coordinates to pixel 15194coordinates:</p> 15195<pre><code>P = [ K 0 * [ R -Rt 15196 0 1 ] 0 1 ] 15197</code></pre> 15198<p>(Note the negation of poseTranslation when mapping from camera 15199to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p> 15200<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system 15201and <code>p_<wbr/>s</code> being a point in the camera active pixel array 15202coordinate system,<wbr/> and with the mapping including the 15203homogeneous division by z:</p> 15204<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 15205p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 15206</code></pre> 15207<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 15208point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 15209(depth) in pixel coordinates.<wbr/></p> 15210<p>Note that the coordinate system for this transform is the 15211<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/> 15212where <code>(0,<wbr/>0)</code> is the top-left of the 15213preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 15214intrinsic calibration transforms have been applied to a 15215world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> 15216transform needs to be applied,<wbr/> and the result adjusted to 15217be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 15218system (where <code>(0,<wbr/> 0)</code> is the top-left of the 15219activeArraySize rectangle),<wbr/> to determine the final pixel 15220coordinate of the world point for processed (non-RAW) 15221output buffers.<wbr/></p> 15222<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at 15223coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/> So on a device with a 15224precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel 15225indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would 15226have an optical center at the exact center of the pixel grid,<wbr/> at 15227coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel 15228<code>(5,<wbr/>5)</code>.<wbr/></p> 15229 </td> 15230 </tr> 15231 15232 15233 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15234 <!-- end of entry --> 15235 15236 15237 <tr class="entry" id="static_android.lens.radialDistortion"> 15238 <td class="entry_name 15239 entry_name_deprecated 15240 " rowspan="3"> 15241 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 15242 </td> 15243 <td class="entry_type"> 15244 <span class="entry_type_name">float</span> 15245 <span class="entry_type_container">x</span> 15246 15247 <span class="entry_type_array"> 15248 6 15249 </span> 15250 <span class="entry_type_visibility"> [public]</span> 15251 15252 15253 15254 <span class="entry_type_deprecated">[deprecated] </span> 15255 15256 15257 15258 </td> <!-- entry_type --> 15259 15260 <td class="entry_description"> 15261 <p>The correction coefficients to correct for this camera device's 15262radial and tangential lens distortion.<wbr/></p> 15263 </td> 15264 15265 <td class="entry_units"> 15266 15267 Unitless coefficients.<wbr/> 15268 15269 </td> 15270 15271 <td class="entry_range"> 15272 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15273 </td> 15274 15275 <td class="entry_hal_version"> 15276 <p>3.<wbr/>2</p> 15277 </td> 15278 15279 <td class="entry_tags"> 15280 <ul class="entry_tags"> 15281 <li><a href="#tag_DEPTH">DEPTH</a></li> 15282 </ul> 15283 </td> 15284 15285 </tr> 15286 <tr class="entries_header"> 15287 <th class="th_details" colspan="6">Details</th> 15288 </tr> 15289 <tr class="entry_cont"> 15290 <td class="entry_details" colspan="6"> 15291 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 15292kappa_<wbr/>3]</code> and two tangential distortion coefficients 15293<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 15294lens's geometric distortion with the mapping equations:</p> 15295<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 ) + 15296 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 15297 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 15298 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 15299</code></pre> 15300<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 15301input image that correspond to the pixel values in the 15302corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 15303<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 15304</code></pre> 15305<p>The pixel coordinates are defined in a normalized 15306coordinate system related to the 15307<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 15308Both <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 15309lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 15310of both x and y coordinates are normalized to be 1 at the 15311edge further from the optical center,<wbr/> so the range 15312for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 15313<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 15314optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 15315is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 15316<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 15317 </td> 15318 </tr> 15319 15320 15321 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15322 <!-- end of entry --> 15323 15324 15325 <tr class="entry" id="static_android.lens.poseReference"> 15326 <td class="entry_name 15327 " rowspan="3"> 15328 android.<wbr/>lens.<wbr/>pose<wbr/>Reference 15329 </td> 15330 <td class="entry_type"> 15331 <span class="entry_type_name entry_type_name_enum">byte</span> 15332 15333 <span class="entry_type_visibility"> [public]</span> 15334 15335 15336 15337 15338 15339 <ul class="entry_type_enum"> 15340 <li> 15341 <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span> 15342 <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 15343the largest camera device facing the same direction as this camera.<wbr/></p> 15344<p>This is the default value for API levels before Android P.<wbr/></p></span> 15345 </li> 15346 <li> 15347 <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span> 15348 <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 15349primary gyroscope of this Android device.<wbr/></p></span> 15350 </li> 15351 <li> 15352 <span class="entry_type_enum_name">UNDEFINED (v3.5)</span> 15353 <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> 15354and <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> accurately enough.<wbr/> One such example is a camera device 15355on the cover of a foldable phone: in order to measure the pose translation and rotation,<wbr/> 15356some kind of hinge position sensor would be needed.<wbr/></p> 15357<p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> must be all zeros,<wbr/> and 15358<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> must be values matching its default facing.<wbr/></p></span> 15359 </li> 15360 </ul> 15361 15362 </td> <!-- entry_type --> 15363 15364 <td class="entry_description"> 15365 <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> and the accuracy of 15366<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> 15367 </td> 15368 15369 <td class="entry_units"> 15370 </td> 15371 15372 <td class="entry_range"> 15373 </td> 15374 15375 <td class="entry_hal_version"> 15376 <p>3.<wbr/>3</p> 15377 </td> 15378 15379 <td class="entry_tags"> 15380 </td> 15381 15382 </tr> 15383 <tr class="entries_header"> 15384 <th class="th_details" colspan="6">Details</th> 15385 </tr> 15386 <tr class="entry_cont"> 15387 <td class="entry_details" colspan="6"> 15388 <p>Different calibration methods and use cases can produce better or worse results 15389depending on the selected coordinate origin.<wbr/></p> 15390 </td> 15391 </tr> 15392 15393 15394 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15395 <!-- end of entry --> 15396 15397 15398 <tr class="entry" id="static_android.lens.distortion"> 15399 <td class="entry_name 15400 " rowspan="3"> 15401 android.<wbr/>lens.<wbr/>distortion 15402 </td> 15403 <td class="entry_type"> 15404 <span class="entry_type_name">float</span> 15405 <span class="entry_type_container">x</span> 15406 15407 <span class="entry_type_array"> 15408 5 15409 </span> 15410 <span class="entry_type_visibility"> [public]</span> 15411 15412 15413 15414 15415 15416 15417 </td> <!-- entry_type --> 15418 15419 <td class="entry_description"> 15420 <p>The correction coefficients to correct for this camera device's 15421radial and tangential lens distortion.<wbr/></p> 15422<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was 15423inconsistently defined.<wbr/></p> 15424 </td> 15425 15426 <td class="entry_units"> 15427 15428 Unitless coefficients.<wbr/> 15429 15430 </td> 15431 15432 <td class="entry_range"> 15433 </td> 15434 15435 <td class="entry_hal_version"> 15436 <p>3.<wbr/>3</p> 15437 </td> 15438 15439 <td class="entry_tags"> 15440 <ul class="entry_tags"> 15441 <li><a href="#tag_DEPTH">DEPTH</a></li> 15442 </ul> 15443 </td> 15444 15445 </tr> 15446 <tr class="entries_header"> 15447 <th class="th_details" colspan="6">Details</th> 15448 </tr> 15449 <tr class="entry_cont"> 15450 <td class="entry_details" colspan="6"> 15451 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 15452kappa_<wbr/>3]</code> and two tangential distortion coefficients 15453<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 15454lens's geometric distortion with the mapping equations:</p> 15455<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 15456 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 15457 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 15458 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 15459</code></pre> 15460<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 15461input image that correspond to the pixel values in the 15462corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 15463<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 15464</code></pre> 15465<p>The pixel coordinates are defined in a coordinate system 15466related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 15467calibration fields; see that entry for details of the mapping stages.<wbr/> 15468Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> 15469have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and 15470the range of the coordinates depends on the focal length 15471terms of the intrinsic calibration.<wbr/></p> 15472<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 15473optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p> 15474<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 15475 </td> 15476 </tr> 15477 15478 15479 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15480 <!-- end of entry --> 15481 15482 15483 <tr class="entry" id="static_android.lens.distortionMaximumResolution"> 15484 <td class="entry_name 15485 " rowspan="3"> 15486 android.<wbr/>lens.<wbr/>distortion<wbr/>Maximum<wbr/>Resolution 15487 </td> 15488 <td class="entry_type"> 15489 <span class="entry_type_name">float</span> 15490 <span class="entry_type_container">x</span> 15491 15492 <span class="entry_type_array"> 15493 5 15494 </span> 15495 <span class="entry_type_visibility"> [public]</span> 15496 15497 15498 15499 15500 15501 15502 </td> <!-- entry_type --> 15503 15504 <td class="entry_description"> 15505 <p>The correction coefficients to correct for this camera device's 15506radial and tangential lens distortion for a 15507CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to 15508<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> 15509 </td> 15510 15511 <td class="entry_units"> 15512 15513 Unitless coefficients.<wbr/> 15514 15515 </td> 15516 15517 <td class="entry_range"> 15518 </td> 15519 15520 <td class="entry_hal_version"> 15521 <p>3.<wbr/>6</p> 15522 </td> 15523 15524 <td class="entry_tags"> 15525 <ul class="entry_tags"> 15526 <li><a href="#tag_DEPTH">DEPTH</a></li> 15527 </ul> 15528 </td> 15529 15530 </tr> 15531 <tr class="entries_header"> 15532 <th class="th_details" colspan="6">Details</th> 15533 </tr> 15534 <tr class="entry_cont"> 15535 <td class="entry_details" colspan="6"> 15536 <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 15537<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> 15538 </td> 15539 </tr> 15540 15541 15542 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15543 <!-- end of entry --> 15544 15545 15546 <tr class="entry" id="static_android.lens.intrinsicCalibrationMaximumResolution"> 15547 <td class="entry_name 15548 " rowspan="3"> 15549 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration<wbr/>Maximum<wbr/>Resolution 15550 </td> 15551 <td class="entry_type"> 15552 <span class="entry_type_name">float</span> 15553 <span class="entry_type_container">x</span> 15554 15555 <span class="entry_type_array"> 15556 5 15557 </span> 15558 <span class="entry_type_visibility"> [public]</span> 15559 15560 15561 15562 15563 15564 15565 </td> <!-- entry_type --> 15566 15567 <td class="entry_description"> 15568 <p>The parameters for this camera device's intrinsic 15569calibration when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 15570<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> 15571 </td> 15572 15573 <td class="entry_units"> 15574 15575 Pixels in the 15576 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution 15577 coordinate system.<wbr/> 15578 15579 </td> 15580 15581 <td class="entry_range"> 15582 </td> 15583 15584 <td class="entry_hal_version"> 15585 <p>3.<wbr/>6</p> 15586 </td> 15587 15588 <td class="entry_tags"> 15589 <ul class="entry_tags"> 15590 <li><a href="#tag_DEPTH">DEPTH</a></li> 15591 </ul> 15592 </td> 15593 15594 </tr> 15595 <tr class="entries_header"> 15596 <th class="th_details" colspan="6">Details</th> 15597 </tr> 15598 <tr class="entry_cont"> 15599 <td class="entry_details" colspan="6"> 15600 <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 15601<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> 15602 </td> 15603 </tr> 15604 15605 15606 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15607 <!-- end of entry --> 15608 15609 15610 15611 <!-- end of kind --> 15612 </tbody> 15613 <tr><td colspan="7" class="kind">dynamic</td></tr> 15614 15615 <thead class="entries_header"> 15616 <tr> 15617 <th class="th_name">Property Name</th> 15618 <th class="th_type">Type</th> 15619 <th class="th_description">Description</th> 15620 <th class="th_units">Units</th> 15621 <th class="th_range">Range</th> 15622 <th class="th_hal_version">Initial HIDL HAL version</th> 15623 <th class="th_tags">Tags</th> 15624 </tr> 15625 </thead> 15626 15627 <tbody> 15628 15629 15630 15631 15632 15633 15634 15635 15636 15637 15638 <tr class="entry" id="dynamic_android.lens.aperture"> 15639 <td class="entry_name 15640 " rowspan="3"> 15641 android.<wbr/>lens.<wbr/>aperture 15642 </td> 15643 <td class="entry_type"> 15644 <span class="entry_type_name">float</span> 15645 15646 <span class="entry_type_visibility"> [public]</span> 15647 15648 15649 <span class="entry_type_hwlevel">[full] </span> 15650 15651 15652 15653 15654 </td> <!-- entry_type --> 15655 15656 <td class="entry_description"> 15657 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 15658effective aperture diameter.<wbr/></p> 15659 </td> 15660 15661 <td class="entry_units"> 15662 The f-number (f/<wbr/>N) 15663 </td> 15664 15665 <td class="entry_range"> 15666 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 15667 </td> 15668 15669 <td class="entry_hal_version"> 15670 <p>3.<wbr/>2</p> 15671 </td> 15672 15673 <td class="entry_tags"> 15674 <ul class="entry_tags"> 15675 <li><a href="#tag_V1">V1</a></li> 15676 </ul> 15677 </td> 15678 15679 </tr> 15680 <tr class="entries_header"> 15681 <th class="th_details" colspan="6">Details</th> 15682 </tr> 15683 <tr class="entry_cont"> 15684 <td class="entry_details" colspan="6"> 15685 <p>Setting this value is only supported on the camera devices that have a variable 15686aperture lens.<wbr/></p> 15687<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 15688this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 15689<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> 15690to achieve manual exposure control.<wbr/></p> 15691<p>The requested aperture value may take several frames to reach the 15692requested value; the camera device will report the current (intermediate) 15693aperture size in capture result metadata while the aperture is changing.<wbr/> 15694While 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> 15695<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 15696the ON modes,<wbr/> this will be overridden by the camera device 15697auto-exposure algorithm,<wbr/> the overridden values are then provided 15698back to the user in the corresponding result.<wbr/></p> 15699 </td> 15700 </tr> 15701 15702 15703 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15704 <!-- end of entry --> 15705 15706 15707 <tr class="entry" id="dynamic_android.lens.filterDensity"> 15708 <td class="entry_name 15709 " rowspan="3"> 15710 android.<wbr/>lens.<wbr/>filter<wbr/>Density 15711 </td> 15712 <td class="entry_type"> 15713 <span class="entry_type_name">float</span> 15714 15715 <span class="entry_type_visibility"> [public]</span> 15716 15717 15718 <span class="entry_type_hwlevel">[full] </span> 15719 15720 15721 15722 15723 </td> <!-- entry_type --> 15724 15725 <td class="entry_description"> 15726 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 15727 </td> 15728 15729 <td class="entry_units"> 15730 Exposure Value (EV) 15731 </td> 15732 15733 <td class="entry_range"> 15734 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 15735 </td> 15736 15737 <td class="entry_hal_version"> 15738 <p>3.<wbr/>2</p> 15739 </td> 15740 15741 <td class="entry_tags"> 15742 <ul class="entry_tags"> 15743 <li><a href="#tag_V1">V1</a></li> 15744 </ul> 15745 </td> 15746 15747 </tr> 15748 <tr class="entries_header"> 15749 <th class="th_details" colspan="6">Details</th> 15750 </tr> 15751 <tr class="entry_cont"> 15752 <td class="entry_details" colspan="6"> 15753 <p>This control will not be supported on most camera devices.<wbr/></p> 15754<p>Lens filters are typically used to lower the amount of light the 15755sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 15756step is the standard logarithmic representation,<wbr/> which are 15757non-negative,<wbr/> and inversely proportional to the amount of light 15758hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 15759in no reduction of the incoming light,<wbr/> and setting this to 2 would 15760mean that the filter is set to reduce incoming light by two stops 15761(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 15762<p>It may take several frames before the lens filter density changes 15763to the requested value.<wbr/> While the filter density is still changing,<wbr/> 15764<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 15765 </td> 15766 </tr> 15767 15768 15769 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15770 <!-- end of entry --> 15771 15772 15773 <tr class="entry" id="dynamic_android.lens.focalLength"> 15774 <td class="entry_name 15775 " rowspan="5"> 15776 android.<wbr/>lens.<wbr/>focal<wbr/>Length 15777 </td> 15778 <td class="entry_type"> 15779 <span class="entry_type_name">float</span> 15780 15781 <span class="entry_type_visibility"> [public]</span> 15782 15783 15784 <span class="entry_type_hwlevel">[legacy] </span> 15785 15786 15787 15788 15789 </td> <!-- entry_type --> 15790 15791 <td class="entry_description"> 15792 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 15793 </td> 15794 15795 <td class="entry_units"> 15796 Millimeters 15797 </td> 15798 15799 <td class="entry_range"> 15800 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 15801 </td> 15802 15803 <td class="entry_hal_version"> 15804 <p>3.<wbr/>2</p> 15805 </td> 15806 15807 <td class="entry_tags"> 15808 <ul class="entry_tags"> 15809 <li><a href="#tag_BC">BC</a></li> 15810 </ul> 15811 </td> 15812 15813 </tr> 15814 <tr class="entries_header"> 15815 <th class="th_details" colspan="6">Details</th> 15816 </tr> 15817 <tr class="entry_cont"> 15818 <td class="entry_details" colspan="6"> 15819 <p>This setting controls the physical focal length of the camera 15820device's lens.<wbr/> Changing the focal length changes the field of 15821view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 15822<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 15823setting won't be applied instantaneously,<wbr/> and it may take several 15824frames before the lens can change to the requested focal length.<wbr/> 15825While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 15826be set to MOVING.<wbr/></p> 15827<p>Optical zoom via this control will not be supported on most devices.<wbr/> Starting from API 15828level 30,<wbr/> the camera device may combine optical and digital zoom through the 15829<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> control.<wbr/></p> 15830 </td> 15831 </tr> 15832 15833 <tr class="entries_header"> 15834 <th class="th_details" colspan="6">HAL Implementation Details</th> 15835 </tr> 15836 <tr class="entry_cont"> 15837 <td class="entry_details" colspan="6"> 15838 <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and 15839cropRegion change in the same request,<wbr/> the camera device must make sure that the new 15840focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there 15841is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied 15842immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device 15843will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p> 15844<p>Starting from API level 30,<wbr/> it's strongly recommended for HAL to implement the 15845combination 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 15846lieu 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> 15847 </td> 15848 </tr> 15849 15850 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15851 <!-- end of entry --> 15852 15853 15854 <tr class="entry" id="dynamic_android.lens.focusDistance"> 15855 <td class="entry_name 15856 " rowspan="3"> 15857 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 15858 </td> 15859 <td class="entry_type"> 15860 <span class="entry_type_name">float</span> 15861 15862 <span class="entry_type_visibility"> [public]</span> 15863 15864 15865 <span class="entry_type_hwlevel">[full] </span> 15866 15867 15868 15869 15870 </td> <!-- entry_type --> 15871 15872 <td class="entry_description"> 15873 <p>Desired distance to plane of sharpest focus,<wbr/> 15874measured from frontmost surface of the lens.<wbr/></p> 15875 </td> 15876 15877 <td class="entry_units"> 15878 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 15879 </td> 15880 15881 <td class="entry_range"> 15882 <p>>= 0</p> 15883 </td> 15884 15885 <td class="entry_hal_version"> 15886 <p>3.<wbr/>2</p> 15887 </td> 15888 15889 <td class="entry_tags"> 15890 <ul class="entry_tags"> 15891 <li><a href="#tag_BC">BC</a></li> 15892 </ul> 15893 </td> 15894 15895 </tr> 15896 <tr class="entries_header"> 15897 <th class="th_details" colspan="6">Details</th> 15898 </tr> 15899 <tr class="entry_cont"> 15900 <td class="entry_details" colspan="6"> 15901 <p>Should be zero for fixed-focus cameras</p> 15902 </td> 15903 </tr> 15904 15905 15906 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15907 <!-- end of entry --> 15908 15909 15910 <tr class="entry" id="dynamic_android.lens.focusRange"> 15911 <td class="entry_name 15912 " rowspan="3"> 15913 android.<wbr/>lens.<wbr/>focus<wbr/>Range 15914 </td> 15915 <td class="entry_type"> 15916 <span class="entry_type_name">float</span> 15917 <span class="entry_type_container">x</span> 15918 15919 <span class="entry_type_array"> 15920 2 15921 </span> 15922 <span class="entry_type_visibility"> [public as pairFloatFloat]</span> 15923 15924 15925 <span class="entry_type_hwlevel">[limited] </span> 15926 15927 15928 <div class="entry_type_notes">Range of scene distances that are in focus</div> 15929 15930 15931 </td> <!-- entry_type --> 15932 15933 <td class="entry_description"> 15934 <p>The range of scene distances that are in 15935sharp focus (depth of field).<wbr/></p> 15936 </td> 15937 15938 <td class="entry_units"> 15939 A pair of focus distances in diopters: (near,<wbr/> 15940 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 15941 </td> 15942 15943 <td class="entry_range"> 15944 <p>>=0</p> 15945 </td> 15946 15947 <td class="entry_hal_version"> 15948 <p>3.<wbr/>2</p> 15949 </td> 15950 15951 <td class="entry_tags"> 15952 <ul class="entry_tags"> 15953 <li><a href="#tag_BC">BC</a></li> 15954 </ul> 15955 </td> 15956 15957 </tr> 15958 <tr class="entries_header"> 15959 <th class="th_details" colspan="6">Details</th> 15960 </tr> 15961 <tr class="entry_cont"> 15962 <td class="entry_details" colspan="6"> 15963 <p>If variable focus not supported,<wbr/> can still report 15964fixed depth of field range</p> 15965 </td> 15966 </tr> 15967 15968 15969 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15970 <!-- end of entry --> 15971 15972 15973 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 15974 <td class="entry_name 15975 " rowspan="3"> 15976 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 15977 </td> 15978 <td class="entry_type"> 15979 <span class="entry_type_name entry_type_name_enum">byte</span> 15980 15981 <span class="entry_type_visibility"> [public]</span> 15982 15983 15984 <span class="entry_type_hwlevel">[limited] </span> 15985 15986 15987 15988 <ul class="entry_type_enum"> 15989 <li> 15990 <span class="entry_type_enum_name">OFF (v3.2)</span> 15991 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 15992 </li> 15993 <li> 15994 <span class="entry_type_enum_name">ON (v3.2)</span> 15995 <span class="entry_type_enum_optional">[optional]</span> 15996 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 15997 </li> 15998 </ul> 15999 16000 </td> <!-- entry_type --> 16001 16002 <td class="entry_description"> 16003 <p>Sets whether the camera device uses optical image stabilization (OIS) 16004when capturing images.<wbr/></p> 16005 </td> 16006 16007 <td class="entry_units"> 16008 </td> 16009 16010 <td class="entry_range"> 16011 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 16012 </td> 16013 16014 <td class="entry_hal_version"> 16015 <p>3.<wbr/>2</p> 16016 </td> 16017 16018 <td class="entry_tags"> 16019 <ul class="entry_tags"> 16020 <li><a href="#tag_V1">V1</a></li> 16021 </ul> 16022 </td> 16023 16024 </tr> 16025 <tr class="entries_header"> 16026 <th class="th_details" colspan="6">Details</th> 16027 </tr> 16028 <tr class="entry_cont"> 16029 <td class="entry_details" colspan="6"> 16030 <p>OIS is used to compensate for motion blur due to small 16031movements of the camera during capture.<wbr/> Unlike digital image 16032stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 16033makes use of mechanical elements to stabilize the camera 16034sensor,<wbr/> and thus allows for longer exposure times before 16035camera shake becomes apparent.<wbr/></p> 16036<p>Switching between different optical stabilization modes may take several 16037frames to initialize,<wbr/> the camera device will report the current mode in 16038capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 16039optical stabilization modes in the first several capture results may still 16040be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 16041<p>If a camera device supports both OIS and digital image stabilization 16042(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 16043interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 16044<p>Not all devices will support OIS; see 16045<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 16046available controls.<wbr/></p> 16047 </td> 16048 </tr> 16049 16050 16051 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16052 <!-- end of entry --> 16053 16054 16055 <tr class="entry" id="dynamic_android.lens.state"> 16056 <td class="entry_name 16057 " rowspan="3"> 16058 android.<wbr/>lens.<wbr/>state 16059 </td> 16060 <td class="entry_type"> 16061 <span class="entry_type_name entry_type_name_enum">byte</span> 16062 16063 <span class="entry_type_visibility"> [public]</span> 16064 16065 16066 <span class="entry_type_hwlevel">[limited] </span> 16067 16068 16069 16070 <ul class="entry_type_enum"> 16071 <li> 16072 <span class="entry_type_enum_name">STATIONARY (v3.2)</span> 16073 <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/> 16074<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> 16075 </li> 16076 <li> 16077 <span class="entry_type_enum_name">MOVING (v3.2)</span> 16078 <span class="entry_type_enum_notes"><p>One or several of the lens parameters 16079(<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/> 16080<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 16081currently changing.<wbr/></p></span> 16082 </li> 16083 </ul> 16084 16085 </td> <!-- entry_type --> 16086 16087 <td class="entry_description"> 16088 <p>Current lens status.<wbr/></p> 16089 </td> 16090 16091 <td class="entry_units"> 16092 </td> 16093 16094 <td class="entry_range"> 16095 </td> 16096 16097 <td class="entry_hal_version"> 16098 <p>3.<wbr/>2</p> 16099 </td> 16100 16101 <td class="entry_tags"> 16102 <ul class="entry_tags"> 16103 <li><a href="#tag_V1">V1</a></li> 16104 </ul> 16105 </td> 16106 16107 </tr> 16108 <tr class="entries_header"> 16109 <th class="th_details" colspan="6">Details</th> 16110 </tr> 16111 <tr class="entry_cont"> 16112 <td class="entry_details" colspan="6"> 16113 <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/> 16114<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/> 16115they may take several frames to reach the requested values.<wbr/> This state indicates 16116the current status of the lens parameters.<wbr/></p> 16117<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 16118either because the parameters are all fixed,<wbr/> or because the lens has had enough 16119time to reach the most recently-requested values.<wbr/> 16120If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 16121<ul> 16122<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 16123<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 16124<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/> 16125which means the optical zoom is not supported.<wbr/></li> 16126<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> 16127<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> 16128</ul> 16129<p>Then this state will always be STATIONARY.<wbr/></p> 16130<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 16131is changing.<wbr/></p> 16132 </td> 16133 </tr> 16134 16135 16136 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16137 <!-- end of entry --> 16138 16139 16140 <tr class="entry" id="dynamic_android.lens.poseRotation"> 16141 <td class="entry_name 16142 " rowspan="3"> 16143 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 16144 </td> 16145 <td class="entry_type"> 16146 <span class="entry_type_name">float</span> 16147 <span class="entry_type_container">x</span> 16148 16149 <span class="entry_type_array"> 16150 4 16151 </span> 16152 <span class="entry_type_visibility"> [public]</span> 16153 16154 16155 16156 16157 16158 16159 </td> <!-- entry_type --> 16160 16161 <td class="entry_description"> 16162 <p>The orientation of the camera relative to the sensor 16163coordinate system.<wbr/></p> 16164 </td> 16165 16166 <td class="entry_units"> 16167 16168 Quaternion coefficients 16169 16170 </td> 16171 16172 <td class="entry_range"> 16173 </td> 16174 16175 <td class="entry_hal_version"> 16176 <p>3.<wbr/>2</p> 16177 </td> 16178 16179 <td class="entry_tags"> 16180 <ul class="entry_tags"> 16181 <li><a href="#tag_DEPTH">DEPTH</a></li> 16182 </ul> 16183 </td> 16184 16185 </tr> 16186 <tr class="entries_header"> 16187 <th class="th_details" colspan="6">Details</th> 16188 </tr> 16189 <tr class="entry_cont"> 16190 <td class="entry_details" colspan="6"> 16191 <p>The four coefficients that describe the quaternion 16192rotation from the Android sensor coordinate system to a 16193camera-aligned coordinate system where the X-axis is 16194aligned with the long side of the image sensor,<wbr/> the Y-axis 16195is aligned with the short side of the image sensor,<wbr/> and 16196the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 16197<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 16198to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 16199amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 16200<pre><code> theta = 2 * acos(w) 16201a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 16202a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 16203a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 16204</code></pre> 16205<p>To create a 3x3 rotation matrix that applies the rotation 16206defined by this quaternion,<wbr/> the following matrix can be 16207used:</p> 16208<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 16209 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 16210 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 16211</code></pre> 16212<p>This matrix can then be used to apply the rotation to a 16213 column vector point with</p> 16214<p><code>p' = Rp</code></p> 16215<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 16216 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 16217<p>If <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> the quaternion rotation cannot 16218 be accurately represented by the camera device,<wbr/> and will be represented by 16219 default values matching its default facing.<wbr/></p> 16220 </td> 16221 </tr> 16222 16223 16224 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16225 <!-- end of entry --> 16226 16227 16228 <tr class="entry" id="dynamic_android.lens.poseTranslation"> 16229 <td class="entry_name 16230 " rowspan="3"> 16231 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 16232 </td> 16233 <td class="entry_type"> 16234 <span class="entry_type_name">float</span> 16235 <span class="entry_type_container">x</span> 16236 16237 <span class="entry_type_array"> 16238 3 16239 </span> 16240 <span class="entry_type_visibility"> [public]</span> 16241 16242 16243 16244 16245 16246 16247 </td> <!-- entry_type --> 16248 16249 <td class="entry_description"> 16250 <p>Position of the camera optical center.<wbr/></p> 16251 </td> 16252 16253 <td class="entry_units"> 16254 Meters 16255 </td> 16256 16257 <td class="entry_range"> 16258 </td> 16259 16260 <td class="entry_hal_version"> 16261 <p>3.<wbr/>2</p> 16262 </td> 16263 16264 <td class="entry_tags"> 16265 <ul class="entry_tags"> 16266 <li><a href="#tag_DEPTH">DEPTH</a></li> 16267 </ul> 16268 </td> 16269 16270 </tr> 16271 <tr class="entries_header"> 16272 <th class="th_details" colspan="6">Details</th> 16273 </tr> 16274 <tr class="entry_cont"> 16275 <td class="entry_details" colspan="6"> 16276 <p>The position of the camera device's lens optical center,<wbr/> 16277as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p> 16278<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 16279is relative to the optical center of the largest camera device facing in the same 16280direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor 16281coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor 16282coordinate system,<wbr/> but not the origin.<wbr/></p> 16283<p>If this device is the largest or only camera device with a given facing,<wbr/> then this 16284position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm 16285from the main sensor along the +X axis (to the right from the user's perspective) will 16286report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/> Note that this means that,<wbr/> for many computer vision 16287applications,<wbr/> the position needs to be negated to convert it to a translation from the 16288camera to the origin.<wbr/></p> 16289<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first 16290the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source 16291camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the 16292<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 16293relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination 16294camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination 16295camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel 16296coordinates.<wbr/></p> 16297<p>To compare this against a real image from the destination camera,<wbr/> the destination camera 16298image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p> 16299<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 16300the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as 16301with PRIMARY_<wbr/>CAMERA.<wbr/></p> 16302<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> this position cannot be accurately 16303represented by the camera device,<wbr/> and will be represented as <code>(0,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 16304 </td> 16305 </tr> 16306 16307 16308 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16309 <!-- end of entry --> 16310 16311 16312 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration"> 16313 <td class="entry_name 16314 " rowspan="3"> 16315 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 16316 </td> 16317 <td class="entry_type"> 16318 <span class="entry_type_name">float</span> 16319 <span class="entry_type_container">x</span> 16320 16321 <span class="entry_type_array"> 16322 5 16323 </span> 16324 <span class="entry_type_visibility"> [public]</span> 16325 16326 16327 16328 16329 16330 16331 </td> <!-- entry_type --> 16332 16333 <td class="entry_description"> 16334 <p>The parameters for this camera device's intrinsic 16335calibration.<wbr/></p> 16336 </td> 16337 16338 <td class="entry_units"> 16339 16340 Pixels in the 16341 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 16342 coordinate system.<wbr/> 16343 16344 </td> 16345 16346 <td class="entry_range"> 16347 </td> 16348 16349 <td class="entry_hal_version"> 16350 <p>3.<wbr/>2</p> 16351 </td> 16352 16353 <td class="entry_tags"> 16354 <ul class="entry_tags"> 16355 <li><a href="#tag_DEPTH">DEPTH</a></li> 16356 </ul> 16357 </td> 16358 16359 </tr> 16360 <tr class="entries_header"> 16361 <th class="th_details" colspan="6">Details</th> 16362 </tr> 16363 <tr class="entry_cont"> 16364 <td class="entry_details" colspan="6"> 16365 <p>The five calibration parameters that describe the 16366transform from camera-centric 3D coordinates to sensor 16367pixel coordinates:</p> 16368<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 16369</code></pre> 16370<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 16371focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 16372axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 16373being aligned with the lens plane.<wbr/></p> 16374<p>These are typically used within a transformation matrix K:</p> 16375<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 16376 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 16377 0 0,<wbr/> 1 ] 16378</code></pre> 16379<p>which can then be combined with the camera pose rotation 16380<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 16381<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the 16382complete transform from world coordinates to pixel 16383coordinates:</p> 16384<pre><code>P = [ K 0 * [ R -Rt 16385 0 1 ] 0 1 ] 16386</code></pre> 16387<p>(Note the negation of poseTranslation when mapping from camera 16388to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p> 16389<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system 16390and <code>p_<wbr/>s</code> being a point in the camera active pixel array 16391coordinate system,<wbr/> and with the mapping including the 16392homogeneous division by z:</p> 16393<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 16394p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 16395</code></pre> 16396<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 16397point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 16398(depth) in pixel coordinates.<wbr/></p> 16399<p>Note that the coordinate system for this transform is the 16400<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/> 16401where <code>(0,<wbr/>0)</code> is the top-left of the 16402preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 16403intrinsic calibration transforms have been applied to a 16404world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> 16405transform needs to be applied,<wbr/> and the result adjusted to 16406be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 16407system (where <code>(0,<wbr/> 0)</code> is the top-left of the 16408activeArraySize rectangle),<wbr/> to determine the final pixel 16409coordinate of the world point for processed (non-RAW) 16410output buffers.<wbr/></p> 16411<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at 16412coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/> So on a device with a 16413precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel 16414indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would 16415have an optical center at the exact center of the pixel grid,<wbr/> at 16416coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel 16417<code>(5,<wbr/>5)</code>.<wbr/></p> 16418 </td> 16419 </tr> 16420 16421 16422 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16423 <!-- end of entry --> 16424 16425 16426 <tr class="entry" id="dynamic_android.lens.radialDistortion"> 16427 <td class="entry_name 16428 entry_name_deprecated 16429 " rowspan="3"> 16430 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 16431 </td> 16432 <td class="entry_type"> 16433 <span class="entry_type_name">float</span> 16434 <span class="entry_type_container">x</span> 16435 16436 <span class="entry_type_array"> 16437 6 16438 </span> 16439 <span class="entry_type_visibility"> [public]</span> 16440 16441 16442 16443 <span class="entry_type_deprecated">[deprecated] </span> 16444 16445 16446 16447 </td> <!-- entry_type --> 16448 16449 <td class="entry_description"> 16450 <p>The correction coefficients to correct for this camera device's 16451radial and tangential lens distortion.<wbr/></p> 16452 </td> 16453 16454 <td class="entry_units"> 16455 16456 Unitless coefficients.<wbr/> 16457 16458 </td> 16459 16460 <td class="entry_range"> 16461 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16462 </td> 16463 16464 <td class="entry_hal_version"> 16465 <p>3.<wbr/>2</p> 16466 </td> 16467 16468 <td class="entry_tags"> 16469 <ul class="entry_tags"> 16470 <li><a href="#tag_DEPTH">DEPTH</a></li> 16471 </ul> 16472 </td> 16473 16474 </tr> 16475 <tr class="entries_header"> 16476 <th class="th_details" colspan="6">Details</th> 16477 </tr> 16478 <tr class="entry_cont"> 16479 <td class="entry_details" colspan="6"> 16480 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 16481kappa_<wbr/>3]</code> and two tangential distortion coefficients 16482<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 16483lens's geometric distortion with the mapping equations:</p> 16484<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 ) + 16485 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 16486 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 16487 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 16488</code></pre> 16489<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 16490input image that correspond to the pixel values in the 16491corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 16492<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 16493</code></pre> 16494<p>The pixel coordinates are defined in a normalized 16495coordinate system related to the 16496<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 16497Both <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 16498lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 16499of both x and y coordinates are normalized to be 1 at the 16500edge further from the optical center,<wbr/> so the range 16501for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 16502<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 16503optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 16504is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 16505<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 16506 </td> 16507 </tr> 16508 16509 16510 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16511 <!-- end of entry --> 16512 16513 16514 <tr class="entry" id="dynamic_android.lens.distortion"> 16515 <td class="entry_name 16516 " rowspan="3"> 16517 android.<wbr/>lens.<wbr/>distortion 16518 </td> 16519 <td class="entry_type"> 16520 <span class="entry_type_name">float</span> 16521 <span class="entry_type_container">x</span> 16522 16523 <span class="entry_type_array"> 16524 5 16525 </span> 16526 <span class="entry_type_visibility"> [public]</span> 16527 16528 16529 16530 16531 16532 16533 </td> <!-- entry_type --> 16534 16535 <td class="entry_description"> 16536 <p>The correction coefficients to correct for this camera device's 16537radial and tangential lens distortion.<wbr/></p> 16538<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was 16539inconsistently defined.<wbr/></p> 16540 </td> 16541 16542 <td class="entry_units"> 16543 16544 Unitless coefficients.<wbr/> 16545 16546 </td> 16547 16548 <td class="entry_range"> 16549 </td> 16550 16551 <td class="entry_hal_version"> 16552 <p>3.<wbr/>3</p> 16553 </td> 16554 16555 <td class="entry_tags"> 16556 <ul class="entry_tags"> 16557 <li><a href="#tag_DEPTH">DEPTH</a></li> 16558 </ul> 16559 </td> 16560 16561 </tr> 16562 <tr class="entries_header"> 16563 <th class="th_details" colspan="6">Details</th> 16564 </tr> 16565 <tr class="entry_cont"> 16566 <td class="entry_details" colspan="6"> 16567 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 16568kappa_<wbr/>3]</code> and two tangential distortion coefficients 16569<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 16570lens's geometric distortion with the mapping equations:</p> 16571<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 16572 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 16573 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 16574 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 16575</code></pre> 16576<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 16577input image that correspond to the pixel values in the 16578corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 16579<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 16580</code></pre> 16581<p>The pixel coordinates are defined in a coordinate system 16582related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 16583calibration fields; see that entry for details of the mapping stages.<wbr/> 16584Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> 16585have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and 16586the range of the coordinates depends on the focal length 16587terms of the intrinsic calibration.<wbr/></p> 16588<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 16589optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p> 16590<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 16591 </td> 16592 </tr> 16593 16594 16595 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16596 <!-- end of entry --> 16597 16598 16599 16600 <!-- end of kind --> 16601 </tbody> 16602 16603 <!-- end of section --> 16604 <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr> 16605 16606 16607 <tr><td colspan="7" class="kind">controls</td></tr> 16608 16609 <thead class="entries_header"> 16610 <tr> 16611 <th class="th_name">Property Name</th> 16612 <th class="th_type">Type</th> 16613 <th class="th_description">Description</th> 16614 <th class="th_units">Units</th> 16615 <th class="th_range">Range</th> 16616 <th class="th_hal_version">Initial HIDL HAL version</th> 16617 <th class="th_tags">Tags</th> 16618 </tr> 16619 </thead> 16620 16621 <tbody> 16622 16623 16624 16625 16626 16627 16628 16629 16630 16631 16632 <tr class="entry" id="controls_android.noiseReduction.mode"> 16633 <td class="entry_name 16634 " rowspan="5"> 16635 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 16636 </td> 16637 <td class="entry_type"> 16638 <span class="entry_type_name entry_type_name_enum">byte</span> 16639 16640 <span class="entry_type_visibility"> [public]</span> 16641 16642 16643 <span class="entry_type_hwlevel">[full] </span> 16644 16645 16646 16647 <ul class="entry_type_enum"> 16648 <li> 16649 <span class="entry_type_enum_name">OFF (v3.2)</span> 16650 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 16651 </li> 16652 <li> 16653 <span class="entry_type_enum_name">FAST (v3.2)</span> 16654 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 16655output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 16656relative to sensor.<wbr/></p></span> 16657 </li> 16658 <li> 16659 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 16660 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 16661rate relative to sensor output.<wbr/></p></span> 16662 </li> 16663 <li> 16664 <span class="entry_type_enum_name">MINIMAL (v3.2)</span> 16665 <span class="entry_type_enum_optional">[optional]</span> 16666 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 16667sensor output.<wbr/> </p></span> 16668 </li> 16669 <li> 16670 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 16671 <span class="entry_type_enum_optional">[optional]</span> 16672 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 16673based 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>) 16674or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if 16675supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of 16676noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> 16677and the quality is equal to or better than FAST (since it is only applied to 16678lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 16679<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 16680with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 16681high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 16682produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 16683high-resolution buffers must not have noise reduction applied to maximize efficiency of 16684preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 16685low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 16686applied for reasonable preview quality.<wbr/></p> 16687<p>This mode is guaranteed to be supported by devices that support either the 16688YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 16689(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 16690be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 16691 </li> 16692 </ul> 16693 16694 </td> <!-- entry_type --> 16695 16696 <td class="entry_description"> 16697 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 16698 </td> 16699 16700 <td class="entry_units"> 16701 </td> 16702 16703 <td class="entry_range"> 16704 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 16705 </td> 16706 16707 <td class="entry_hal_version"> 16708 <p>3.<wbr/>2</p> 16709 </td> 16710 16711 <td class="entry_tags"> 16712 <ul class="entry_tags"> 16713 <li><a href="#tag_V1">V1</a></li> 16714 <li><a href="#tag_REPROC">REPROC</a></li> 16715 </ul> 16716 </td> 16717 16718 </tr> 16719 <tr class="entries_header"> 16720 <th class="th_details" colspan="6">Details</th> 16721 </tr> 16722 <tr class="entry_cont"> 16723 <td class="entry_details" colspan="6"> 16724 <p>The noise reduction algorithm attempts to improve image quality by removing 16725excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 16726<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 16727YUV domain.<wbr/></p> 16728<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 16729demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 16730This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 16731<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> 16732<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 16733will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 16734will use the highest-quality noise filtering algorithms,<wbr/> 16735even if it slows down capture rate.<wbr/> FAST means the camera device will not 16736slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 16737MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 16738Every output stream will have a similar amount of enhancement applied.<wbr/></p> 16739<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 16740buffer of high-resolution images during preview and reprocess image(s) from that buffer 16741into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 16742noise reduction to low-resolution streams (below maximum recording resolution) to maximize 16743preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 16744those will be reprocessed later if necessary.<wbr/></p> 16745<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 16746will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 16747may adjust the noise reduction parameters for best image quality based on the 16748<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 16749 </td> 16750 </tr> 16751 16752 <tr class="entries_header"> 16753 <th class="th_details" colspan="6">HAL Implementation Details</th> 16754 </tr> 16755 <tr class="entry_cont"> 16756 <td class="entry_details" colspan="6"> 16757 <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 16758adjust the internal noise reduction parameters appropriately to get the best quality 16759images.<wbr/></p> 16760 </td> 16761 </tr> 16762 16763 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16764 <!-- end of entry --> 16765 16766 16767 <tr class="entry" id="controls_android.noiseReduction.strength"> 16768 <td class="entry_name 16769 " rowspan="1"> 16770 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 16771 </td> 16772 <td class="entry_type"> 16773 <span class="entry_type_name">byte</span> 16774 16775 <span class="entry_type_visibility"> [system]</span> 16776 16777 16778 16779 16780 16781 16782 </td> <!-- entry_type --> 16783 16784 <td class="entry_description"> 16785 <p>Control the amount of noise reduction 16786applied to the images</p> 16787 </td> 16788 16789 <td class="entry_units"> 16790 1-10; 10 is max noise reduction 16791 </td> 16792 16793 <td class="entry_range"> 16794 <p>1 - 10</p> 16795 </td> 16796 16797 <td class="entry_hal_version"> 16798 <p>3.<wbr/>2</p> 16799 </td> 16800 16801 <td class="entry_tags"> 16802 <ul class="entry_tags"> 16803 <li><a href="#tag_FUTURE">FUTURE</a></li> 16804 </ul> 16805 </td> 16806 16807 </tr> 16808 16809 16810 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16811 <!-- end of entry --> 16812 16813 16814 16815 <!-- end of kind --> 16816 </tbody> 16817 <tr><td colspan="7" class="kind">static</td></tr> 16818 16819 <thead class="entries_header"> 16820 <tr> 16821 <th class="th_name">Property Name</th> 16822 <th class="th_type">Type</th> 16823 <th class="th_description">Description</th> 16824 <th class="th_units">Units</th> 16825 <th class="th_range">Range</th> 16826 <th class="th_hal_version">Initial HIDL HAL version</th> 16827 <th class="th_tags">Tags</th> 16828 </tr> 16829 </thead> 16830 16831 <tbody> 16832 16833 16834 16835 16836 16837 16838 16839 16840 16841 16842 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 16843 <td class="entry_name 16844 " rowspan="5"> 16845 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 16846 </td> 16847 <td class="entry_type"> 16848 <span class="entry_type_name">byte</span> 16849 <span class="entry_type_container">x</span> 16850 16851 <span class="entry_type_array"> 16852 n 16853 </span> 16854 <span class="entry_type_visibility"> [public as enumList]</span> 16855 16856 16857 <span class="entry_type_hwlevel">[limited] </span> 16858 16859 16860 <div class="entry_type_notes">list of enums</div> 16861 16862 16863 </td> <!-- entry_type --> 16864 16865 <td class="entry_description"> 16866 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported 16867by this camera device.<wbr/></p> 16868 </td> 16869 16870 <td class="entry_units"> 16871 </td> 16872 16873 <td class="entry_range"> 16874 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p> 16875 </td> 16876 16877 <td class="entry_hal_version"> 16878 <p>3.<wbr/>2</p> 16879 </td> 16880 16881 <td class="entry_tags"> 16882 <ul class="entry_tags"> 16883 <li><a href="#tag_V1">V1</a></li> 16884 <li><a href="#tag_REPROC">REPROC</a></li> 16885 </ul> 16886 </td> 16887 16888 </tr> 16889 <tr class="entries_header"> 16890 <th class="th_details" colspan="6">Details</th> 16891 </tr> 16892 <tr class="entry_cont"> 16893 <td class="entry_details" colspan="6"> 16894 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p> 16895<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support 16896ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p> 16897<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p> 16898 </td> 16899 </tr> 16900 16901 <tr class="entries_header"> 16902 <th class="th_details" colspan="6">HAL Implementation Details</th> 16903 </tr> 16904 <tr class="entry_cont"> 16905 <td class="entry_details" colspan="6"> 16906 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available 16907on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 16908That is,<wbr/> if the highest quality implementation on the camera device does not slow down 16909capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 16910 </td> 16911 </tr> 16912 16913 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16914 <!-- end of entry --> 16915 16916 16917 16918 <!-- end of kind --> 16919 </tbody> 16920 <tr><td colspan="7" class="kind">dynamic</td></tr> 16921 16922 <thead class="entries_header"> 16923 <tr> 16924 <th class="th_name">Property Name</th> 16925 <th class="th_type">Type</th> 16926 <th class="th_description">Description</th> 16927 <th class="th_units">Units</th> 16928 <th class="th_range">Range</th> 16929 <th class="th_hal_version">Initial HIDL HAL version</th> 16930 <th class="th_tags">Tags</th> 16931 </tr> 16932 </thead> 16933 16934 <tbody> 16935 16936 16937 16938 16939 16940 16941 16942 16943 16944 16945 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 16946 <td class="entry_name 16947 " rowspan="5"> 16948 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 16949 </td> 16950 <td class="entry_type"> 16951 <span class="entry_type_name entry_type_name_enum">byte</span> 16952 16953 <span class="entry_type_visibility"> [public]</span> 16954 16955 16956 <span class="entry_type_hwlevel">[full] </span> 16957 16958 16959 16960 <ul class="entry_type_enum"> 16961 <li> 16962 <span class="entry_type_enum_name">OFF (v3.2)</span> 16963 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 16964 </li> 16965 <li> 16966 <span class="entry_type_enum_name">FAST (v3.2)</span> 16967 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 16968output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 16969relative to sensor.<wbr/></p></span> 16970 </li> 16971 <li> 16972 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 16973 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 16974rate relative to sensor output.<wbr/></p></span> 16975 </li> 16976 <li> 16977 <span class="entry_type_enum_name">MINIMAL (v3.2)</span> 16978 <span class="entry_type_enum_optional">[optional]</span> 16979 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 16980sensor output.<wbr/> </p></span> 16981 </li> 16982 <li> 16983 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 16984 <span class="entry_type_enum_optional">[optional]</span> 16985 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 16986based 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>) 16987or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if 16988supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of 16989noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> 16990and the quality is equal to or better than FAST (since it is only applied to 16991lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 16992<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 16993with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 16994high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 16995produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 16996high-resolution buffers must not have noise reduction applied to maximize efficiency of 16997preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 16998low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 16999applied for reasonable preview quality.<wbr/></p> 17000<p>This mode is guaranteed to be supported by devices that support either the 17001YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 17002(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 17003be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 17004 </li> 17005 </ul> 17006 17007 </td> <!-- entry_type --> 17008 17009 <td class="entry_description"> 17010 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 17011 </td> 17012 17013 <td class="entry_units"> 17014 </td> 17015 17016 <td class="entry_range"> 17017 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 17018 </td> 17019 17020 <td class="entry_hal_version"> 17021 <p>3.<wbr/>2</p> 17022 </td> 17023 17024 <td class="entry_tags"> 17025 <ul class="entry_tags"> 17026 <li><a href="#tag_V1">V1</a></li> 17027 <li><a href="#tag_REPROC">REPROC</a></li> 17028 </ul> 17029 </td> 17030 17031 </tr> 17032 <tr class="entries_header"> 17033 <th class="th_details" colspan="6">Details</th> 17034 </tr> 17035 <tr class="entry_cont"> 17036 <td class="entry_details" colspan="6"> 17037 <p>The noise reduction algorithm attempts to improve image quality by removing 17038excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 17039<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 17040YUV domain.<wbr/></p> 17041<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 17042demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 17043This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 17044<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> 17045<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 17046will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 17047will use the highest-quality noise filtering algorithms,<wbr/> 17048even if it slows down capture rate.<wbr/> FAST means the camera device will not 17049slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 17050MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 17051Every output stream will have a similar amount of enhancement applied.<wbr/></p> 17052<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 17053buffer of high-resolution images during preview and reprocess image(s) from that buffer 17054into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 17055noise reduction to low-resolution streams (below maximum recording resolution) to maximize 17056preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 17057those will be reprocessed later if necessary.<wbr/></p> 17058<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 17059will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 17060may adjust the noise reduction parameters for best image quality based on the 17061<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 17062 </td> 17063 </tr> 17064 17065 <tr class="entries_header"> 17066 <th class="th_details" colspan="6">HAL Implementation Details</th> 17067 </tr> 17068 <tr class="entry_cont"> 17069 <td class="entry_details" colspan="6"> 17070 <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 17071adjust the internal noise reduction parameters appropriately to get the best quality 17072images.<wbr/></p> 17073 </td> 17074 </tr> 17075 17076 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17077 <!-- end of entry --> 17078 17079 17080 17081 <!-- end of kind --> 17082 </tbody> 17083 17084 <!-- end of section --> 17085 <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr> 17086 17087 17088 <tr><td colspan="7" class="kind">static</td></tr> 17089 17090 <thead class="entries_header"> 17091 <tr> 17092 <th class="th_name">Property Name</th> 17093 <th class="th_type">Type</th> 17094 <th class="th_description">Description</th> 17095 <th class="th_units">Units</th> 17096 <th class="th_range">Range</th> 17097 <th class="th_hal_version">Initial HIDL HAL version</th> 17098 <th class="th_tags">Tags</th> 17099 </tr> 17100 </thead> 17101 17102 <tbody> 17103 17104 17105 17106 17107 17108 17109 17110 17111 17112 17113 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 17114 <td class="entry_name 17115 entry_name_deprecated 17116 " rowspan="3"> 17117 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 17118 </td> 17119 <td class="entry_type"> 17120 <span class="entry_type_name">byte</span> 17121 17122 <span class="entry_type_visibility"> [system]</span> 17123 17124 17125 17126 <span class="entry_type_deprecated">[deprecated] </span> 17127 17128 17129 17130 </td> <!-- entry_type --> 17131 17132 <td class="entry_description"> 17133 <p>If set to 1,<wbr/> the camera service does not 17134scale 'normalized' coordinates with respect to the crop 17135region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 17136and output (face rectangles).<wbr/></p> 17137 </td> 17138 17139 <td class="entry_units"> 17140 </td> 17141 17142 <td class="entry_range"> 17143 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17144 </td> 17145 17146 <td class="entry_hal_version"> 17147 <p>3.<wbr/>2</p> 17148 </td> 17149 17150 <td class="entry_tags"> 17151 </td> 17152 17153 </tr> 17154 <tr class="entries_header"> 17155 <th class="th_details" colspan="6">Details</th> 17156 </tr> 17157 <tr class="entry_cont"> 17158 <td class="entry_details" colspan="6"> 17159 <p>Normalized coordinates refer to those in the 17160(-1000,<wbr/>1000) range mentioned in the 17161android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 17162<p>HAL implementations should instead always use and emit 17163sensor array-relative coordinates for all region data.<wbr/> Does 17164not need to be listed in static metadata.<wbr/> Support will be 17165removed in future versions of camera service.<wbr/></p> 17166 </td> 17167 </tr> 17168 17169 17170 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17171 <!-- end of entry --> 17172 17173 17174 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 17175 <td class="entry_name 17176 entry_name_deprecated 17177 " rowspan="3"> 17178 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 17179 </td> 17180 <td class="entry_type"> 17181 <span class="entry_type_name">byte</span> 17182 17183 <span class="entry_type_visibility"> [system]</span> 17184 17185 17186 17187 <span class="entry_type_deprecated">[deprecated] </span> 17188 17189 17190 17191 </td> <!-- entry_type --> 17192 17193 <td class="entry_description"> 17194 <p>If set to 1,<wbr/> then the camera service always 17195switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 17196trigger.<wbr/></p> 17197 </td> 17198 17199 <td class="entry_units"> 17200 </td> 17201 17202 <td class="entry_range"> 17203 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17204 </td> 17205 17206 <td class="entry_hal_version"> 17207 <p>3.<wbr/>2</p> 17208 </td> 17209 17210 <td class="entry_tags"> 17211 </td> 17212 17213 </tr> 17214 <tr class="entries_header"> 17215 <th class="th_details" colspan="6">Details</th> 17216 </tr> 17217 <tr class="entry_cont"> 17218 <td class="entry_details" colspan="6"> 17219 <p>HAL implementations should implement AF trigger 17220modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 17221CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 17222not need to be listed in static metadata.<wbr/> Support will be 17223removed in future versions of camera service</p> 17224 </td> 17225 </tr> 17226 17227 17228 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17229 <!-- end of entry --> 17230 17231 17232 <tr class="entry" id="static_android.quirks.useZslFormat"> 17233 <td class="entry_name 17234 entry_name_deprecated 17235 " rowspan="3"> 17236 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 17237 </td> 17238 <td class="entry_type"> 17239 <span class="entry_type_name">byte</span> 17240 17241 <span class="entry_type_visibility"> [system]</span> 17242 17243 17244 17245 <span class="entry_type_deprecated">[deprecated] </span> 17246 17247 17248 17249 </td> <!-- entry_type --> 17250 17251 <td class="entry_description"> 17252 <p>If set to 1,<wbr/> the camera service uses 17253CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 17254HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 17255shutter lag stream</p> 17256 </td> 17257 17258 <td class="entry_units"> 17259 </td> 17260 17261 <td class="entry_range"> 17262 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17263 </td> 17264 17265 <td class="entry_hal_version"> 17266 <p>3.<wbr/>2</p> 17267 </td> 17268 17269 <td class="entry_tags"> 17270 </td> 17271 17272 </tr> 17273 <tr class="entries_header"> 17274 <th class="th_details" colspan="6">Details</th> 17275 </tr> 17276 <tr class="entry_cont"> 17277 <td class="entry_details" colspan="6"> 17278 <p>HAL implementations should use gralloc usage flags 17279to determine that a stream will be used for 17280zero-shutter-lag,<wbr/> instead of relying on an explicit 17281format setting.<wbr/> Does not need to be listed in static 17282metadata.<wbr/> Support will be removed in future versions of 17283camera service.<wbr/></p> 17284 </td> 17285 </tr> 17286 17287 17288 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17289 <!-- end of entry --> 17290 17291 17292 <tr class="entry" id="static_android.quirks.usePartialResult"> 17293 <td class="entry_name 17294 entry_name_deprecated 17295 " rowspan="5"> 17296 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 17297 </td> 17298 <td class="entry_type"> 17299 <span class="entry_type_name">byte</span> 17300 17301 <span class="entry_type_visibility"> [hidden]</span> 17302 17303 17304 17305 <span class="entry_type_deprecated">[deprecated] </span> 17306 17307 17308 17309 </td> <!-- entry_type --> 17310 17311 <td class="entry_description"> 17312 <p>If set to 1,<wbr/> the HAL will always split result 17313metadata for a single capture into multiple buffers,<wbr/> 17314returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 17315 </td> 17316 17317 <td class="entry_units"> 17318 </td> 17319 17320 <td class="entry_range"> 17321 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17322 </td> 17323 17324 <td class="entry_hal_version"> 17325 <p>3.<wbr/>2</p> 17326 </td> 17327 17328 <td class="entry_tags"> 17329 </td> 17330 17331 </tr> 17332 <tr class="entries_header"> 17333 <th class="th_details" colspan="6">Details</th> 17334 </tr> 17335 <tr class="entry_cont"> 17336 <td class="entry_details" colspan="6"> 17337 <p>Does not need to be listed in static 17338metadata.<wbr/> Support for partial results will be reworked in 17339future versions of camera service.<wbr/> This quirk will stop 17340working at that point; DO NOT USE without careful 17341consideration of future support.<wbr/></p> 17342 </td> 17343 </tr> 17344 17345 <tr class="entries_header"> 17346 <th class="th_details" colspan="6">HAL Implementation Details</th> 17347 </tr> 17348 <tr class="entry_cont"> 17349 <td class="entry_details" colspan="6"> 17350 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 17351for information on how to implement partial results.<wbr/></p> 17352 </td> 17353 </tr> 17354 17355 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17356 <!-- end of entry --> 17357 17358 17359 17360 <!-- end of kind --> 17361 </tbody> 17362 <tr><td colspan="7" class="kind">dynamic</td></tr> 17363 17364 <thead class="entries_header"> 17365 <tr> 17366 <th class="th_name">Property Name</th> 17367 <th class="th_type">Type</th> 17368 <th class="th_description">Description</th> 17369 <th class="th_units">Units</th> 17370 <th class="th_range">Range</th> 17371 <th class="th_hal_version">Initial HIDL HAL version</th> 17372 <th class="th_tags">Tags</th> 17373 </tr> 17374 </thead> 17375 17376 <tbody> 17377 17378 17379 17380 17381 17382 17383 17384 17385 17386 17387 <tr class="entry" id="dynamic_android.quirks.partialResult"> 17388 <td class="entry_name 17389 entry_name_deprecated 17390 " rowspan="5"> 17391 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 17392 </td> 17393 <td class="entry_type"> 17394 <span class="entry_type_name entry_type_name_enum">byte</span> 17395 17396 <span class="entry_type_visibility"> [hidden as boolean]</span> 17397 17398 17399 17400 <span class="entry_type_deprecated">[deprecated] </span> 17401 17402 17403 <ul class="entry_type_enum"> 17404 <li> 17405 <span class="entry_type_enum_name">FINAL (v3.2)</span> 17406 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 17407for this capture.<wbr/></p></span> 17408 </li> 17409 <li> 17410 <span class="entry_type_enum_name">PARTIAL (v3.2)</span> 17411 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 17412capture.<wbr/> More result buffers for this capture will be sent 17413by the camera device,<wbr/> the last of which will be marked 17414FINAL.<wbr/></p></span> 17415 </li> 17416 </ul> 17417 17418 </td> <!-- entry_type --> 17419 17420 <td class="entry_description"> 17421 <p>Whether a result given to the framework is the 17422final one for the capture,<wbr/> or only a partial that contains a 17423subset of the full set of dynamic metadata 17424values.<wbr/></p> 17425 </td> 17426 17427 <td class="entry_units"> 17428 </td> 17429 17430 <td class="entry_range"> 17431 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17432 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> 17433 </td> 17434 17435 <td class="entry_hal_version"> 17436 <p>3.<wbr/>2</p> 17437 </td> 17438 17439 <td class="entry_tags"> 17440 </td> 17441 17442 </tr> 17443 <tr class="entries_header"> 17444 <th class="th_details" colspan="6">Details</th> 17445 </tr> 17446 <tr class="entry_cont"> 17447 <td class="entry_details" colspan="6"> 17448 <p>The entries in the result metadata buffers for a 17449single capture may not overlap,<wbr/> except for this entry.<wbr/> The 17450FINAL buffers must retain FIFO ordering relative to the 17451requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 17452always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 17453before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 17454in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 17455capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 17456only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 17457 </td> 17458 </tr> 17459 17460 <tr class="entries_header"> 17461 <th class="th_details" colspan="6">HAL Implementation Details</th> 17462 </tr> 17463 <tr class="entry_cont"> 17464 <td class="entry_details" colspan="6"> 17465 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 17466for information on how to implement partial results.<wbr/></p> 17467 </td> 17468 </tr> 17469 17470 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17471 <!-- end of entry --> 17472 17473 17474 17475 <!-- end of kind --> 17476 </tbody> 17477 17478 <!-- end of section --> 17479 <tr><td colspan="7" id="section_request" class="section">request</td></tr> 17480 17481 17482 <tr><td colspan="7" class="kind">controls</td></tr> 17483 17484 <thead class="entries_header"> 17485 <tr> 17486 <th class="th_name">Property Name</th> 17487 <th class="th_type">Type</th> 17488 <th class="th_description">Description</th> 17489 <th class="th_units">Units</th> 17490 <th class="th_range">Range</th> 17491 <th class="th_hal_version">Initial HIDL HAL version</th> 17492 <th class="th_tags">Tags</th> 17493 </tr> 17494 </thead> 17495 17496 <tbody> 17497 17498 17499 17500 17501 17502 17503 17504 17505 17506 17507 <tr class="entry" id="controls_android.request.frameCount"> 17508 <td class="entry_name 17509 entry_name_deprecated 17510 " rowspan="1"> 17511 android.<wbr/>request.<wbr/>frame<wbr/>Count 17512 </td> 17513 <td class="entry_type"> 17514 <span class="entry_type_name">int32</span> 17515 17516 <span class="entry_type_visibility"> [system]</span> 17517 17518 17519 17520 <span class="entry_type_deprecated">[deprecated] </span> 17521 17522 17523 17524 </td> <!-- entry_type --> 17525 17526 <td class="entry_description"> 17527 <p>A frame counter set by the framework.<wbr/> Must 17528be maintained unchanged in output frame.<wbr/> This value monotonically 17529increases with every new result (that is,<wbr/> each new result has a unique 17530frameCount value).<wbr/></p> 17531 </td> 17532 17533 <td class="entry_units"> 17534 incrementing integer 17535 </td> 17536 17537 <td class="entry_range"> 17538 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17539 <p>Any int.<wbr/></p> 17540 </td> 17541 17542 <td class="entry_hal_version"> 17543 <p>3.<wbr/>2</p> 17544 </td> 17545 17546 <td class="entry_tags"> 17547 </td> 17548 17549 </tr> 17550 17551 17552 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17553 <!-- end of entry --> 17554 17555 17556 <tr class="entry" id="controls_android.request.id"> 17557 <td class="entry_name 17558 " rowspan="1"> 17559 android.<wbr/>request.<wbr/>id 17560 </td> 17561 <td class="entry_type"> 17562 <span class="entry_type_name">int32</span> 17563 17564 <span class="entry_type_visibility"> [hidden]</span> 17565 17566 17567 17568 17569 17570 17571 </td> <!-- entry_type --> 17572 17573 <td class="entry_description"> 17574 <p>An application-specified ID for the current 17575request.<wbr/> Must be maintained unchanged in output 17576frame</p> 17577 </td> 17578 17579 <td class="entry_units"> 17580 arbitrary integer assigned by application 17581 </td> 17582 17583 <td class="entry_range"> 17584 <p>Any int</p> 17585 </td> 17586 17587 <td class="entry_hal_version"> 17588 <p>3.<wbr/>2</p> 17589 </td> 17590 17591 <td class="entry_tags"> 17592 <ul class="entry_tags"> 17593 <li><a href="#tag_V1">V1</a></li> 17594 </ul> 17595 </td> 17596 17597 </tr> 17598 17599 17600 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17601 <!-- end of entry --> 17602 17603 17604 <tr class="entry" id="controls_android.request.inputStreams"> 17605 <td class="entry_name 17606 entry_name_deprecated 17607 " rowspan="3"> 17608 android.<wbr/>request.<wbr/>input<wbr/>Streams 17609 </td> 17610 <td class="entry_type"> 17611 <span class="entry_type_name">int32</span> 17612 <span class="entry_type_container">x</span> 17613 17614 <span class="entry_type_array"> 17615 n 17616 </span> 17617 <span class="entry_type_visibility"> [system]</span> 17618 17619 17620 17621 <span class="entry_type_deprecated">[deprecated] </span> 17622 17623 17624 17625 </td> <!-- entry_type --> 17626 17627 <td class="entry_description"> 17628 <p>List which camera reprocess stream is used 17629for the source of reprocessing data.<wbr/></p> 17630 </td> 17631 17632 <td class="entry_units"> 17633 List of camera reprocess stream IDs 17634 </td> 17635 17636 <td class="entry_range"> 17637 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17638 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 17639 </td> 17640 17641 <td class="entry_hal_version"> 17642 <p>3.<wbr/>2</p> 17643 </td> 17644 17645 <td class="entry_tags"> 17646 <ul class="entry_tags"> 17647 <li><a href="#tag_HAL2">HAL2</a></li> 17648 </ul> 17649 </td> 17650 17651 </tr> 17652 <tr class="entries_header"> 17653 <th class="th_details" colspan="6">Details</th> 17654 </tr> 17655 <tr class="entry_cont"> 17656 <td class="entry_details" colspan="6"> 17657 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 17658REPROCESS.<wbr/> Ignored otherwise</p> 17659 </td> 17660 </tr> 17661 17662 17663 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17664 <!-- end of entry --> 17665 17666 17667 <tr class="entry" id="controls_android.request.metadataMode"> 17668 <td class="entry_name 17669 " rowspan="1"> 17670 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 17671 </td> 17672 <td class="entry_type"> 17673 <span class="entry_type_name entry_type_name_enum">byte</span> 17674 17675 <span class="entry_type_visibility"> [system]</span> 17676 17677 17678 17679 17680 17681 <ul class="entry_type_enum"> 17682 <li> 17683 <span class="entry_type_enum_name">NONE (v3.2)</span> 17684 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 17685for application-bound buffer data.<wbr/> If no 17686application-bound streams exist,<wbr/> no frame should be 17687placed in the output frame queue.<wbr/> If such streams 17688exist,<wbr/> a frame should be placed on the output queue 17689with null metadata but with the necessary output buffer 17690information.<wbr/> Timestamp information should still be 17691included with any output stream buffers</p></span> 17692 </li> 17693 <li> 17694 <span class="entry_type_enum_name">FULL (v3.2)</span> 17695 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 17696only be produced if they are separately 17697enabled</p></span> 17698 </li> 17699 </ul> 17700 17701 </td> <!-- entry_type --> 17702 17703 <td class="entry_description"> 17704 <p>How much metadata to produce on 17705output</p> 17706 </td> 17707 17708 <td class="entry_units"> 17709 </td> 17710 17711 <td class="entry_range"> 17712 </td> 17713 17714 <td class="entry_hal_version"> 17715 <p>3.<wbr/>2</p> 17716 </td> 17717 17718 <td class="entry_tags"> 17719 <ul class="entry_tags"> 17720 <li><a href="#tag_FUTURE">FUTURE</a></li> 17721 </ul> 17722 </td> 17723 17724 </tr> 17725 17726 17727 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17728 <!-- end of entry --> 17729 17730 17731 <tr class="entry" id="controls_android.request.outputStreams"> 17732 <td class="entry_name 17733 entry_name_deprecated 17734 " rowspan="3"> 17735 android.<wbr/>request.<wbr/>output<wbr/>Streams 17736 </td> 17737 <td class="entry_type"> 17738 <span class="entry_type_name">int32</span> 17739 <span class="entry_type_container">x</span> 17740 17741 <span class="entry_type_array"> 17742 n 17743 </span> 17744 <span class="entry_type_visibility"> [system]</span> 17745 17746 17747 17748 <span class="entry_type_deprecated">[deprecated] </span> 17749 17750 17751 17752 </td> <!-- entry_type --> 17753 17754 <td class="entry_description"> 17755 <p>Lists which camera output streams image data 17756from this capture must be sent to</p> 17757 </td> 17758 17759 <td class="entry_units"> 17760 List of camera stream IDs 17761 </td> 17762 17763 <td class="entry_range"> 17764 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17765 <p>List must only include streams that have been 17766created</p> 17767 </td> 17768 17769 <td class="entry_hal_version"> 17770 <p>3.<wbr/>2</p> 17771 </td> 17772 17773 <td class="entry_tags"> 17774 <ul class="entry_tags"> 17775 <li><a href="#tag_HAL2">HAL2</a></li> 17776 </ul> 17777 </td> 17778 17779 </tr> 17780 <tr class="entries_header"> 17781 <th class="th_details" colspan="6">Details</th> 17782 </tr> 17783 <tr class="entry_cont"> 17784 <td class="entry_details" colspan="6"> 17785 <p>If no output streams are listed,<wbr/> then the image 17786data should simply be discarded.<wbr/> The image data must 17787still be captured for metadata and statistics production,<wbr/> 17788and the lens and flash must operate as requested.<wbr/></p> 17789 </td> 17790 </tr> 17791 17792 17793 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17794 <!-- end of entry --> 17795 17796 17797 <tr class="entry" id="controls_android.request.type"> 17798 <td class="entry_name 17799 entry_name_deprecated 17800 " rowspan="1"> 17801 android.<wbr/>request.<wbr/>type 17802 </td> 17803 <td class="entry_type"> 17804 <span class="entry_type_name entry_type_name_enum">byte</span> 17805 17806 <span class="entry_type_visibility"> [system]</span> 17807 17808 17809 17810 <span class="entry_type_deprecated">[deprecated] </span> 17811 17812 17813 <ul class="entry_type_enum"> 17814 <li> 17815 <span class="entry_type_enum_name">CAPTURE (v3.2)</span> 17816 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 17817and process it according to the 17818settings</p></span> 17819 </li> 17820 <li> 17821 <span class="entry_type_enum_name">REPROCESS (v3.2)</span> 17822 <span class="entry_type_enum_notes"><p>Process previously captured data; the 17823<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 17824source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 17825needed for reprocessing with [RP]</p></span> 17826 </li> 17827 </ul> 17828 17829 </td> <!-- entry_type --> 17830 17831 <td class="entry_description"> 17832 <p>The type of the request; either CAPTURE or 17833REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p> 17834 </td> 17835 17836 <td class="entry_units"> 17837 </td> 17838 17839 <td class="entry_range"> 17840 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17841 </td> 17842 17843 <td class="entry_hal_version"> 17844 <p>3.<wbr/>2</p> 17845 </td> 17846 17847 <td class="entry_tags"> 17848 <ul class="entry_tags"> 17849 <li><a href="#tag_HAL2">HAL2</a></li> 17850 </ul> 17851 </td> 17852 17853 </tr> 17854 17855 17856 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17857 <!-- end of entry --> 17858 17859 17860 17861 <!-- end of kind --> 17862 </tbody> 17863 <tr><td colspan="7" class="kind">static</td></tr> 17864 17865 <thead class="entries_header"> 17866 <tr> 17867 <th class="th_name">Property Name</th> 17868 <th class="th_type">Type</th> 17869 <th class="th_description">Description</th> 17870 <th class="th_units">Units</th> 17871 <th class="th_range">Range</th> 17872 <th class="th_hal_version">Initial HIDL HAL version</th> 17873 <th class="th_tags">Tags</th> 17874 </tr> 17875 </thead> 17876 17877 <tbody> 17878 17879 17880 17881 17882 17883 17884 17885 17886 17887 17888 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 17889 <td class="entry_name 17890 " rowspan="3"> 17891 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 17892 </td> 17893 <td class="entry_type"> 17894 <span class="entry_type_name">int32</span> 17895 <span class="entry_type_container">x</span> 17896 17897 <span class="entry_type_array"> 17898 3 17899 </span> 17900 <span class="entry_type_visibility"> [ndk_public]</span> 17901 17902 17903 <span class="entry_type_hwlevel">[legacy] </span> 17904 17905 17906 17907 17908 </td> <!-- entry_type --> 17909 17910 <td class="entry_description"> 17911 <p>The maximum numbers of different types of output streams 17912that can be configured and used simultaneously by a camera device.<wbr/></p> 17913 </td> 17914 17915 <td class="entry_units"> 17916 </td> 17917 17918 <td class="entry_range"> 17919 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> 17920<p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> 17921<p>For processed (but not stalling) format streams,<wbr/> >= 3 17922for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 17923>= 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> 17924 </td> 17925 17926 <td class="entry_hal_version"> 17927 <p>3.<wbr/>2</p> 17928 </td> 17929 17930 <td class="entry_tags"> 17931 <ul class="entry_tags"> 17932 <li><a href="#tag_BC">BC</a></li> 17933 </ul> 17934 </td> 17935 17936 </tr> 17937 <tr class="entries_header"> 17938 <th class="th_details" colspan="6">Details</th> 17939 </tr> 17940 <tr class="entry_cont"> 17941 <td class="entry_details" colspan="6"> 17942 <p>This is a 3 element tuple that contains the max number of output simultaneous 17943streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 17944formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 17945stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 17946number 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> 17947<p>This lists the upper bound of the number of output streams supported by 17948the camera device.<wbr/> Using more streams simultaneously may require more hardware and 17949CPU resources that will consume more power.<wbr/> The image format for an output stream can 17950be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 17951The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized 17952into the 3 stream types as below:</p> 17953<ul> 17954<li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> 17955 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li> 17956<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 17957 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li> 17958<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> Typically 17959 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/> 17960 <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> 17961</ul> 17962 </td> 17963 </tr> 17964 17965 17966 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17967 <!-- end of entry --> 17968 17969 17970 <tr class="entry" id="static_android.request.maxNumOutputRaw"> 17971 <td class="entry_name 17972 " rowspan="3"> 17973 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw 17974 </td> 17975 <td class="entry_type"> 17976 <span class="entry_type_name">int32</span> 17977 17978 <span class="entry_type_visibility"> [java_public]</span> 17979 17980 <span class="entry_type_synthetic">[synthetic] </span> 17981 17982 <span class="entry_type_hwlevel">[legacy] </span> 17983 17984 17985 17986 17987 </td> <!-- entry_type --> 17988 17989 <td class="entry_description"> 17990 <p>The maximum numbers of different types of output streams 17991that can be configured and used simultaneously by a camera device 17992for any <code>RAW</code> formats.<wbr/></p> 17993 </td> 17994 17995 <td class="entry_units"> 17996 </td> 17997 17998 <td class="entry_range"> 17999 <p>>= 0</p> 18000 </td> 18001 18002 <td class="entry_hal_version"> 18003 <p>3.<wbr/>2</p> 18004 </td> 18005 18006 <td class="entry_tags"> 18007 </td> 18008 18009 </tr> 18010 <tr class="entries_header"> 18011 <th class="th_details" colspan="6">Details</th> 18012 </tr> 18013 <tr class="entry_cont"> 18014 <td class="entry_details" colspan="6"> 18015 <p>This value contains the max number of output simultaneous 18016streams from the raw sensor.<wbr/></p> 18017<p>This lists the upper bound of the number of output streams supported by 18018the camera device.<wbr/> Using more streams simultaneously may require more hardware and 18019CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 18020be 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> 18021<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> 18022<ul> 18023<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li> 18024<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li> 18025<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li> 18026</ul> 18027<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY) 18028never support raw streams.<wbr/></p> 18029 </td> 18030 </tr> 18031 18032 18033 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18034 <!-- end of entry --> 18035 18036 18037 <tr class="entry" id="static_android.request.maxNumOutputProc"> 18038 <td class="entry_name 18039 " rowspan="3"> 18040 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc 18041 </td> 18042 <td class="entry_type"> 18043 <span class="entry_type_name">int32</span> 18044 18045 <span class="entry_type_visibility"> [java_public]</span> 18046 18047 <span class="entry_type_synthetic">[synthetic] </span> 18048 18049 <span class="entry_type_hwlevel">[legacy] </span> 18050 18051 18052 18053 18054 </td> <!-- entry_type --> 18055 18056 <td class="entry_description"> 18057 <p>The maximum numbers of different types of output streams 18058that can be configured and used simultaneously by a camera device 18059for any processed (but not-stalling) formats.<wbr/></p> 18060 </td> 18061 18062 <td class="entry_units"> 18063 </td> 18064 18065 <td class="entry_range"> 18066 <p>>= 3 18067for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 18068>= 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> 18069 </td> 18070 18071 <td class="entry_hal_version"> 18072 <p>3.<wbr/>2</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>This value contains the max number of output simultaneous 18085streams for any processed (but not-stalling) formats.<wbr/></p> 18086<p>This lists the upper bound of the number of output streams supported by 18087the camera device.<wbr/> Using more streams simultaneously may require more hardware and 18088CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 18089be 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> 18090<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> 18091Typically:</p> 18092<ul> 18093<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li> 18094<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li> 18095<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li> 18096<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> 18097<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a></li> 18098</ul> 18099<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 18100processed format -- it will return 0 for a non-stalling stream.<wbr/></p> 18101<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p> 18102 </td> 18103 </tr> 18104 18105 18106 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18107 <!-- end of entry --> 18108 18109 18110 <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> 18111 <td class="entry_name 18112 " rowspan="3"> 18113 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling 18114 </td> 18115 <td class="entry_type"> 18116 <span class="entry_type_name">int32</span> 18117 18118 <span class="entry_type_visibility"> [java_public]</span> 18119 18120 <span class="entry_type_synthetic">[synthetic] </span> 18121 18122 <span class="entry_type_hwlevel">[legacy] </span> 18123 18124 18125 18126 18127 </td> <!-- entry_type --> 18128 18129 <td class="entry_description"> 18130 <p>The maximum numbers of different types of output streams 18131that can be configured and used simultaneously by a camera device 18132for any processed (and stalling) formats.<wbr/></p> 18133 </td> 18134 18135 <td class="entry_units"> 18136 </td> 18137 18138 <td class="entry_range"> 18139 <p>>= 1</p> 18140 </td> 18141 18142 <td class="entry_hal_version"> 18143 <p>3.<wbr/>2</p> 18144 </td> 18145 18146 <td class="entry_tags"> 18147 </td> 18148 18149 </tr> 18150 <tr class="entries_header"> 18151 <th class="th_details" colspan="6">Details</th> 18152 </tr> 18153 <tr class="entry_cont"> 18154 <td class="entry_details" colspan="6"> 18155 <p>This value contains the max number of output simultaneous 18156streams for any processed (but not-stalling) formats.<wbr/></p> 18157<p>This lists the upper bound of the number of output streams supported by 18158the camera device.<wbr/> Using more streams simultaneously may require more hardware and 18159CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 18160be 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> 18161<p>A processed and stalling format is defined as any non-RAW format with a stallDurations 18162> 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> 18163<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 18164processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> 18165<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p> 18166 </td> 18167 </tr> 18168 18169 18170 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18171 <!-- end of entry --> 18172 18173 18174 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 18175 <td class="entry_name 18176 entry_name_deprecated 18177 " rowspan="3"> 18178 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 18179 </td> 18180 <td class="entry_type"> 18181 <span class="entry_type_name">int32</span> 18182 <span class="entry_type_container">x</span> 18183 18184 <span class="entry_type_array"> 18185 1 18186 </span> 18187 <span class="entry_type_visibility"> [system]</span> 18188 18189 18190 18191 <span class="entry_type_deprecated">[deprecated] </span> 18192 18193 18194 18195 </td> <!-- entry_type --> 18196 18197 <td class="entry_description"> 18198 <p>How many reprocessing streams of any type 18199can be allocated at the same time.<wbr/></p> 18200 </td> 18201 18202 <td class="entry_units"> 18203 </td> 18204 18205 <td class="entry_range"> 18206 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18207 <p>>= 0</p> 18208 </td> 18209 18210 <td class="entry_hal_version"> 18211 <p>3.<wbr/>2</p> 18212 </td> 18213 18214 <td class="entry_tags"> 18215 <ul class="entry_tags"> 18216 <li><a href="#tag_HAL2">HAL2</a></li> 18217 </ul> 18218 </td> 18219 18220 </tr> 18221 <tr class="entries_header"> 18222 <th class="th_details" colspan="6">Details</th> 18223 </tr> 18224 <tr class="entry_cont"> 18225 <td class="entry_details" colspan="6"> 18226 <p>Only used by HAL2.<wbr/>x.<wbr/></p> 18227<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 18228 </td> 18229 </tr> 18230 18231 18232 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18233 <!-- end of entry --> 18234 18235 18236 <tr class="entry" id="static_android.request.maxNumInputStreams"> 18237 <td class="entry_name 18238 " rowspan="5"> 18239 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 18240 </td> 18241 <td class="entry_type"> 18242 <span class="entry_type_name">int32</span> 18243 18244 <span class="entry_type_visibility"> [java_public]</span> 18245 18246 18247 <span class="entry_type_hwlevel">[full] </span> 18248 18249 18250 18251 18252 </td> <!-- entry_type --> 18253 18254 <td class="entry_description"> 18255 <p>The maximum numbers of any type of input streams 18256that can be configured and used simultaneously by a camera device.<wbr/></p> 18257 </td> 18258 18259 <td class="entry_units"> 18260 </td> 18261 18262 <td class="entry_range"> 18263 <p>0 or 1.<wbr/></p> 18264 </td> 18265 18266 <td class="entry_hal_version"> 18267 <p>3.<wbr/>2</p> 18268 </td> 18269 18270 <td class="entry_tags"> 18271 <ul class="entry_tags"> 18272 <li><a href="#tag_REPROC">REPROC</a></li> 18273 </ul> 18274 </td> 18275 18276 </tr> 18277 <tr class="entries_header"> 18278 <th class="th_details" colspan="6">Details</th> 18279 </tr> 18280 <tr class="entry_cont"> 18281 <td class="entry_details" colspan="6"> 18282 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 18283<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 18284input stream,<wbr/> there must be at least one output stream configured to to receive the 18285reprocessed images.<wbr/></p> 18286<p>When an input stream and some output streams are used in a reprocessing request,<wbr/> 18287only the input buffer will be used to produce these output stream buffers,<wbr/> and a 18288new sensor image will not be captured.<wbr/></p> 18289<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 18290stream image format will be PRIVATE,<wbr/> the associated output stream image format 18291should be JPEG.<wbr/></p> 18292 </td> 18293 </tr> 18294 18295 <tr class="entries_header"> 18296 <th class="th_details" colspan="6">HAL Implementation Details</th> 18297 </tr> 18298 <tr class="entry_cont"> 18299 <td class="entry_details" colspan="6"> 18300 <p>For the reprocessing flow and controls,<wbr/> see 18301hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p> 18302 </td> 18303 </tr> 18304 18305 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18306 <!-- end of entry --> 18307 18308 18309 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 18310 <td class="entry_name 18311 " rowspan="5"> 18312 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 18313 </td> 18314 <td class="entry_type"> 18315 <span class="entry_type_name">byte</span> 18316 18317 <span class="entry_type_visibility"> [public]</span> 18318 18319 18320 <span class="entry_type_hwlevel">[legacy] </span> 18321 18322 18323 18324 18325 </td> <!-- entry_type --> 18326 18327 <td class="entry_description"> 18328 <p>Specifies the number of maximum pipeline stages a frame 18329has to go through from when it's exposed to when it's available 18330to the framework.<wbr/></p> 18331 </td> 18332 18333 <td class="entry_units"> 18334 </td> 18335 18336 <td class="entry_range"> 18337 </td> 18338 18339 <td class="entry_hal_version"> 18340 <p>3.<wbr/>2</p> 18341 </td> 18342 18343 <td class="entry_tags"> 18344 </td> 18345 18346 </tr> 18347 <tr class="entries_header"> 18348 <th class="th_details" colspan="6">Details</th> 18349 </tr> 18350 <tr class="entry_cont"> 18351 <td class="entry_details" colspan="6"> 18352 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 18353one stage to readout) from the sensor.<wbr/> The ISP then usually adds 18354its own stages to do custom HW processing.<wbr/> Further stages may be 18355added by SW processing.<wbr/></p> 18356<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 18357processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 18358depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 18359the max pipeline depth.<wbr/></p> 18360<p>A pipeline depth of X stages is equivalent to a pipeline latency of 18361X frame intervals.<wbr/></p> 18362<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/> 18363the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p> 18364 </td> 18365 </tr> 18366 18367 <tr class="entries_header"> 18368 <th class="th_details" colspan="6">HAL Implementation Details</th> 18369 </tr> 18370 <tr class="entry_cont"> 18371 <td class="entry_details" colspan="6"> 18372 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the 18373max batch sizes may be larger than 1.<wbr/></p> 18374 </td> 18375 </tr> 18376 18377 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18378 <!-- end of entry --> 18379 18380 18381 <tr class="entry" id="static_android.request.partialResultCount"> 18382 <td class="entry_name 18383 " rowspan="3"> 18384 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 18385 </td> 18386 <td class="entry_type"> 18387 <span class="entry_type_name">int32</span> 18388 18389 <span class="entry_type_visibility"> [public]</span> 18390 18391 18392 18393 18394 18395 18396 </td> <!-- entry_type --> 18397 18398 <td class="entry_description"> 18399 <p>Defines how many sub-components 18400a result will be composed of.<wbr/></p> 18401 </td> 18402 18403 <td class="entry_units"> 18404 </td> 18405 18406 <td class="entry_range"> 18407 <p>>= 1</p> 18408 </td> 18409 18410 <td class="entry_hal_version"> 18411 <p>3.<wbr/>2</p> 18412 </td> 18413 18414 <td class="entry_tags"> 18415 </td> 18416 18417 </tr> 18418 <tr class="entries_header"> 18419 <th class="th_details" colspan="6">Details</th> 18420 </tr> 18421 <tr class="entry_cont"> 18422 <td class="entry_details" colspan="6"> 18423 <p>In order to combat the pipeline latency,<wbr/> partial results 18424may be delivered to the application layer from the camera device as 18425soon as they are available.<wbr/></p> 18426<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial 18427results are not supported,<wbr/> and only the final TotalCaptureResult will 18428be produced by the camera device.<wbr/></p> 18429<p>A typical use case for this might be: after requesting an 18430auto-focus (AF) lock the new AF state might be available 50% 18431of the way through the pipeline.<wbr/> The camera device could 18432then immediately dispatch this state via a partial result to 18433the application,<wbr/> and the rest of the metadata via later 18434partial results.<wbr/></p> 18435 </td> 18436 </tr> 18437 18438 18439 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18440 <!-- end of entry --> 18441 18442 18443 <tr class="entry" id="static_android.request.availableCapabilities"> 18444 <td class="entry_name 18445 " rowspan="5"> 18446 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 18447 </td> 18448 <td class="entry_type"> 18449 <span class="entry_type_name entry_type_name_enum">byte</span> 18450 <span class="entry_type_container">x</span> 18451 18452 <span class="entry_type_array"> 18453 n 18454 </span> 18455 <span class="entry_type_visibility"> [public]</span> 18456 18457 18458 <span class="entry_type_hwlevel">[legacy] </span> 18459 18460 18461 18462 <ul class="entry_type_enum"> 18463 <li> 18464 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span> 18465 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 18466device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 18467supports.<wbr/></p> 18468<p>This capability is listed by all normal devices,<wbr/> and 18469indicates that the camera device has a feature set 18470that's comparable to the baseline requirements for the 18471older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 18472<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this 18473capability,<wbr/> indicating that they support only depth measurement,<wbr/> 18474not standard color output.<wbr/></p></span> 18475 </li> 18476 <li> 18477 <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span> 18478 <span class="entry_type_enum_optional">[optional]</span> 18479 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 18480as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> 18481The camera device supports basic manual control of the sensor image 18482acquisition related stages.<wbr/> This means the following controls are 18483guaranteed to be supported:</p> 18484<ul> 18485<li>Manual frame duration control<ul> 18486<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> 18487<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 18488</ul> 18489</li> 18490<li>Manual exposure control<ul> 18491<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 18492<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 18493</ul> 18494</li> 18495<li>Manual sensitivity control<ul> 18496<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 18497<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 18498</ul> 18499</li> 18500<li>Manual lens control (if the lens is adjustable)<ul> 18501<li>android.<wbr/>lens.<wbr/>*</li> 18502</ul> 18503</li> 18504<li>Manual flash control (if a flash unit is present)<ul> 18505<li>android.<wbr/>flash.<wbr/>*</li> 18506</ul> 18507</li> 18508<li>Manual black level locking<ul> 18509<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 18510</ul> 18511</li> 18512<li>Auto exposure lock<ul> 18513<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 18514</ul> 18515</li> 18516</ul> 18517<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 18518device will accurately report the values applied by 3A in the 18519result.<wbr/></p> 18520<p>A given camera device may also support additional manual sensor controls,<wbr/> 18521but this capability only covers the above list of controls.<wbr/></p> 18522<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will 18523additionally return a min frame duration that is greater than 18524zero for each supported size-format combination.<wbr/></p> 18525<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when the underlying active 18526physical camera switches,<wbr/> exposureTime,<wbr/> sensitivity,<wbr/> and lens properties may change 18527even if AE/<wbr/>AF is locked.<wbr/> However,<wbr/> the overall auto exposure and auto focus experience 18528for users will be consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span> 18529 </li> 18530 <li> 18531 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span> 18532 <span class="entry_type_enum_optional">[optional]</span> 18533 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> 18534The camera device supports basic manual control of the image post-processing 18535stages.<wbr/> This means the following controls are guaranteed to be supported:</p> 18536<ul> 18537<li> 18538<p>Manual tonemap control</p> 18539<ul> 18540<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> 18541<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 18542<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 18543<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li> 18544<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li> 18545</ul> 18546</li> 18547<li> 18548<p>Manual white balance control</p> 18549<ul> 18550<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 18551<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 18552</ul> 18553</li> 18554<li>Manual lens shading map control<ul> 18555<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li> 18556<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li> 18557<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 18558<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 18559</ul> 18560</li> 18561<li>Manual aberration correction control (if aberration correction is supported)<ul> 18562<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li> 18563<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li> 18564</ul> 18565</li> 18566<li>Auto white balance lock<ul> 18567<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 18568</ul> 18569</li> 18570</ul> 18571<p>If auto white balance is enabled,<wbr/> then the camera device 18572will accurately report the values applied by AWB in the result.<wbr/></p> 18573<p>A given camera device may also support additional post-processing 18574controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p> 18575<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when underlying active 18576physical camera switches,<wbr/> tonemap,<wbr/> white balance,<wbr/> and shading map may change even if 18577awb is locked.<wbr/> However,<wbr/> the overall post-processing experience for users will be 18578consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span> 18579 </li> 18580 <li> 18581 <span class="entry_type_enum_name">RAW (v3.2)</span> 18582 <span class="entry_type_enum_optional">[optional]</span> 18583 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and 18584metadata for interpreting them.<wbr/></p> 18585<p>Devices supporting the RAW capability allow both for 18586saving DNG files,<wbr/> and for direct application processing of 18587raw sensor images.<wbr/></p> 18588<ul> 18589<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li> 18590<li>The maximum available resolution for RAW_<wbr/>SENSOR streams 18591 will match either the value in 18592 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 18593 <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> 18594<li>All DNG-related optional metadata entries are provided 18595 by the camera device.<wbr/></li> 18596</ul></span> 18597 </li> 18598 <li> 18599 <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span> 18600 <span class="entry_type_enum_optional">[optional]</span> 18601 <span class="entry_type_enum_hidden">[java_public]</span> 18602 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p> 18603<ul> 18604<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> 18605<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/> 18606 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of 18607 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> 18608<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 18609 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> 18610<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> 18611<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop 18612 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 18613<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both 18614 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and 18615 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li> 18616<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 18617 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a>.<wbr/></li> 18618<li>The maximum available resolution for PRIVATE streams 18619 (both input/<wbr/>output) will match the maximum available 18620 resolution of JPEG streams.<wbr/></li> 18621<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 18622<li>Only below controls are effective for reprocessing requests and 18623 will be present in capture results,<wbr/> other controls in reprocess 18624 requests will be ignored by the camera device.<wbr/><ul> 18625<li>android.<wbr/>jpeg.<wbr/>*</li> 18626<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 18627<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 18628</ul> 18629</li> 18630<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 18631 <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> 18632</ul></span> 18633 </li> 18634 <li> 18635 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span> 18636 <span class="entry_type_enum_optional">[optional]</span> 18637 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of 18638the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows 18639reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p> 18640<p>The values reported for the following controls are guaranteed to be available 18641in the CaptureResult,<wbr/> including when 3A is enabled:</p> 18642<ul> 18643<li>Exposure control<ul> 18644<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 18645</ul> 18646</li> 18647<li>Sensitivity control<ul> 18648<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 18649</ul> 18650</li> 18651<li>Lens controls (if the lens is adjustable)<ul> 18652<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li> 18653<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li> 18654</ul> 18655</li> 18656</ul> 18657<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will 18658always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span> 18659 </li> 18660 <li> 18661 <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span> 18662 <span class="entry_type_enum_optional">[optional]</span> 18663 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per 18664second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are 18665set to FAST.<wbr/> Additionally,<wbr/> all image resolutions less than 24 megapixels can be 18666captured at >= 10 frames per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 18667megapixels,<wbr/> or the maximum resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span> 18668 </li> 18669 <li> 18670 <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span> 18671 <span class="entry_type_enum_optional">[optional]</span> 18672 <span class="entry_type_enum_hidden">[java_public]</span> 18673 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as 18674PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the 18675following:</p> 18676<ul> 18677<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> 18678<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 18679 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> 18680<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 18681 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> 18682<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> 18683<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 18684 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 18685<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 18686 <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> 18687<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 18688 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li> 18689<li>For a MONOCHROME camera with Y8 format support,<wbr/> all the requirements mentioned 18690 above for YUV_<wbr/>420_<wbr/>888 apply for Y8 format as well.<wbr/></li> 18691<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 18692<li>Only the below controls are effective for reprocessing requests and will be present 18693 in capture results.<wbr/> The reprocess requests are from the original capture results 18694 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 18695 reprocess requests will be ignored by the camera device.<wbr/><ul> 18696<li>android.<wbr/>jpeg.<wbr/>*</li> 18697<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 18698<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 18699<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li> 18700</ul> 18701</li> 18702<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 18703 <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> 18704</ul></span> 18705 </li> 18706 <li> 18707 <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span> 18708 <span class="entry_type_enum_optional">[optional]</span> 18709 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p> 18710<p>This capability requires the camera device to support the following:</p> 18711<ul> 18712<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as 18713 an output format.<wbr/></li> 18714<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 18715 optionally supported as an output format.<wbr/></li> 18716<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 18717 list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> 18718 and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul> 18719<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 18720<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 18721<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 18722<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 18723</ul> 18724</li> 18725<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> 18726<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> 18727<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support 18728 normal YUV_<wbr/>420_<wbr/>888,<wbr/> Y8,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the 18729 DEPTH16 format.<wbr/></li> 18730</ul> 18731<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/> 18732so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that 18733should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/> 18734On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/> 18735using a repeating burst is recommended,<wbr/> where a depth-output target is only included 18736once every N frames,<wbr/> where N is the ratio between preview output rate and depth output 18737rate,<wbr/> including depth stall time.<wbr/></p></span> 18738 </li> 18739 <li> 18740 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span> 18741 <span class="entry_type_enum_optional">[optional]</span> 18742 <span class="entry_type_enum_hidden">[java_public]</span> 18743 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) use 18744case.<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 18745only 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> 18746<p>A camera device can still support high speed video streaming by advertising the high 18747speed 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 18748normal capture request per frame control and synchronization requirements will apply 18749to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability 18750describes the capability of a specialized operating mode with many limitations (see 18751below),<wbr/> which is only targeted at high speed video recording.<wbr/></p> 18752<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/> 18753To get desired output frame rates,<wbr/> the application is only allowed to select video 18754size 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 18755fps 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> 18756<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 18757ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 18758controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 18759and post-processing parameters is possible.<wbr/> All other controls operate the 18760same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 18761android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 18762<ul> 18763<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 18764<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 18765<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 18766<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 18767<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 18768<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 18769<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 18770<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 18771<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 18772<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 18773<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li> 18774</ul> 18775<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 18776<ul> 18777<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not 18778work since aeMode is ON)</li> 18779<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 18780<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 18781<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li> 18782</ul> 18783<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 18784be lower than what camera can output,<wbr/> depending on the destination Surfaces for 18785the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 18786the application need check if the video encoder is capable of supporting the 18787high frame rate for a given video size,<wbr/> or it will end up with lower recording 18788frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame 18789rate will be bounded by the screen refresh rate.<wbr/></p> 18790<p>The camera device will only support up to 2 high speed simultaneous output surfaces 18791(preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only 18792if all of below conditions are true:</p> 18793<ul> 18794<li>The application creates a camera capture session with no more than 2 surfaces via 18795<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The 18796targeted 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 18797surface(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> 18798<li>The stream sizes are selected from the sizes reported by 18799<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li> 18800<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> 18801</ul> 18802<p>When above conditions are NOT satistied,<wbr/> 18803<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 18804will fail.<wbr/></p> 18805<p>Switching to a FPS range that has different maximum FPS may trigger some camera device 18806reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 18807the application avoids unnecessary maximum target FPS changes as much as possible 18808during high speed streaming.<wbr/></p></span> 18809 </li> 18810 <li> 18811 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> 18812 <span class="entry_type_enum_optional">[optional]</span> 18813 <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for 18814<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> 18815<p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking 18816results for use cases such as image stabilization or augmented reality.<wbr/></p></span> 18817 </li> 18818 <li> 18819 <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span> 18820 <span class="entry_type_enum_optional">[optional]</span> 18821 <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras.<wbr/></p> 18822<p>In API level 28,<wbr/> the physical cameras must also be exposed to the application via 18823<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/></p> 18824<p>Starting from API level 29:</p> 18825<ul> 18826<li>Some or all physical cameras may not be independently exposed to the application,<wbr/> 18827in which case the physical camera IDs will not be available in 18828<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/> But the 18829application can still query the physical cameras' characteristics by calling 18830<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/></li> 18831<li>If a physical camera is hidden from camera ID list,<wbr/> the mandatory stream 18832combinations for that physical camera must be supported through the logical camera 18833using physical streams.<wbr/> One exception is that in API level 30,<wbr/> a physical camera 18834may become unavailable via 18835<a href="https://developer.android.com/reference/CameraManager/AvailabilityCallback.html#onPhysicalCameraUnavailable">AvailabilityCallback#onPhysicalCameraUnavailable</a> 18836callback.<wbr/></li> 18837</ul> 18838<p>Combinations of logical and physical streams,<wbr/> or physical streams from different 18839physical cameras are not guaranteed.<wbr/> However,<wbr/> if the camera device supports 18840<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>,<wbr/> 18841application must be able to query whether a stream combination involving physical 18842streams is supported by calling 18843<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>.<wbr/></p> 18844<p>Camera application shouldn't assume that there are at most 1 rear camera and 1 front 18845camera in the system.<wbr/> For an application that switches between front and back cameras,<wbr/> 18846the recommendation is to switch between the first rear camera and the first front 18847camera in the list of supported camera devices.<wbr/></p> 18848<p>This capability requires the camera device to support the following:</p> 18849<ul> 18850<li>The IDs of underlying physical cameras are returned via 18851 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getPhysicalCameraIds">CameraCharacteristics#getPhysicalCameraIds</a>.<wbr/></li> 18852<li>This camera device must list static metadata 18853 <a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a> in 18854 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></li> 18855<li>The underlying physical cameras' static metadata must list the following entries,<wbr/> 18856 so that the application can correlate pixels from the physical streams:<ul> 18857<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li> 18858<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 18859<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 18860<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 18861<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 18862</ul> 18863</li> 18864<li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be 18865 the same.<wbr/></li> 18866<li>The logical camera must be LIMITED or higher device.<wbr/></li> 18867</ul> 18868<p>A logical camera device's dynamic metadata may contain 18869<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 18870active physical camera Id.<wbr/> An active physical camera is the physical camera from which 18871the logical camera's main image data outputs (YUV or RAW) and metadata come from.<wbr/> 18872In addition,<wbr/> this serves as an indication which physical camera is used to output to 18873a RAW stream,<wbr/> or in case only physical cameras support RAW,<wbr/> which physical RAW stream 18874the application should request.<wbr/></p> 18875<p>Logical camera's static metadata tags below describe the default active physical 18876camera.<wbr/> An active physical camera is default if it's used when application directly 18877uses requests built from a template.<wbr/> All templates will default to the same active 18878physical camera.<wbr/></p> 18879<ul> 18880<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 18881<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li> 18882<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 18883<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 18884<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li> 18885<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li> 18886<li><a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a></li> 18887<li><a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></li> 18888<li><a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a></li> 18889<li><a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a></li> 18890<li><a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a></li> 18891<li><a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a></li> 18892<li><a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a></li> 18893<li><a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a></li> 18894<li><a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a></li> 18895<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li> 18896<li><a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a></li> 18897<li><a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a></li> 18898<li><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></li> 18899<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li> 18900<li><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a></li> 18901<li><a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a></li> 18902<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 18903<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 18904<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 18905<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li> 18906<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 18907</ul> 18908<p>The field of view of non-RAW physical streams must not be smaller than that of the 18909non-RAW logical streams,<wbr/> or the maximum field-of-view of the physical camera,<wbr/> 18910whichever is smaller.<wbr/> The application should check the physical capture result 18911metadata for how the physical streams are cropped or zoomed.<wbr/> More specifically,<wbr/> given 18912the physical camera result metadata,<wbr/> the effective horizontal field-of-view of the 18913physical camera is:</p> 18914<pre><code>fov = 2 * atan2(cropW * sensorW /<wbr/> (2 * zoomRatio * activeArrayW),<wbr/> focalLength) 18915</code></pre> 18916<p>where the equation parameters are the physical camera's crop region width,<wbr/> physical 18917sensor width,<wbr/> zoom ratio,<wbr/> active array width,<wbr/> and focal length respectively.<wbr/> Typically 18918the physical stream of active physical camera has the same field-of-view as the 18919logical streams.<wbr/> However,<wbr/> the same may not be true for physical streams from 18920non-active physical cameras.<wbr/> For example,<wbr/> if the logical camera has a wide-ultrawide 18921configuration where the wide lens is the default,<wbr/> when the crop region is set to the 18922logical camera's active array size,<wbr/> (and the zoom ratio set to 1.<wbr/>0 starting from 18923Android 11),<wbr/> a physical stream for the ultrawide camera may prefer outputing images 18924with larger field-of-view than that of the wide camera for better stereo matching 18925margin or more robust motion tracking.<wbr/> At the same time,<wbr/> the physical non-RAW streams' 18926field of view must not be smaller than the requested crop region and zoom ratio,<wbr/> as 18927long as it's within the physical lens' capability.<wbr/> For example,<wbr/> for a logical camera 18928with wide-tele lens configuration where the wide lens is the default,<wbr/> if the logical 18929camera's crop region is set to maximum size,<wbr/> and zoom ratio set to 1.<wbr/>0,<wbr/> the physical 18930stream for the tele lens will be configured to its maximum size crop region (no zoom).<wbr/></p> 18931<p><em>Deprecated:</em> Prior to Android 11,<wbr/> the field of view of all non-RAW physical streams 18932cannot be larger than that of non-RAW logical streams.<wbr/> If the logical camera has a 18933wide-ultrawide lens configuration where the wide lens is the default,<wbr/> when the logical 18934camera's crop region is set to maximum size,<wbr/> the FOV of the physical streams for the 18935ultrawide lens will be the same as the logical stream,<wbr/> by making the crop region 18936smaller than its active array size to compensate for the smaller focal length.<wbr/></p> 18937<p>There are two ways for the application to capture RAW images from a logical camera 18938with RAW capability:</p> 18939<ul> 18940<li>Because the underlying physical cameras may have different RAW capabilities (such 18941as resolution or CFA pattern),<wbr/> to maintain backward compatibility,<wbr/> when a RAW stream 18942is configured,<wbr/> the camera device makes sure the default active physical camera remains 18943active and does not switch to other physical cameras.<wbr/> (One exception is that,<wbr/> if the 18944logical camera consists of identical image sensors and advertises multiple focalLength 18945due to different lenses,<wbr/> the camera device may generate RAW images from different 18946physical cameras based on the focalLength being set by the application.<wbr/>) This 18947backward-compatible approach usually results in loss of optical zoom,<wbr/> to telephoto 18948lens or to ultrawide lens.<wbr/></li> 18949<li>Alternatively,<wbr/> to take advantage of the full zoomRatio range of the logical camera,<wbr/> 18950the application should use <a href="https://developer.android.com/reference/android/hardware/camera2/MultiResolutionImageReader.html">MultiResolutionImageReader</a> 18951to capture RAW images from the currently active physical camera.<wbr/> Because different 18952physical camera may have different RAW characteristics,<wbr/> the application needs to use 18953the characteristics and result metadata of the active physical camera for the 18954relevant RAW metadata.<wbr/></li> 18955</ul> 18956<p>The capture request and result metadata tags required for backward compatible camera 18957functionalities will be solely based on the logical camera capability.<wbr/> On the other 18958hand,<wbr/> the use of manual capture controls (sensor or post-processing) with a 18959logical camera may result in unexpected behavior when the HAL decides to switch 18960between physical cameras with different characteristics under the hood.<wbr/> For example,<wbr/> 18961when the application manually sets exposure time and sensitivity while zooming in,<wbr/> 18962the brightness of the camera images may suddenly change because HAL switches from one 18963physical camera to the other.<wbr/></p></span> 18964 </li> 18965 <li> 18966 <span class="entry_type_enum_name">MONOCHROME (v3.3)</span> 18967 <span class="entry_type_enum_optional">[optional]</span> 18968 <span class="entry_type_enum_notes"><p>The camera device is a monochrome camera that doesn't contain a color filter array,<wbr/> 18969and for YUV_<wbr/>420_<wbr/>888 stream,<wbr/> the pixel values on U and V planes are all 128.<wbr/></p> 18970<p>A MONOCHROME camera must support the guaranteed stream combinations required for 18971its device level and capabilities.<wbr/> Additionally,<wbr/> if the monochrome camera device 18972supports 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 18973to <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> as well.<wbr/> There are no 18974mandatory stream combination requirements with regard to 18975<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> for Bayer camera devices.<wbr/></p> 18976<p>Starting from Android Q,<wbr/> the SENSOR_<wbr/>INFO_<wbr/>COLOR_<wbr/>FILTER_<wbr/>ARRANGEMENT of a MONOCHROME 18977camera will be either MONO or NIR.<wbr/></p></span> 18978 </li> 18979 <li> 18980 <span class="entry_type_enum_name">SECURE_IMAGE_DATA (v3.4)</span> 18981 <span class="entry_type_enum_optional">[optional]</span> 18982 <span class="entry_type_enum_notes"><p>The camera device is capable of writing image data into a region of memory 18983inaccessible to Android userspace or the Android kernel,<wbr/> and only accessible to 18984trusted execution environments (TEE).<wbr/></p></span> 18985 </li> 18986 <li> 18987 <span class="entry_type_enum_name">SYSTEM_CAMERA (v3.5)</span> 18988 <span class="entry_type_enum_optional">[optional]</span> 18989 <span class="entry_type_enum_notes"><p>The camera device is only accessible by Android's system components and privileged 18990applications.<wbr/> Processes need to have the android.<wbr/>permission.<wbr/>SYSTEM_<wbr/>CAMERA in 18991addition to android.<wbr/>permission.<wbr/>CAMERA in order to connect to this camera device.<wbr/></p></span> 18992 </li> 18993 <li> 18994 <span class="entry_type_enum_name">OFFLINE_PROCESSING (v3.5)</span> 18995 <span class="entry_type_enum_optional">[optional]</span> 18996 <span class="entry_type_enum_hidden">[java_public]</span> 18997 <span class="entry_type_enum_notes"><p>The camera device supports the OFFLINE_<wbr/>PROCESSING use case.<wbr/></p> 18998<p>With OFFLINE_<wbr/>PROCESSING capability,<wbr/> the application can switch an ongoing 18999capture session to offline mode by calling the 19000CameraCaptureSession#switchToOffline method and specify streams to be kept in offline 19001mode.<wbr/> The camera will then stop currently active repeating requests,<wbr/> prepare for 19002some requests to go into offline mode,<wbr/> and return an offline session object.<wbr/> After 19003the switchToOffline call returns,<wbr/> the original capture session is in closed state as 19004if the CameraCaptureSession#close method has been called.<wbr/> 19005In the offline mode,<wbr/> all inflight requests will continue to be processed in the 19006background,<wbr/> and the application can immediately close the camera or create a new 19007capture session without losing those requests' output images and capture results.<wbr/></p> 19008<p>While the camera device is processing offline requests,<wbr/> it 19009might not be able to support all stream configurations it can support 19010without offline requests.<wbr/> When that happens,<wbr/> the createCaptureSession 19011method call will fail.<wbr/> The following stream configurations are guaranteed to work 19012without hitting the resource busy exception:</p> 19013<ul> 19014<li>One ongoing offline session: target one output surface of YUV or 19015JPEG format,<wbr/> any resolution.<wbr/></li> 19016<li>The active camera capture session:<ol> 19017<li>One preview surface (SurfaceView or SurfaceTexture) up to 1920 width</li> 19018<li>One YUV ImageReader surface up to 1920 width</li> 19019<li>One Jpeg ImageReader,<wbr/> any resolution: the camera device is 19020 allowed to slow down JPEG output speed by 50% if there is any ongoing offline 19021 session.<wbr/></li> 19022<li>If the device supports PRIVATE_<wbr/>REPROCESSING,<wbr/> one pair of ImageWriter/<wbr/>ImageReader 19023 surfaces of private format,<wbr/> with the same resolution that is larger or equal to 19024 the JPEG ImageReader resolution above.<wbr/></li> 19025</ol> 19026</li> 19027<li>Alternatively,<wbr/> the active camera session above can be replaced by an legacy 19028<a href="https://developer.android.com/reference/android/hardware/Camera.html">Camera</a> with the following parameter settings:<ol> 19029<li>Preview size up to 1920 width</li> 19030<li>Preview callback size up to 1920 width</li> 19031<li>Video size up to 1920 width</li> 19032<li>Picture size,<wbr/> any resolution: the camera device is 19033 allowed to slow down JPEG output speed by 50% if there is any ongoing offline 19034 session.<wbr/></li> 19035</ol> 19036</li> 19037</ul></span> 19038 </li> 19039 <li> 19040 <span class="entry_type_enum_name">ULTRA_HIGH_RESOLUTION_SENSOR (v3.6)</span> 19041 <span class="entry_type_enum_optional">[optional]</span> 19042 <span class="entry_type_enum_notes"><p>This camera device is capable of producing ultra high resolution images in 19043addition to the image sizes described in the 19044<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> 19045It can operate in 'default' mode and 'max resolution' mode.<wbr/> It generally does this 19046by binning pixels in 'default' mode and not binning them in 'max resolution' mode.<wbr/> 19047<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code> describes the streams supported in 'default' 19048mode.<wbr/> 19049The stream configurations supported in 'max resolution' mode are described by 19050<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/> 19051The maximum resolution mode pixel array size of a camera device 19052(<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/> 19053will be at least 24 megapixels.<wbr/></p></span> 19054 </li> 19055 <li> 19056 <span class="entry_type_enum_name">REMOSAIC_REPROCESSING (v3.6)</span> 19057 <span class="entry_type_enum_optional">[optional]</span> 19058 <span class="entry_type_enum_hidden">[java_public]</span> 19059 <span class="entry_type_enum_notes"><p>The device supports reprocessing from the <code>RAW_<wbr/>SENSOR</code> format with a bayer pattern 19060given 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 19061color filter) to a remosaiced regular bayer pattern.<wbr/></p> 19062<p>This capability will only be present for devices with 19063<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> 19064capability.<wbr/> When 19065<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> 19066devices do not advertise this capability,<wbr/> 19067<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> images will already have a 19068regular bayer pattern.<wbr/></p> 19069<p>If a <code>RAW_<wbr/>SENSOR</code> stream is requested along with another non-RAW stream in a 19070<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a> (if multiple streams are supported 19071when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 19072<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/> 19073the <code>RAW_<wbr/>SENSOR</code> stream will have a regular bayer pattern.<wbr/></p> 19074<p>This capability requires the camera device to support the following : 19075* The <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a> mentioned below 19076 refers to the one,<wbr/> described by 19077 <code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/> 19078* 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/> 19079* <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 19080 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 19081 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/> 19082* <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 19083 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/> 19084* 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> 19085* 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 19086 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/> 19087* No CaptureRequest controls will be applicable when a request has an input target 19088 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> format.<wbr/></p></span> 19089 </li> 19090 </ul> 19091 19092 </td> <!-- entry_type --> 19093 19094 <td class="entry_description"> 19095 <p>List of capabilities that this camera device 19096advertises as fully supporting.<wbr/></p> 19097 </td> 19098 19099 <td class="entry_units"> 19100 </td> 19101 19102 <td class="entry_range"> 19103 </td> 19104 19105 <td class="entry_hal_version"> 19106 <p>3.<wbr/>2</p> 19107 </td> 19108 19109 <td class="entry_tags"> 19110 </td> 19111 19112 </tr> 19113 <tr class="entries_header"> 19114 <th class="th_details" colspan="6">Details</th> 19115 </tr> 19116 <tr class="entry_cont"> 19117 <td class="entry_details" colspan="6"> 19118 <p>A capability is a contract that the camera device makes in order 19119to be able to satisfy one or more use cases.<wbr/></p> 19120<p>Listing a capability guarantees that the whole set of features 19121required to support a common use will all be available.<wbr/></p> 19122<p>Using a subset of the functionality provided by an unsupported 19123capability may be possible on a specific camera device implementation; 19124to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 19125<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 19126<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 19127<p>The following capabilities are guaranteed to be available on 19128<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 19129<ul> 19130<li>MANUAL_<wbr/>SENSOR</li> 19131<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> 19132</ul> 19133<p>Other capabilities may be available on either FULL or LIMITED 19134devices,<wbr/> but the application should query this key to be sure.<wbr/></p> 19135 </td> 19136 </tr> 19137 19138 <tr class="entries_header"> 19139 <th class="th_details" colspan="6">HAL Implementation Details</th> 19140 </tr> 19141 <tr class="entry_cont"> 19142 <td class="entry_details" colspan="6"> 19143 <p>Additional constraint details per-capability will be available 19144in the Compatibility Test Suite.<wbr/></p> 19145<p>Minimum baseline requirements required for the 19146BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> 19147Instead refer to "BC" tags and the camera CTS tests in the 19148android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p> 19149<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 19150<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 19151request and the result in order to be considered to be 19152capability-compliant.<wbr/></p> 19153<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 19154then exposure time must be configurable via the request <em>and</em> 19155the actual exposure applied must be available via 19156the result.<wbr/></p> 19157<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the 19158<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p> 19159<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see 19160hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p> 19161<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the 19162CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p> 19163<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the 19164YUV_<wbr/>REPROCESSING capability must support the 19165CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p> 19166<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys 19167<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> 19168<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> 19169<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in 19170addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT 19171enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available 19172if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace 19173DEPTH).<wbr/></p> 19174<p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the 19175same way as a physical camera device based on its hardware level and capabilities.<wbr/> 19176It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p> 19177<ul> 19178<li> 19179<p>In camera1 API,<wbr/> to maintain application compatibility,<wbr/> for each camera facing,<wbr/> there 19180may 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/>} 19181combinations,<wbr/> where logical_<wbr/>camera_<wbr/>id is composed of physical_<wbr/>camera_<wbr/>N_<wbr/>id,<wbr/> camera 19182framework will only advertise one camera id 19183(within the combinations for the particular facing) that is frontmost in the HAL 19184published camera id list.<wbr/> 19185For example,<wbr/> if HAL advertises 6 back facing camera IDs (ID0 to ID5),<wbr/> among which ID4 19186and ID5 are logical cameras backed by ID0+ID1 and ID2+ID3 respectively.<wbr/> In this case,<wbr/> 19187only ID0 will be available for camera1 API to use.<wbr/></p> 19188</li> 19189<li> 19190<p>Camera HAL is strongly recommended to advertise camera devices with best feature,<wbr/> 19191power,<wbr/> performance,<wbr/> and latency tradeoffs at the front of the camera id list.<wbr/></p> 19192</li> 19193<li> 19194<p>Camera HAL may switch between physical cameras depending on focalLength,<wbr/> cropRegion,<wbr/> or 19195zoomRatio.<wbr/> If physical cameras have different sizes,<wbr/> HAL must maintain a single logical 19196camera 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 19197mapping between logical camera and underlying physical cameras for all related metadata 19198tags,<wbr/> such as crop region,<wbr/> zoomRatio,<wbr/> 3A regions,<wbr/> and intrinsicCalibration.<wbr/></p> 19199</li> 19200<li> 19201<p>Starting from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> camera HAL must support 19202isStreamCombinationSupported for application to query whether a particular logical and 19203physical streams combination are supported.<wbr/></p> 19204</li> 19205</ul> 19206<p>A MONOCHROME camera device must also advertise BACKWARD_<wbr/>COMPATIBLE capability,<wbr/> and must 19207not advertise MANUAL_<wbr/>POST_<wbr/>PROCESSING capability.<wbr/></p> 19208<ul> 19209<li> 19210<p>To maintain backward compatibility,<wbr/> the camera device must support all 19211BACKWARD_<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 19212AUTO,<wbr/> and <a href="#dynamic_android.control.awbState">android.<wbr/>control.<wbr/>awb<wbr/>State</a> are either CONVERGED or LOCKED depending on 19213<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>.<wbr/></p> 19214</li> 19215<li> 19216<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 19217<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> must not be in available request and result keys.<wbr/> 19218As a result,<wbr/> the camera device cannot be a FULL device.<wbr/> However,<wbr/> the HAL can 19219still advertise other individual capabilites.<wbr/></p> 19220</li> 19221<li> 19222<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/> 19223CurveGreen and curveBlue are no-ops.<wbr/></p> 19224</li> 19225</ul> 19226<p>In Android API level 28,<wbr/> a MONOCHROME camera device must not have RAW capability.<wbr/> From 19227API level 29,<wbr/> a camera is allowed to have both MONOCHROME and RAW capabilities.<wbr/></p> 19228<p>To support the legacy API to ICameraDevice 3.<wbr/>x shim layer,<wbr/> devices advertising 19229OFFLINE_<wbr/>PROCESSING capability must also support configuring an input stream of the same 19230size as the picture size if:</p> 19231<ul> 19232<li>The device supports PRIVATE_<wbr/>REPROCESSING capability</li> 19233<li>The device's maximal JPEG resolution can reach 30 FPS min frame duration</li> 19234<li>The device does not support HAL based ZSL (<a href="#controls_android.control.enableZsl">android.<wbr/>control.<wbr/>enable<wbr/>Zsl</a>)</li> 19235</ul> 19236<p>For devices which support SYSTEM_<wbr/>CAMERA and LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capabilities:</p> 19237<p>Hidden physical camera ids[1] must not be be shared[2] between public camera devices 19238and camera devices advertising SYSTEM_<wbr/>CAMERA capability.<wbr/></p> 19239<p>[1] - Camera device ids which are advertised in the 19240 ANDROID_<wbr/>LOGICAL_<wbr/>MULTI_<wbr/>CAMERA_<wbr/>PHYSICAL_<wbr/>IDS list,<wbr/> and not available through 19241 ICamera<wbr/>Provider.<wbr/>get<wbr/>Camera<wbr/>Id<wbr/>List().<wbr/></p> 19242<p>[2] - The ANDROID_<wbr/>LOGICAL_<wbr/>MULTI_<wbr/>CAMERA_<wbr/>PHYSICAL_<wbr/>IDS lists,<wbr/> must not have common 19243 camera ids.<wbr/></p> 19244 </td> 19245 </tr> 19246 19247 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19248 <!-- end of entry --> 19249 19250 19251 <tr class="entry" id="static_android.request.availableRequestKeys"> 19252 <td class="entry_name 19253 " rowspan="5"> 19254 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 19255 </td> 19256 <td class="entry_type"> 19257 <span class="entry_type_name">int32</span> 19258 <span class="entry_type_container">x</span> 19259 19260 <span class="entry_type_array"> 19261 n 19262 </span> 19263 <span class="entry_type_visibility"> [ndk_public]</span> 19264 19265 19266 <span class="entry_type_hwlevel">[legacy] </span> 19267 19268 19269 19270 19271 </td> <!-- entry_type --> 19272 19273 <td class="entry_description"> 19274 <p>A list of all keys that the camera device has available 19275to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p> 19276 </td> 19277 19278 <td class="entry_units"> 19279 </td> 19280 19281 <td class="entry_range"> 19282 </td> 19283 19284 <td class="entry_hal_version"> 19285 <p>3.<wbr/>2</p> 19286 </td> 19287 19288 <td class="entry_tags"> 19289 </td> 19290 19291 </tr> 19292 <tr class="entries_header"> 19293 <th class="th_details" colspan="6">Details</th> 19294 </tr> 19295 <tr class="entry_cont"> 19296 <td class="entry_details" colspan="6"> 19297 <p>Attempting to set a key into a CaptureRequest that is not 19298listed here will result in an invalid request and will be rejected 19299by the camera device.<wbr/></p> 19300<p>This field can be used to query the feature set of a camera device 19301at a more granular level than capabilities.<wbr/> This is especially 19302important for optional keys that are not listed under any capability 19303in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 19304 </td> 19305 </tr> 19306 19307 <tr class="entries_header"> 19308 <th class="th_details" colspan="6">HAL Implementation Details</th> 19309 </tr> 19310 <tr class="entry_cont"> 19311 <td class="entry_details" colspan="6"> 19312 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 19313use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p> 19314<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 19315vendor extensions API and not against this field.<wbr/></p> 19316<p>The HAL must not consume any request tags that are not listed either 19317here or in the vendor tag list.<wbr/></p> 19318<p>The public camera2 API will always make the vendor tags visible 19319via 19320<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 19321 </td> 19322 </tr> 19323 19324 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19325 <!-- end of entry --> 19326 19327 19328 <tr class="entry" id="static_android.request.availableResultKeys"> 19329 <td class="entry_name 19330 " rowspan="5"> 19331 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 19332 </td> 19333 <td class="entry_type"> 19334 <span class="entry_type_name">int32</span> 19335 <span class="entry_type_container">x</span> 19336 19337 <span class="entry_type_array"> 19338 n 19339 </span> 19340 <span class="entry_type_visibility"> [ndk_public]</span> 19341 19342 19343 <span class="entry_type_hwlevel">[legacy] </span> 19344 19345 19346 19347 19348 </td> <!-- entry_type --> 19349 19350 <td class="entry_description"> 19351 <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> 19352 </td> 19353 19354 <td class="entry_units"> 19355 </td> 19356 19357 <td class="entry_range"> 19358 </td> 19359 19360 <td class="entry_hal_version"> 19361 <p>3.<wbr/>2</p> 19362 </td> 19363 19364 <td class="entry_tags"> 19365 </td> 19366 19367 </tr> 19368 <tr class="entries_header"> 19369 <th class="th_details" colspan="6">Details</th> 19370 </tr> 19371 <tr class="entry_cont"> 19372 <td class="entry_details" colspan="6"> 19373 <p>Attempting to get a key from a CaptureResult that is not 19374listed here will always return a <code>null</code> value.<wbr/> Getting a key from 19375a CaptureResult that is listed here will generally never return a <code>null</code> 19376value.<wbr/></p> 19377<p>The following keys may return <code>null</code> unless they are enabled:</p> 19378<ul> 19379<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> 19380</ul> 19381<p>(Those sometimes-null keys will nevertheless be listed here 19382if they are available.<wbr/>)</p> 19383<p>This field can be used to query the feature set of a camera device 19384at a more granular level than capabilities.<wbr/> This is especially 19385important for optional keys that are not listed under any capability 19386in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 19387 </td> 19388 </tr> 19389 19390 <tr class="entries_header"> 19391 <th class="th_details" colspan="6">HAL Implementation Details</th> 19392 </tr> 19393 <tr class="entry_cont"> 19394 <td class="entry_details" colspan="6"> 19395 <p>Tags listed here must always have an entry in the result metadata,<wbr/> 19396even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 19397matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 19398<p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 19399use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p> 19400<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 19401vendor extensions API and not against this field.<wbr/></p> 19402<p>The HAL must not produce any result tags that are not listed either 19403here or in the vendor tag list.<wbr/></p> 19404<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> 19405 </td> 19406 </tr> 19407 19408 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19409 <!-- end of entry --> 19410 19411 19412 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 19413 <td class="entry_name 19414 " rowspan="5"> 19415 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 19416 </td> 19417 <td class="entry_type"> 19418 <span class="entry_type_name">int32</span> 19419 <span class="entry_type_container">x</span> 19420 19421 <span class="entry_type_array"> 19422 n 19423 </span> 19424 <span class="entry_type_visibility"> [ndk_public]</span> 19425 19426 19427 <span class="entry_type_hwlevel">[legacy] </span> 19428 19429 19430 19431 19432 </td> <!-- entry_type --> 19433 19434 <td class="entry_description"> 19435 <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> 19436 </td> 19437 19438 <td class="entry_units"> 19439 </td> 19440 19441 <td class="entry_range"> 19442 </td> 19443 19444 <td class="entry_hal_version"> 19445 <p>3.<wbr/>2</p> 19446 </td> 19447 19448 <td class="entry_tags"> 19449 </td> 19450 19451 </tr> 19452 <tr class="entries_header"> 19453 <th class="th_details" colspan="6">Details</th> 19454 </tr> 19455 <tr class="entry_cont"> 19456 <td class="entry_details" colspan="6"> 19457 <p>This entry follows the same rules as 19458<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 19459CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 19460details.<wbr/></p> 19461 </td> 19462 </tr> 19463 19464 <tr class="entries_header"> 19465 <th class="th_details" colspan="6">HAL Implementation Details</th> 19466 </tr> 19467 <tr class="entry_cont"> 19468 <td class="entry_details" colspan="6"> 19469 <p>Keys listed here must always have an entry in the static info metadata,<wbr/> 19470even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 19471matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 19472<p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use 19473the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p> 19474<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 19475vendor extensions API and not against this field.<wbr/></p> 19476<p>The HAL must not have any tags in its static info that are not listed 19477either here or in the vendor tag list.<wbr/></p> 19478<p>The public camera2 API will always make the vendor tags visible 19479via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p> 19480 </td> 19481 </tr> 19482 19483 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19484 <!-- end of entry --> 19485 19486 19487 <tr class="entry" id="static_android.request.availableSessionKeys"> 19488 <td class="entry_name 19489 " rowspan="5"> 19490 android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys 19491 </td> 19492 <td class="entry_type"> 19493 <span class="entry_type_name">int32</span> 19494 <span class="entry_type_container">x</span> 19495 19496 <span class="entry_type_array"> 19497 n 19498 </span> 19499 <span class="entry_type_visibility"> [ndk_public]</span> 19500 19501 19502 <span class="entry_type_hwlevel">[legacy] </span> 19503 19504 19505 19506 19507 </td> <!-- entry_type --> 19508 19509 <td class="entry_description"> 19510 <p>A subset of the available request keys that the camera device 19511can pass as part of the capture session initialization.<wbr/></p> 19512 </td> 19513 19514 <td class="entry_units"> 19515 </td> 19516 19517 <td class="entry_range"> 19518 </td> 19519 19520 <td class="entry_hal_version"> 19521 <p>3.<wbr/>3</p> 19522 </td> 19523 19524 <td class="entry_tags"> 19525 </td> 19526 19527 </tr> 19528 <tr class="entries_header"> 19529 <th class="th_details" colspan="6">Details</th> 19530 </tr> 19531 <tr class="entry_cont"> 19532 <td class="entry_details" colspan="6"> 19533 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which 19534contains a list of keys that are difficult to apply per-frame and 19535can result in unexpected delays when modified during the capture session 19536lifetime.<wbr/> Typical examples include parameters that require a 19537time-consuming hardware re-configuration or internal camera pipeline 19538change.<wbr/> For performance reasons we advise clients to pass their initial 19539values as part of 19540<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/> 19541Once the camera capture session is enabled it is also recommended to avoid 19542changing them from their initial values set in 19543<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/> 19544Control over session parameters can still be exerted in capture requests 19545but clients should be aware and expect delays during their application.<wbr/> 19546An example usage scenario could look like this:</p> 19547<ul> 19548<li>The camera client starts by quering the session parameter key list via 19549 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li> 19550<li>Before triggering the capture session create sequence,<wbr/> a capture request 19551 must be built via 19552 <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a> 19553 using an appropriate template matching the particular use case.<wbr/></li> 19554<li>The client should go over the list of session parameters and check 19555 whether some of the keys listed matches with the parameters that 19556 they intend to modify as part of the first capture request.<wbr/></li> 19557<li>If there is no such match,<wbr/> the capture request can be passed 19558 unmodified to 19559 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li> 19560<li>If matches do exist,<wbr/> the client should update the respective values 19561 and pass the request to 19562 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li> 19563<li>After the capture session initialization completes the session parameter 19564 key list can continue to serve as reference when posting or updating 19565 further requests.<wbr/> As mentioned above further changes to session 19566 parameters should ideally be avoided,<wbr/> if updates are necessary 19567 however clients could expect a delay/<wbr/>glitch during the 19568 parameter switch.<wbr/></li> 19569</ul> 19570 </td> 19571 </tr> 19572 19573 <tr class="entries_header"> 19574 <th class="th_details" colspan="6">HAL Implementation Details</th> 19575 </tr> 19576 <tr class="entry_cont"> 19577 <td class="entry_details" colspan="6"> 19578 <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 19579speed mode is enabled,<wbr/> then only modifications of the maximum framerate value will be 19580monitored by the framework and can trigger camera re-configuration.<wbr/> For more information 19581about framerate ranges during constrained high speed sessions see 19582<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 19583Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 19584use the extensions C api (refer to 19585android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p> 19586<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 19587vendor extensions API and not against this field.<wbr/></p> 19588<p>The HAL must not consume any request tags in the session parameters that 19589are not listed either here or in the vendor tag list.<wbr/></p> 19590<p>The public camera2 API will always make the vendor tags visible 19591via 19592<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p> 19593 </td> 19594 </tr> 19595 19596 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19597 <!-- end of entry --> 19598 19599 19600 <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys"> 19601 <td class="entry_name 19602 " rowspan="5"> 19603 android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys 19604 </td> 19605 <td class="entry_type"> 19606 <span class="entry_type_name">int32</span> 19607 <span class="entry_type_container">x</span> 19608 19609 <span class="entry_type_array"> 19610 n 19611 </span> 19612 <span class="entry_type_visibility"> [ndk_public]</span> 19613 19614 19615 <span class="entry_type_hwlevel">[limited] </span> 19616 19617 19618 19619 19620 </td> <!-- entry_type --> 19621 19622 <td class="entry_description"> 19623 <p>A subset of the available request keys that can be overridden for 19624physical devices backing a logical multi-camera.<wbr/></p> 19625 </td> 19626 19627 <td class="entry_units"> 19628 </td> 19629 19630 <td class="entry_range"> 19631 </td> 19632 19633 <td class="entry_hal_version"> 19634 <p>3.<wbr/>3</p> 19635 </td> 19636 19637 <td class="entry_tags"> 19638 </td> 19639 19640 </tr> 19641 <tr class="entries_header"> 19642 <th class="th_details" colspan="6">Details</th> 19643 </tr> 19644 <tr class="entry_cont"> 19645 <td class="entry_details" colspan="6"> 19646 <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 19647of keys that can be overridden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/> 19648The respective value of such request key can be obtained by calling 19649<a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain 19650individual physical device requests must be built via 19651<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p> 19652 </td> 19653 </tr> 19654 19655 <tr class="entries_header"> 19656 <th class="th_details" colspan="6">HAL Implementation Details</th> 19657 </tr> 19658 <tr class="entry_cont"> 19659 <td class="entry_details" colspan="6"> 19660 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 19661use the extensions C api (refer to 19662android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more 19663details).<wbr/></p> 19664<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 19665vendor extensions API and not against this field.<wbr/></p> 19666<p>The HAL must not consume any request tags in the session parameters that 19667are not listed either here or in the vendor tag list.<wbr/></p> 19668<p>There should be no overlap between this set of keys and the available session keys 19669<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along 19670with any other controls that can have impact on the dual-camera sync.<wbr/></p> 19671<p>The public camera2 API will always make the vendor tags visible 19672via 19673<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p> 19674 </td> 19675 </tr> 19676 19677 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19678 <!-- end of entry --> 19679 19680 19681 <tr class="entry" id="static_android.request.characteristicKeysNeedingPermission"> 19682 <td class="entry_name 19683 " rowspan="5"> 19684 android.<wbr/>request.<wbr/>characteristic<wbr/>Keys<wbr/>Needing<wbr/>Permission 19685 </td> 19686 <td class="entry_type"> 19687 <span class="entry_type_name">int32</span> 19688 <span class="entry_type_container">x</span> 19689 19690 <span class="entry_type_array"> 19691 n 19692 </span> 19693 <span class="entry_type_visibility"> [hidden]</span> 19694 19695 19696 <span class="entry_type_hwlevel">[legacy] </span> 19697 19698 19699 19700 19701 </td> <!-- entry_type --> 19702 19703 <td class="entry_description"> 19704 <p>A list of camera characteristics keys that are only available 19705in case the camera client has camera permission.<wbr/></p> 19706 </td> 19707 19708 <td class="entry_units"> 19709 </td> 19710 19711 <td class="entry_range"> 19712 </td> 19713 19714 <td class="entry_hal_version"> 19715 <p>3.<wbr/>4</p> 19716 </td> 19717 19718 <td class="entry_tags"> 19719 </td> 19720 19721 </tr> 19722 <tr class="entries_header"> 19723 <th class="th_details" colspan="6">Details</th> 19724 </tr> 19725 <tr class="entry_cont"> 19726 <td class="entry_details" colspan="6"> 19727 <p>The entry contains a subset of 19728<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a> that require camera clients 19729to acquire the <a href="https://developer.android.com/reference/android/Manifest/permission.html#CAMERA">permission#CAMERA</a> permission before calling 19730<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/> If the 19731permission is not held by the camera client,<wbr/> then the values of the repsective properties 19732will not be present in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 19733 </td> 19734 </tr> 19735 19736 <tr class="entries_header"> 19737 <th class="th_details" colspan="6">HAL Implementation Details</th> 19738 </tr> 19739 <tr class="entry_cont"> 19740 <td class="entry_details" colspan="6"> 19741 <p>Do not set this property directly,<wbr/> camera service will overwrite any previous values.<wbr/></p> 19742 </td> 19743 </tr> 19744 19745 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19746 <!-- end of entry --> 19747 19748 19749 19750 <!-- end of kind --> 19751 </tbody> 19752 <tr><td colspan="7" class="kind">dynamic</td></tr> 19753 19754 <thead class="entries_header"> 19755 <tr> 19756 <th class="th_name">Property Name</th> 19757 <th class="th_type">Type</th> 19758 <th class="th_description">Description</th> 19759 <th class="th_units">Units</th> 19760 <th class="th_range">Range</th> 19761 <th class="th_hal_version">Initial HIDL HAL version</th> 19762 <th class="th_tags">Tags</th> 19763 </tr> 19764 </thead> 19765 19766 <tbody> 19767 19768 19769 19770 19771 19772 19773 19774 19775 19776 19777 <tr class="entry" id="dynamic_android.request.frameCount"> 19778 <td class="entry_name 19779 entry_name_deprecated 19780 " rowspan="3"> 19781 android.<wbr/>request.<wbr/>frame<wbr/>Count 19782 </td> 19783 <td class="entry_type"> 19784 <span class="entry_type_name">int32</span> 19785 19786 <span class="entry_type_visibility"> [hidden]</span> 19787 19788 19789 19790 <span class="entry_type_deprecated">[deprecated] </span> 19791 19792 19793 19794 </td> <!-- entry_type --> 19795 19796 <td class="entry_description"> 19797 <p>A frame counter set by the framework.<wbr/> This value monotonically 19798increases with every new result (that is,<wbr/> each new result has a unique 19799frameCount value).<wbr/></p> 19800 </td> 19801 19802 <td class="entry_units"> 19803 count of frames 19804 </td> 19805 19806 <td class="entry_range"> 19807 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 19808 <p>> 0</p> 19809 </td> 19810 19811 <td class="entry_hal_version"> 19812 <p>3.<wbr/>2</p> 19813 </td> 19814 19815 <td class="entry_tags"> 19816 </td> 19817 19818 </tr> 19819 <tr class="entries_header"> 19820 <th class="th_details" colspan="6">Details</th> 19821 </tr> 19822 <tr class="entry_cont"> 19823 <td class="entry_details" colspan="6"> 19824 <p>Reset on release()</p> 19825 </td> 19826 </tr> 19827 19828 19829 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19830 <!-- end of entry --> 19831 19832 19833 <tr class="entry" id="dynamic_android.request.id"> 19834 <td class="entry_name 19835 " rowspan="1"> 19836 android.<wbr/>request.<wbr/>id 19837 </td> 19838 <td class="entry_type"> 19839 <span class="entry_type_name">int32</span> 19840 19841 <span class="entry_type_visibility"> [hidden]</span> 19842 19843 19844 19845 19846 19847 19848 </td> <!-- entry_type --> 19849 19850 <td class="entry_description"> 19851 <p>An application-specified ID for the current 19852request.<wbr/> Must be maintained unchanged in output 19853frame</p> 19854 </td> 19855 19856 <td class="entry_units"> 19857 arbitrary integer assigned by application 19858 </td> 19859 19860 <td class="entry_range"> 19861 <p>Any int</p> 19862 </td> 19863 19864 <td class="entry_hal_version"> 19865 <p>3.<wbr/>2</p> 19866 </td> 19867 19868 <td class="entry_tags"> 19869 <ul class="entry_tags"> 19870 <li><a href="#tag_V1">V1</a></li> 19871 </ul> 19872 </td> 19873 19874 </tr> 19875 19876 19877 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19878 <!-- end of entry --> 19879 19880 19881 <tr class="entry" id="dynamic_android.request.metadataMode"> 19882 <td class="entry_name 19883 " rowspan="1"> 19884 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 19885 </td> 19886 <td class="entry_type"> 19887 <span class="entry_type_name entry_type_name_enum">byte</span> 19888 19889 <span class="entry_type_visibility"> [system]</span> 19890 19891 19892 19893 19894 19895 <ul class="entry_type_enum"> 19896 <li> 19897 <span class="entry_type_enum_name">NONE (v3.2)</span> 19898 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 19899for application-bound buffer data.<wbr/> If no 19900application-bound streams exist,<wbr/> no frame should be 19901placed in the output frame queue.<wbr/> If such streams 19902exist,<wbr/> a frame should be placed on the output queue 19903with null metadata but with the necessary output buffer 19904information.<wbr/> Timestamp information should still be 19905included with any output stream buffers</p></span> 19906 </li> 19907 <li> 19908 <span class="entry_type_enum_name">FULL (v3.2)</span> 19909 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 19910only be produced if they are separately 19911enabled</p></span> 19912 </li> 19913 </ul> 19914 19915 </td> <!-- entry_type --> 19916 19917 <td class="entry_description"> 19918 <p>How much metadata to produce on 19919output</p> 19920 </td> 19921 19922 <td class="entry_units"> 19923 </td> 19924 19925 <td class="entry_range"> 19926 </td> 19927 19928 <td class="entry_hal_version"> 19929 <p>3.<wbr/>2</p> 19930 </td> 19931 19932 <td class="entry_tags"> 19933 <ul class="entry_tags"> 19934 <li><a href="#tag_FUTURE">FUTURE</a></li> 19935 </ul> 19936 </td> 19937 19938 </tr> 19939 19940 19941 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19942 <!-- end of entry --> 19943 19944 19945 <tr class="entry" id="dynamic_android.request.outputStreams"> 19946 <td class="entry_name 19947 entry_name_deprecated 19948 " rowspan="3"> 19949 android.<wbr/>request.<wbr/>output<wbr/>Streams 19950 </td> 19951 <td class="entry_type"> 19952 <span class="entry_type_name">int32</span> 19953 <span class="entry_type_container">x</span> 19954 19955 <span class="entry_type_array"> 19956 n 19957 </span> 19958 <span class="entry_type_visibility"> [system]</span> 19959 19960 19961 19962 <span class="entry_type_deprecated">[deprecated] </span> 19963 19964 19965 19966 </td> <!-- entry_type --> 19967 19968 <td class="entry_description"> 19969 <p>Lists which camera output streams image data 19970from this capture must be sent to</p> 19971 </td> 19972 19973 <td class="entry_units"> 19974 List of camera stream IDs 19975 </td> 19976 19977 <td class="entry_range"> 19978 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 19979 <p>List must only include streams that have been 19980created</p> 19981 </td> 19982 19983 <td class="entry_hal_version"> 19984 <p>3.<wbr/>2</p> 19985 </td> 19986 19987 <td class="entry_tags"> 19988 <ul class="entry_tags"> 19989 <li><a href="#tag_HAL2">HAL2</a></li> 19990 </ul> 19991 </td> 19992 19993 </tr> 19994 <tr class="entries_header"> 19995 <th class="th_details" colspan="6">Details</th> 19996 </tr> 19997 <tr class="entry_cont"> 19998 <td class="entry_details" colspan="6"> 19999 <p>If no output streams are listed,<wbr/> then the image 20000data should simply be discarded.<wbr/> The image data must 20001still be captured for metadata and statistics production,<wbr/> 20002and the lens and flash must operate as requested.<wbr/></p> 20003 </td> 20004 </tr> 20005 20006 20007 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20008 <!-- end of entry --> 20009 20010 20011 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 20012 <td class="entry_name 20013 " rowspan="5"> 20014 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 20015 </td> 20016 <td class="entry_type"> 20017 <span class="entry_type_name">byte</span> 20018 20019 <span class="entry_type_visibility"> [public]</span> 20020 20021 20022 <span class="entry_type_hwlevel">[legacy] </span> 20023 20024 20025 20026 20027 </td> <!-- entry_type --> 20028 20029 <td class="entry_description"> 20030 <p>Specifies the number of pipeline stages the frame went 20031through from when it was exposed to when the final completed result 20032was available to the framework.<wbr/></p> 20033 </td> 20034 20035 <td class="entry_units"> 20036 </td> 20037 20038 <td class="entry_range"> 20039 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 20040 </td> 20041 20042 <td class="entry_hal_version"> 20043 <p>3.<wbr/>2</p> 20044 </td> 20045 20046 <td class="entry_tags"> 20047 </td> 20048 20049 </tr> 20050 <tr class="entries_header"> 20051 <th class="th_details" colspan="6">Details</th> 20052 </tr> 20053 <tr class="entry_cont"> 20054 <td class="entry_details" colspan="6"> 20055 <p>Depending on what settings are used in the request,<wbr/> and 20056what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 20057and some pipeline stages skipped.<wbr/></p> 20058<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 20059 </td> 20060 </tr> 20061 20062 <tr class="entries_header"> 20063 <th class="th_details" colspan="6">HAL Implementation Details</th> 20064 </tr> 20065 <tr class="entry_cont"> 20066 <td class="entry_details" colspan="6"> 20067 <p>This value must always represent the accurate count of how many 20068pipeline stages were actually used.<wbr/></p> 20069 </td> 20070 </tr> 20071 20072 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20073 <!-- end of entry --> 20074 20075 20076 20077 <!-- end of kind --> 20078 </tbody> 20079 20080 <!-- end of section --> 20081 <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr> 20082 20083 20084 <tr><td colspan="7" class="kind">controls</td></tr> 20085 20086 <thead class="entries_header"> 20087 <tr> 20088 <th class="th_name">Property Name</th> 20089 <th class="th_type">Type</th> 20090 <th class="th_description">Description</th> 20091 <th class="th_units">Units</th> 20092 <th class="th_range">Range</th> 20093 <th class="th_hal_version">Initial HIDL HAL version</th> 20094 <th class="th_tags">Tags</th> 20095 </tr> 20096 </thead> 20097 20098 <tbody> 20099 20100 20101 20102 20103 20104 20105 20106 20107 20108 20109 <tr class="entry" id="controls_android.scaler.cropRegion"> 20110 <td class="entry_name 20111 " rowspan="5"> 20112 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 20113 </td> 20114 <td class="entry_type"> 20115 <span class="entry_type_name">int32</span> 20116 <span class="entry_type_container">x</span> 20117 20118 <span class="entry_type_array"> 20119 4 20120 </span> 20121 <span class="entry_type_visibility"> [public as rectangle]</span> 20122 20123 20124 <span class="entry_type_hwlevel">[legacy] </span> 20125 20126 20127 20128 20129 </td> <!-- entry_type --> 20130 20131 <td class="entry_description"> 20132 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 20133 </td> 20134 20135 <td class="entry_units"> 20136 Pixel coordinates relative to 20137 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 20138 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction 20139 capability and mode 20140 </td> 20141 20142 <td class="entry_range"> 20143 </td> 20144 20145 <td class="entry_hal_version"> 20146 <p>3.<wbr/>2</p> 20147 </td> 20148 20149 <td class="entry_tags"> 20150 <ul class="entry_tags"> 20151 <li><a href="#tag_BC">BC</a></li> 20152 </ul> 20153 </td> 20154 20155 </tr> 20156 <tr class="entries_header"> 20157 <th class="th_details" colspan="6">Details</th> 20158 </tr> 20159 <tr class="entry_cont"> 20160 <td class="entry_details" colspan="6"> 20161 <p>This control can be used to implement digital zoom.<wbr/></p> 20162<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 20163system 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 20164the top-left pixel of the active array.<wbr/></p> 20165<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate system 20166depends on the mode being set.<wbr/> When the distortion correction mode is OFF,<wbr/> the 20167coordinate 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/> 201680)</code> being the top-left pixel of the pre-correction active array.<wbr/> When the distortion 20169correction mode is not OFF,<wbr/> the coordinate system follows 20170<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 20171active array.<wbr/></p> 20172<p>Output streams use this rectangle to produce their output,<wbr/> cropping to a smaller region 20173if necessary to maintain the stream's aspect ratio,<wbr/> then scaling the sensor input to 20174match the output's configured resolution.<wbr/></p> 20175<p>The crop region is applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV) 20176conversion.<wbr/> Since raw streams (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 20177croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 20178<p>For non-raw streams,<wbr/> any additional per-stream cropping will be done to maximize the 20179final pixel area of the stream.<wbr/></p> 20180<p>For example,<wbr/> if the crop region is set to a 4:3 aspect ratio,<wbr/> then 4:3 streams will use 20181the exact crop region.<wbr/> 16:9 streams will further crop vertically (letterbox).<wbr/></p> 20182<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 outputs will crop horizontally 20183(pillarbox),<wbr/> and 16:9 streams will match exactly.<wbr/> These additional crops will be 20184centered within the crop region.<wbr/></p> 20185<p>To illustrate,<wbr/> here are several scenarios of different crop regions and output streams,<wbr/> 20186for a hypothetical camera device with an active array of size <code>(2000,<wbr/>1500)</code>.<wbr/> Note that 20187several of these examples use non-centered crop regions for ease of illustration; such 20188regions are only supported on devices with FREEFORM capability 20189(<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 20190rules work otherwise.<wbr/></p> 20191<ul> 20192<li>Camera Configuration:<ul> 20193<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li> 20194<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li> 20195<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li> 20196</ul> 20197</li> 20198<li>Case #1: 4:3 crop region with 2x digital zoom<ul> 20199<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code></li> 20200<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-ratio.png"/></li> 20201<li><code>640x480</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code> (equal to crop region)</li> 20202<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li> 20203</ul> 20204</li> 20205<li>Case #2: 16:9 crop region with ~1.<wbr/>5x digital zoom.<wbr/><ul> 20206<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code></li> 20207<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-169-ratio.png"/></li> 20208<li><code>640x480</code> stream source area: <code>(666,<wbr/> 375,<wbr/> 1666,<wbr/> 1125)</code> (pillarboxed)</li> 20209<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code> (equal to crop region)</li> 20210</ul> 20211</li> 20212<li>Case #3: 1:1 crop region with ~2.<wbr/>6x digital zoom.<wbr/><ul> 20213<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1250,<wbr/> 1125)</code></li> 20214<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-11-ratio.png"/></li> 20215<li><code>640x480</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1250,<wbr/> 1031)</code> (letterboxed)</li> 20216<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 543,<wbr/> 1250,<wbr/> 957)</code> (letterboxed)</li> 20217</ul> 20218</li> 20219<li>Case #4: Replace <code>640x480</code> stream with <code>1024x1024</code> stream,<wbr/> with 4:3 crop region:<ul> 20220<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code></li> 20221<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> 20222<li><code>1024x1024</code> stream source area: <code>(625,<wbr/> 375,<wbr/> 1375,<wbr/> 1125)</code> (pillarboxed)</li> 20223<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li> 20224<li>Note that in this case,<wbr/> neither of the two outputs is a subset of the other,<wbr/> with 20225 each containing image data the other doesn't have.<wbr/></li> 20226</ul> 20227</li> 20228</ul> 20229<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 20230of the crop region cannot be set to be smaller than 20231<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 20232<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> 20233<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 20234and height of the crop region cannot be set to be smaller than 20235<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> 20236and 20237<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/> 20238respectively.<wbr/></p> 20239<p>The camera device may adjust the crop region to account for rounding and other hardware 20240requirements; the final crop region used will be included in the output capture result.<wbr/></p> 20241<p>The camera sensor output aspect ratio depends on factors such as output stream 20242combination 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 20243this control.<wbr/> And the camera device will treat different camera sensor output sizes 20244(potentially with in-sensor crop) as the same crop of 20245<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 20246maximum crop region always maps to the same aspect ratio or field of view for the 20247sensor output.<wbr/></p> 20248<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> 20249to take advantage of better support for zoom with logical multi-camera.<wbr/> The benefits 20250include better precision with optical-digital zoom combination,<wbr/> and ability to do 20251zoom-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 20252the capture request should be left as the default activeArray size.<wbr/> The 20253coordinate system is post-zoom,<wbr/> meaning that the activeArraySize or 20254preCorrectionActiveArraySize covers the camera device's field of view "after" zoom.<wbr/> See 20255<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/></p> 20256<p>For camera devices with the 20257<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> 20258capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 20259<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 20260coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 20261<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> 20262 </td> 20263 </tr> 20264 20265 <tr class="entries_header"> 20266 <th class="th_details" colspan="6">HAL Implementation Details</th> 20267 </tr> 20268 <tr class="entry_cont"> 20269 <td class="entry_details" colspan="6"> 20270 <p>The output streams must maintain square pixels at all 20271times,<wbr/> no matter what the relative aspect ratios of the 20272crop region and the stream are.<wbr/> Negative values for 20273corner are allowed for raw output if full pixel array is 20274larger than active pixel array.<wbr/> Width and height may be 20275rounded to nearest larger supportable width,<wbr/> especially 20276for raw output,<wbr/> where only a few fixed scales may be 20277possible.<wbr/></p> 20278<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 20279ratio via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and change the coordinate system such that 20280<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 20281represent the camera field-of-view after zoom.<wbr/> see <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for 20282details.<wbr/></p> 20283<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 20284 </td> 20285 </tr> 20286 20287 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20288 <!-- end of entry --> 20289 20290 20291 <tr class="entry" id="controls_android.scaler.rotateAndCrop"> 20292 <td class="entry_name 20293 " rowspan="5"> 20294 android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop 20295 </td> 20296 <td class="entry_type"> 20297 <span class="entry_type_name entry_type_name_enum">byte</span> 20298 20299 <span class="entry_type_visibility"> [public]</span> 20300 20301 20302 20303 20304 20305 <ul class="entry_type_enum"> 20306 <li> 20307 <span class="entry_type_enum_name">NONE (v3.5)</span> 20308 <span class="entry_type_enum_notes"><p>No rotate and crop is applied.<wbr/> Processed outputs are in the sensor orientation.<wbr/></p></span> 20309 </li> 20310 <li> 20311 <span class="entry_type_enum_name">90 (v3.5)</span> 20312 <span class="entry_type_enum_notes"><p>Processed images are rotated by 90 degrees clockwise,<wbr/> and then cropped 20313to the original aspect ratio.<wbr/></p></span> 20314 </li> 20315 <li> 20316 <span class="entry_type_enum_name">180 (v3.5)</span> 20317 <span class="entry_type_enum_notes"><p>Processed images are rotated by 180 degrees.<wbr/> Since the aspect ratio does not 20318change,<wbr/> no cropping is performed.<wbr/></p></span> 20319 </li> 20320 <li> 20321 <span class="entry_type_enum_name">270 (v3.5)</span> 20322 <span class="entry_type_enum_notes"><p>Processed images are rotated by 270 degrees clockwise,<wbr/> and then cropped 20323to the original aspect ratio.<wbr/></p></span> 20324 </li> 20325 <li> 20326 <span class="entry_type_enum_name">AUTO (v3.5)</span> 20327 <span class="entry_type_enum_notes"><p>The camera API automatically selects the best concrete value for 20328rotate-and-crop based on the application's support for resizability and the current 20329multi-window mode.<wbr/></p> 20330<p>If the application does not support resizing but the display mode for its main 20331Activity is not in a typical orientation,<wbr/> the camera API will set <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> 20332or some other supported rotation value,<wbr/> depending on device configuration,<wbr/> 20333to ensure preview and captured images are correctly shown to the user.<wbr/> Otherwise,<wbr/> 20334<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> will be selected.<wbr/></p> 20335<p>When a value other than NONE is selected,<wbr/> several metadata fields will also be parsed 20336differently to ensure that coordinates are correctly handled for features like drawing 20337face detection boxes or passing in tap-to-focus coordinates.<wbr/> The camera API will 20338convert positions in the active array coordinate system to/<wbr/>from the cropped-and-rotated 20339coordinate system to make the operation transparent for applications.<wbr/></p> 20340<p>No coordinate mapping will be done when the application selects a non-AUTO mode.<wbr/></p></span> 20341 </li> 20342 </ul> 20343 20344 </td> <!-- entry_type --> 20345 20346 <td class="entry_description"> 20347 <p>Whether a rotation-and-crop operation is applied to processed 20348outputs from the camera.<wbr/></p> 20349 </td> 20350 20351 <td class="entry_units"> 20352 </td> 20353 20354 <td class="entry_range"> 20355 <p><a href="#static_android.scaler.availableRotateAndCropModes">android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes</a></p> 20356 </td> 20357 20358 <td class="entry_hal_version"> 20359 <p>3.<wbr/>5</p> 20360 </td> 20361 20362 <td class="entry_tags"> 20363 </td> 20364 20365 </tr> 20366 <tr class="entries_header"> 20367 <th class="th_details" colspan="6">Details</th> 20368 </tr> 20369 <tr class="entry_cont"> 20370 <td class="entry_details" colspan="6"> 20371 <p>This control is primarily intended to help camera applications with no support for 20372multi-window modes to work correctly on devices where multi-window scenarios are 20373unavoidable,<wbr/> such as foldables or other devices with variable display geometry or more 20374free-form window placement (such as laptops,<wbr/> which often place portrait-orientation apps 20375in landscape with pillarboxing).<wbr/></p> 20376<p>If supported,<wbr/> the default value is <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code>,<wbr/> which allows the camera API 20377to enable backwards-compatibility support for applications that do not support resizing 20378/<wbr/> multi-window modes,<wbr/> when the device is in fact in a multi-window mode (such as inset 20379portrait on laptops,<wbr/> or on a foldable device in some fold states).<wbr/> In addition,<wbr/> 20380<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 20381is supported by the device.<wbr/> If not supported,<wbr/> devices API level 30 or higher will always 20382list only <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/></p> 20383<p>When <code>CROP_<wbr/>AUTO</code> is in use,<wbr/> and the camera API activates backward-compatibility mode,<wbr/> 20384several metadata fields will also be parsed differently to ensure that coordinates are 20385correctly handled for features like drawing face detection boxes or passing in 20386tap-to-focus coordinates.<wbr/> The camera API will convert positions in the active array 20387coordinate system to/<wbr/>from the cropped-and-rotated coordinate system to make the 20388operation transparent for applications.<wbr/> The following controls are affected:</p> 20389<ul> 20390<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 20391<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 20392<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 20393<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li> 20394</ul> 20395<p>Capture results will contain the actual value selected by the API; 20396<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> will never be seen in a capture result.<wbr/></p> 20397<p>Applications can also select their preferred cropping mode,<wbr/> either to opt out of the 20398backwards-compatibility treatment,<wbr/> or to use the cropping feature themselves as needed.<wbr/> 20399In this case,<wbr/> no coordinate translation will be done automatically,<wbr/> and all controls 20400will continue to use the normal active array coordinates.<wbr/></p> 20401<p>Cropping and rotating is done after the application of digital zoom (via either 20402<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 20403output is further cropped and scaled.<wbr/> It only affects processed outputs such as 20404YUV,<wbr/> PRIVATE,<wbr/> and JPEG.<wbr/> It has no effect on RAW outputs.<wbr/></p> 20405<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 20406view.<wbr/> For example,<wbr/> with a 4:3 aspect ratio output of 1600x1200,<wbr/> <code>CROP_<wbr/>90</code> will still 20407produce 1600x1200 output,<wbr/> but these buffers are cropped from a vertical 3:4 slice at the 20408center of the 4:3 area,<wbr/> then rotated to be 4:3,<wbr/> and then upscaled to 1600x1200.<wbr/> Only 2040956.<wbr/>25% of the original FOV is still visible.<wbr/> In general,<wbr/> for an aspect ratio of <code>w:h</code>,<wbr/> 20410the crop and rotate operation leaves <code>(h/<wbr/>w)^2</code> of the field of view visible.<wbr/> For 16:9,<wbr/> 20411this is ~31.<wbr/>6%.<wbr/></p> 20412<p>As a visual example,<wbr/> the figure below shows the effect of <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> on the 20413outputs for the following parameters:</p> 20414<ul> 20415<li>Sensor active array: <code>2000x1500</code></li> 20416<li>Crop region: top-left: <code>(500,<wbr/> 375)</code>,<wbr/> size: <code>(1000,<wbr/> 750)</code> (4:3 aspect ratio)</li> 20417<li>Output streams: YUV <code>640x480</code> and YUV <code>1280x720</code></li> 20418<li><code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code></li> 20419</ul> 20420<p><img alt="Effect of ROTATE_AND_CROP_90" src="images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png"/></p> 20421<p>With these settings,<wbr/> the regions of the active array covered by the output streams are:</p> 20422<ul> 20423<li>640x480 stream crop: top-left: <code>(219,<wbr/> 375)</code>,<wbr/> size: <code>(562,<wbr/> 750)</code></li> 20424<li>1280x720 stream crop: top-left: <code>(289,<wbr/> 375)</code>,<wbr/> size: <code>(422,<wbr/> 750)</code></li> 20425</ul> 20426<p>Since the buffers are rotated,<wbr/> the buffers as seen by the application are:</p> 20427<ul> 20428<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> 20429<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> 20430</ul> 20431 </td> 20432 </tr> 20433 20434 <tr class="entries_header"> 20435 <th class="th_details" colspan="6">HAL Implementation Details</th> 20436 </tr> 20437 <tr class="entry_cont"> 20438 <td class="entry_details" colspan="6"> 20439 <p>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will never be sent to the HAL,<wbr/> though it must be set as the default 20440value in all the capture request templates by the HAL.<wbr/> The camera service will 20441translate AUTO to a specific rotation value based on the current application's 20442multi-window state and its support of resizability.<wbr/></p> 20443<p>The HAL also does not need to consider coordinate transforms for ROTATE_<wbr/>AND_<wbr/>CROP - all 20444capture request and result fields should be kept in the active array coordinate frame.<wbr/> 20445Any translation required to implement ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will be handled by the camera 20446service.<wbr/></p> 20447 </td> 20448 </tr> 20449 20450 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20451 <!-- end of entry --> 20452 20453 20454 <tr class="entry" id="controls_android.scaler.cropRegionSet"> 20455 <td class="entry_name 20456 " rowspan="3"> 20457 android.<wbr/>scaler.<wbr/>crop<wbr/>Region<wbr/>Set 20458 </td> 20459 <td class="entry_type"> 20460 <span class="entry_type_name entry_type_name_enum">byte</span> 20461 20462 <span class="entry_type_visibility"> [fwk_only as boolean]</span> 20463 20464 20465 20466 20467 20468 <ul class="entry_type_enum"> 20469 <li> 20470 <span class="entry_type_enum_name">FALSE (v3.2)</span> 20471 <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 20472camera client.<wbr/></p></span> 20473 </li> 20474 <li> 20475 <span class="entry_type_enum_name">TRUE (v3.2)</span> 20476 <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 20477client.<wbr/></p></span> 20478 </li> 20479 </ul> 20480 20481 </td> <!-- entry_type --> 20482 20483 <td class="entry_description"> 20484 <p>Framework-only private key which informs camera fwk that the scaler crop region 20485(<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) has been set by the client and it need 20486not 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> 20487 </td> 20488 20489 <td class="entry_units"> 20490 </td> 20491 20492 <td class="entry_range"> 20493 </td> 20494 20495 <td class="entry_hal_version"> 20496 <p>3.<wbr/>2</p> 20497 </td> 20498 20499 <td class="entry_tags"> 20500 </td> 20501 20502 </tr> 20503 <tr class="entries_header"> 20504 <th class="th_details" colspan="6">Details</th> 20505 </tr> 20506 <tr class="entry_cont"> 20507 <td class="entry_details" colspan="6"> 20508 <p>This must be set to TRUE by the camera2 java fwk when the camera client sets 20509<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 20510 </td> 20511 </tr> 20512 20513 20514 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20515 <!-- end of entry --> 20516 20517 20518 20519 <!-- end of kind --> 20520 </tbody> 20521 <tr><td colspan="7" class="kind">static</td></tr> 20522 20523 <thead class="entries_header"> 20524 <tr> 20525 <th class="th_name">Property Name</th> 20526 <th class="th_type">Type</th> 20527 <th class="th_description">Description</th> 20528 <th class="th_units">Units</th> 20529 <th class="th_range">Range</th> 20530 <th class="th_hal_version">Initial HIDL HAL version</th> 20531 <th class="th_tags">Tags</th> 20532 </tr> 20533 </thead> 20534 20535 <tbody> 20536 20537 20538 20539 20540 20541 20542 20543 20544 20545 20546 <tr class="entry" id="static_android.scaler.availableFormats"> 20547 <td class="entry_name 20548 entry_name_deprecated 20549 " rowspan="5"> 20550 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 20551 </td> 20552 <td class="entry_type"> 20553 <span class="entry_type_name entry_type_name_enum">int32</span> 20554 <span class="entry_type_container">x</span> 20555 20556 <span class="entry_type_array"> 20557 n 20558 </span> 20559 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 20560 20561 20562 20563 <span class="entry_type_deprecated">[deprecated] </span> 20564 20565 20566 <ul class="entry_type_enum"> 20567 <li> 20568 <span class="entry_type_enum_name">RAW16 (v3.2)</span> 20569 <span class="entry_type_enum_optional">[optional]</span> 20570 <span class="entry_type_enum_value">0x20</span> 20571 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 20572buffers with 16-bit pixels.<wbr/></p> 20573<p>Buffers of this format are typically expected to have a 20574Color Filter Array (CFA) layout,<wbr/> which is given in 20575<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with 20576CFAs that are not representable by a format in 20577<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not 20578use this format.<wbr/></p> 20579<p>Buffers of this format will also follow the constraints given for 20580RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 20581<p>This format is intended to give users access to the full contents 20582of the buffers coming directly from the image sensor prior to any 20583cropping or scaling operations,<wbr/> and all coordinate systems for 20584metadata used for this format are relative to the size of the 20585active region of the image sensor before any geometric distortion 20586correction has been applied (i.<wbr/>e.<wbr/> 20587<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 20588dimensions for this format are limited to the full dimensions of 20589the 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 20590<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 20591only supported output size).<wbr/></p> 20592<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 20593the full set of performance guarantees.<wbr/></p></span> 20594 </li> 20595 <li> 20596 <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span> 20597 <span class="entry_type_enum_optional">[optional]</span> 20598 <span class="entry_type_enum_value">0x24</span> 20599 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or 20600<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a> 20601as referred in public API) is a format for raw image buffers 20602coming from an image sensor.<wbr/></p> 20603<p>The actual structure of buffers of this format is 20604platform-specific,<wbr/> but must follow several constraints:</p> 20605<ol> 20606<li>No image post-processing operations may have been applied to 20607buffers of this type.<wbr/> These buffers contain raw image data coming 20608directly from the image sensor.<wbr/></li> 20609<li>If a buffer of this format is passed to the camera device for 20610reprocessing,<wbr/> the resulting images will be identical to the images 20611produced if the buffer had come directly from the sensor and was 20612processed with the same settings.<wbr/></li> 20613</ol> 20614<p>The intended use for this format is to allow access to the native 20615raw format buffers coming directly from the camera sensor without 20616any additional conversions or decrease in framerate.<wbr/></p> 20617<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 20618performance guarantees.<wbr/></p></span> 20619 </li> 20620 <li> 20621 <span class="entry_type_enum_name">YV12 (v3.2)</span> 20622 <span class="entry_type_enum_optional">[optional]</span> 20623 <span class="entry_type_enum_value">0x32315659</span> 20624 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 20625 </li> 20626 <li> 20627 <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span> 20628 <span class="entry_type_enum_optional">[optional]</span> 20629 <span class="entry_type_enum_value">0x11</span> 20630 <span class="entry_type_enum_notes"><p>NV21</p></span> 20631 </li> 20632 <li> 20633 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span> 20634 <span class="entry_type_enum_value">0x22</span> 20635 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 20636 </li> 20637 <li> 20638 <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span> 20639 <span class="entry_type_enum_value">0x23</span> 20640 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 20641 </li> 20642 <li> 20643 <span class="entry_type_enum_name">BLOB (v3.2)</span> 20644 <span class="entry_type_enum_value">0x21</span> 20645 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 20646 </li> 20647 <li> 20648 <span class="entry_type_enum_name">RAW10 (v3.4)</span> 20649 <span class="entry_type_enum_value">0x25</span> 20650 <span class="entry_type_enum_notes"><p>RAW10</p></span> 20651 </li> 20652 <li> 20653 <span class="entry_type_enum_name">RAW12 (v3.4)</span> 20654 <span class="entry_type_enum_value">0x26</span> 20655 <span class="entry_type_enum_notes"><p>RAW12</p></span> 20656 </li> 20657 <li> 20658 <span class="entry_type_enum_name">Y8 (v3.4)</span> 20659 <span class="entry_type_enum_value">0x20203859</span> 20660 <span class="entry_type_enum_notes"><p>Y8</p></span> 20661 </li> 20662 </ul> 20663 20664 </td> <!-- entry_type --> 20665 20666 <td class="entry_description"> 20667 <p>The list of image formats that are supported by this 20668camera device for output streams.<wbr/></p> 20669 </td> 20670 20671 <td class="entry_units"> 20672 </td> 20673 20674 <td class="entry_range"> 20675 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 20676 </td> 20677 20678 <td class="entry_hal_version"> 20679 <p>3.<wbr/>2</p> 20680 </td> 20681 20682 <td class="entry_tags"> 20683 <ul class="entry_tags"> 20684 <li><a href="#tag_BC">BC</a></li> 20685 </ul> 20686 </td> 20687 20688 </tr> 20689 <tr class="entries_header"> 20690 <th class="th_details" colspan="6">Details</th> 20691 </tr> 20692 <tr class="entry_cont"> 20693 <td class="entry_details" colspan="6"> 20694 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 20695<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 20696 </td> 20697 </tr> 20698 20699 <tr class="entries_header"> 20700 <th class="th_details" colspan="6">HAL Implementation Details</th> 20701 </tr> 20702 <tr class="entry_cont"> 20703 <td class="entry_details" colspan="6"> 20704 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 20705system/<wbr/>core/<wbr/>libsystem/<wbr/>include/<wbr/>system/<wbr/>graphics-base.<wbr/>h.<wbr/></p> 20706<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 20707gralloc module will select a format based on the usage flags provided 20708by the camera HAL device and the other endpoint of the stream.<wbr/> It is 20709usually used by preview and recording streams,<wbr/> where the application doesn't 20710need access the image data.<wbr/></p> 20711<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 20712needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/> For a MONOCHROME 20713camera device,<wbr/> the pixel value of Cb and Cr planes is 128.<wbr/></p> 20714<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 20715<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 20716recommended that any information used by the camera device when 20717processing images is fully expressed by the result metadata 20718for that image buffer.<wbr/></p> 20719 </td> 20720 </tr> 20721 20722 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20723 <!-- end of entry --> 20724 20725 20726 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 20727 <td class="entry_name 20728 entry_name_deprecated 20729 " rowspan="3"> 20730 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 20731 </td> 20732 <td class="entry_type"> 20733 <span class="entry_type_name">int64</span> 20734 <span class="entry_type_container">x</span> 20735 20736 <span class="entry_type_array"> 20737 n 20738 </span> 20739 <span class="entry_type_visibility"> [hidden]</span> 20740 20741 20742 20743 <span class="entry_type_deprecated">[deprecated] </span> 20744 20745 20746 20747 </td> <!-- entry_type --> 20748 20749 <td class="entry_description"> 20750 <p>The minimum frame duration that is supported 20751for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 20752 </td> 20753 20754 <td class="entry_units"> 20755 Nanoseconds 20756 </td> 20757 20758 <td class="entry_range"> 20759 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 20760 <p>TODO: Remove property.<wbr/></p> 20761 </td> 20762 20763 <td class="entry_hal_version"> 20764 <p>3.<wbr/>2</p> 20765 </td> 20766 20767 <td class="entry_tags"> 20768 <ul class="entry_tags"> 20769 <li><a href="#tag_BC">BC</a></li> 20770 </ul> 20771 </td> 20772 20773 </tr> 20774 <tr class="entries_header"> 20775 <th class="th_details" colspan="6">Details</th> 20776 </tr> 20777 <tr class="entry_cont"> 20778 <td class="entry_details" colspan="6"> 20779 <p>This corresponds to the minimum steady-state frame duration when only 20780that JPEG stream is active and captured in a burst,<wbr/> with all 20781processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 20782<p>When multiple streams are configured,<wbr/> the minimum 20783frame duration will be >= max(individual stream min 20784durations)</p> 20785 </td> 20786 </tr> 20787 20788 20789 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20790 <!-- end of entry --> 20791 20792 20793 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 20794 <td class="entry_name 20795 entry_name_deprecated 20796 " rowspan="5"> 20797 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 20798 </td> 20799 <td class="entry_type"> 20800 <span class="entry_type_name">int32</span> 20801 <span class="entry_type_container">x</span> 20802 20803 <span class="entry_type_array"> 20804 n x 2 20805 </span> 20806 <span class="entry_type_visibility"> [hidden as size]</span> 20807 20808 20809 20810 <span class="entry_type_deprecated">[deprecated] </span> 20811 20812 20813 20814 </td> <!-- entry_type --> 20815 20816 <td class="entry_description"> 20817 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 20818 </td> 20819 20820 <td class="entry_units"> 20821 </td> 20822 20823 <td class="entry_range"> 20824 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 20825 <p>TODO: Remove property.<wbr/></p> 20826 </td> 20827 20828 <td class="entry_hal_version"> 20829 <p>3.<wbr/>2</p> 20830 </td> 20831 20832 <td class="entry_tags"> 20833 <ul class="entry_tags"> 20834 <li><a href="#tag_BC">BC</a></li> 20835 </ul> 20836 </td> 20837 20838 </tr> 20839 <tr class="entries_header"> 20840 <th class="th_details" colspan="6">Details</th> 20841 </tr> 20842 <tr class="entry_cont"> 20843 <td class="entry_details" colspan="6"> 20844 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 20845sensor 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> 20846 </td> 20847 </tr> 20848 20849 <tr class="entries_header"> 20850 <th class="th_details" colspan="6">HAL Implementation Details</th> 20851 </tr> 20852 <tr class="entry_cont"> 20853 <td class="entry_details" colspan="6"> 20854 <p>The HAL must include sensor maximum resolution 20855(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 20856and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 20857 </td> 20858 </tr> 20859 20860 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20861 <!-- end of entry --> 20862 20863 20864 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 20865 <td class="entry_name 20866 " rowspan="5"> 20867 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 20868 </td> 20869 <td class="entry_type"> 20870 <span class="entry_type_name">float</span> 20871 20872 <span class="entry_type_visibility"> [public]</span> 20873 20874 20875 <span class="entry_type_hwlevel">[legacy] </span> 20876 20877 20878 20879 20880 </td> <!-- entry_type --> 20881 20882 <td class="entry_description"> 20883 <p>The maximum ratio between both active area width 20884and crop region width,<wbr/> and active area height and 20885crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 20886 </td> 20887 20888 <td class="entry_units"> 20889 Zoom scale factor 20890 </td> 20891 20892 <td class="entry_range"> 20893 <p>>=1</p> 20894 </td> 20895 20896 <td class="entry_hal_version"> 20897 <p>3.<wbr/>2</p> 20898 </td> 20899 20900 <td class="entry_tags"> 20901 <ul class="entry_tags"> 20902 <li><a href="#tag_BC">BC</a></li> 20903 </ul> 20904 </td> 20905 20906 </tr> 20907 <tr class="entries_header"> 20908 <th class="th_details" colspan="6">Details</th> 20909 </tr> 20910 <tr class="entry_cont"> 20911 <td class="entry_details" colspan="6"> 20912 <p>This represents the maximum amount of zooming possible by 20913the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping 20914window size.<wbr/></p> 20915<p>Crop regions that have a width or height that is smaller 20916than this ratio allows will be rounded up to the minimum 20917allowed size by the camera device.<wbr/></p> 20918<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/> 20919the 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 20920maximum zoom ratio.<wbr/></p> 20921 </td> 20922 </tr> 20923 20924 <tr class="entries_header"> 20925 <th class="th_details" colspan="6">HAL Implementation Details</th> 20926 </tr> 20927 <tr class="entry_cont"> 20928 <td class="entry_details" colspan="6"> 20929 <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 20930the maximum supported zoomRatio specified in <a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a>.<wbr/></p> 20931 </td> 20932 </tr> 20933 20934 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20935 <!-- end of entry --> 20936 20937 20938 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 20939 <td class="entry_name 20940 entry_name_deprecated 20941 " rowspan="3"> 20942 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 20943 </td> 20944 <td class="entry_type"> 20945 <span class="entry_type_name">int64</span> 20946 <span class="entry_type_container">x</span> 20947 20948 <span class="entry_type_array"> 20949 n 20950 </span> 20951 <span class="entry_type_visibility"> [hidden]</span> 20952 20953 20954 20955 <span class="entry_type_deprecated">[deprecated] </span> 20956 20957 20958 20959 </td> <!-- entry_type --> 20960 20961 <td class="entry_description"> 20962 <p>For each available processed output size (defined in 20963<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 20964minimum supportable frame duration for that size.<wbr/></p> 20965 </td> 20966 20967 <td class="entry_units"> 20968 Nanoseconds 20969 </td> 20970 20971 <td class="entry_range"> 20972 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 20973 </td> 20974 20975 <td class="entry_hal_version"> 20976 <p>3.<wbr/>2</p> 20977 </td> 20978 20979 <td class="entry_tags"> 20980 <ul class="entry_tags"> 20981 <li><a href="#tag_BC">BC</a></li> 20982 </ul> 20983 </td> 20984 20985 </tr> 20986 <tr class="entries_header"> 20987 <th class="th_details" colspan="6">Details</th> 20988 </tr> 20989 <tr class="entry_cont"> 20990 <td class="entry_details" colspan="6"> 20991 <p>This should correspond to the frame duration when only that processed 20992stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 20993set to FAST.<wbr/></p> 20994<p>When multiple streams are configured,<wbr/> the minimum frame duration will 20995be >= max(individual stream min durations).<wbr/></p> 20996 </td> 20997 </tr> 20998 20999 21000 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21001 <!-- end of entry --> 21002 21003 21004 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 21005 <td class="entry_name 21006 entry_name_deprecated 21007 " rowspan="5"> 21008 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 21009 </td> 21010 <td class="entry_type"> 21011 <span class="entry_type_name">int32</span> 21012 <span class="entry_type_container">x</span> 21013 21014 <span class="entry_type_array"> 21015 n x 2 21016 </span> 21017 <span class="entry_type_visibility"> [hidden as size]</span> 21018 21019 21020 21021 <span class="entry_type_deprecated">[deprecated] </span> 21022 21023 21024 21025 </td> <!-- entry_type --> 21026 21027 <td class="entry_description"> 21028 <p>The resolutions available for use with 21029processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 21030platform opaque YUV/<wbr/>RGB streams to the GPU or video 21031encoders.<wbr/></p> 21032 </td> 21033 21034 <td class="entry_units"> 21035 </td> 21036 21037 <td class="entry_range"> 21038 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 21039 </td> 21040 21041 <td class="entry_hal_version"> 21042 <p>3.<wbr/>2</p> 21043 </td> 21044 21045 <td class="entry_tags"> 21046 <ul class="entry_tags"> 21047 <li><a href="#tag_BC">BC</a></li> 21048 </ul> 21049 </td> 21050 21051 </tr> 21052 <tr class="entries_header"> 21053 <th class="th_details" colspan="6">Details</th> 21054 </tr> 21055 <tr class="entry_cont"> 21056 <td class="entry_details" colspan="6"> 21057 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 21058<p>For a given use case,<wbr/> the actual maximum supported resolution 21059may be lower than what is listed here,<wbr/> depending on the destination 21060Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 21061the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 21062smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 21063can provide.<wbr/></p> 21064<p>Please reference the documentation for the image data destination to 21065check if it limits the maximum size for image data.<wbr/></p> 21066 </td> 21067 </tr> 21068 21069 <tr class="entries_header"> 21070 <th class="th_details" colspan="6">HAL Implementation Details</th> 21071 </tr> 21072 <tr class="entry_cont"> 21073 <td class="entry_details" colspan="6"> 21074 <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/> 21075the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 21076and each below resolution if it is smaller than or equal to the sensor 21077maximum resolution (if they are not listed in JPEG sizes already):</p> 21078<ul> 21079<li>240p (320 x 240)</li> 21080<li>480p (640 x 480)</li> 21081<li>720p (1280 x 720)</li> 21082<li>1080p (1920 x 1080)</li> 21083</ul> 21084<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/> 21085the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 21086 </td> 21087 </tr> 21088 21089 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21090 <!-- end of entry --> 21091 21092 21093 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 21094 <td class="entry_name 21095 entry_name_deprecated 21096 " rowspan="3"> 21097 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 21098 </td> 21099 <td class="entry_type"> 21100 <span class="entry_type_name">int64</span> 21101 <span class="entry_type_container">x</span> 21102 21103 <span class="entry_type_array"> 21104 n 21105 </span> 21106 <span class="entry_type_visibility"> [system]</span> 21107 21108 21109 21110 <span class="entry_type_deprecated">[deprecated] </span> 21111 21112 21113 21114 </td> <!-- entry_type --> 21115 21116 <td class="entry_description"> 21117 <p>For each available raw output size (defined in 21118<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 21119supportable frame duration for that size.<wbr/></p> 21120 </td> 21121 21122 <td class="entry_units"> 21123 Nanoseconds 21124 </td> 21125 21126 <td class="entry_range"> 21127 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 21128 </td> 21129 21130 <td class="entry_hal_version"> 21131 <p>3.<wbr/>2</p> 21132 </td> 21133 21134 <td class="entry_tags"> 21135 <ul class="entry_tags"> 21136 <li><a href="#tag_BC">BC</a></li> 21137 </ul> 21138 </td> 21139 21140 </tr> 21141 <tr class="entries_header"> 21142 <th class="th_details" colspan="6">Details</th> 21143 </tr> 21144 <tr class="entry_cont"> 21145 <td class="entry_details" colspan="6"> 21146 <p>Should correspond to the frame duration when only the raw stream is 21147active.<wbr/></p> 21148<p>When multiple streams are configured,<wbr/> the minimum 21149frame duration will be >= max(individual stream min 21150durations)</p> 21151 </td> 21152 </tr> 21153 21154 21155 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21156 <!-- end of entry --> 21157 21158 21159 <tr class="entry" id="static_android.scaler.availableRawSizes"> 21160 <td class="entry_name 21161 entry_name_deprecated 21162 " rowspan="1"> 21163 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 21164 </td> 21165 <td class="entry_type"> 21166 <span class="entry_type_name">int32</span> 21167 <span class="entry_type_container">x</span> 21168 21169 <span class="entry_type_array"> 21170 n x 2 21171 </span> 21172 <span class="entry_type_visibility"> [system as size]</span> 21173 21174 21175 21176 <span class="entry_type_deprecated">[deprecated] </span> 21177 21178 21179 21180 </td> <!-- entry_type --> 21181 21182 <td class="entry_description"> 21183 <p>The resolutions available for use with raw 21184sensor output streams,<wbr/> listed as width,<wbr/> 21185height</p> 21186 </td> 21187 21188 <td class="entry_units"> 21189 </td> 21190 21191 <td class="entry_range"> 21192 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 21193 </td> 21194 21195 <td class="entry_hal_version"> 21196 <p>3.<wbr/>2</p> 21197 </td> 21198 21199 <td class="entry_tags"> 21200 </td> 21201 21202 </tr> 21203 21204 21205 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21206 <!-- end of entry --> 21207 21208 21209 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 21210 <td class="entry_name 21211 " rowspan="5"> 21212 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 21213 </td> 21214 <td class="entry_type"> 21215 <span class="entry_type_name">int32</span> 21216 21217 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> 21218 21219 21220 21221 21222 21223 21224 </td> <!-- entry_type --> 21225 21226 <td class="entry_description"> 21227 <p>The mapping of image formats that are supported by this 21228camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 21229 </td> 21230 21231 <td class="entry_units"> 21232 </td> 21233 21234 <td class="entry_range"> 21235 </td> 21236 21237 <td class="entry_hal_version"> 21238 <p>3.<wbr/>2</p> 21239 </td> 21240 21241 <td class="entry_tags"> 21242 <ul class="entry_tags"> 21243 <li><a href="#tag_REPROC">REPROC</a></li> 21244 </ul> 21245 </td> 21246 21247 </tr> 21248 <tr class="entries_header"> 21249 <th class="th_details" colspan="6">Details</th> 21250 </tr> 21251 <tr class="entry_cont"> 21252 <td class="entry_details" colspan="6"> 21253 <p>All camera devices with at least 1 21254<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 21255available input format.<wbr/></p> 21256<p>The camera device will support the following map of formats,<wbr/> 21257if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 21258<table> 21259<thead> 21260<tr> 21261<th align="left">Input Format</th> 21262<th align="left">Output Format</th> 21263<th align="left">Capability</th> 21264</tr> 21265</thead> 21266<tbody> 21267<tr> 21268<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 21269<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 21270<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 21271</tr> 21272<tr> 21273<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 21274<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 21275<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 21276</tr> 21277<tr> 21278<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 21279<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 21280<td align="left">YUV_<wbr/>REPROCESSING</td> 21281</tr> 21282<tr> 21283<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 21284<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 21285<td align="left">YUV_<wbr/>REPROCESSING</td> 21286</tr> 21287</tbody> 21288</table> 21289<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A 21290PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a> 21291with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p> 21292<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input 21293or 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> 21294<p>Attempting to configure an input stream with output streams not 21295listed as available in this map is not valid.<wbr/></p> 21296<p>Additionally,<wbr/> if the camera device is MONOCHROME with Y8 support,<wbr/> it will also support 21297the following map of formats if its dependent capability 21298(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 21299<table> 21300<thead> 21301<tr> 21302<th align="left">Input Format</th> 21303<th align="left">Output Format</th> 21304<th align="left">Capability</th> 21305</tr> 21306</thead> 21307<tbody> 21308<tr> 21309<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 21310<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td> 21311<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 21312</tr> 21313<tr> 21314<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td> 21315<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 21316<td align="left">YUV_<wbr/>REPROCESSING</td> 21317</tr> 21318<tr> 21319<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td> 21320<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td> 21321<td align="left">YUV_<wbr/>REPROCESSING</td> 21322</tr> 21323</tbody> 21324</table> 21325 </td> 21326 </tr> 21327 21328 <tr class="entries_header"> 21329 <th class="th_details" colspan="6">HAL Implementation Details</th> 21330 </tr> 21331 <tr class="entry_cont"> 21332 <td class="entry_details" colspan="6"> 21333 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>libsystem/<wbr/>include/<wbr/>system/<wbr/>graphics-base.<wbr/>h</code> for a 21334definition of the image format enumerations.<wbr/> The PRIVATE format refers to the 21335HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine 21336the actual format by using the gralloc usage flags.<wbr/> 21337For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially 21338processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/> 21339See camera3.<wbr/>h for more details.<wbr/></p> 21340<p>This value is encoded as a variable-size array-of-arrays.<wbr/> 21341The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 21342<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 21343inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 21344<p>A code sample to read/<wbr/>write this encoding (with a device that 21345supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 21346and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 21347<pre><code>//<wbr/> reading 21348int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 21349for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 21350 int32_<wbr/>t format = contents[i++]; 21351 int32_<wbr/>t length = contents[i++]; 21352 int32_<wbr/>t output_<wbr/>formats[length]; 21353 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 21354 length * sizeof(int32_<wbr/>t)); 21355 i += length; 21356} 21357 21358//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING) 21359int32_<wbr/>t[] contents = { 21360 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 21361 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 21362}; 21363update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 21364 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 21365</code></pre> 21366<p>If the HAL claims to support any of the capabilities listed in the 21367above details,<wbr/> then it must also support all the input-output 21368combinations listed for that capability.<wbr/> It can optionally support 21369additional formats if it so chooses.<wbr/></p> 21370 </td> 21371 </tr> 21372 21373 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21374 <!-- end of entry --> 21375 21376 21377 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 21378 <td class="entry_name 21379 " rowspan="5"> 21380 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 21381 </td> 21382 <td class="entry_type"> 21383 <span class="entry_type_name entry_type_name_enum">int32</span> 21384 <span class="entry_type_container">x</span> 21385 21386 <span class="entry_type_array"> 21387 n x 4 21388 </span> 21389 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 21390 21391 21392 <span class="entry_type_hwlevel">[legacy] </span> 21393 21394 21395 21396 <ul class="entry_type_enum"> 21397 <li> 21398 <span class="entry_type_enum_name">OUTPUT (v3.2)</span> 21399 </li> 21400 <li> 21401 <span class="entry_type_enum_name">INPUT (v3.2)</span> 21402 </li> 21403 </ul> 21404 21405 </td> <!-- entry_type --> 21406 21407 <td class="entry_description"> 21408 <p>The available stream configurations that this 21409camera device supports 21410(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 21411 </td> 21412 21413 <td class="entry_units"> 21414 </td> 21415 21416 <td class="entry_range"> 21417 </td> 21418 21419 <td class="entry_hal_version"> 21420 <p>3.<wbr/>2</p> 21421 </td> 21422 21423 <td class="entry_tags"> 21424 </td> 21425 21426 </tr> 21427 <tr class="entries_header"> 21428 <th class="th_details" colspan="6">Details</th> 21429 </tr> 21430 <tr class="entry_cont"> 21431 <td class="entry_details" colspan="6"> 21432 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 21433tuples.<wbr/></p> 21434<p>For a given use case,<wbr/> the actual maximum supported resolution 21435may be lower than what is listed here,<wbr/> depending on the destination 21436Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 21437the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 21438smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 21439can provide.<wbr/></p> 21440<p>Please reference the documentation for the image data destination to 21441check if it limits the maximum size for image data.<wbr/></p> 21442<p>Not all output formats may be supported in a configuration with 21443an input stream of a particular format.<wbr/> For more details,<wbr/> see 21444<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 21445<p>For applications targeting SDK version older than 31,<wbr/> the following table 21446describes the minimum required output stream configurations based on the hardware level 21447(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 21448<table> 21449<thead> 21450<tr> 21451<th align="center">Format</th> 21452<th align="center">Size</th> 21453<th align="center">Hardware Level</th> 21454<th align="center">Notes</th> 21455</tr> 21456</thead> 21457<tbody> 21458<tr> 21459<td align="center">JPEG</td> 21460<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 21461<td align="center">Any</td> 21462<td align="center"></td> 21463</tr> 21464<tr> 21465<td align="center">JPEG</td> 21466<td align="center">1920x1080 (1080p)</td> 21467<td align="center">Any</td> 21468<td align="center">if 1080p <= activeArraySize</td> 21469</tr> 21470<tr> 21471<td align="center">JPEG</td> 21472<td align="center">1280x720 (720)</td> 21473<td align="center">Any</td> 21474<td align="center">if 720p <= activeArraySize</td> 21475</tr> 21476<tr> 21477<td align="center">JPEG</td> 21478<td align="center">640x480 (480p)</td> 21479<td align="center">Any</td> 21480<td align="center">if 480p <= activeArraySize</td> 21481</tr> 21482<tr> 21483<td align="center">JPEG</td> 21484<td align="center">320x240 (240p)</td> 21485<td align="center">Any</td> 21486<td align="center">if 240p <= activeArraySize</td> 21487</tr> 21488<tr> 21489<td align="center">YUV_<wbr/>420_<wbr/>888</td> 21490<td align="center">all output sizes available for JPEG</td> 21491<td align="center">FULL</td> 21492<td align="center"></td> 21493</tr> 21494<tr> 21495<td align="center">YUV_<wbr/>420_<wbr/>888</td> 21496<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 21497<td align="center">LIMITED</td> 21498<td align="center"></td> 21499</tr> 21500<tr> 21501<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 21502<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 21503<td align="center">Any</td> 21504<td align="center"></td> 21505</tr> 21506</tbody> 21507</table> 21508<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device declares to be 21509media performance class 12 or higher by setting 21510<a href="https://developer.android.com/reference/android/os/Build/VERSION_CDOES/MEDIA_PERFORMANCE_CLASS.html">MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/> 21511the primary camera devices (first rear/<wbr/>front camera in the camera ID list) will not 21512support JPEG sizes smaller than 1080p.<wbr/> If the application configures a JPEG stream 21513smaller than 1080p,<wbr/> the camera device will round up the JPEG image size to at least 215141080p.<wbr/> The requirements for IMPLEMENTATION_<wbr/>DEFINED and YUV_<wbr/>420_<wbr/>888 stay the same.<wbr/> 21515This new minimum required output stream configurations are illustrated by the table below:</p> 21516<table> 21517<thead> 21518<tr> 21519<th align="center">Format</th> 21520<th align="center">Size</th> 21521<th align="center">Hardware Level</th> 21522<th align="center">Notes</th> 21523</tr> 21524</thead> 21525<tbody> 21526<tr> 21527<td align="center">JPEG</td> 21528<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 21529<td align="center">Any</td> 21530<td align="center"></td> 21531</tr> 21532<tr> 21533<td align="center">JPEG</td> 21534<td align="center">1920x1080 (1080p)</td> 21535<td align="center">Any</td> 21536<td align="center">if 1080p <= activeArraySize</td> 21537</tr> 21538<tr> 21539<td align="center">YUV_<wbr/>420_<wbr/>888</td> 21540<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 21541<td align="center">FULL</td> 21542<td align="center"></td> 21543</tr> 21544<tr> 21545<td align="center">YUV_<wbr/>420_<wbr/>888</td> 21546<td align="center">1920x1080 (1080p)</td> 21547<td align="center">FULL</td> 21548<td align="center">if 1080p <= activeArraySize</td> 21549</tr> 21550<tr> 21551<td align="center">YUV_<wbr/>420_<wbr/>888</td> 21552<td align="center">1280x720 (720)</td> 21553<td align="center">FULL</td> 21554<td align="center">if 720p <= activeArraySize</td> 21555</tr> 21556<tr> 21557<td align="center">YUV_<wbr/>420_<wbr/>888</td> 21558<td align="center">640x480 (480p)</td> 21559<td align="center">FULL</td> 21560<td align="center">if 480p <= activeArraySize</td> 21561</tr> 21562<tr> 21563<td align="center">YUV_<wbr/>420_<wbr/>888</td> 21564<td align="center">320x240 (240p)</td> 21565<td align="center">FULL</td> 21566<td align="center">if 240p <= activeArraySize</td> 21567</tr> 21568<tr> 21569<td align="center">YUV_<wbr/>420_<wbr/>888</td> 21570<td align="center">all output sizes available for FULL hardware level,<wbr/> up to the maximum video size</td> 21571<td align="center">LIMITED</td> 21572<td align="center"></td> 21573</tr> 21574<tr> 21575<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 21576<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 21577<td align="center">Any</td> 21578<td align="center"></td> 21579</tr> 21580</tbody> 21581</table> 21582<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device doesn't declare 21583to be media performance class 12 or better by setting 21584<a href="https://developer.android.com/reference/android/os/Build/VERSION_CDOES/MEDIA_PERFORMANCE_CLASS.html">MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/> 21585or if the camera device isn't a primary rear/<wbr/>front camera,<wbr/> the minimum required output 21586stream configurations are the same as for applications targeting SDK version older than 2158731.<wbr/></p> 21588<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 21589mandatory stream configurations on a per-capability basis.<wbr/></p> 21590<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability for 21591downscaling from larger resolution to smaller,<wbr/> and the QCIF resolution sometimes is not 21592fully supported due to this limitation on devices with high-resolution image sensors.<wbr/> 21593Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other 21594stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/> 21595and capture session creation will fail if it is not.<wbr/></p> 21596 </td> 21597 </tr> 21598 21599 <tr class="entries_header"> 21600 <th class="th_details" colspan="6">HAL Implementation Details</th> 21601 </tr> 21602 <tr class="entry_cont"> 21603 <td class="entry_details" colspan="6"> 21604 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 21605of sensor maximum resolution for JPEG formats (regardless of hardware 21606level).<wbr/></p> 21607<p>(The following is a rewording of the above required table):</p> 21608<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 21609<ul> 21610<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 21611(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 21612(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/> 21613it does not have to be included in the supported JPEG sizes.<wbr/></li> 21614<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 21615the dimensions being a multiple of 16.<wbr/></li> 21616</ul> 21617<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 21618However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 21619resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 21620additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 21621if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 21622ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 216233264x2448.<wbr/></p> 21624<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/> 21625the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 21626here as output streams.<wbr/></p> 21627<p>It must also include each below resolution if it is smaller than or 21628equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 21629formats),<wbr/> as output streams:</p> 21630<ul> 21631<li>240p (320 x 240)</li> 21632<li>480p (640 x 480)</li> 21633<li>720p (1280 x 720)</li> 21634<li>1080p (1920 x 1080)</li> 21635</ul> 21636<p>Note that for primary cameras (first rear/<wbr/>front facing camera in the camera ID list) 21637on a device with <a href="https://developer.android.com/reference/android/os/Build/VERSION_CDOES/MEDIA_PERFORMANCE_CLASS.html">MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> set to 2163831 or larger,<wbr/> camera framework filters out JPEG sizes smaller than 1080p depending on 21639applications' targetSdkLevel.<wbr/> The camera HAL must still support the smaller JPEG sizes 21640to maintain backward compatibility.<wbr/></p> 21641<p>For LIMITED capability devices 21642(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 21643the HAL only has to list up to the maximum video size 21644supported by the device.<wbr/></p> 21645<p>Regardless of hardware level,<wbr/> every output resolution available for 21646YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 21647<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 21648<ul> 21649<li>availableFormats</li> 21650<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 21651</ul> 21652 </td> 21653 </tr> 21654 21655 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21656 <!-- end of entry --> 21657 21658 21659 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 21660 <td class="entry_name 21661 " rowspan="3"> 21662 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 21663 </td> 21664 <td class="entry_type"> 21665 <span class="entry_type_name">int64</span> 21666 <span class="entry_type_container">x</span> 21667 21668 <span class="entry_type_array"> 21669 4 x n 21670 </span> 21671 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 21672 21673 21674 <span class="entry_type_hwlevel">[legacy] </span> 21675 21676 21677 21678 21679 </td> <!-- entry_type --> 21680 21681 <td class="entry_description"> 21682 <p>This lists the minimum frame duration for each 21683format/<wbr/>size combination.<wbr/></p> 21684 </td> 21685 21686 <td class="entry_units"> 21687 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 21688 </td> 21689 21690 <td class="entry_range"> 21691 </td> 21692 21693 <td class="entry_hal_version"> 21694 <p>3.<wbr/>2</p> 21695 </td> 21696 21697 <td class="entry_tags"> 21698 <ul class="entry_tags"> 21699 <li><a href="#tag_V1">V1</a></li> 21700 </ul> 21701 </td> 21702 21703 </tr> 21704 <tr class="entries_header"> 21705 <th class="th_details" colspan="6">Details</th> 21706 </tr> 21707 <tr class="entry_cont"> 21708 <td class="entry_details" colspan="6"> 21709 <p>This should correspond to the frame duration when only that 21710stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 21711set to either OFF or FAST.<wbr/></p> 21712<p>When multiple streams are used in a request,<wbr/> the minimum frame 21713duration will be max(individual stream min durations).<wbr/></p> 21714<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 21715<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 21716calculating the max frame rate.<wbr/></p> 21717 </td> 21718 </tr> 21719 21720 21721 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21722 <!-- end of entry --> 21723 21724 21725 <tr class="entry" id="static_android.scaler.availableStallDurations"> 21726 <td class="entry_name 21727 " rowspan="5"> 21728 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 21729 </td> 21730 <td class="entry_type"> 21731 <span class="entry_type_name">int64</span> 21732 <span class="entry_type_container">x</span> 21733 21734 <span class="entry_type_array"> 21735 4 x n 21736 </span> 21737 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 21738 21739 21740 <span class="entry_type_hwlevel">[legacy] </span> 21741 21742 21743 21744 21745 </td> <!-- entry_type --> 21746 21747 <td class="entry_description"> 21748 <p>This lists the maximum stall duration for each 21749output format/<wbr/>size combination.<wbr/></p> 21750 </td> 21751 21752 <td class="entry_units"> 21753 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 21754 </td> 21755 21756 <td class="entry_range"> 21757 </td> 21758 21759 <td class="entry_hal_version"> 21760 <p>3.<wbr/>2</p> 21761 </td> 21762 21763 <td class="entry_tags"> 21764 <ul class="entry_tags"> 21765 <li><a href="#tag_V1">V1</a></li> 21766 </ul> 21767 </td> 21768 21769 </tr> 21770 <tr class="entries_header"> 21771 <th class="th_details" colspan="6">Details</th> 21772 </tr> 21773 <tr class="entry_cont"> 21774 <td class="entry_details" colspan="6"> 21775 <p>A stall duration is how much extra time would get added 21776to the normal minimum frame duration for a repeating request 21777that has streams with non-zero stall.<wbr/></p> 21778<p>For example,<wbr/> consider JPEG captures which have the following 21779characteristics:</p> 21780<ul> 21781<li>JPEG streams act like processed YUV streams in requests for which 21782they are not included; in requests in which they are directly 21783referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 21784JPEG stream requires the underlying YUV data to always be ready for 21785use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 21786frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 21787<li>The JPEG processor can run concurrently to the rest of the camera 21788pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 21789</ul> 21790<p>In other words,<wbr/> using a repeating YUV request would result 21791in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 21792JPEG request is submitted periodically,<wbr/> the frame rate will stay 21793at 30 FPS (as long as we wait for the previous JPEG to return each 21794time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 21795the frame rate will drop from 30 FPS.<wbr/></p> 21796<p>In general,<wbr/> submitting a new request with a non-0 stall time 21797stream will <em>not</em> cause a frame rate drop unless there are still 21798outstanding buffers for that stream from previous requests.<wbr/></p> 21799<p>Submitting a repeating request with streams (call this <code>S</code>) 21800is the same as setting the minimum frame duration from 21801the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 21802the maximum stall duration for <code>S</code>.<wbr/></p> 21803<p>If interleaving requests with and without a stall duration,<wbr/> 21804a request will stall by the maximum of the remaining times 21805for each can-stall stream with outstanding buffers.<wbr/></p> 21806<p>This means that a stalling request will not have an exposure start 21807until the stall has completed.<wbr/></p> 21808<p>This should correspond to the stall duration when only that stream is 21809active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 21810or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 21811effectively results in an indeterminate stall duration for all 21812streams in a request (the regular stall calculation rules are 21813ignored).<wbr/></p> 21814<p>The following formats may always have a stall duration:</p> 21815<ul> 21816<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li> 21817<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li> 21818</ul> 21819<p>The following formats will never have a stall duration:</p> 21820<ul> 21821<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> 21822<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li> 21823<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li> 21824<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></li> 21825</ul> 21826<p>All other formats may or may not have an allowed stall duration on 21827a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 21828for more details.<wbr/></p> 21829<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 21830calculating the max frame rate (absent stalls).<wbr/></p> 21831 </td> 21832 </tr> 21833 21834 <tr class="entries_header"> 21835 <th class="th_details" colspan="6">HAL Implementation Details</th> 21836 </tr> 21837 <tr class="entry_cont"> 21838 <td class="entry_details" colspan="6"> 21839 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 21840(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE 21841and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 21842 </td> 21843 </tr> 21844 21845 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21846 <!-- end of entry --> 21847 21848 21849 <tr class="entry" id="static_android.scaler.streamConfigurationMap"> 21850 <td class="entry_name 21851 " rowspan="5"> 21852 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map 21853 </td> 21854 <td class="entry_type"> 21855 <span class="entry_type_name">int32</span> 21856 21857 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span> 21858 21859 <span class="entry_type_synthetic">[synthetic] </span> 21860 21861 <span class="entry_type_hwlevel">[legacy] </span> 21862 21863 21864 21865 21866 </td> <!-- entry_type --> 21867 21868 <td class="entry_description"> 21869 <p>The available stream configurations that this 21870camera device supports; also includes the minimum frame durations 21871and the stall durations for each format/<wbr/>size combination.<wbr/></p> 21872 </td> 21873 21874 <td class="entry_units"> 21875 </td> 21876 21877 <td class="entry_range"> 21878 </td> 21879 21880 <td class="entry_hal_version"> 21881 <p>3.<wbr/>2</p> 21882 </td> 21883 21884 <td class="entry_tags"> 21885 </td> 21886 21887 </tr> 21888 <tr class="entries_header"> 21889 <th class="th_details" colspan="6">Details</th> 21890 </tr> 21891 <tr class="entry_cont"> 21892 <td class="entry_details" colspan="6"> 21893 <p>All camera devices will support sensor maximum resolution (defined by 21894<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> 21895<p>For a given use case,<wbr/> the actual maximum supported resolution 21896may be lower than what is listed here,<wbr/> depending on the destination 21897Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 21898the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 21899smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 21900can provide.<wbr/></p> 21901<p>Please reference the documentation for the image data destination to 21902check if it limits the maximum size for image data.<wbr/></p> 21903<p>The following table describes the minimum required output stream 21904configurations based on the hardware level 21905(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 21906<table> 21907<thead> 21908<tr> 21909<th align="center">Format</th> 21910<th align="center">Size</th> 21911<th align="center">Hardware Level</th> 21912<th align="center">Notes</th> 21913</tr> 21914</thead> 21915<tbody> 21916<tr> 21917<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 21918<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td> 21919<td align="center">Any</td> 21920<td align="center"></td> 21921</tr> 21922<tr> 21923<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 21924<td align="center">1920x1080 (1080p)</td> 21925<td align="center">Any</td> 21926<td align="center">if 1080p <= activeArraySize</td> 21927</tr> 21928<tr> 21929<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 21930<td align="center">1280x720 (720p)</td> 21931<td align="center">Any</td> 21932<td align="center">if 720p <= activeArraySize</td> 21933</tr> 21934<tr> 21935<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 21936<td align="center">640x480 (480p)</td> 21937<td align="center">Any</td> 21938<td align="center">if 480p <= activeArraySize</td> 21939</tr> 21940<tr> 21941<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 21942<td align="center">320x240 (240p)</td> 21943<td align="center">Any</td> 21944<td align="center">if 240p <= activeArraySize</td> 21945</tr> 21946<tr> 21947<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 21948<td align="center">all output sizes available for JPEG</td> 21949<td align="center">FULL</td> 21950<td align="center"></td> 21951</tr> 21952<tr> 21953<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 21954<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 21955<td align="center">LIMITED</td> 21956<td align="center"></td> 21957</tr> 21958<tr> 21959<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 21960<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 21961<td align="center">Any</td> 21962<td align="center"></td> 21963</tr> 21964</tbody> 21965</table> 21966<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for additional mandatory 21967stream configurations on a per-capability basis.<wbr/></p> 21968<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 21969<ul> 21970<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 21971(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 21972(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/> 21973it does not have to be included in the supported JPEG sizes.<wbr/></li> 21974<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 21975the dimensions being a multiple of 16.<wbr/> 21976Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 21977However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum 21978resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 21979additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 21980if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 21981ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 219823264x2448.<wbr/></li> 21983</ul> 21984<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability on 21985downscaling from larger resolution to smaller ones,<wbr/> and the QCIF resolution can sometimes 21986not be fully supported due to this limitation on devices with high-resolution image 21987sensors.<wbr/> Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other 21988stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/> 21989and capture session creation will fail if it is not.<wbr/></p> 21990 </td> 21991 </tr> 21992 21993 <tr class="entries_header"> 21994 <th class="th_details" colspan="6">HAL Implementation Details</th> 21995 </tr> 21996 <tr class="entry_cont"> 21997 <td class="entry_details" colspan="6"> 21998 <p>Do not set this property directly 21999(it is synthetic and will not be available at the HAL layer); 22000set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> 22001<p>Not all output formats may be supported in a configuration with 22002an input stream of a particular format.<wbr/> For more details,<wbr/> see 22003<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 22004<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 22005of sensor maximum resolution for JPEG formats (regardless of hardware 22006level).<wbr/></p> 22007<p>(The following is a rewording of the above required table):</p> 22008<p>The HAL must include sensor maximum resolution (defined by 22009<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 22010<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/> 22011the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 22012here as output streams.<wbr/></p> 22013<p>It must also include each below resolution if it is smaller than or 22014equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 22015formats),<wbr/> as output streams:</p> 22016<ul> 22017<li>240p (320 x 240)</li> 22018<li>480p (640 x 480)</li> 22019<li>720p (1280 x 720)</li> 22020<li>1080p (1920 x 1080)</li> 22021</ul> 22022<p>For LIMITED capability devices 22023(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 22024the HAL only has to list up to the maximum video size 22025supported by the device.<wbr/></p> 22026<p>Regardless of hardware level,<wbr/> every output resolution available for 22027YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 22028<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 22029<ul> 22030<li>availableFormats</li> 22031<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 22032</ul> 22033 </td> 22034 </tr> 22035 22036 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22037 <!-- end of entry --> 22038 22039 22040 <tr class="entry" id="static_android.scaler.croppingType"> 22041 <td class="entry_name 22042 " rowspan="5"> 22043 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type 22044 </td> 22045 <td class="entry_type"> 22046 <span class="entry_type_name entry_type_name_enum">byte</span> 22047 22048 <span class="entry_type_visibility"> [public]</span> 22049 22050 22051 <span class="entry_type_hwlevel">[legacy] </span> 22052 22053 22054 22055 <ul class="entry_type_enum"> 22056 <li> 22057 <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span> 22058 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span> 22059 </li> 22060 <li> 22061 <span class="entry_type_enum_name">FREEFORM (v3.2)</span> 22062 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span> 22063 </li> 22064 </ul> 22065 22066 </td> <!-- entry_type --> 22067 22068 <td class="entry_description"> 22069 <p>The crop type that this camera device supports.<wbr/></p> 22070 </td> 22071 22072 <td class="entry_units"> 22073 </td> 22074 22075 <td class="entry_range"> 22076 </td> 22077 22078 <td class="entry_hal_version"> 22079 <p>3.<wbr/>2</p> 22080 </td> 22081 22082 <td class="entry_tags"> 22083 </td> 22084 22085 </tr> 22086 <tr class="entries_header"> 22087 <th class="th_details" colspan="6">Details</th> 22088 </tr> 22089 <tr class="entry_cont"> 22090 <td class="entry_details" colspan="6"> 22091 <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 22092device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 22093crop 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>) 22094and keep the crop region width and height unchanged.<wbr/> The camera device will return the 22095final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 22096<p>Camera devices that support FREEFORM cropping will support any crop region that 22097is inside of the active array.<wbr/> The camera device will apply the same crop region and 22098return 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> 22099<p>Starting from API level 30,<wbr/></p> 22100<ul> 22101<li>If the camera device supports FREEFORM cropping,<wbr/> in order to do FREEFORM cropping,<wbr/> the 22102application 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> 22103for zoom.<wbr/></li> 22104<li>To do CENTER_<wbr/>ONLY zoom,<wbr/> the application has below 2 options:<ol> 22105<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> 22106<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 22107the field of view vertically (letterboxing) or horizontally (pillarboxing),<wbr/> but not 22108windowboxing.<wbr/></li> 22109</ol> 22110</li> 22111<li>Setting <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to values different than 1.<wbr/>0 and 22112<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 22113case,<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 22114array.<wbr/></li> 22115</ul> 22116<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p> 22117 </td> 22118 </tr> 22119 22120 <tr class="entries_header"> 22121 <th class="th_details" colspan="6">HAL Implementation Details</th> 22122 </tr> 22123 <tr class="entry_cont"> 22124 <td class="entry_details" colspan="6"> 22125 <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> 22126 </td> 22127 </tr> 22128 22129 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22130 <!-- end of entry --> 22131 22132 22133 <tr class="entry" id="static_android.scaler.availableRecommendedStreamConfigurations"> 22134 <td class="entry_name 22135 " rowspan="5"> 22136 android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations 22137 </td> 22138 <td class="entry_type"> 22139 <span class="entry_type_name entry_type_name_enum">int32</span> 22140 <span class="entry_type_container">x</span> 22141 22142 <span class="entry_type_array"> 22143 n x 5 22144 </span> 22145 <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span> 22146 22147 22148 22149 22150 22151 <ul class="entry_type_enum"> 22152 <li> 22153 <span class="entry_type_enum_name">PREVIEW (v3.4)</span> 22154 <span class="entry_type_enum_value">0x0</span> 22155 <span class="entry_type_enum_notes"><p>Preview must only include non-stalling processed stream configurations with 22156output formats like 22157<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a>,<wbr/> 22158<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a>,<wbr/> etc.<wbr/></p></span> 22159 </li> 22160 <li> 22161 <span class="entry_type_enum_name">RECORD (v3.4)</span> 22162 <span class="entry_type_enum_value">0x1</span> 22163 <span class="entry_type_enum_notes"><p>Video record must include stream configurations that match the advertised 22164supported media profiles <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> with 22165IMPLEMENTATION_<wbr/>DEFINED format.<wbr/></p></span> 22166 </li> 22167 <li> 22168 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.4)</span> 22169 <span class="entry_type_enum_value">0x2</span> 22170 <span class="entry_type_enum_notes"><p>Video snapshot must include stream configurations at least as big as 22171the maximum RECORD resolutions and only with 22172<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/> 22173Additionally the configurations shouldn't cause preview glitches and also be able to 22174run at 30 fps.<wbr/></p></span> 22175 </li> 22176 <li> 22177 <span class="entry_type_enum_name">SNAPSHOT (v3.4)</span> 22178 <span class="entry_type_enum_value">0x3</span> 22179 <span class="entry_type_enum_notes"><p>Recommended snapshot stream configurations must include at least one with 22180size close to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> and 22181<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/> 22182Taking into account restrictions on aspect ratio,<wbr/> alignment etc.<wbr/> the area of the 22183maximum suggested size shouldn’t be less than 97% of the sensor array size area.<wbr/></p></span> 22184 </li> 22185 <li> 22186 <span class="entry_type_enum_name">ZSL (v3.4)</span> 22187 <span class="entry_type_enum_value">0x4</span> 22188 <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended input stream configurations must only be advertised with 22189ZSL along with other processed and/<wbr/>or stalling output formats.<wbr/></p></span> 22190 </li> 22191 <li> 22192 <span class="entry_type_enum_name">RAW (v3.4)</span> 22193 <span class="entry_type_enum_value">0x5</span> 22194 <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended raw stream configurations must only include RAW based 22195output formats.<wbr/></p></span> 22196 </li> 22197 <li> 22198 <span class="entry_type_enum_name">LOW_LATENCY_SNAPSHOT (v3.4)</span> 22199 <span class="entry_type_enum_value">0x6</span> 22200 <span class="entry_type_enum_notes"><p>If supported,<wbr/> the recommended low latency stream configurations must have 22201end-to-end latency that does not exceed 200 ms.<wbr/> under standard operating conditions 22202(reasonable light levels,<wbr/> not loaded system) and using template 22203TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE.<wbr/> This is primarily for listing configurations for the 22204<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a> 22205however other supported output formats can be added as well.<wbr/></p></span> 22206 </li> 22207 <li> 22208 <span class="entry_type_enum_name">PUBLIC_END (v3.4)</span> 22209 <span class="entry_type_enum_value">0x7</span> 22210 </li> 22211 <li> 22212 <span class="entry_type_enum_name">VENDOR_START (v3.4)</span> 22213 <span class="entry_type_enum_value">0x18</span> 22214 <span class="entry_type_enum_notes"><p>Vendor defined use cases.<wbr/> These depend on the vendor implementation.<wbr/></p></span> 22215 </li> 22216 </ul> 22217 22218 </td> <!-- entry_type --> 22219 22220 <td class="entry_description"> 22221 <p>Recommended stream configurations for common client use cases.<wbr/></p> 22222 </td> 22223 22224 <td class="entry_units"> 22225 </td> 22226 22227 <td class="entry_range"> 22228 </td> 22229 22230 <td class="entry_hal_version"> 22231 <p>3.<wbr/>4</p> 22232 </td> 22233 22234 <td class="entry_tags"> 22235 </td> 22236 22237 </tr> 22238 <tr class="entries_header"> 22239 <th class="th_details" colspan="6">Details</th> 22240 </tr> 22241 <tr class="entry_cont"> 22242 <td class="entry_details" colspan="6"> 22243 <p>Optional subset of the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> that contains 22244similar tuples listed as 22245(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/> 22246Camera devices will be able to suggest particular stream configurations which are 22247power and performance efficient for specific use cases.<wbr/> For more information about 22248retrieving the suggestions see 22249<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p> 22250 </td> 22251 </tr> 22252 22253 <tr class="entries_header"> 22254 <th class="th_details" colspan="6">HAL Implementation Details</th> 22255 </tr> 22256 <tr class="entry_cont"> 22257 <td class="entry_details" colspan="6"> 22258 <p>There are some requirements that need to be considered regarding the usecases and the 22259suggested configurations:</p> 22260<ul> 22261<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 22262stream configurations must be present for all mandatory usecases PREVIEW,<wbr/> 22263SNAPSHOT,<wbr/> RECORD,<wbr/> VIDEO_<wbr/>SNAPSHOT.<wbr/> ZSL and RAW are 22264required depending on device capabilities see <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></li> 22265<li>Non-existing usecases and non-vendor usecases within the range 22266(RAW : VENDOR_<wbr/>START] are prohibited as well as stream configurations not 22267present in the exhaustive <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> list.<wbr/></li> 22268</ul> 22269<p>For example,<wbr/> in case the camera device supports only 4K and 1080p and both resolutions are 22270recommended for the mandatory usecases except preview which can run efficiently only 22271on 1080p.<wbr/> The array may look like this:</p> 22272<p>[3840,<wbr/> 2160,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 22273 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/> 22274 (1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/> 22275 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/> 22276 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT),<wbr/></p> 22277<p>1920,<wbr/> 1080,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 22278 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/> 22279 (1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>PREVIEW |<wbr/> 22280 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/> 22281 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/> 22282 1<< ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT)]</p> 22283 </td> 22284 </tr> 22285 22286 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22287 <!-- end of entry --> 22288 22289 22290 <tr class="entry" id="static_android.scaler.availableRecommendedInputOutputFormatsMap"> 22291 <td class="entry_name 22292 " rowspan="5"> 22293 android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 22294 </td> 22295 <td class="entry_type"> 22296 <span class="entry_type_name">int32</span> 22297 22298 <span class="entry_type_visibility"> [ndk_public as reprocessFormatsMap]</span> 22299 22300 22301 22302 22303 22304 22305 </td> <!-- entry_type --> 22306 22307 <td class="entry_description"> 22308 <p>Recommended mappings of image formats that are supported by this 22309camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 22310 </td> 22311 22312 <td class="entry_units"> 22313 </td> 22314 22315 <td class="entry_range"> 22316 </td> 22317 22318 <td class="entry_hal_version"> 22319 <p>3.<wbr/>4</p> 22320 </td> 22321 22322 <td class="entry_tags"> 22323 <ul class="entry_tags"> 22324 <li><a href="#tag_REPROC">REPROC</a></li> 22325 </ul> 22326 </td> 22327 22328 </tr> 22329 <tr class="entries_header"> 22330 <th class="th_details" colspan="6">Details</th> 22331 </tr> 22332 <tr class="entry_cont"> 22333 <td class="entry_details" colspan="6"> 22334 <p>This is a recommended subset of the complete list of mappings found in 22335<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/> 22336The list however doesn't need to contain all available and supported mappings.<wbr/> Instead of 22337this developers must list only recommended and efficient entries.<wbr/> 22338If set,<wbr/> the information will be available in the ZERO_<wbr/>SHUTTER_<wbr/>LAG recommended stream 22339configuration see 22340<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p> 22341 </td> 22342 </tr> 22343 22344 <tr class="entries_header"> 22345 <th class="th_details" colspan="6">HAL Implementation Details</th> 22346 </tr> 22347 <tr class="entry_cont"> 22348 <td class="entry_details" colspan="6"> 22349 <p>For a code sample of the required data encoding please check 22350<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 22351 </td> 22352 </tr> 22353 22354 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22355 <!-- end of entry --> 22356 22357 22358 <tr class="entry" id="static_android.scaler.mandatoryStreamCombinations"> 22359 <td class="entry_name 22360 " rowspan="5"> 22361 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Stream<wbr/>Combinations 22362 </td> 22363 <td class="entry_type"> 22364 <span class="entry_type_name">int32</span> 22365 <span class="entry_type_container">x</span> 22366 22367 <span class="entry_type_array"> 22368 n 22369 </span> 22370 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span> 22371 22372 <span class="entry_type_synthetic">[synthetic] </span> 22373 22374 <span class="entry_type_hwlevel">[limited] </span> 22375 22376 22377 22378 22379 </td> <!-- entry_type --> 22380 22381 <td class="entry_description"> 22382 <p>An array of mandatory stream combinations generated according to the camera device 22383<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> 22384and <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/> 22385This is an app-readable conversion of the mandatory stream combination 22386<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p> 22387 </td> 22388 22389 <td class="entry_units"> 22390 </td> 22391 22392 <td class="entry_range"> 22393 </td> 22394 22395 <td class="entry_hal_version"> 22396 <p>3.<wbr/>2</p> 22397 </td> 22398 22399 <td class="entry_tags"> 22400 </td> 22401 22402 </tr> 22403 <tr class="entries_header"> 22404 <th class="th_details" colspan="6">Details</th> 22405 </tr> 22406 <tr class="entry_cont"> 22407 <td class="entry_details" colspan="6"> 22408 <p>The array of 22409<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is 22410generated according to the documented 22411<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> based on 22412specific device level and capabilities.<wbr/> 22413Clients can use the array as a quick reference to find an appropriate camera stream 22414combination.<wbr/> 22415As per documentation,<wbr/> the stream combinations with given PREVIEW,<wbr/> RECORD and 22416MAXIMUM resolutions and anything smaller from the list given by 22417<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> are 22418guaranteed to work.<wbr/> 22419For a physical camera not independently exposed in 22420<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>,<wbr/> the mandatory stream 22421combinations for that physical camera Id are also generated,<wbr/> so that the application can 22422configure them as physical streams via the logical camera.<wbr/> 22423The mandatory stream combination array will be {@code null} in case the device is not 22424backward compatible.<wbr/></p> 22425 </td> 22426 </tr> 22427 22428 <tr class="entries_header"> 22429 <th class="th_details" colspan="6">HAL Implementation Details</th> 22430 </tr> 22431 <tr class="entry_cont"> 22432 <td class="entry_details" colspan="6"> 22433 <p>Do not set this property directly 22434(it is synthetic and will not be available at the HAL layer).<wbr/></p> 22435 </td> 22436 </tr> 22437 22438 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22439 <!-- end of entry --> 22440 22441 22442 <tr class="entry" id="static_android.scaler.mandatoryConcurrentStreamCombinations"> 22443 <td class="entry_name 22444 " rowspan="5"> 22445 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Concurrent<wbr/>Stream<wbr/>Combinations 22446 </td> 22447 <td class="entry_type"> 22448 <span class="entry_type_name">int32</span> 22449 <span class="entry_type_container">x</span> 22450 22451 <span class="entry_type_array"> 22452 n 22453 </span> 22454 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span> 22455 22456 <span class="entry_type_synthetic">[synthetic] </span> 22457 22458 22459 22460 22461 22462 </td> <!-- entry_type --> 22463 22464 <td class="entry_description"> 22465 <p>An array of mandatory concurrent stream combinations.<wbr/> 22466This is an app-readable conversion of the concurrent mandatory stream combination 22467<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p> 22468 </td> 22469 22470 <td class="entry_units"> 22471 </td> 22472 22473 <td class="entry_range"> 22474 </td> 22475 22476 <td class="entry_hal_version"> 22477 <p>3.<wbr/>2</p> 22478 </td> 22479 22480 <td class="entry_tags"> 22481 </td> 22482 22483 </tr> 22484 <tr class="entries_header"> 22485 <th class="th_details" colspan="6">Details</th> 22486 </tr> 22487 <tr class="entry_cont"> 22488 <td class="entry_details" colspan="6"> 22489 <p>The array of 22490<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is 22491generated according to the documented 22492<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> for each 22493device which has its Id present in the set returned by 22494<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getConcurrentCameraIds">CameraManager#getConcurrentCameraIds</a>.<wbr/> 22495Clients can use the array as a quick reference to find an appropriate camera stream 22496combination.<wbr/> 22497The mandatory stream combination array will be {@code null} in case the device is not a 22498part of at least one set of combinations returned by 22499<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getConcurrentCameraIds">CameraManager#getConcurrentCameraIds</a>.<wbr/></p> 22500 </td> 22501 </tr> 22502 22503 <tr class="entries_header"> 22504 <th class="th_details" colspan="6">HAL Implementation Details</th> 22505 </tr> 22506 <tr class="entry_cont"> 22507 <td class="entry_details" colspan="6"> 22508 <p>Do not set this property directly 22509(it is synthetic and will not be available at the HAL layer).<wbr/></p> 22510 </td> 22511 </tr> 22512 22513 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22514 <!-- end of entry --> 22515 22516 22517 <tr class="entry" id="static_android.scaler.availableRotateAndCropModes"> 22518 <td class="entry_name 22519 " rowspan="3"> 22520 android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes 22521 </td> 22522 <td class="entry_type"> 22523 <span class="entry_type_name">byte</span> 22524 <span class="entry_type_container">x</span> 22525 22526 <span class="entry_type_array"> 22527 n 22528 </span> 22529 <span class="entry_type_visibility"> [public as enumList]</span> 22530 22531 22532 22533 22534 <div class="entry_type_notes">list of enums</div> 22535 22536 22537 </td> <!-- entry_type --> 22538 22539 <td class="entry_description"> 22540 <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> 22541 </td> 22542 22543 <td class="entry_units"> 22544 </td> 22545 22546 <td class="entry_range"> 22547 <p>Any value listed in <a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a></p> 22548 </td> 22549 22550 <td class="entry_hal_version"> 22551 <p>3.<wbr/>5</p> 22552 </td> 22553 22554 <td class="entry_tags"> 22555 </td> 22556 22557 </tr> 22558 <tr class="entries_header"> 22559 <th class="th_details" colspan="6">Details</th> 22560 </tr> 22561 <tr class="entry_cont"> 22562 <td class="entry_details" colspan="6"> 22563 <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> 22564<p>Starting with API level 30,<wbr/> all devices will list at least <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/> 22565Devices with support for rotate-and-crop will additionally list at least 22566<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> and <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code>.<wbr/></p> 22567 </td> 22568 </tr> 22569 22570 22571 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22572 <!-- end of entry --> 22573 22574 22575 <tr class="entry" id="static_android.scaler.defaultSecureImageSize"> 22576 <td class="entry_name 22577 " rowspan="3"> 22578 android.<wbr/>scaler.<wbr/>default<wbr/>Secure<wbr/>Image<wbr/>Size 22579 </td> 22580 <td class="entry_type"> 22581 <span class="entry_type_name">int32</span> 22582 <span class="entry_type_container">x</span> 22583 22584 <span class="entry_type_array"> 22585 2 22586 </span> 22587 <span class="entry_type_visibility"> [public as size]</span> 22588 22589 22590 22591 22592 <div class="entry_type_notes">width/<wbr/>height for the default secure image data size</div> 22593 22594 22595 </td> <!-- entry_type --> 22596 22597 <td class="entry_description"> 22598 <p>Default YUV/<wbr/>PRIVATE size to use for requesting secure image buffers.<wbr/></p> 22599 </td> 22600 22601 <td class="entry_units"> 22602 Pixels 22603 </td> 22604 22605 <td class="entry_range"> 22606 </td> 22607 22608 <td class="entry_hal_version"> 22609 <p>3.<wbr/>6</p> 22610 </td> 22611 22612 <td class="entry_tags"> 22613 </td> 22614 22615 </tr> 22616 <tr class="entries_header"> 22617 <th class="th_details" colspan="6">Details</th> 22618 </tr> 22619 <tr class="entry_cont"> 22620 <td class="entry_details" colspan="6"> 22621 <p>This entry lists the default size supported in the secure camera mode.<wbr/> This entry is 22622optional on devices support the SECURE_<wbr/>IMAGE_<wbr/>DATA capability.<wbr/> This entry will be null 22623if the camera device does not list SECURE_<wbr/>IMAGE_<wbr/>DATA capability.<wbr/></p> 22624<p>When the key is present,<wbr/> only a PRIVATE/<wbr/>YUV output of the specified size is guaranteed 22625to be supported by the camera HAL in the secure camera mode.<wbr/> Any other format or 22626resolutions might not be supported.<wbr/> Use 22627<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a> 22628API to query if a secure session configuration is supported if the device supports this 22629API.<wbr/></p> 22630<p>If this key returns null on a device with SECURE_<wbr/>IMAGE_<wbr/>DATA capability,<wbr/> the application 22631can assume all output sizes listed in the 22632<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a> 22633are supported.<wbr/></p> 22634 </td> 22635 </tr> 22636 22637 22638 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22639 <!-- end of entry --> 22640 22641 22642 <tr class="entry" id="static_android.scaler.physicalCameraMultiResolutionStreamConfigurations"> 22643 <td class="entry_name 22644 " rowspan="5"> 22645 android.<wbr/>scaler.<wbr/>physical<wbr/>Camera<wbr/>Multi<wbr/>Resolution<wbr/>Stream<wbr/>Configurations 22646 </td> 22647 <td class="entry_type"> 22648 <span class="entry_type_name entry_type_name_enum">int32</span> 22649 <span class="entry_type_container">x</span> 22650 22651 <span class="entry_type_array"> 22652 n x 4 22653 </span> 22654 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 22655 22656 22657 <span class="entry_type_hwlevel">[limited] </span> 22658 22659 22660 22661 <ul class="entry_type_enum"> 22662 <li> 22663 <span class="entry_type_enum_name">OUTPUT (v3.6)</span> 22664 </li> 22665 <li> 22666 <span class="entry_type_enum_name">INPUT (v3.6)</span> 22667 </li> 22668 </ul> 22669 22670 </td> <!-- entry_type --> 22671 22672 <td class="entry_description"> 22673 <p>The available multi-resolution stream configurations that this 22674physical camera device supports 22675(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 22676 </td> 22677 22678 <td class="entry_units"> 22679 </td> 22680 22681 <td class="entry_range"> 22682 </td> 22683 22684 <td class="entry_hal_version"> 22685 <p>3.<wbr/>6</p> 22686 </td> 22687 22688 <td class="entry_tags"> 22689 </td> 22690 22691 </tr> 22692 <tr class="entries_header"> 22693 <th class="th_details" colspan="6">Details</th> 22694 </tr> 22695 <tr class="entry_cont"> 22696 <td class="entry_details" colspan="6"> 22697 <p>This list contains a subset of the parent logical camera's multi-resolution stream 22698configurations which belong to this physical camera,<wbr/> and it will advertise and will only 22699advertise the maximum supported resolutions for a particular format.<wbr/></p> 22700<p>If this camera device isn't a physical camera device constituting a logical camera,<wbr/> 22701but 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> 22702camera,<wbr/> this field represents the multi-resolution input/<wbr/>output stream configurations of 22703default mode and max resolution modes.<wbr/> The sizes will be the maximum resolution of a 22704particular format for default mode and max resolution mode.<wbr/></p> 22705<p>This field will only be advertised if the device is a physical camera of a 22706logical multi-camera device or an ultra high resolution sensor camera.<wbr/> For a logical 22707multi-camera,<wbr/> the camera API will derive the logical camera’s multi-resolution stream 22708configurations from all physical cameras.<wbr/> For an ultra high resolution sensor camera,<wbr/> this 22709is used directly as the camera’s multi-resolution stream configurations.<wbr/></p> 22710 </td> 22711 </tr> 22712 22713 <tr class="entries_header"> 22714 <th class="th_details" colspan="6">HAL Implementation Details</th> 22715 </tr> 22716 <tr class="entry_cont"> 22717 <td class="entry_details" colspan="6"> 22718 <p>If this field contains input stream configurations,<wbr/> and the camera device is a physical 22719camera (not a standalone ultra-high resolution camera),<wbr/> the 22720<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 22721the physical camera result metadata.<wbr/> This is to make sure during multi-resolution 22722reprocessing,<wbr/> the camera HAL is notified of which physical camera the reprocessing 22723request comes from.<wbr/></p> 22724 </td> 22725 </tr> 22726 22727 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22728 <!-- end of entry --> 22729 22730 22731 <tr class="entry" id="static_android.scaler.multiResolutionStreamConfigurationMap"> 22732 <td class="entry_name 22733 " rowspan="5"> 22734 android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map 22735 </td> 22736 <td class="entry_type"> 22737 <span class="entry_type_name">int32</span> 22738 22739 <span class="entry_type_visibility"> [java_public as multiResolutionStreamConfigurationMap]</span> 22740 22741 <span class="entry_type_synthetic">[synthetic] </span> 22742 22743 22744 22745 22746 22747 </td> <!-- entry_type --> 22748 22749 <td class="entry_description"> 22750 <p>The multi-resolution stream configurations supported by this logical camera 22751or ultra high resolution sensor camera device.<wbr/></p> 22752 </td> 22753 22754 <td class="entry_units"> 22755 </td> 22756 22757 <td class="entry_range"> 22758 </td> 22759 22760 <td class="entry_hal_version"> 22761 <p>3.<wbr/>2</p> 22762 </td> 22763 22764 <td class="entry_tags"> 22765 </td> 22766 22767 </tr> 22768 <tr class="entries_header"> 22769 <th class="th_details" colspan="6">Details</th> 22770 </tr> 22771 <tr class="entry_cont"> 22772 <td class="entry_details" colspan="6"> 22773 <p>Multi-resolution streams can be used by a LOGICAL_<wbr/>MULTI_<wbr/>CAMERA or an 22774ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR camera where the images sent or received can vary in 22775resolution per frame.<wbr/> This is useful in cases where the camera device's effective full 22776resolution changes depending on factors such as the current zoom level,<wbr/> lighting 22777condition,<wbr/> focus distance,<wbr/> or pixel mode.<wbr/></p> 22778<ul> 22779<li>For a logical multi-camera implementing optical zoom,<wbr/> at different zoom level,<wbr/> a 22780different physical camera may be active,<wbr/> resulting in different full-resolution image 22781sizes.<wbr/></li> 22782<li>For an ultra high resolution camera,<wbr/> depending on whether the camera operates in default 22783mode,<wbr/> or maximum resolution mode,<wbr/> the output full-size images may be of either binned 22784resolution or maximum resolution.<wbr/></li> 22785</ul> 22786<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/> 22787A <a href="https://developer.android.com/reference/android/hardware/camera2/MultiResolutionImageReader.html">MultiResolutionImageReader</a> can then be created for a 22788supported 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> 22789<p>If a camera device supports multi-resolution output streams for a particular format,<wbr/> for 22790each of its mandatory stream combinations,<wbr/> the camera device will support using a 22791MultiResolutionImageReader for the MAXIMUM stream of supported formats.<wbr/> Refer to 22792<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for additional details.<wbr/></p> 22793<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/> 22794A 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 22795the 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> 22796<p>If a camera device supports multi-resolution {@code YUV} input and multi-resolution 22797{@code YUV} output,<wbr/> or multi-resolution {@code PRIVATE} input and multi-resolution 22798{@code PRIVATE} output,<wbr/> {@code JPEG} and {@code YUV} are guaranteed to be supported 22799multi-resolution output stream formats.<wbr/> Refer to 22800<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for 22801details about the additional mandatory stream combinations in this case.<wbr/></p> 22802 </td> 22803 </tr> 22804 22805 <tr class="entries_header"> 22806 <th class="th_details" colspan="6">HAL Implementation Details</th> 22807 </tr> 22808 <tr class="entry_cont"> 22809 <td class="entry_details" colspan="6"> 22810 <p>Do not set this property directly 22811(it is synthetic and will not be available at the HAL layer).<wbr/></p> 22812 </td> 22813 </tr> 22814 22815 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22816 <!-- end of entry --> 22817 22818 22819 <tr class="entry" id="static_android.scaler.availableStreamConfigurationsMaximumResolution"> 22820 <td class="entry_name 22821 " rowspan="5"> 22822 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution 22823 </td> 22824 <td class="entry_type"> 22825 <span class="entry_type_name entry_type_name_enum">int32</span> 22826 <span class="entry_type_container">x</span> 22827 22828 <span class="entry_type_array"> 22829 n x 4 22830 </span> 22831 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 22832 22833 22834 22835 22836 22837 <ul class="entry_type_enum"> 22838 <li> 22839 <span class="entry_type_enum_name">OUTPUT (v3.6)</span> 22840 </li> 22841 <li> 22842 <span class="entry_type_enum_name">INPUT (v3.6)</span> 22843 </li> 22844 </ul> 22845 22846 </td> <!-- entry_type --> 22847 22848 <td class="entry_description"> 22849 <p>The available stream configurations that this 22850camera device supports (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream) for a 22851CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to 22852<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> 22853 </td> 22854 22855 <td class="entry_units"> 22856 </td> 22857 22858 <td class="entry_range"> 22859 </td> 22860 22861 <td class="entry_hal_version"> 22862 <p>3.<wbr/>6</p> 22863 </td> 22864 22865 <td class="entry_tags"> 22866 </td> 22867 22868 </tr> 22869 <tr class="entries_header"> 22870 <th class="th_details" colspan="6">Details</th> 22871 </tr> 22872 <tr class="entry_cont"> 22873 <td class="entry_details" colspan="6"> 22874 <p>Analogous to <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>,<wbr/> for configurations 22875which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 22876<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> 22877<p>Not all output formats may be supported in a configuration with 22878an input stream of a particular format.<wbr/> For more details,<wbr/> see 22879<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> 22880 </td> 22881 </tr> 22882 22883 <tr class="entries_header"> 22884 <th class="th_details" colspan="6">HAL Implementation Details</th> 22885 </tr> 22886 <tr class="entry_cont"> 22887 <td class="entry_details" colspan="6"> 22888 <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> 22889 </td> 22890 </tr> 22891 22892 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22893 <!-- end of entry --> 22894 22895 22896 <tr class="entry" id="static_android.scaler.availableMinFrameDurationsMaximumResolution"> 22897 <td class="entry_name 22898 " rowspan="3"> 22899 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 22900 </td> 22901 <td class="entry_type"> 22902 <span class="entry_type_name">int64</span> 22903 <span class="entry_type_container">x</span> 22904 22905 <span class="entry_type_array"> 22906 4 x n 22907 </span> 22908 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 22909 22910 22911 22912 22913 22914 22915 </td> <!-- entry_type --> 22916 22917 <td class="entry_description"> 22918 <p>This lists the minimum frame duration for each 22919format/<wbr/>size combination when the camera device is sent a CaptureRequest with 22920<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to 22921<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> 22922 </td> 22923 22924 <td class="entry_units"> 22925 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 22926 </td> 22927 22928 <td class="entry_range"> 22929 </td> 22930 22931 <td class="entry_hal_version"> 22932 <p>3.<wbr/>6</p> 22933 </td> 22934 22935 <td class="entry_tags"> 22936 </td> 22937 22938 </tr> 22939 <tr class="entries_header"> 22940 <th class="th_details" colspan="6">Details</th> 22941 </tr> 22942 <tr class="entry_cont"> 22943 <td class="entry_details" colspan="6"> 22944 <p>Analogous to <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations 22945which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 22946<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> 22947<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> 22948is set to 22949<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 22950minimum frame duration will be max(individual stream min durations).<wbr/></p> 22951<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 22952<a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution</a> for more details about 22953calculating the max frame rate.<wbr/></p> 22954 </td> 22955 </tr> 22956 22957 22958 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22959 <!-- end of entry --> 22960 22961 22962 <tr class="entry" id="static_android.scaler.availableStallDurationsMaximumResolution"> 22963 <td class="entry_name 22964 " rowspan="5"> 22965 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 22966 </td> 22967 <td class="entry_type"> 22968 <span class="entry_type_name">int64</span> 22969 <span class="entry_type_container">x</span> 22970 22971 <span class="entry_type_array"> 22972 4 x n 22973 </span> 22974 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 22975 22976 22977 22978 22979 22980 22981 </td> <!-- entry_type --> 22982 22983 <td class="entry_description"> 22984 <p>This lists the maximum stall duration for each 22985output format/<wbr/>size combination when CaptureRequests are submitted with 22986<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to 22987<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> 22988 </td> 22989 22990 <td class="entry_units"> 22991 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 22992 </td> 22993 22994 <td class="entry_range"> 22995 </td> 22996 22997 <td class="entry_hal_version"> 22998 <p>3.<wbr/>6</p> 22999 </td> 23000 23001 <td class="entry_tags"> 23002 </td> 23003 23004 </tr> 23005 <tr class="entries_header"> 23006 <th class="th_details" colspan="6">Details</th> 23007 </tr> 23008 <tr class="entry_cont"> 23009 <td class="entry_details" colspan="6"> 23010 <p>Analogous to <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations 23011which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 23012<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> 23013 </td> 23014 </tr> 23015 23016 <tr class="entries_header"> 23017 <th class="th_details" colspan="6">HAL Implementation Details</th> 23018 </tr> 23019 <tr class="entry_cont"> 23020 <td class="entry_details" colspan="6"> 23021 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 23022(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE 23023and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 23024 </td> 23025 </tr> 23026 23027 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23028 <!-- end of entry --> 23029 23030 23031 <tr class="entry" id="static_android.scaler.streamConfigurationMapMaximumResolution"> 23032 <td class="entry_name 23033 " rowspan="5"> 23034 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution 23035 </td> 23036 <td class="entry_type"> 23037 <span class="entry_type_name">int32</span> 23038 23039 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span> 23040 23041 <span class="entry_type_synthetic">[synthetic] </span> 23042 23043 23044 23045 23046 23047 </td> <!-- entry_type --> 23048 23049 <td class="entry_description"> 23050 <p>The available stream configurations that this 23051camera device supports when given a CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> 23052set to 23053<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>; 23054also includes the minimum frame durations 23055and the stall durations for each format/<wbr/>size combination.<wbr/></p> 23056 </td> 23057 23058 <td class="entry_units"> 23059 </td> 23060 23061 <td class="entry_range"> 23062 </td> 23063 23064 <td class="entry_hal_version"> 23065 <p>3.<wbr/>2</p> 23066 </td> 23067 23068 <td class="entry_tags"> 23069 </td> 23070 23071 </tr> 23072 <tr class="entries_header"> 23073 <th class="th_details" colspan="6">Details</th> 23074 </tr> 23075 <tr class="entry_cont"> 23076 <td class="entry_details" colspan="6"> 23077 <p>Analogous to <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> for CaptureRequests where 23078<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is 23079<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> 23080 </td> 23081 </tr> 23082 23083 <tr class="entries_header"> 23084 <th class="th_details" colspan="6">HAL Implementation Details</th> 23085 </tr> 23086 <tr class="entry_cont"> 23087 <td class="entry_details" colspan="6"> 23088 <p>Do not set this property directly 23089(it is synthetic and will not be available at the HAL layer); 23090set the <a href="#static_android.scaler.availableStreamConfigurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution</a> instead.<wbr/></p> 23091<p>Not all output formats may be supported in a configuration with 23092an input stream of a particular format.<wbr/> For more details,<wbr/> see 23093<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> 23094 </td> 23095 </tr> 23096 23097 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23098 <!-- end of entry --> 23099 23100 23101 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMapMaximumResolution"> 23102 <td class="entry_name 23103 " rowspan="5"> 23104 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution 23105 </td> 23106 <td class="entry_type"> 23107 <span class="entry_type_name">int32</span> 23108 23109 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> 23110 23111 23112 23113 23114 23115 23116 </td> <!-- entry_type --> 23117 23118 <td class="entry_description"> 23119 <p>The mapping of image formats that are supported by this 23120camera device for input streams,<wbr/> to their corresponding output formats,<wbr/> when 23121<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 23122<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> 23123 </td> 23124 23125 <td class="entry_units"> 23126 </td> 23127 23128 <td class="entry_range"> 23129 </td> 23130 23131 <td class="entry_hal_version"> 23132 <p>3.<wbr/>6</p> 23133 </td> 23134 23135 <td class="entry_tags"> 23136 <ul class="entry_tags"> 23137 <li><a href="#tag_REPROC">REPROC</a></li> 23138 </ul> 23139 </td> 23140 23141 </tr> 23142 <tr class="entries_header"> 23143 <th class="th_details" colspan="6">Details</th> 23144 </tr> 23145 <tr class="entry_cont"> 23146 <td class="entry_details" colspan="6"> 23147 <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 23148<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is 23149<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> 23150 </td> 23151 </tr> 23152 23153 <tr class="entries_header"> 23154 <th class="th_details" colspan="6">HAL Implementation Details</th> 23155 </tr> 23156 <tr class="entry_cont"> 23157 <td class="entry_details" colspan="6"> 23158 <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> 23159 </td> 23160 </tr> 23161 23162 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23163 <!-- end of entry --> 23164 23165 23166 <tr class="entry" id="static_android.scaler.mandatoryMaximumResolutionStreamCombinations"> 23167 <td class="entry_name 23168 " rowspan="5"> 23169 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Maximum<wbr/>Resolution<wbr/>Stream<wbr/>Combinations 23170 </td> 23171 <td class="entry_type"> 23172 <span class="entry_type_name">int32</span> 23173 <span class="entry_type_container">x</span> 23174 23175 <span class="entry_type_array"> 23176 n 23177 </span> 23178 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span> 23179 23180 <span class="entry_type_synthetic">[synthetic] </span> 23181 23182 23183 23184 23185 23186 </td> <!-- entry_type --> 23187 23188 <td class="entry_description"> 23189 <p>An array of mandatory stream combinations which are applicable when 23190<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 23191to <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/> 23192This is an app-readable conversion of the maximum resolution mandatory stream combination 23193<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p> 23194 </td> 23195 23196 <td class="entry_units"> 23197 </td> 23198 23199 <td class="entry_range"> 23200 </td> 23201 23202 <td class="entry_hal_version"> 23203 <p>3.<wbr/>2</p> 23204 </td> 23205 23206 <td class="entry_tags"> 23207 </td> 23208 23209 </tr> 23210 <tr class="entries_header"> 23211 <th class="th_details" colspan="6">Details</th> 23212 </tr> 23213 <tr class="entry_cont"> 23214 <td class="entry_details" colspan="6"> 23215 <p>The array of 23216<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is 23217generated according to the documented 23218<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> for each 23219device which has the 23220<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> 23221capability.<wbr/> 23222Clients can use the array as a quick reference to find an appropriate camera stream 23223combination.<wbr/> 23224The mandatory stream combination array will be {@code null} in case the device is not an 23225<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> 23226device.<wbr/></p> 23227 </td> 23228 </tr> 23229 23230 <tr class="entries_header"> 23231 <th class="th_details" colspan="6">HAL Implementation Details</th> 23232 </tr> 23233 <tr class="entry_cont"> 23234 <td class="entry_details" colspan="6"> 23235 <p>Do not set this property directly 23236(it is synthetic and will not be available at the HAL layer).<wbr/></p> 23237 </td> 23238 </tr> 23239 23240 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23241 <!-- end of entry --> 23242 23243 23244 <tr class="entry" id="static_android.scaler.multiResolutionStreamSupported"> 23245 <td class="entry_name 23246 " rowspan="5"> 23247 android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Supported 23248 </td> 23249 <td class="entry_type"> 23250 <span class="entry_type_name entry_type_name_enum">byte</span> 23251 23252 <span class="entry_type_visibility"> [ndk_public as boolean]</span> 23253 23254 23255 <span class="entry_type_hwlevel">[limited] </span> 23256 23257 23258 23259 <ul class="entry_type_enum"> 23260 <li> 23261 <span class="entry_type_enum_name">FALSE (v3.6)</span> 23262 </li> 23263 <li> 23264 <span class="entry_type_enum_name">TRUE (v3.6)</span> 23265 </li> 23266 </ul> 23267 23268 </td> <!-- entry_type --> 23269 23270 <td class="entry_description"> 23271 <p>Whether the camera device supports multi-resolution input or output streams</p> 23272 </td> 23273 23274 <td class="entry_units"> 23275 </td> 23276 23277 <td class="entry_range"> 23278 </td> 23279 23280 <td class="entry_hal_version"> 23281 <p>3.<wbr/>6</p> 23282 </td> 23283 23284 <td class="entry_tags"> 23285 </td> 23286 23287 </tr> 23288 <tr class="entries_header"> 23289 <th class="th_details" colspan="6">Details</th> 23290 </tr> 23291 <tr class="entry_cont"> 23292 <td class="entry_details" colspan="6"> 23293 <p>A logical multi-camera or an ultra high resolution camera may support multi-resolution 23294input or output streams.<wbr/> With multi-resolution output streams,<wbr/> the camera device is able 23295to output different resolution images depending on the current active physical camera or 23296pixel mode.<wbr/> With multi-resolution input streams,<wbr/> the camera device can reprocess images 23297of different resolutions from different physical cameras or sensor pixel modes.<wbr/></p> 23298<p>When set to TRUE: 23299* For a logical multi-camera,<wbr/> the camera framework derives 23300<a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map</a> by combining the 23301<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 23302cameras.<wbr/> 23303* For an ultra-high resolution sensor camera,<wbr/> the camera framework directly copies 23304the 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 23305<a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p> 23306 </td> 23307 </tr> 23308 23309 <tr class="entries_header"> 23310 <th class="th_details" colspan="6">HAL Implementation Details</th> 23311 </tr> 23312 <tr class="entry_cont"> 23313 <td class="entry_details" colspan="6"> 23314 <p>For the HAL to claim support for multi-resolution streams: 23315* The HAL must support the buffer management API by setting 23316supportedBufferManagementVersion to HIDL_<wbr/>DEVICE_<wbr/>3_<wbr/>5.<wbr/> 23317* For a logical multi-camera,<wbr/> when combined from all its physical cameras,<wbr/> there must be 23318at a minimum one input or output stream format with at least two different 23319physicalCameraMultiResolutionStreamConfigurations entries for that format.<wbr/> 23320* For an ultra high resolution sensor camera,<wbr/> for each supported multi-resolution format,<wbr/> 23321the physicalCameraMultiResolutionStreamConfigurations must contain both the largest stream 23322configuration within the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> and the largest stream 23323configuration within the <a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/> 23324* If the HAL advertises multi-resolution input stream support for a particular format 23325(namely PRIVATE,<wbr/> or YUV),<wbr/> the logical multi-camera or ultra high resolution sensor camera 23326must have the corresponding reprocessing capabilities (PRIVATE_<wbr/>REPROCESSING,<wbr/> 23327or YUV_<wbr/>REPROCESSING respectively).<wbr/> The camera HAL must support reprocessing the 23328multi-resolution input stream to the output formats specified in the camera's 23329<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 23330 </td> 23331 </tr> 23332 23333 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23334 <!-- end of entry --> 23335 23336 23337 23338 <!-- end of kind --> 23339 </tbody> 23340 <tr><td colspan="7" class="kind">dynamic</td></tr> 23341 23342 <thead class="entries_header"> 23343 <tr> 23344 <th class="th_name">Property Name</th> 23345 <th class="th_type">Type</th> 23346 <th class="th_description">Description</th> 23347 <th class="th_units">Units</th> 23348 <th class="th_range">Range</th> 23349 <th class="th_hal_version">Initial HIDL HAL version</th> 23350 <th class="th_tags">Tags</th> 23351 </tr> 23352 </thead> 23353 23354 <tbody> 23355 23356 23357 23358 23359 23360 23361 23362 23363 23364 23365 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 23366 <td class="entry_name 23367 " rowspan="5"> 23368 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 23369 </td> 23370 <td class="entry_type"> 23371 <span class="entry_type_name">int32</span> 23372 <span class="entry_type_container">x</span> 23373 23374 <span class="entry_type_array"> 23375 4 23376 </span> 23377 <span class="entry_type_visibility"> [public as rectangle]</span> 23378 23379 23380 <span class="entry_type_hwlevel">[legacy] </span> 23381 23382 23383 23384 23385 </td> <!-- entry_type --> 23386 23387 <td class="entry_description"> 23388 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 23389 </td> 23390 23391 <td class="entry_units"> 23392 Pixel coordinates relative to 23393 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or 23394 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction 23395 capability and mode 23396 </td> 23397 23398 <td class="entry_range"> 23399 </td> 23400 23401 <td class="entry_hal_version"> 23402 <p>3.<wbr/>2</p> 23403 </td> 23404 23405 <td class="entry_tags"> 23406 <ul class="entry_tags"> 23407 <li><a href="#tag_BC">BC</a></li> 23408 </ul> 23409 </td> 23410 23411 </tr> 23412 <tr class="entries_header"> 23413 <th class="th_details" colspan="6">Details</th> 23414 </tr> 23415 <tr class="entry_cont"> 23416 <td class="entry_details" colspan="6"> 23417 <p>This control can be used to implement digital zoom.<wbr/></p> 23418<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 23419system 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 23420the top-left pixel of the active array.<wbr/></p> 23421<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate system 23422depends on the mode being set.<wbr/> When the distortion correction mode is OFF,<wbr/> the 23423coordinate 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/> 234240)</code> being the top-left pixel of the pre-correction active array.<wbr/> When the distortion 23425correction mode is not OFF,<wbr/> the coordinate system follows 23426<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 23427active array.<wbr/></p> 23428<p>Output streams use this rectangle to produce their output,<wbr/> cropping to a smaller region 23429if necessary to maintain the stream's aspect ratio,<wbr/> then scaling the sensor input to 23430match the output's configured resolution.<wbr/></p> 23431<p>The crop region is applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV) 23432conversion.<wbr/> Since raw streams (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 23433croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 23434<p>For non-raw streams,<wbr/> any additional per-stream cropping will be done to maximize the 23435final pixel area of the stream.<wbr/></p> 23436<p>For example,<wbr/> if the crop region is set to a 4:3 aspect ratio,<wbr/> then 4:3 streams will use 23437the exact crop region.<wbr/> 16:9 streams will further crop vertically (letterbox).<wbr/></p> 23438<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 outputs will crop horizontally 23439(pillarbox),<wbr/> and 16:9 streams will match exactly.<wbr/> These additional crops will be 23440centered within the crop region.<wbr/></p> 23441<p>To illustrate,<wbr/> here are several scenarios of different crop regions and output streams,<wbr/> 23442for a hypothetical camera device with an active array of size <code>(2000,<wbr/>1500)</code>.<wbr/> Note that 23443several of these examples use non-centered crop regions for ease of illustration; such 23444regions are only supported on devices with FREEFORM capability 23445(<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 23446rules work otherwise.<wbr/></p> 23447<ul> 23448<li>Camera Configuration:<ul> 23449<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li> 23450<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li> 23451<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li> 23452</ul> 23453</li> 23454<li>Case #1: 4:3 crop region with 2x digital zoom<ul> 23455<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code></li> 23456<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-ratio.png"/></li> 23457<li><code>640x480</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code> (equal to crop region)</li> 23458<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li> 23459</ul> 23460</li> 23461<li>Case #2: 16:9 crop region with ~1.<wbr/>5x digital zoom.<wbr/><ul> 23462<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code></li> 23463<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-169-ratio.png"/></li> 23464<li><code>640x480</code> stream source area: <code>(666,<wbr/> 375,<wbr/> 1666,<wbr/> 1125)</code> (pillarboxed)</li> 23465<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code> (equal to crop region)</li> 23466</ul> 23467</li> 23468<li>Case #3: 1:1 crop region with ~2.<wbr/>6x digital zoom.<wbr/><ul> 23469<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1250,<wbr/> 1125)</code></li> 23470<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-11-ratio.png"/></li> 23471<li><code>640x480</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1250,<wbr/> 1031)</code> (letterboxed)</li> 23472<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 543,<wbr/> 1250,<wbr/> 957)</code> (letterboxed)</li> 23473</ul> 23474</li> 23475<li>Case #4: Replace <code>640x480</code> stream with <code>1024x1024</code> stream,<wbr/> with 4:3 crop region:<ul> 23476<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code></li> 23477<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> 23478<li><code>1024x1024</code> stream source area: <code>(625,<wbr/> 375,<wbr/> 1375,<wbr/> 1125)</code> (pillarboxed)</li> 23479<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li> 23480<li>Note that in this case,<wbr/> neither of the two outputs is a subset of the other,<wbr/> with 23481 each containing image data the other doesn't have.<wbr/></li> 23482</ul> 23483</li> 23484</ul> 23485<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 23486of the crop region cannot be set to be smaller than 23487<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 23488<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> 23489<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 23490and height of the crop region cannot be set to be smaller than 23491<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> 23492and 23493<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/> 23494respectively.<wbr/></p> 23495<p>The camera device may adjust the crop region to account for rounding and other hardware 23496requirements; the final crop region used will be included in the output capture result.<wbr/></p> 23497<p>The camera sensor output aspect ratio depends on factors such as output stream 23498combination 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 23499this control.<wbr/> And the camera device will treat different camera sensor output sizes 23500(potentially with in-sensor crop) as the same crop of 23501<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 23502maximum crop region always maps to the same aspect ratio or field of view for the 23503sensor output.<wbr/></p> 23504<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> 23505to take advantage of better support for zoom with logical multi-camera.<wbr/> The benefits 23506include better precision with optical-digital zoom combination,<wbr/> and ability to do 23507zoom-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 23508the capture request should be left as the default activeArray size.<wbr/> The 23509coordinate system is post-zoom,<wbr/> meaning that the activeArraySize or 23510preCorrectionActiveArraySize covers the camera device's field of view "after" zoom.<wbr/> See 23511<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/></p> 23512<p>For camera devices with the 23513<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> 23514capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> 23515<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 23516coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 23517<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> 23518 </td> 23519 </tr> 23520 23521 <tr class="entries_header"> 23522 <th class="th_details" colspan="6">HAL Implementation Details</th> 23523 </tr> 23524 <tr class="entry_cont"> 23525 <td class="entry_details" colspan="6"> 23526 <p>The output streams must maintain square pixels at all 23527times,<wbr/> no matter what the relative aspect ratios of the 23528crop region and the stream are.<wbr/> Negative values for 23529corner are allowed for raw output if full pixel array is 23530larger than active pixel array.<wbr/> Width and height may be 23531rounded to nearest larger supportable width,<wbr/> especially 23532for raw output,<wbr/> where only a few fixed scales may be 23533possible.<wbr/></p> 23534<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 23535ratio via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and change the coordinate system such that 23536<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 23537represent the camera field-of-view after zoom.<wbr/> see <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for 23538details.<wbr/></p> 23539<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 23540 </td> 23541 </tr> 23542 23543 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23544 <!-- end of entry --> 23545 23546 23547 <tr class="entry" id="dynamic_android.scaler.rotateAndCrop"> 23548 <td class="entry_name 23549 " rowspan="5"> 23550 android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop 23551 </td> 23552 <td class="entry_type"> 23553 <span class="entry_type_name entry_type_name_enum">byte</span> 23554 23555 <span class="entry_type_visibility"> [public]</span> 23556 23557 23558 23559 23560 23561 <ul class="entry_type_enum"> 23562 <li> 23563 <span class="entry_type_enum_name">NONE (v3.5)</span> 23564 <span class="entry_type_enum_notes"><p>No rotate and crop is applied.<wbr/> Processed outputs are in the sensor orientation.<wbr/></p></span> 23565 </li> 23566 <li> 23567 <span class="entry_type_enum_name">90 (v3.5)</span> 23568 <span class="entry_type_enum_notes"><p>Processed images are rotated by 90 degrees clockwise,<wbr/> and then cropped 23569to the original aspect ratio.<wbr/></p></span> 23570 </li> 23571 <li> 23572 <span class="entry_type_enum_name">180 (v3.5)</span> 23573 <span class="entry_type_enum_notes"><p>Processed images are rotated by 180 degrees.<wbr/> Since the aspect ratio does not 23574change,<wbr/> no cropping is performed.<wbr/></p></span> 23575 </li> 23576 <li> 23577 <span class="entry_type_enum_name">270 (v3.5)</span> 23578 <span class="entry_type_enum_notes"><p>Processed images are rotated by 270 degrees clockwise,<wbr/> and then cropped 23579to the original aspect ratio.<wbr/></p></span> 23580 </li> 23581 <li> 23582 <span class="entry_type_enum_name">AUTO (v3.5)</span> 23583 <span class="entry_type_enum_notes"><p>The camera API automatically selects the best concrete value for 23584rotate-and-crop based on the application's support for resizability and the current 23585multi-window mode.<wbr/></p> 23586<p>If the application does not support resizing but the display mode for its main 23587Activity is not in a typical orientation,<wbr/> the camera API will set <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> 23588or some other supported rotation value,<wbr/> depending on device configuration,<wbr/> 23589to ensure preview and captured images are correctly shown to the user.<wbr/> Otherwise,<wbr/> 23590<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> will be selected.<wbr/></p> 23591<p>When a value other than NONE is selected,<wbr/> several metadata fields will also be parsed 23592differently to ensure that coordinates are correctly handled for features like drawing 23593face detection boxes or passing in tap-to-focus coordinates.<wbr/> The camera API will 23594convert positions in the active array coordinate system to/<wbr/>from the cropped-and-rotated 23595coordinate system to make the operation transparent for applications.<wbr/></p> 23596<p>No coordinate mapping will be done when the application selects a non-AUTO mode.<wbr/></p></span> 23597 </li> 23598 </ul> 23599 23600 </td> <!-- entry_type --> 23601 23602 <td class="entry_description"> 23603 <p>Whether a rotation-and-crop operation is applied to processed 23604outputs from the camera.<wbr/></p> 23605 </td> 23606 23607 <td class="entry_units"> 23608 </td> 23609 23610 <td class="entry_range"> 23611 <p><a href="#static_android.scaler.availableRotateAndCropModes">android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes</a></p> 23612 </td> 23613 23614 <td class="entry_hal_version"> 23615 <p>3.<wbr/>5</p> 23616 </td> 23617 23618 <td class="entry_tags"> 23619 </td> 23620 23621 </tr> 23622 <tr class="entries_header"> 23623 <th class="th_details" colspan="6">Details</th> 23624 </tr> 23625 <tr class="entry_cont"> 23626 <td class="entry_details" colspan="6"> 23627 <p>This control is primarily intended to help camera applications with no support for 23628multi-window modes to work correctly on devices where multi-window scenarios are 23629unavoidable,<wbr/> such as foldables or other devices with variable display geometry or more 23630free-form window placement (such as laptops,<wbr/> which often place portrait-orientation apps 23631in landscape with pillarboxing).<wbr/></p> 23632<p>If supported,<wbr/> the default value is <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code>,<wbr/> which allows the camera API 23633to enable backwards-compatibility support for applications that do not support resizing 23634/<wbr/> multi-window modes,<wbr/> when the device is in fact in a multi-window mode (such as inset 23635portrait on laptops,<wbr/> or on a foldable device in some fold states).<wbr/> In addition,<wbr/> 23636<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 23637is supported by the device.<wbr/> If not supported,<wbr/> devices API level 30 or higher will always 23638list only <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/></p> 23639<p>When <code>CROP_<wbr/>AUTO</code> is in use,<wbr/> and the camera API activates backward-compatibility mode,<wbr/> 23640several metadata fields will also be parsed differently to ensure that coordinates are 23641correctly handled for features like drawing face detection boxes or passing in 23642tap-to-focus coordinates.<wbr/> The camera API will convert positions in the active array 23643coordinate system to/<wbr/>from the cropped-and-rotated coordinate system to make the 23644operation transparent for applications.<wbr/> The following controls are affected:</p> 23645<ul> 23646<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 23647<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 23648<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 23649<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li> 23650</ul> 23651<p>Capture results will contain the actual value selected by the API; 23652<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> will never be seen in a capture result.<wbr/></p> 23653<p>Applications can also select their preferred cropping mode,<wbr/> either to opt out of the 23654backwards-compatibility treatment,<wbr/> or to use the cropping feature themselves as needed.<wbr/> 23655In this case,<wbr/> no coordinate translation will be done automatically,<wbr/> and all controls 23656will continue to use the normal active array coordinates.<wbr/></p> 23657<p>Cropping and rotating is done after the application of digital zoom (via either 23658<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 23659output is further cropped and scaled.<wbr/> It only affects processed outputs such as 23660YUV,<wbr/> PRIVATE,<wbr/> and JPEG.<wbr/> It has no effect on RAW outputs.<wbr/></p> 23661<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 23662view.<wbr/> For example,<wbr/> with a 4:3 aspect ratio output of 1600x1200,<wbr/> <code>CROP_<wbr/>90</code> will still 23663produce 1600x1200 output,<wbr/> but these buffers are cropped from a vertical 3:4 slice at the 23664center of the 4:3 area,<wbr/> then rotated to be 4:3,<wbr/> and then upscaled to 1600x1200.<wbr/> Only 2366556.<wbr/>25% of the original FOV is still visible.<wbr/> In general,<wbr/> for an aspect ratio of <code>w:h</code>,<wbr/> 23666the crop and rotate operation leaves <code>(h/<wbr/>w)^2</code> of the field of view visible.<wbr/> For 16:9,<wbr/> 23667this is ~31.<wbr/>6%.<wbr/></p> 23668<p>As a visual example,<wbr/> the figure below shows the effect of <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> on the 23669outputs for the following parameters:</p> 23670<ul> 23671<li>Sensor active array: <code>2000x1500</code></li> 23672<li>Crop region: top-left: <code>(500,<wbr/> 375)</code>,<wbr/> size: <code>(1000,<wbr/> 750)</code> (4:3 aspect ratio)</li> 23673<li>Output streams: YUV <code>640x480</code> and YUV <code>1280x720</code></li> 23674<li><code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code></li> 23675</ul> 23676<p><img alt="Effect of ROTATE_AND_CROP_90" src="images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png"/></p> 23677<p>With these settings,<wbr/> the regions of the active array covered by the output streams are:</p> 23678<ul> 23679<li>640x480 stream crop: top-left: <code>(219,<wbr/> 375)</code>,<wbr/> size: <code>(562,<wbr/> 750)</code></li> 23680<li>1280x720 stream crop: top-left: <code>(289,<wbr/> 375)</code>,<wbr/> size: <code>(422,<wbr/> 750)</code></li> 23681</ul> 23682<p>Since the buffers are rotated,<wbr/> the buffers as seen by the application are:</p> 23683<ul> 23684<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> 23685<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> 23686</ul> 23687 </td> 23688 </tr> 23689 23690 <tr class="entries_header"> 23691 <th class="th_details" colspan="6">HAL Implementation Details</th> 23692 </tr> 23693 <tr class="entry_cont"> 23694 <td class="entry_details" colspan="6"> 23695 <p>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will never be sent to the HAL,<wbr/> though it must be set as the default 23696value in all the capture request templates by the HAL.<wbr/> The camera service will 23697translate AUTO to a specific rotation value based on the current application's 23698multi-window state and its support of resizability.<wbr/></p> 23699<p>The HAL also does not need to consider coordinate transforms for ROTATE_<wbr/>AND_<wbr/>CROP - all 23700capture request and result fields should be kept in the active array coordinate frame.<wbr/> 23701Any translation required to implement ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will be handled by the camera 23702service.<wbr/></p> 23703 </td> 23704 </tr> 23705 23706 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23707 <!-- end of entry --> 23708 23709 23710 23711 <!-- end of kind --> 23712 </tbody> 23713 23714 <!-- end of section --> 23715 <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr> 23716 23717 23718 <tr><td colspan="7" class="kind">controls</td></tr> 23719 23720 <thead class="entries_header"> 23721 <tr> 23722 <th class="th_name">Property Name</th> 23723 <th class="th_type">Type</th> 23724 <th class="th_description">Description</th> 23725 <th class="th_units">Units</th> 23726 <th class="th_range">Range</th> 23727 <th class="th_hal_version">Initial HIDL HAL version</th> 23728 <th class="th_tags">Tags</th> 23729 </tr> 23730 </thead> 23731 23732 <tbody> 23733 23734 23735 23736 23737 23738 23739 23740 23741 23742 23743 <tr class="entry" id="controls_android.sensor.exposureTime"> 23744 <td class="entry_name 23745 " rowspan="3"> 23746 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 23747 </td> 23748 <td class="entry_type"> 23749 <span class="entry_type_name">int64</span> 23750 23751 <span class="entry_type_visibility"> [public]</span> 23752 23753 23754 <span class="entry_type_hwlevel">[full] </span> 23755 23756 23757 23758 23759 </td> <!-- entry_type --> 23760 23761 <td class="entry_description"> 23762 <p>Duration each pixel is exposed to 23763light.<wbr/></p> 23764 </td> 23765 23766 <td class="entry_units"> 23767 Nanoseconds 23768 </td> 23769 23770 <td class="entry_range"> 23771 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 23772 </td> 23773 23774 <td class="entry_hal_version"> 23775 <p>3.<wbr/>2</p> 23776 </td> 23777 23778 <td class="entry_tags"> 23779 <ul class="entry_tags"> 23780 <li><a href="#tag_V1">V1</a></li> 23781 </ul> 23782 </td> 23783 23784 </tr> 23785 <tr class="entries_header"> 23786 <th class="th_details" colspan="6">Details</th> 23787 </tr> 23788 <tr class="entry_cont"> 23789 <td class="entry_details" colspan="6"> 23790 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 23791duration exposed to the nearest possible value (rather than expose longer).<wbr/> 23792The final exposure time used will be available in the output capture result.<wbr/></p> 23793<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 23794OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 23795 </td> 23796 </tr> 23797 23798 23799 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23800 <!-- end of entry --> 23801 23802 23803 <tr class="entry" id="controls_android.sensor.frameDuration"> 23804 <td class="entry_name 23805 " rowspan="5"> 23806 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 23807 </td> 23808 <td class="entry_type"> 23809 <span class="entry_type_name">int64</span> 23810 23811 <span class="entry_type_visibility"> [public]</span> 23812 23813 23814 <span class="entry_type_hwlevel">[full] </span> 23815 23816 23817 23818 23819 </td> <!-- entry_type --> 23820 23821 <td class="entry_description"> 23822 <p>Duration from start of frame exposure to 23823start of next frame exposure.<wbr/></p> 23824 </td> 23825 23826 <td class="entry_units"> 23827 Nanoseconds 23828 </td> 23829 23830 <td class="entry_range"> 23831 <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/> 23832The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 23833 </td> 23834 23835 <td class="entry_hal_version"> 23836 <p>3.<wbr/>2</p> 23837 </td> 23838 23839 <td class="entry_tags"> 23840 <ul class="entry_tags"> 23841 <li><a href="#tag_V1">V1</a></li> 23842 </ul> 23843 </td> 23844 23845 </tr> 23846 <tr class="entries_header"> 23847 <th class="th_details" colspan="6">Details</th> 23848 </tr> 23849 <tr class="entry_cont"> 23850 <td class="entry_details" colspan="6"> 23851 <p>The maximum frame rate that can be supported by a camera subsystem is 23852a function of many factors:</p> 23853<ul> 23854<li>Requested resolutions of output image streams</li> 23855<li>Availability of binning /<wbr/> skipping modes on the imager</li> 23856<li>The bandwidth of the imager interface</li> 23857<li>The bandwidth of the various ISP processing blocks</li> 23858</ul> 23859<p>Since these factors can vary greatly between different ISPs and 23860sensors,<wbr/> the camera abstraction tries to represent the bandwidth 23861restrictions with as simple a model as possible.<wbr/></p> 23862<p>The model presented has the following characteristics:</p> 23863<ul> 23864<li>The image sensor is always configured to output the smallest 23865resolution possible given the application's requested output stream 23866sizes.<wbr/> The smallest resolution is defined as being at least as large 23867as the largest requested output stream size; the camera pipeline must 23868never digitally upsample sensor data when the crop region covers the 23869whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 23870resolutions are configured,<wbr/> the sensor can provide a higher frame 23871rate.<wbr/></li> 23872<li>Since any request may use any or all the currently configured 23873output streams,<wbr/> the sensor and ISP must be configured to support 23874scaling a single capture to all the streams at the same time.<wbr/> This 23875means the camera pipeline must be ready to produce the largest 23876requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 23877frame rate of a given configured stream set is governed only by the 23878largest requested stream resolution.<wbr/></li> 23879<li>Using more than one output stream in a request does not affect the 23880frame duration.<wbr/></li> 23881<li>Certain format-streams may need to do additional background processing 23882before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 23883can run concurrently to the rest of the camera pipeline,<wbr/> but 23884cannot process more than 1 capture at a time.<wbr/></li> 23885</ul> 23886<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via 23887<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 23888These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is 23889possible for a given stream configuration.<wbr/></p> 23890<p>Specifically,<wbr/> the application can use the following rules to 23891determine the minimum frame duration it can request from the camera 23892device:</p> 23893<ol> 23894<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li> 23895<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> 23896(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li> 23897<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum 23898out 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> 23899</ol> 23900<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> 23901using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady 23902state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let 23903this special kind of request be called <code>Rsimple</code>.<wbr/></p> 23904<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a 23905new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if 23906<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all 23907buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p> 23908<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> 23909<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 23910OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 23911 </td> 23912 </tr> 23913 23914 <tr class="entries_header"> 23915 <th class="th_details" colspan="6">HAL Implementation Details</th> 23916 </tr> 23917 <tr class="entry_cont"> 23918 <td class="entry_details" colspan="6"> 23919 <p>For more details about stalling,<wbr/> see 23920<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 23921 </td> 23922 </tr> 23923 23924 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23925 <!-- end of entry --> 23926 23927 23928 <tr class="entry" id="controls_android.sensor.sensitivity"> 23929 <td class="entry_name 23930 " rowspan="5"> 23931 android.<wbr/>sensor.<wbr/>sensitivity 23932 </td> 23933 <td class="entry_type"> 23934 <span class="entry_type_name">int32</span> 23935 23936 <span class="entry_type_visibility"> [public]</span> 23937 23938 23939 <span class="entry_type_hwlevel">[full] </span> 23940 23941 23942 23943 23944 </td> <!-- entry_type --> 23945 23946 <td class="entry_description"> 23947 <p>The amount of gain applied to sensor data 23948before processing.<wbr/></p> 23949 </td> 23950 23951 <td class="entry_units"> 23952 ISO arithmetic units 23953 </td> 23954 23955 <td class="entry_range"> 23956 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 23957 </td> 23958 23959 <td class="entry_hal_version"> 23960 <p>3.<wbr/>2</p> 23961 </td> 23962 23963 <td class="entry_tags"> 23964 <ul class="entry_tags"> 23965 <li><a href="#tag_V1">V1</a></li> 23966 </ul> 23967 </td> 23968 23969 </tr> 23970 <tr class="entries_header"> 23971 <th class="th_details" colspan="6">Details</th> 23972 </tr> 23973 <tr class="entry_cont"> 23974 <td class="entry_details" colspan="6"> 23975 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 23976as defined in ISO 12232:2006.<wbr/></p> 23977<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 23978if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 23979is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 23980<p>If the camera device cannot apply the exact sensitivity 23981requested,<wbr/> it will reduce the gain to the nearest supported 23982value.<wbr/> The final sensitivity used will be available in the 23983output capture result.<wbr/></p> 23984<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 23985OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 23986<p>Note that for devices supporting postRawSensitivityBoost,<wbr/> the total sensitivity applied 23987to the final processed image is the combination of <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 23988<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 23989sensitivity from last capture result of an auto request for a manual request,<wbr/> in order 23990to achieve the same brightness in the output image,<wbr/> the application should also 23991set postRawSensitivityBoost.<wbr/></p> 23992 </td> 23993 </tr> 23994 23995 <tr class="entries_header"> 23996 <th class="th_details" colspan="6">HAL Implementation Details</th> 23997 </tr> 23998 <tr class="entry_cont"> 23999 <td class="entry_details" colspan="6"> 24000 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 24001 </td> 24002 </tr> 24003 24004 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24005 <!-- end of entry --> 24006 24007 24008 <tr class="entry" id="controls_android.sensor.testPatternData"> 24009 <td class="entry_name 24010 " rowspan="5"> 24011 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 24012 </td> 24013 <td class="entry_type"> 24014 <span class="entry_type_name">int32</span> 24015 <span class="entry_type_container">x</span> 24016 24017 <span class="entry_type_array"> 24018 4 24019 </span> 24020 <span class="entry_type_visibility"> [public]</span> 24021 24022 24023 24024 24025 24026 24027 </td> <!-- entry_type --> 24028 24029 <td class="entry_description"> 24030 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 24031when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 24032 </td> 24033 24034 <td class="entry_units"> 24035 </td> 24036 24037 <td class="entry_range"> 24038 </td> 24039 24040 <td class="entry_hal_version"> 24041 <p>3.<wbr/>2</p> 24042 </td> 24043 24044 <td class="entry_tags"> 24045 </td> 24046 24047 </tr> 24048 <tr class="entries_header"> 24049 <th class="th_details" colspan="6">Details</th> 24050 </tr> 24051 <tr class="entry_cont"> 24052 <td class="entry_details" colspan="6"> 24053 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 24054The camera device then uses the most significant X bits 24055that correspond to how many bits are in its Bayer raw sensor 24056output.<wbr/></p> 24057<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 2405810 most significant bits from each color channel.<wbr/></p> 24059 </td> 24060 </tr> 24061 24062 <tr class="entries_header"> 24063 <th class="th_details" colspan="6">HAL Implementation Details</th> 24064 </tr> 24065 <tr class="entry_cont"> 24066 <td class="entry_details" colspan="6"> 24067 24068 </td> 24069 </tr> 24070 24071 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24072 <!-- end of entry --> 24073 24074 24075 <tr class="entry" id="controls_android.sensor.testPatternMode"> 24076 <td class="entry_name 24077 " rowspan="5"> 24078 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 24079 </td> 24080 <td class="entry_type"> 24081 <span class="entry_type_name entry_type_name_enum">int32</span> 24082 24083 <span class="entry_type_visibility"> [public]</span> 24084 24085 24086 24087 24088 24089 <ul class="entry_type_enum"> 24090 <li> 24091 <span class="entry_type_enum_name">OFF (v3.2)</span> 24092 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 24093device returns captures from the image sensor.<wbr/></p> 24094<p>This is the default if the key is not set.<wbr/></p></span> 24095 </li> 24096 <li> 24097 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span> 24098 <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 24099respective color channel provided in 24100<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 24101<p>For example:</p> 24102<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] 24103</code></pre> 24104<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 24105<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] 24106</code></pre> 24107<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 24108are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 24109 </li> 24110 <li> 24111 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span> 24112 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 24113<p>The vertical bars (left-to-right) are as follows:</p> 24114<ul> 24115<li>100% white</li> 24116<li>yellow</li> 24117<li>cyan</li> 24118<li>green</li> 24119<li>magenta</li> 24120<li>red</li> 24121<li>blue</li> 24122<li>black</li> 24123</ul> 24124<p>In general the image would look like the following:</p> 24125<pre><code>W Y C G M R B K 24126W Y C G M R B K 24127W Y C G M R B K 24128W Y C G M R B K 24129W Y C G M R B K 24130.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 24131.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 24132.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 24133 24134(B = Blue,<wbr/> K = Black) 24135</code></pre> 24136<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 24137When this is not possible,<wbr/> the bar size should be rounded 24138down to the nearest integer and the pattern can repeat 24139on the right side.<wbr/></p> 24140<p>Each bar's height must always take up the full sensor 24141pixel array height.<wbr/></p> 24142<p>Each pixel in this test pattern must be set to either 241430% intensity or 100% intensity.<wbr/></p></span> 24144 </li> 24145 <li> 24146 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span> 24147 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 24148each bar should start at its specified color at the top,<wbr/> 24149and fade to gray at the bottom.<wbr/></p> 24150<p>Furthermore each bar is further subdivided into a left and 24151right half.<wbr/> The left half should have a smooth gradient,<wbr/> 24152and the right half should have a quantized gradient.<wbr/></p> 24153<p>In particular,<wbr/> the right half's should consist of blocks of the 24154same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 24155<p>The least significant bits in the quantized gradient should 24156be copied from the most significant bits of the smooth gradient.<wbr/></p> 24157<p>The height of each bar should always be a multiple of 128.<wbr/> 24158When this is not the case,<wbr/> the pattern should repeat at the bottom 24159of the image.<wbr/></p></span> 24160 </li> 24161 <li> 24162 <span class="entry_type_enum_name">PN9 (v3.2)</span> 24163 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 24164generated from a PN9 512-bit sequence (typically implemented 24165in hardware with a linear feedback shift register).<wbr/></p> 24166<p>The generator should be reset at the beginning of each frame,<wbr/> 24167and thus each subsequent raw frame with this test pattern should 24168be exactly the same as the last.<wbr/></p></span> 24169 </li> 24170 <li> 24171 <span class="entry_type_enum_name">BLACK (v3.6)</span> 24172 <span class="entry_type_enum_hidden">[test]</span> 24173 <span class="entry_type_enum_notes"><p>All pixel data is replaced by 0% intensity (black) values.<wbr/></p> 24174<p>This test pattern is identical to SOLID_<wbr/>COLOR with a value of <code>[0,<wbr/> 0,<wbr/> 0,<wbr/> 0]</code> for 24175<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/> It is recommended that devices implement full 24176SOLID_<wbr/>COLOR support instead,<wbr/> but BLACK can be used to provide minimal support for a 24177test pattern suitable for privacy use cases.<wbr/></p></span> 24178 </li> 24179 <li> 24180 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span> 24181 <span class="entry_type_enum_value">256</span> 24182 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 24183available only on this camera device are at least this numeric 24184value.<wbr/></p> 24185<p>All of the custom test patterns will be static 24186(that is the raw image must not vary from frame to frame).<wbr/></p></span> 24187 </li> 24188 </ul> 24189 24190 </td> <!-- entry_type --> 24191 24192 <td class="entry_description"> 24193 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 24194doing a real exposure from the camera.<wbr/></p> 24195 </td> 24196 24197 <td class="entry_units"> 24198 </td> 24199 24200 <td class="entry_range"> 24201 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 24202 </td> 24203 24204 <td class="entry_hal_version"> 24205 <p>3.<wbr/>2</p> 24206 </td> 24207 24208 <td class="entry_tags"> 24209 </td> 24210 24211 </tr> 24212 <tr class="entries_header"> 24213 <th class="th_details" colspan="6">Details</th> 24214 </tr> 24215 <tr class="entry_cont"> 24216 <td class="entry_details" colspan="6"> 24217 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 24218by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 24219work as normal.<wbr/></p> 24220<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 24221occur (and that the test pattern remain unmodified,<wbr/> since the flash 24222would not actually affect it).<wbr/></p> 24223<p>Defaults to OFF.<wbr/></p> 24224 </td> 24225 </tr> 24226 24227 <tr class="entries_header"> 24228 <th class="th_details" colspan="6">HAL Implementation Details</th> 24229 </tr> 24230 <tr class="entry_cont"> 24231 <td class="entry_details" colspan="6"> 24232 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 24233<p>The HAL may choose to substitute test patterns from the sensor 24234with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 24235indistinguishable to the ISP whether the data came from the 24236sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 24237<p>For privacy use cases,<wbr/> if the camera device:</p> 24238<ul> 24239<li>supports SOLID_<wbr/>COLOR or BLACK test patterns,<wbr/></li> 24240<li>is a logical multi-camera,<wbr/> and</li> 24241<li>lists testPatternMode as a physical request key,<wbr/></li> 24242</ul> 24243<p>Each physical camera must support the same SOLID_<wbr/>COLOR and/<wbr/>or BLACK test patterns 24244as the logical camera.<wbr/></p> 24245 </td> 24246 </tr> 24247 24248 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24249 <!-- end of entry --> 24250 24251 24252 <tr class="entry" id="controls_android.sensor.pixelMode"> 24253 <td class="entry_name 24254 " rowspan="3"> 24255 android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode 24256 </td> 24257 <td class="entry_type"> 24258 <span class="entry_type_name entry_type_name_enum">byte</span> 24259 24260 <span class="entry_type_visibility"> [public]</span> 24261 24262 24263 24264 24265 24266 <ul class="entry_type_enum"> 24267 <li> 24268 <span class="entry_type_enum_name">DEFAULT (v3.6)</span> 24269 <span class="entry_type_enum_notes"><p>This is the default sensor pixel mode.<wbr/> This is the only sensor pixel mode 24270supported unless a camera device advertises 24271<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>.<wbr/></p></span> 24272 </li> 24273 <li> 24274 <span class="entry_type_enum_name">MAXIMUM_RESOLUTION (v3.6)</span> 24275 <span class="entry_type_enum_notes"><p>This sensor pixel mode is offered by devices with capability 24276<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>.<wbr/> 24277In this mode,<wbr/> sensors typically do not bin pixels,<wbr/> as a result can offer larger 24278image sizes.<wbr/></p></span> 24279 </li> 24280 </ul> 24281 24282 </td> <!-- entry_type --> 24283 24284 <td class="entry_description"> 24285 <p>Switches sensor pixel mode between maximum resolution mode and default mode.<wbr/></p> 24286 </td> 24287 24288 <td class="entry_units"> 24289 </td> 24290 24291 <td class="entry_range"> 24292 </td> 24293 24294 <td class="entry_hal_version"> 24295 <p>3.<wbr/>6</p> 24296 </td> 24297 24298 <td class="entry_tags"> 24299 </td> 24300 24301 </tr> 24302 <tr class="entries_header"> 24303 <th class="th_details" colspan="6">Details</th> 24304 </tr> 24305 <tr class="entry_cont"> 24306 <td class="entry_details" colspan="6"> 24307 <p>This key controls whether the camera sensor operates in 24308<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> 24309mode or not.<wbr/> By default,<wbr/> all camera devices operate in 24310<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/> 24311When operating in 24312<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 24313with <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> 24314capability would typically perform pixel binning in order to improve low light 24315performance,<wbr/> noise reduction etc.<wbr/> However,<wbr/> in 24316<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> 24317mode (supported only 24318by <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> 24319sensors),<wbr/> sensors typically operate in unbinned mode allowing for a larger image size.<wbr/> 24320The stream configurations supported in 24321<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> 24322mode are also different from those of 24323<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/> 24324They can be queried through 24325<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> with 24326<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/> 24327Unless reported by both 24328<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>s,<wbr/> the outputs from 24329<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code> and 24330<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code> 24331must not be mixed in the same CaptureRequest.<wbr/> In other words,<wbr/> these outputs are 24332exclusive to each other.<wbr/> 24333This key does not need to be set for reprocess requests.<wbr/></p> 24334 </td> 24335 </tr> 24336 24337 24338 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24339 <!-- end of entry --> 24340 24341 24342 24343 <!-- end of kind --> 24344 </tbody> 24345 <tr><td colspan="7" class="kind">static</td></tr> 24346 24347 <thead class="entries_header"> 24348 <tr> 24349 <th class="th_name">Property Name</th> 24350 <th class="th_type">Type</th> 24351 <th class="th_description">Description</th> 24352 <th class="th_units">Units</th> 24353 <th class="th_range">Range</th> 24354 <th class="th_hal_version">Initial HIDL HAL version</th> 24355 <th class="th_tags">Tags</th> 24356 </tr> 24357 </thead> 24358 24359 <tbody> 24360 24361 24362 24363 24364 24365 24366 24367 24368 24369 24370 24371 24372 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 24373 <td class="entry_name 24374 " rowspan="5"> 24375 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 24376 </td> 24377 <td class="entry_type"> 24378 <span class="entry_type_name">int32</span> 24379 <span class="entry_type_container">x</span> 24380 24381 <span class="entry_type_array"> 24382 4 24383 </span> 24384 <span class="entry_type_visibility"> [public as rectangle]</span> 24385 24386 24387 <span class="entry_type_hwlevel">[legacy] </span> 24388 24389 24390 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 24391 24392 24393 </td> <!-- entry_type --> 24394 24395 <td class="entry_description"> 24396 <p>The area of the image sensor which corresponds to active pixels after any geometric 24397distortion correction has been applied.<wbr/></p> 24398 </td> 24399 24400 <td class="entry_units"> 24401 Pixel coordinates on the image sensor 24402 </td> 24403 24404 <td class="entry_range"> 24405 </td> 24406 24407 <td class="entry_hal_version"> 24408 <p>3.<wbr/>2</p> 24409 </td> 24410 24411 <td class="entry_tags"> 24412 <ul class="entry_tags"> 24413 <li><a href="#tag_RAW">RAW</a></li> 24414 </ul> 24415 </td> 24416 24417 </tr> 24418 <tr class="entries_header"> 24419 <th class="th_details" colspan="6">Details</th> 24420 </tr> 24421 <tr class="entry_cont"> 24422 <td class="entry_details" colspan="6"> 24423 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 24424the region that actually receives light from the scene) after any geometric correction 24425has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the 24426image output formats aside from the raw formats.<wbr/></p> 24427<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 24428the full pixel array,<wbr/> and the size of the full pixel array is given by 24429<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 24430<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including 24431<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 24432this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p> 24433<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may 24434include black calibration pixels or other inactive regions.<wbr/></p> 24435<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 24436array 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> 24437<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 24438be 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 24439pre-correction active array and active array accounts for scaling or cropping caused 24440by lens geometric distortion correction.<wbr/></p> 24441<p>In general,<wbr/> application should always refer to active array size for controls like 24442metering regions or crop region.<wbr/> Two exceptions are when the application is dealing with 24443RAW image buffers (RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 etc),<wbr/> or when application explicitly set 24444<a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> to OFF.<wbr/> In these cases,<wbr/> application should refer 24445to <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> 24446 </td> 24447 </tr> 24448 24449 <tr class="entries_header"> 24450 <th class="th_details" colspan="6">HAL Implementation Details</th> 24451 </tr> 24452 <tr class="entry_cont"> 24453 <td class="entry_details" colspan="6"> 24454 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 24455>= <code>(0,<wbr/>0)</code>.<wbr/> 24456The <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> 24457 </td> 24458 </tr> 24459 24460 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24461 <!-- end of entry --> 24462 24463 24464 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 24465 <td class="entry_name 24466 " rowspan="3"> 24467 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 24468 </td> 24469 <td class="entry_type"> 24470 <span class="entry_type_name">int32</span> 24471 <span class="entry_type_container">x</span> 24472 24473 <span class="entry_type_array"> 24474 2 24475 </span> 24476 <span class="entry_type_visibility"> [public as rangeInt]</span> 24477 24478 24479 <span class="entry_type_hwlevel">[full] </span> 24480 24481 24482 <div class="entry_type_notes">Range of supported sensitivities</div> 24483 24484 24485 </td> <!-- entry_type --> 24486 24487 <td class="entry_description"> 24488 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this 24489camera device.<wbr/></p> 24490 </td> 24491 24492 <td class="entry_units"> 24493 </td> 24494 24495 <td class="entry_range"> 24496 <p>Min <= 100,<wbr/> Max >= 800</p> 24497 </td> 24498 24499 <td class="entry_hal_version"> 24500 <p>3.<wbr/>2</p> 24501 </td> 24502 24503 <td class="entry_tags"> 24504 <ul class="entry_tags"> 24505 <li><a href="#tag_BC">BC</a></li> 24506 <li><a href="#tag_V1">V1</a></li> 24507 </ul> 24508 </td> 24509 24510 </tr> 24511 <tr class="entries_header"> 24512 <th class="th_details" colspan="6">Details</th> 24513 </tr> 24514 <tr class="entry_cont"> 24515 <td class="entry_details" colspan="6"> 24516 <p>The values are the standard ISO sensitivity values,<wbr/> 24517as defined in ISO 12232:2006.<wbr/></p> 24518 </td> 24519 </tr> 24520 24521 24522 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24523 <!-- end of entry --> 24524 24525 24526 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 24527 <td class="entry_name 24528 " rowspan="3"> 24529 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 24530 </td> 24531 <td class="entry_type"> 24532 <span class="entry_type_name entry_type_name_enum">byte</span> 24533 24534 <span class="entry_type_visibility"> [public]</span> 24535 24536 24537 <span class="entry_type_hwlevel">[full] </span> 24538 24539 24540 24541 <ul class="entry_type_enum"> 24542 <li> 24543 <span class="entry_type_enum_name">RGGB (v3.2)</span> 24544 </li> 24545 <li> 24546 <span class="entry_type_enum_name">GRBG (v3.2)</span> 24547 </li> 24548 <li> 24549 <span class="entry_type_enum_name">GBRG (v3.2)</span> 24550 </li> 24551 <li> 24552 <span class="entry_type_enum_name">BGGR (v3.2)</span> 24553 </li> 24554 <li> 24555 <span class="entry_type_enum_name">RGB (v3.2)</span> 24556 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 24557values for each pixel,<wbr/> instead of just 1 16-bit value 24558per pixel.<wbr/></p></span> 24559 </li> 24560 <li> 24561 <span class="entry_type_enum_name">MONO (v3.4)</span> 24562 <span class="entry_type_enum_notes"><p>Sensor doesn't have any Bayer color filter.<wbr/> 24563Such sensor captures visible light in monochrome.<wbr/> The exact weighting and 24564wavelengths captured is not specified,<wbr/> but generally only includes the visible 24565frequencies.<wbr/> This value implies a MONOCHROME camera.<wbr/></p></span> 24566 </li> 24567 <li> 24568 <span class="entry_type_enum_name">NIR (v3.4)</span> 24569 <span class="entry_type_enum_notes"><p>Sensor has a near infrared filter capturing light with wavelength between 24570roughly 750nm and 1400nm,<wbr/> and the same filter covers the whole sensor array.<wbr/> This 24571value implies a MONOCHROME camera.<wbr/></p></span> 24572 </li> 24573 </ul> 24574 24575 </td> <!-- entry_type --> 24576 24577 <td class="entry_description"> 24578 <p>The arrangement of color filters on sensor; 24579represents the colors in the top-left 2x2 section of 24580the sensor,<wbr/> in reading order,<wbr/> for a Bayer camera,<wbr/> or the 24581light spectrum it captures for MONOCHROME camera.<wbr/></p> 24582 </td> 24583 24584 <td class="entry_units"> 24585 </td> 24586 24587 <td class="entry_range"> 24588 </td> 24589 24590 <td class="entry_hal_version"> 24591 <p>3.<wbr/>2</p> 24592 </td> 24593 24594 <td class="entry_tags"> 24595 <ul class="entry_tags"> 24596 <li><a href="#tag_RAW">RAW</a></li> 24597 </ul> 24598 </td> 24599 24600 </tr> 24601 24602 <tr class="entries_header"> 24603 <th class="th_details" colspan="6">HAL Implementation Details</th> 24604 </tr> 24605 <tr class="entry_cont"> 24606 <td class="entry_details" colspan="6"> 24607 <p>Starting from Android Q,<wbr/> the colorFilterArrangement for a MONOCHROME camera must be 24608single color patterns,<wbr/> such as MONO or NIR.<wbr/></p> 24609 </td> 24610 </tr> 24611 24612 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24613 <!-- end of entry --> 24614 24615 24616 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 24617 <td class="entry_name 24618 " rowspan="3"> 24619 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 24620 </td> 24621 <td class="entry_type"> 24622 <span class="entry_type_name">int64</span> 24623 <span class="entry_type_container">x</span> 24624 24625 <span class="entry_type_array"> 24626 2 24627 </span> 24628 <span class="entry_type_visibility"> [public as rangeLong]</span> 24629 24630 24631 <span class="entry_type_hwlevel">[full] </span> 24632 24633 24634 <div class="entry_type_notes">nanoseconds</div> 24635 24636 24637 </td> <!-- entry_type --> 24638 24639 <td class="entry_description"> 24640 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported 24641by this camera device.<wbr/></p> 24642 </td> 24643 24644 <td class="entry_units"> 24645 Nanoseconds 24646 </td> 24647 24648 <td class="entry_range"> 24649 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL 24650capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 24651the maximum exposure time will be greater than 100ms.<wbr/></p> 24652 </td> 24653 24654 <td class="entry_hal_version"> 24655 <p>3.<wbr/>2</p> 24656 </td> 24657 24658 <td class="entry_tags"> 24659 <ul class="entry_tags"> 24660 <li><a href="#tag_V1">V1</a></li> 24661 </ul> 24662 </td> 24663 24664 </tr> 24665 24666 <tr class="entries_header"> 24667 <th class="th_details" colspan="6">HAL Implementation Details</th> 24668 </tr> 24669 <tr class="entry_cont"> 24670 <td class="entry_details" colspan="6"> 24671 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 24672The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least 24673100ms.<wbr/></p> 24674 </td> 24675 </tr> 24676 24677 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24678 <!-- end of entry --> 24679 24680 24681 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 24682 <td class="entry_name 24683 " rowspan="5"> 24684 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 24685 </td> 24686 <td class="entry_type"> 24687 <span class="entry_type_name">int64</span> 24688 24689 <span class="entry_type_visibility"> [public]</span> 24690 24691 24692 <span class="entry_type_hwlevel">[full] </span> 24693 24694 24695 24696 24697 </td> <!-- entry_type --> 24698 24699 <td class="entry_description"> 24700 <p>The maximum possible frame duration (minimum frame rate) for 24701<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p> 24702 </td> 24703 24704 <td class="entry_units"> 24705 Nanoseconds 24706 </td> 24707 24708 <td class="entry_range"> 24709 <p>For FULL capability devices 24710(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p> 24711 </td> 24712 24713 <td class="entry_hal_version"> 24714 <p>3.<wbr/>2</p> 24715 </td> 24716 24717 <td class="entry_tags"> 24718 <ul class="entry_tags"> 24719 <li><a href="#tag_V1">V1</a></li> 24720 </ul> 24721 </td> 24722 24723 </tr> 24724 <tr class="entries_header"> 24725 <th class="th_details" colspan="6">Details</th> 24726 </tr> 24727 <tr class="entry_cont"> 24728 <td class="entry_details" colspan="6"> 24729 <p>Attempting to use frame durations beyond the maximum will result in the frame 24730duration being clipped to the maximum.<wbr/> See that control for a full definition of frame 24731durations.<wbr/></p> 24732<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 24733for the minimum frame duration values.<wbr/></p> 24734 </td> 24735 </tr> 24736 24737 <tr class="entries_header"> 24738 <th class="th_details" colspan="6">HAL Implementation Details</th> 24739 </tr> 24740 <tr class="entry_cont"> 24741 <td class="entry_details" colspan="6"> 24742 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 24743The maximum of the range SHOULD be at least 247441 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 24745<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 24746equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 24747value (since exposure time overrides frame duration).<wbr/></p> 24748<p>Available minimum frame durations for JPEG must be no greater 24749than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 24750minimum frame durations (for that respective size).<wbr/></p> 24751<p>Since JPEG processing is considered offline and can take longer than 24752a single uncompressed capture,<wbr/> refer to 24753<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 24754for details about encoding this scenario.<wbr/></p> 24755 </td> 24756 </tr> 24757 24758 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24759 <!-- end of entry --> 24760 24761 24762 <tr class="entry" id="static_android.sensor.info.physicalSize"> 24763 <td class="entry_name 24764 " rowspan="5"> 24765 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 24766 </td> 24767 <td class="entry_type"> 24768 <span class="entry_type_name">float</span> 24769 <span class="entry_type_container">x</span> 24770 24771 <span class="entry_type_array"> 24772 2 24773 </span> 24774 <span class="entry_type_visibility"> [public as sizeF]</span> 24775 24776 24777 <span class="entry_type_hwlevel">[legacy] </span> 24778 24779 24780 <div class="entry_type_notes">width x height</div> 24781 24782 24783 </td> <!-- entry_type --> 24784 24785 <td class="entry_description"> 24786 <p>The physical dimensions of the full pixel 24787array.<wbr/></p> 24788 </td> 24789 24790 <td class="entry_units"> 24791 Millimeters 24792 </td> 24793 24794 <td class="entry_range"> 24795 </td> 24796 24797 <td class="entry_hal_version"> 24798 <p>3.<wbr/>2</p> 24799 </td> 24800 24801 <td class="entry_tags"> 24802 <ul class="entry_tags"> 24803 <li><a href="#tag_V1">V1</a></li> 24804 <li><a href="#tag_BC">BC</a></li> 24805 </ul> 24806 </td> 24807 24808 </tr> 24809 <tr class="entries_header"> 24810 <th class="th_details" colspan="6">Details</th> 24811 </tr> 24812 <tr class="entry_cont"> 24813 <td class="entry_details" colspan="6"> 24814 <p>This is the physical size of the sensor pixel 24815array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 24816 </td> 24817 </tr> 24818 24819 <tr class="entries_header"> 24820 <th class="th_details" colspan="6">HAL Implementation Details</th> 24821 </tr> 24822 <tr class="entry_cont"> 24823 <td class="entry_details" colspan="6"> 24824 <p>Needed for FOV calculation for old API</p> 24825 </td> 24826 </tr> 24827 24828 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24829 <!-- end of entry --> 24830 24831 24832 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 24833 <td class="entry_name 24834 " rowspan="3"> 24835 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 24836 </td> 24837 <td class="entry_type"> 24838 <span class="entry_type_name">int32</span> 24839 <span class="entry_type_container">x</span> 24840 24841 <span class="entry_type_array"> 24842 2 24843 </span> 24844 <span class="entry_type_visibility"> [public as size]</span> 24845 24846 24847 <span class="entry_type_hwlevel">[legacy] </span> 24848 24849 24850 24851 24852 </td> <!-- entry_type --> 24853 24854 <td class="entry_description"> 24855 <p>Dimensions of the full pixel array,<wbr/> possibly 24856including black calibration pixels.<wbr/></p> 24857 </td> 24858 24859 <td class="entry_units"> 24860 Pixels 24861 </td> 24862 24863 <td class="entry_range"> 24864 </td> 24865 24866 <td class="entry_hal_version"> 24867 <p>3.<wbr/>2</p> 24868 </td> 24869 24870 <td class="entry_tags"> 24871 <ul class="entry_tags"> 24872 <li><a href="#tag_RAW">RAW</a></li> 24873 <li><a href="#tag_BC">BC</a></li> 24874 </ul> 24875 </td> 24876 24877 </tr> 24878 <tr class="entries_header"> 24879 <th class="th_details" colspan="6">Details</th> 24880 </tr> 24881 <tr class="entry_cont"> 24882 <td class="entry_details" colspan="6"> 24883 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers 24884<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 24885the raw buffers produced by this sensor.<wbr/></p> 24886<p>If a camera device supports raw sensor formats,<wbr/> either this or 24887<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 24888output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a> 24889(this depends on whether or not the image sensor returns buffers containing pixels that 24890are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p> 24891<p>Some parts of the full pixel array may not receive light from the scene,<wbr/> 24892or 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 24893defines the rectangle of active pixels that will be included in processed image 24894formats.<wbr/></p> 24895 </td> 24896 </tr> 24897 24898 24899 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24900 <!-- end of entry --> 24901 24902 24903 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 24904 <td class="entry_name 24905 " rowspan="5"> 24906 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 24907 </td> 24908 <td class="entry_type"> 24909 <span class="entry_type_name">int32</span> 24910 24911 <span class="entry_type_visibility"> [public]</span> 24912 24913 24914 24915 24916 24917 24918 </td> <!-- entry_type --> 24919 24920 <td class="entry_description"> 24921 <p>Maximum raw value output by sensor.<wbr/></p> 24922 </td> 24923 24924 <td class="entry_units"> 24925 </td> 24926 24927 <td class="entry_range"> 24928 <p>> 255 (8-bit output)</p> 24929 </td> 24930 24931 <td class="entry_hal_version"> 24932 <p>3.<wbr/>2</p> 24933 </td> 24934 24935 <td class="entry_tags"> 24936 <ul class="entry_tags"> 24937 <li><a href="#tag_RAW">RAW</a></li> 24938 </ul> 24939 </td> 24940 24941 </tr> 24942 <tr class="entries_header"> 24943 <th class="th_details" colspan="6">Details</th> 24944 </tr> 24945 <tr class="entry_cont"> 24946 <td class="entry_details" colspan="6"> 24947 <p>This specifies the fully-saturated encoding level for the raw 24948sample values from the sensor.<wbr/> This is typically caused by the 24949sensor becoming highly non-linear or clipping.<wbr/> The minimum for 24950each channel is specified by the offset in the 24951<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p> 24952<p>The white level is typically determined either by sensor bit depth 24953(8-14 bits is expected),<wbr/> or by the point where the sensor response 24954becomes too non-linear to be useful.<wbr/> The default value for this is 24955maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 24956<p>The white level values of captured images may vary for different 24957capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 24958represents a coarse approximation for such case.<wbr/> It is recommended 24959to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported 24960by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p> 24961 </td> 24962 </tr> 24963 24964 <tr class="entries_header"> 24965 <th class="th_details" colspan="6">HAL Implementation Details</th> 24966 </tr> 24967 <tr class="entry_cont"> 24968 <td class="entry_details" colspan="6"> 24969 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 24970so the value for linear sensors should not be significantly lower 24971than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 24972 </td> 24973 </tr> 24974 24975 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24976 <!-- end of entry --> 24977 24978 24979 <tr class="entry" id="static_android.sensor.info.timestampSource"> 24980 <td class="entry_name 24981 " rowspan="5"> 24982 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source 24983 </td> 24984 <td class="entry_type"> 24985 <span class="entry_type_name entry_type_name_enum">byte</span> 24986 24987 <span class="entry_type_visibility"> [public]</span> 24988 24989 24990 <span class="entry_type_hwlevel">[legacy] </span> 24991 24992 24993 24994 <ul class="entry_type_enum"> 24995 <li> 24996 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span> 24997 <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 24998not be compared to timestamps from other subsystems (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> 24999or other instances of the same or different camera devices in the same system with 25000accuracy.<wbr/> However,<wbr/> the timestamps are roughly in the same timebase as 25001<a href="https://developer.android.com/reference/android/os/SystemClock.html#uptimeMillis">SystemClock#uptimeMillis</a>.<wbr/> The accuracy is sufficient for tasks 25002like A/<wbr/>V synchronization for video recording,<wbr/> at least,<wbr/> and the timestamps can be 25003directly used together with timestamps from the audio subsystem for that task.<wbr/></p> 25004<p>Timestamps between streams and results for a single camera instance are comparable,<wbr/> 25005and the timestamps for all buffers and the result metadata generated by a single 25006capture are identical.<wbr/></p></span> 25007 </li> 25008 <li> 25009 <span class="entry_type_enum_name">REALTIME (v3.2)</span> 25010 <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 25011<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> 25012and they can be compared to other timestamps using that base.<wbr/></p> 25013<p>When buffers from a REALTIME device are passed directly to a video encoder from the 25014camera,<wbr/> automatic compensation is done to account for differing timebases of the 25015audio and camera subsystems.<wbr/> If the application is receiving buffers and then later 25016sending them to a video encoder or other application where they are compared with 25017audio subsystem timestamps or similar,<wbr/> this compensation is not present.<wbr/> In those 25018cases,<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 25019offset between the two sources can be measured once per active session and applied 25020to timestamps for sufficient accuracy for A/<wbr/>V sync.<wbr/></p></span> 25021 </li> 25022 </ul> 25023 25024 </td> <!-- entry_type --> 25025 25026 <td class="entry_description"> 25027 <p>The time base source for sensor capture start timestamps.<wbr/></p> 25028 </td> 25029 25030 <td class="entry_units"> 25031 </td> 25032 25033 <td class="entry_range"> 25034 </td> 25035 25036 <td class="entry_hal_version"> 25037 <p>3.<wbr/>2</p> 25038 </td> 25039 25040 <td class="entry_tags"> 25041 <ul class="entry_tags"> 25042 <li><a href="#tag_V1">V1</a></li> 25043 </ul> 25044 </td> 25045 25046 </tr> 25047 <tr class="entries_header"> 25048 <th class="th_details" colspan="6">Details</th> 25049 </tr> 25050 <tr class="entry_cont"> 25051 <td class="entry_details" colspan="6"> 25052 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but 25053may not based on a time source that can be compared to other system time sources.<wbr/></p> 25054<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they 25055can be compared against other system time sources/<wbr/>timestamps.<wbr/></p> 25056 </td> 25057 </tr> 25058 25059 <tr class="entries_header"> 25060 <th class="th_details" colspan="6">HAL Implementation Details</th> 25061 </tr> 25062 <tr class="entry_cont"> 25063 <td class="entry_details" colspan="6"> 25064 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp 25065source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera 25066framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See 25067system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and 25068SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video 25069recording might suffer unexpected behavior.<wbr/></p> 25070<p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which 25071tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p> 25072 </td> 25073 </tr> 25074 25075 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25076 <!-- end of entry --> 25077 25078 25079 <tr class="entry" id="static_android.sensor.info.lensShadingApplied"> 25080 <td class="entry_name 25081 " rowspan="3"> 25082 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied 25083 </td> 25084 <td class="entry_type"> 25085 <span class="entry_type_name entry_type_name_enum">byte</span> 25086 25087 <span class="entry_type_visibility"> [public as boolean]</span> 25088 25089 25090 25091 25092 25093 <ul class="entry_type_enum"> 25094 <li> 25095 <span class="entry_type_enum_name">FALSE (v3.2)</span> 25096 </li> 25097 <li> 25098 <span class="entry_type_enum_name">TRUE (v3.2)</span> 25099 </li> 25100 </ul> 25101 25102 </td> <!-- entry_type --> 25103 25104 <td class="entry_description"> 25105 <p>Whether the RAW images output from this camera device are subject to 25106lens shading correction.<wbr/></p> 25107 </td> 25108 25109 <td class="entry_units"> 25110 </td> 25111 25112 <td class="entry_range"> 25113 </td> 25114 25115 <td class="entry_hal_version"> 25116 <p>3.<wbr/>2</p> 25117 </td> 25118 25119 <td class="entry_tags"> 25120 </td> 25121 25122 </tr> 25123 <tr class="entries_header"> 25124 <th class="th_details" colspan="6">Details</th> 25125 </tr> 25126 <tr class="entry_cont"> 25127 <td class="entry_details" colspan="6"> 25128 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will 25129have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will 25130not be adjusted for lens shading correction.<wbr/> 25131See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a list of RAW image formats.<wbr/></p> 25132<p>This key will be <code>null</code> for all devices do not report this information.<wbr/> 25133Devices with RAW capability will always report this information in this key.<wbr/></p> 25134 </td> 25135 </tr> 25136 25137 25138 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25139 <!-- end of entry --> 25140 25141 25142 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize"> 25143 <td class="entry_name 25144 " rowspan="5"> 25145 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 25146 </td> 25147 <td class="entry_type"> 25148 <span class="entry_type_name">int32</span> 25149 <span class="entry_type_container">x</span> 25150 25151 <span class="entry_type_array"> 25152 4 25153 </span> 25154 <span class="entry_type_visibility"> [public as rectangle]</span> 25155 25156 25157 <span class="entry_type_hwlevel">[legacy] </span> 25158 25159 25160 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 25161 25162 25163 </td> <!-- entry_type --> 25164 25165 <td class="entry_description"> 25166 <p>The area of the image sensor which corresponds to active pixels prior to the 25167application of any geometric distortion correction.<wbr/></p> 25168 </td> 25169 25170 <td class="entry_units"> 25171 Pixel coordinates on the image sensor 25172 </td> 25173 25174 <td class="entry_range"> 25175 </td> 25176 25177 <td class="entry_hal_version"> 25178 <p>3.<wbr/>2</p> 25179 </td> 25180 25181 <td class="entry_tags"> 25182 <ul class="entry_tags"> 25183 <li><a href="#tag_RAW">RAW</a></li> 25184 </ul> 25185 </td> 25186 25187 </tr> 25188 <tr class="entries_header"> 25189 <th class="th_details" colspan="6">Details</th> 25190 </tr> 25191 <tr class="entry_cont"> 25192 <td class="entry_details" colspan="6"> 25193 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 25194the region that actually receives light from the scene) before any geometric correction 25195has been applied,<wbr/> and should be treated as the active region rectangle for any of the 25196raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading 25197correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as 25198the origin,<wbr/> (0,<wbr/>0).<wbr/></p> 25199<p>The size of this region determines the maximum field of view and the maximum number of 25200pixels that an image from this sensor can contain,<wbr/> prior to the application of 25201geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a 25202post-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> 25203field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image 25204can be calculated by applying the geometric distortion correction fields to this 25205rectangle,<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> 25206<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the 25207dimensions 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/> 25208(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions given in 25209<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p> 25210<ol> 25211<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in 25212<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 25213to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li> 25214<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/> 25215(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw 25216buffers is defined relative to the top,<wbr/> left of the 25217<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> 25218<li>If the resulting corrected pixel coordinate is within the region given in 25219<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 25220processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/> 25221when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li> 25222</ol> 25223<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> 25224is (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/> 25225<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 25226correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in 25227pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer 25228with 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) 25229relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in 25230<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 25231<p>The currently supported fields that correct for geometric distortion are:</p> 25232<ol> 25233<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li> 25234</ol> 25235<p>If the camera device doesn't support geometric distortion correction,<wbr/> or all of the 25236geometric distortion fields are no-ops,<wbr/> this rectangle will be the same as the 25237post-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> 25238<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 25239the full pixel array,<wbr/> and the size of the full pixel array is given by 25240<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 25241<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the 25242full array may include black calibration pixels or other inactive regions.<wbr/></p> 25243 </td> 25244 </tr> 25245 25246 <tr class="entries_header"> 25247 <th class="th_details" colspan="6">HAL Implementation Details</th> 25248 </tr> 25249 <tr class="entry_cont"> 25250 <td class="entry_details" colspan="6"> 25251 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 25252>= <code>(0,<wbr/>0)</code>.<wbr/> 25253The <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> 25254<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is 25255the same as the post-correction active array region given in 25256<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 25257 </td> 25258 </tr> 25259 25260 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25261 <!-- end of entry --> 25262 25263 25264 <tr class="entry" id="static_android.sensor.info.activeArraySizeMaximumResolution"> 25265 <td class="entry_name 25266 " rowspan="5"> 25267 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution 25268 </td> 25269 <td class="entry_type"> 25270 <span class="entry_type_name">int32</span> 25271 <span class="entry_type_container">x</span> 25272 25273 <span class="entry_type_array"> 25274 4 25275 </span> 25276 <span class="entry_type_visibility"> [public as rectangle]</span> 25277 25278 25279 25280 25281 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 25282 25283 25284 </td> <!-- entry_type --> 25285 25286 <td class="entry_description"> 25287 <p>The area of the image sensor which corresponds to active pixels after any geometric 25288distortion correction has been applied,<wbr/> when the sensor runs in maximum resolution mode.<wbr/></p> 25289 </td> 25290 25291 <td class="entry_units"> 25292 Pixel coordinates on the image sensor 25293 </td> 25294 25295 <td class="entry_range"> 25296 </td> 25297 25298 <td class="entry_hal_version"> 25299 <p>3.<wbr/>6</p> 25300 </td> 25301 25302 <td class="entry_tags"> 25303 <ul class="entry_tags"> 25304 <li><a href="#tag_RAW">RAW</a></li> 25305 </ul> 25306 </td> 25307 25308 </tr> 25309 <tr class="entries_header"> 25310 <th class="th_details" colspan="6">Details</th> 25311 </tr> 25312 <tr class="entry_cont"> 25313 <td class="entry_details" colspan="6"> 25314 <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> 25315is set to 25316<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/> 25317Refer 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 25318replaced with their 25319<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> 25320counterparts.<wbr/> 25321This key will only be present for devices which advertise the 25322<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> 25323capability.<wbr/></p> 25324 </td> 25325 </tr> 25326 25327 <tr class="entries_header"> 25328 <th class="th_details" colspan="6">HAL Implementation Details</th> 25329 </tr> 25330 <tr class="entry_cont"> 25331 <td class="entry_details" colspan="6"> 25332 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 25333>= <code>(0,<wbr/>0)</code>.<wbr/> 25334The <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> 25335 </td> 25336 </tr> 25337 25338 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25339 <!-- end of entry --> 25340 25341 25342 <tr class="entry" id="static_android.sensor.info.pixelArraySizeMaximumResolution"> 25343 <td class="entry_name 25344 " rowspan="3"> 25345 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution 25346 </td> 25347 <td class="entry_type"> 25348 <span class="entry_type_name">int32</span> 25349 <span class="entry_type_container">x</span> 25350 25351 <span class="entry_type_array"> 25352 2 25353 </span> 25354 <span class="entry_type_visibility"> [public as size]</span> 25355 25356 25357 25358 25359 25360 25361 </td> <!-- entry_type --> 25362 25363 <td class="entry_description"> 25364 <p>Dimensions of the full pixel array,<wbr/> possibly 25365including black calibration pixels,<wbr/> when the sensor runs in maximum resolution mode.<wbr/> 25366Analogous 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 25367set to 25368<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> 25369 </td> 25370 25371 <td class="entry_units"> 25372 Pixels 25373 </td> 25374 25375 <td class="entry_range"> 25376 </td> 25377 25378 <td class="entry_hal_version"> 25379 <p>3.<wbr/>6</p> 25380 </td> 25381 25382 <td class="entry_tags"> 25383 <ul class="entry_tags"> 25384 <li><a href="#tag_RAW">RAW</a></li> 25385 </ul> 25386 </td> 25387 25388 </tr> 25389 <tr class="entries_header"> 25390 <th class="th_details" colspan="6">Details</th> 25391 </tr> 25392 <tr class="entry_cont"> 25393 <td class="entry_details" colspan="6"> 25394 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers 25395<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 25396the raw buffers produced by this sensor,<wbr/> when it runs in maximum resolution mode.<wbr/> That 25397is,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 25398<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/> 25399This key will only be present for devices which advertise the 25400<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> 25401capability.<wbr/></p> 25402 </td> 25403 </tr> 25404 25405 25406 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25407 <!-- end of entry --> 25408 25409 25410 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution"> 25411 <td class="entry_name 25412 " rowspan="5"> 25413 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution 25414 </td> 25415 <td class="entry_type"> 25416 <span class="entry_type_name">int32</span> 25417 <span class="entry_type_container">x</span> 25418 25419 <span class="entry_type_array"> 25420 4 25421 </span> 25422 <span class="entry_type_visibility"> [public as rectangle]</span> 25423 25424 25425 25426 25427 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 25428 25429 25430 </td> <!-- entry_type --> 25431 25432 <td class="entry_description"> 25433 <p>The area of the image sensor which corresponds to active pixels prior to the 25434application of any geometric distortion correction,<wbr/> when the sensor runs in maximum 25435resolution mode.<wbr/> This key must be used for crop /<wbr/> metering regions,<wbr/> only when 25436<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 25437<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> 25438 </td> 25439 25440 <td class="entry_units"> 25441 Pixel coordinates on the image sensor 25442 </td> 25443 25444 <td class="entry_range"> 25445 </td> 25446 25447 <td class="entry_hal_version"> 25448 <p>3.<wbr/>6</p> 25449 </td> 25450 25451 <td class="entry_tags"> 25452 <ul class="entry_tags"> 25453 <li><a href="#tag_RAW">RAW</a></li> 25454 </ul> 25455 </td> 25456 25457 </tr> 25458 <tr class="entries_header"> 25459 <th class="th_details" colspan="6">Details</th> 25460 </tr> 25461 <tr class="entry_cont"> 25462 <td class="entry_details" colspan="6"> 25463 <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/> 25464when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 25465<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/> 25466This key will only be present for devices which advertise the 25467<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> 25468capability.<wbr/></p> 25469 </td> 25470 </tr> 25471 25472 <tr class="entries_header"> 25473 <th class="th_details" colspan="6">HAL Implementation Details</th> 25474 </tr> 25475 <tr class="entry_cont"> 25476 <td class="entry_details" colspan="6"> 25477 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 25478>= <code>(0,<wbr/>0)</code>.<wbr/> 25479The <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> 25480<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is 25481the same as the post-correction active array region given in 25482<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> 25483 </td> 25484 </tr> 25485 25486 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25487 <!-- end of entry --> 25488 25489 25490 <tr class="entry" id="static_android.sensor.info.binningFactor"> 25491 <td class="entry_name 25492 " rowspan="3"> 25493 android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor 25494 </td> 25495 <td class="entry_type"> 25496 <span class="entry_type_name">int32</span> 25497 <span class="entry_type_container">x</span> 25498 25499 <span class="entry_type_array"> 25500 2 25501 </span> 25502 <span class="entry_type_visibility"> [public as size]</span> 25503 25504 25505 25506 25507 25508 25509 </td> <!-- entry_type --> 25510 25511 <td class="entry_description"> 25512 <p>Dimensions of the group of pixels which are under the same color filter.<wbr/> 25513This specifies the width and height (pair of integers) of the group of pixels which fall 25514under the same color filter for ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION sensors.<wbr/></p> 25515 </td> 25516 25517 <td class="entry_units"> 25518 Pixels 25519 </td> 25520 25521 <td class="entry_range"> 25522 </td> 25523 25524 <td class="entry_hal_version"> 25525 <p>3.<wbr/>6</p> 25526 </td> 25527 25528 <td class="entry_tags"> 25529 </td> 25530 25531 </tr> 25532 <tr class="entries_header"> 25533 <th class="th_details" colspan="6">Details</th> 25534 </tr> 25535 <tr class="entry_cont"> 25536 <td class="entry_details" colspan="6"> 25537 <p>Sensors can have pixels grouped together under the same color filter in order 25538to improve various aspects of imaging such as noise reduction,<wbr/> low light 25539performance etc.<wbr/> These groups can be of various sizes such as 2X2 (quad bayer),<wbr/> 255403X3 (nona-bayer).<wbr/> This key specifies the length and width of the pixels grouped under 25541the same color filter.<wbr/></p> 25542<p>This key will not be present if REMOSAIC_<wbr/>REPROCESSING is not supported,<wbr/> since RAW images 25543will have a regular bayer pattern.<wbr/></p> 25544<p>This key will not be present for sensors which don't have the 25545<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> 25546capability.<wbr/></p> 25547 </td> 25548 </tr> 25549 25550 25551 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25552 <!-- end of entry --> 25553 25554 25555 25556 25557 25558 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 25559 <td class="entry_name 25560 " rowspan="5"> 25561 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 25562 </td> 25563 <td class="entry_type"> 25564 <span class="entry_type_name entry_type_name_enum">byte</span> 25565 25566 <span class="entry_type_visibility"> [public]</span> 25567 25568 25569 25570 25571 25572 <ul class="entry_type_enum"> 25573 <li> 25574 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> 25575 <span class="entry_type_enum_value">1</span> 25576 </li> 25577 <li> 25578 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> 25579 <span class="entry_type_enum_value">2</span> 25580 </li> 25581 <li> 25582 <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span> 25583 <span class="entry_type_enum_value">3</span> 25584 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 25585 </li> 25586 <li> 25587 <span class="entry_type_enum_name">FLASH (v3.2)</span> 25588 <span class="entry_type_enum_value">4</span> 25589 </li> 25590 <li> 25591 <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span> 25592 <span class="entry_type_enum_value">9</span> 25593 </li> 25594 <li> 25595 <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span> 25596 <span class="entry_type_enum_value">10</span> 25597 </li> 25598 <li> 25599 <span class="entry_type_enum_name">SHADE (v3.2)</span> 25600 <span class="entry_type_enum_value">11</span> 25601 </li> 25602 <li> 25603 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span> 25604 <span class="entry_type_enum_value">12</span> 25605 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 25606 </li> 25607 <li> 25608 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span> 25609 <span class="entry_type_enum_value">13</span> 25610 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 25611 </li> 25612 <li> 25613 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span> 25614 <span class="entry_type_enum_value">14</span> 25615 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 25616 </li> 25617 <li> 25618 <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span> 25619 <span class="entry_type_enum_value">15</span> 25620 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 25621 </li> 25622 <li> 25623 <span class="entry_type_enum_name">STANDARD_A (v3.2)</span> 25624 <span class="entry_type_enum_value">17</span> 25625 </li> 25626 <li> 25627 <span class="entry_type_enum_name">STANDARD_B (v3.2)</span> 25628 <span class="entry_type_enum_value">18</span> 25629 </li> 25630 <li> 25631 <span class="entry_type_enum_name">STANDARD_C (v3.2)</span> 25632 <span class="entry_type_enum_value">19</span> 25633 </li> 25634 <li> 25635 <span class="entry_type_enum_name">D55 (v3.2)</span> 25636 <span class="entry_type_enum_value">20</span> 25637 </li> 25638 <li> 25639 <span class="entry_type_enum_name">D65 (v3.2)</span> 25640 <span class="entry_type_enum_value">21</span> 25641 </li> 25642 <li> 25643 <span class="entry_type_enum_name">D75 (v3.2)</span> 25644 <span class="entry_type_enum_value">22</span> 25645 </li> 25646 <li> 25647 <span class="entry_type_enum_name">D50 (v3.2)</span> 25648 <span class="entry_type_enum_value">23</span> 25649 </li> 25650 <li> 25651 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span> 25652 <span class="entry_type_enum_value">24</span> 25653 </li> 25654 </ul> 25655 25656 </td> <!-- entry_type --> 25657 25658 <td class="entry_description"> 25659 <p>The standard reference illuminant used as the scene light source when 25660calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 25661<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 25662<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> 25663 </td> 25664 25665 <td class="entry_units"> 25666 </td> 25667 25668 <td class="entry_range"> 25669 </td> 25670 25671 <td class="entry_hal_version"> 25672 <p>3.<wbr/>2</p> 25673 </td> 25674 25675 <td class="entry_tags"> 25676 <ul class="entry_tags"> 25677 <li><a href="#tag_RAW">RAW</a></li> 25678 </ul> 25679 </td> 25680 25681 </tr> 25682 <tr class="entries_header"> 25683 <th class="th_details" colspan="6">Details</th> 25684 </tr> 25685 <tr class="entry_cont"> 25686 <td class="entry_details" colspan="6"> 25687 <p>The values in this key correspond to the values defined for the 25688EXIF LightSource tag.<wbr/> These illuminants are standard light sources 25689that are often used calibrating camera devices.<wbr/></p> 25690<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 25691<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 25692<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> 25693<p>Some devices may choose to provide a second set of calibration 25694information for improved quality,<wbr/> including 25695<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> 25696<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 25697the camera device has RAW capability.<wbr/></p> 25698 </td> 25699 </tr> 25700 25701 <tr class="entries_header"> 25702 <th class="th_details" colspan="6">HAL Implementation Details</th> 25703 </tr> 25704 <tr class="entry_cont"> 25705 <td class="entry_details" colspan="6"> 25706 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 25707and corresponding matrices must be present to support the RAW capability 25708and DNG output.<wbr/></p> 25709<p>When producing raw images with a color profile that has only been 25710calibrated against a single light source,<wbr/> it is valid to omit 25711<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the 25712<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/> 25713and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 25714<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be 25715chosen so that it is representative of typical scene lighting.<wbr/> In 25716general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> 25717<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and 25718<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be 25719chosen to represent the typical range of scene lighting conditions.<wbr/> 25720In general,<wbr/> low color temperature illuminant such as Standard-A will 25721be chosen for the first reference illuminant and a higher color 25722temperature illuminant such as D65 will be chosen for the second 25723reference illuminant.<wbr/></p> 25724 </td> 25725 </tr> 25726 25727 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25728 <!-- end of entry --> 25729 25730 25731 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 25732 <td class="entry_name 25733 " rowspan="3"> 25734 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 25735 </td> 25736 <td class="entry_type"> 25737 <span class="entry_type_name">byte</span> 25738 25739 <span class="entry_type_visibility"> [public]</span> 25740 25741 25742 25743 25744 25745 25746 </td> <!-- entry_type --> 25747 25748 <td class="entry_description"> 25749 <p>The standard reference illuminant used as the scene light source when 25750calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 25751<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 25752<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 25753 </td> 25754 25755 <td class="entry_units"> 25756 </td> 25757 25758 <td class="entry_range"> 25759 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p> 25760 </td> 25761 25762 <td class="entry_hal_version"> 25763 <p>3.<wbr/>2</p> 25764 </td> 25765 25766 <td class="entry_tags"> 25767 <ul class="entry_tags"> 25768 <li><a href="#tag_RAW">RAW</a></li> 25769 </ul> 25770 </td> 25771 25772 </tr> 25773 <tr class="entries_header"> 25774 <th class="th_details" colspan="6">Details</th> 25775 </tr> 25776 <tr class="entry_cont"> 25777 <td class="entry_details" colspan="6"> 25778 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p> 25779<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 25780<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 25781<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> 25782<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 25783the camera device has RAW capability.<wbr/></p> 25784 </td> 25785 </tr> 25786 25787 25788 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25789 <!-- end of entry --> 25790 25791 25792 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 25793 <td class="entry_name 25794 " rowspan="3"> 25795 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 25796 </td> 25797 <td class="entry_type"> 25798 <span class="entry_type_name">rational</span> 25799 <span class="entry_type_container">x</span> 25800 25801 <span class="entry_type_array"> 25802 3 x 3 25803 </span> 25804 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 25805 25806 25807 25808 25809 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 25810 25811 25812 </td> <!-- entry_type --> 25813 25814 <td class="entry_description"> 25815 <p>A per-device calibration transform matrix that maps from the 25816reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> 25817 </td> 25818 25819 <td class="entry_units"> 25820 </td> 25821 25822 <td class="entry_range"> 25823 </td> 25824 25825 <td class="entry_hal_version"> 25826 <p>3.<wbr/>2</p> 25827 </td> 25828 25829 <td class="entry_tags"> 25830 <ul class="entry_tags"> 25831 <li><a href="#tag_RAW">RAW</a></li> 25832 </ul> 25833 </td> 25834 25835 </tr> 25836 <tr class="entries_header"> 25837 <th class="th_details" colspan="6">Details</th> 25838 </tr> 25839 <tr class="entry_cont"> 25840 <td class="entry_details" colspan="6"> 25841 <p>This matrix is used to correct for per-device variations in the 25842sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 25843<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 25844contains a per-device calibration transform that maps colors 25845from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 25846colorspace) into this camera device's native sensor color 25847space under the first reference illuminant 25848(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 25849<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 25850the camera device has RAW capability.<wbr/></p> 25851 </td> 25852 </tr> 25853 25854 25855 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25856 <!-- end of entry --> 25857 25858 25859 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 25860 <td class="entry_name 25861 " rowspan="3"> 25862 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 25863 </td> 25864 <td class="entry_type"> 25865 <span class="entry_type_name">rational</span> 25866 <span class="entry_type_container">x</span> 25867 25868 <span class="entry_type_array"> 25869 3 x 3 25870 </span> 25871 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 25872 25873 25874 25875 25876 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 25877 25878 25879 </td> <!-- entry_type --> 25880 25881 <td class="entry_description"> 25882 <p>A per-device calibration transform matrix that maps from the 25883reference sensor colorspace to the actual device sensor colorspace 25884(this is the colorspace of the raw buffer data).<wbr/></p> 25885 </td> 25886 25887 <td class="entry_units"> 25888 </td> 25889 25890 <td class="entry_range"> 25891 </td> 25892 25893 <td class="entry_hal_version"> 25894 <p>3.<wbr/>2</p> 25895 </td> 25896 25897 <td class="entry_tags"> 25898 <ul class="entry_tags"> 25899 <li><a href="#tag_RAW">RAW</a></li> 25900 </ul> 25901 </td> 25902 25903 </tr> 25904 <tr class="entries_header"> 25905 <th class="th_details" colspan="6">Details</th> 25906 </tr> 25907 <tr class="entry_cont"> 25908 <td class="entry_details" colspan="6"> 25909 <p>This matrix is used to correct for per-device variations in the 25910sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 25911<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 25912contains a per-device calibration transform that maps colors 25913from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 25914colorspace) into this camera device's native sensor color 25915space under the second reference illuminant 25916(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 25917<p>This matrix will only be present if the second reference 25918illuminant is present.<wbr/></p> 25919<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 25920the camera device has RAW capability.<wbr/></p> 25921 </td> 25922 </tr> 25923 25924 25925 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25926 <!-- end of entry --> 25927 25928 25929 <tr class="entry" id="static_android.sensor.colorTransform1"> 25930 <td class="entry_name 25931 " rowspan="3"> 25932 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 25933 </td> 25934 <td class="entry_type"> 25935 <span class="entry_type_name">rational</span> 25936 <span class="entry_type_container">x</span> 25937 25938 <span class="entry_type_array"> 25939 3 x 3 25940 </span> 25941 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 25942 25943 25944 25945 25946 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 25947 25948 25949 </td> <!-- entry_type --> 25950 25951 <td class="entry_description"> 25952 <p>A matrix that transforms color values from CIE XYZ color space to 25953reference sensor color space.<wbr/></p> 25954 </td> 25955 25956 <td class="entry_units"> 25957 </td> 25958 25959 <td class="entry_range"> 25960 </td> 25961 25962 <td class="entry_hal_version"> 25963 <p>3.<wbr/>2</p> 25964 </td> 25965 25966 <td class="entry_tags"> 25967 <ul class="entry_tags"> 25968 <li><a href="#tag_RAW">RAW</a></li> 25969 </ul> 25970 </td> 25971 25972 </tr> 25973 <tr class="entries_header"> 25974 <th class="th_details" colspan="6">Details</th> 25975 </tr> 25976 <tr class="entry_cont"> 25977 <td class="entry_details" colspan="6"> 25978 <p>This matrix is used to convert from the standard CIE XYZ color 25979space to the reference sensor colorspace,<wbr/> and is used when processing 25980raw buffer data.<wbr/></p> 25981<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 25982contains a color transform matrix that maps colors from the CIE 25983XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 25984"golden module" colorspace) under the first reference illuminant 25985(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 25986<p>The white points chosen in both the reference sensor color space 25987and the CIE XYZ colorspace when calculating this transform will 25988match the standard white point for the first reference illuminant 25989(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 25990<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 25991the camera device has RAW capability.<wbr/></p> 25992 </td> 25993 </tr> 25994 25995 25996 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25997 <!-- end of entry --> 25998 25999 26000 <tr class="entry" id="static_android.sensor.colorTransform2"> 26001 <td class="entry_name 26002 " rowspan="3"> 26003 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 26004 </td> 26005 <td class="entry_type"> 26006 <span class="entry_type_name">rational</span> 26007 <span class="entry_type_container">x</span> 26008 26009 <span class="entry_type_array"> 26010 3 x 3 26011 </span> 26012 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 26013 26014 26015 26016 26017 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 26018 26019 26020 </td> <!-- entry_type --> 26021 26022 <td class="entry_description"> 26023 <p>A matrix that transforms color values from CIE XYZ color space to 26024reference sensor color space.<wbr/></p> 26025 </td> 26026 26027 <td class="entry_units"> 26028 </td> 26029 26030 <td class="entry_range"> 26031 </td> 26032 26033 <td class="entry_hal_version"> 26034 <p>3.<wbr/>2</p> 26035 </td> 26036 26037 <td class="entry_tags"> 26038 <ul class="entry_tags"> 26039 <li><a href="#tag_RAW">RAW</a></li> 26040 </ul> 26041 </td> 26042 26043 </tr> 26044 <tr class="entries_header"> 26045 <th class="th_details" colspan="6">Details</th> 26046 </tr> 26047 <tr class="entry_cont"> 26048 <td class="entry_details" colspan="6"> 26049 <p>This matrix is used to convert from the standard CIE XYZ color 26050space to the reference sensor colorspace,<wbr/> and is used when processing 26051raw buffer data.<wbr/></p> 26052<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 26053contains a color transform matrix that maps colors from the CIE 26054XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 26055"golden module" colorspace) under the second reference illuminant 26056(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 26057<p>The white points chosen in both the reference sensor color space 26058and the CIE XYZ colorspace when calculating this transform will 26059match the standard white point for the second reference illuminant 26060(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 26061<p>This matrix will only be present if the second reference 26062illuminant is present.<wbr/></p> 26063<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 26064the camera device has RAW capability.<wbr/></p> 26065 </td> 26066 </tr> 26067 26068 26069 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26070 <!-- end of entry --> 26071 26072 26073 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 26074 <td class="entry_name 26075 " rowspan="3"> 26076 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 26077 </td> 26078 <td class="entry_type"> 26079 <span class="entry_type_name">rational</span> 26080 <span class="entry_type_container">x</span> 26081 26082 <span class="entry_type_array"> 26083 3 x 3 26084 </span> 26085 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 26086 26087 26088 26089 26090 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 26091 26092 26093 </td> <!-- entry_type --> 26094 26095 <td class="entry_description"> 26096 <p>A matrix that transforms white balanced camera colors from the reference 26097sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 26098 </td> 26099 26100 <td class="entry_units"> 26101 </td> 26102 26103 <td class="entry_range"> 26104 </td> 26105 26106 <td class="entry_hal_version"> 26107 <p>3.<wbr/>2</p> 26108 </td> 26109 26110 <td class="entry_tags"> 26111 <ul class="entry_tags"> 26112 <li><a href="#tag_RAW">RAW</a></li> 26113 </ul> 26114 </td> 26115 26116 </tr> 26117 <tr class="entries_header"> 26118 <th class="th_details" colspan="6">Details</th> 26119 </tr> 26120 <tr class="entry_cont"> 26121 <td class="entry_details" colspan="6"> 26122 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 26123is used when processing raw buffer data.<wbr/></p> 26124<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 26125a color transform matrix that maps white balanced colors from the 26126reference sensor color space to the CIE XYZ color space with a D50 white 26127point.<wbr/></p> 26128<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 26129this matrix is chosen so that the standard white point for this reference 26130illuminant in the reference sensor colorspace is mapped to D50 in the 26131CIE XYZ colorspace.<wbr/></p> 26132<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 26133the camera device has RAW capability.<wbr/></p> 26134 </td> 26135 </tr> 26136 26137 26138 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26139 <!-- end of entry --> 26140 26141 26142 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 26143 <td class="entry_name 26144 " rowspan="3"> 26145 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 26146 </td> 26147 <td class="entry_type"> 26148 <span class="entry_type_name">rational</span> 26149 <span class="entry_type_container">x</span> 26150 26151 <span class="entry_type_array"> 26152 3 x 3 26153 </span> 26154 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 26155 26156 26157 26158 26159 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 26160 26161 26162 </td> <!-- entry_type --> 26163 26164 <td class="entry_description"> 26165 <p>A matrix that transforms white balanced camera colors from the reference 26166sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 26167 </td> 26168 26169 <td class="entry_units"> 26170 </td> 26171 26172 <td class="entry_range"> 26173 </td> 26174 26175 <td class="entry_hal_version"> 26176 <p>3.<wbr/>2</p> 26177 </td> 26178 26179 <td class="entry_tags"> 26180 <ul class="entry_tags"> 26181 <li><a href="#tag_RAW">RAW</a></li> 26182 </ul> 26183 </td> 26184 26185 </tr> 26186 <tr class="entries_header"> 26187 <th class="th_details" colspan="6">Details</th> 26188 </tr> 26189 <tr class="entry_cont"> 26190 <td class="entry_details" colspan="6"> 26191 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 26192is used when processing raw buffer data.<wbr/></p> 26193<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 26194a color transform matrix that maps white balanced colors from the 26195reference sensor color space to the CIE XYZ color space with a D50 white 26196point.<wbr/></p> 26197<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 26198this matrix is chosen so that the standard white point for this reference 26199illuminant in the reference sensor colorspace is mapped to D50 in the 26200CIE XYZ colorspace.<wbr/></p> 26201<p>This matrix will only be present if the second reference 26202illuminant is present.<wbr/></p> 26203<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 26204the camera device has RAW capability.<wbr/></p> 26205 </td> 26206 </tr> 26207 26208 26209 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26210 <!-- end of entry --> 26211 26212 26213 <tr class="entry" id="static_android.sensor.baseGainFactor"> 26214 <td class="entry_name 26215 " rowspan="1"> 26216 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 26217 </td> 26218 <td class="entry_type"> 26219 <span class="entry_type_name">rational</span> 26220 26221 <span class="entry_type_visibility"> [system]</span> 26222 26223 26224 26225 26226 26227 26228 </td> <!-- entry_type --> 26229 26230 <td class="entry_description"> 26231 <p>Gain factor from electrons to raw units when 26232ISO=100</p> 26233 </td> 26234 26235 <td class="entry_units"> 26236 </td> 26237 26238 <td class="entry_range"> 26239 </td> 26240 26241 <td class="entry_hal_version"> 26242 <p>3.<wbr/>2</p> 26243 </td> 26244 26245 <td class="entry_tags"> 26246 <ul class="entry_tags"> 26247 <li><a href="#tag_FUTURE">FUTURE</a></li> 26248 </ul> 26249 </td> 26250 26251 </tr> 26252 26253 26254 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26255 <!-- end of entry --> 26256 26257 26258 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 26259 <td class="entry_name 26260 " rowspan="5"> 26261 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 26262 </td> 26263 <td class="entry_type"> 26264 <span class="entry_type_name">int32</span> 26265 <span class="entry_type_container">x</span> 26266 26267 <span class="entry_type_array"> 26268 4 26269 </span> 26270 <span class="entry_type_visibility"> [public as blackLevelPattern]</span> 26271 26272 26273 26274 26275 <div class="entry_type_notes">2x2 raw count block</div> 26276 26277 26278 </td> <!-- entry_type --> 26279 26280 <td class="entry_description"> 26281 <p>A fixed black level offset for each of the color filter arrangement 26282(CFA) mosaic channels.<wbr/></p> 26283 </td> 26284 26285 <td class="entry_units"> 26286 </td> 26287 26288 <td class="entry_range"> 26289 <p>>= 0 for each.<wbr/></p> 26290 </td> 26291 26292 <td class="entry_hal_version"> 26293 <p>3.<wbr/>2</p> 26294 </td> 26295 26296 <td class="entry_tags"> 26297 <ul class="entry_tags"> 26298 <li><a href="#tag_RAW">RAW</a></li> 26299 </ul> 26300 </td> 26301 26302 </tr> 26303 <tr class="entries_header"> 26304 <th class="th_details" colspan="6">Details</th> 26305 </tr> 26306 <tr class="entry_cont"> 26307 <td class="entry_details" colspan="6"> 26308 <p>This key specifies the zero light value for each of the CFA mosaic 26309channels in the camera sensor.<wbr/> The maximal value output by the 26310sensor 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> 26311<p>The values are given in the same order as channels listed for the CFA 26312layout 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 26313nth value given corresponds to the black level offset for the nth 26314color channel listed in the CFA.<wbr/></p> 26315<p>The black level values of captured images may vary for different 26316capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 26317represents a coarse approximation for such case.<wbr/> It is recommended to 26318use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from 26319<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when 26320supported by the camera device,<wbr/> which provides more accurate black 26321level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use 26322pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black 26323level values for each frame.<wbr/></p> 26324<p>For a MONOCHROME camera device,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p> 26325 </td> 26326 </tr> 26327 26328 <tr class="entries_header"> 26329 <th class="th_details" colspan="6">HAL Implementation Details</th> 26330 </tr> 26331 <tr class="entry_cont"> 26332 <td class="entry_details" colspan="6"> 26333 <p>The values are given in row-column scan order,<wbr/> with the first value 26334corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 26335 </td> 26336 </tr> 26337 26338 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26339 <!-- end of entry --> 26340 26341 26342 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 26343 <td class="entry_name 26344 " rowspan="3"> 26345 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 26346 </td> 26347 <td class="entry_type"> 26348 <span class="entry_type_name">int32</span> 26349 26350 <span class="entry_type_visibility"> [public]</span> 26351 26352 26353 <span class="entry_type_hwlevel">[full] </span> 26354 26355 26356 26357 26358 </td> <!-- entry_type --> 26359 26360 <td class="entry_description"> 26361 <p>Maximum sensitivity that is implemented 26362purely through analog gain.<wbr/></p> 26363 </td> 26364 26365 <td class="entry_units"> 26366 </td> 26367 26368 <td class="entry_range"> 26369 </td> 26370 26371 <td class="entry_hal_version"> 26372 <p>3.<wbr/>2</p> 26373 </td> 26374 26375 <td class="entry_tags"> 26376 <ul class="entry_tags"> 26377 <li><a href="#tag_V1">V1</a></li> 26378 <li><a href="#tag_FULL">FULL</a></li> 26379 </ul> 26380 </td> 26381 26382 </tr> 26383 <tr class="entries_header"> 26384 <th class="th_details" colspan="6">Details</th> 26385 </tr> 26386 <tr class="entry_cont"> 26387 <td class="entry_details" colspan="6"> 26388 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 26389equal to this,<wbr/> all applied gain must be analog.<wbr/> For 26390values above this,<wbr/> the gain applied can be a mix of analog and 26391digital.<wbr/></p> 26392 </td> 26393 </tr> 26394 26395 26396 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26397 <!-- end of entry --> 26398 26399 26400 <tr class="entry" id="static_android.sensor.orientation"> 26401 <td class="entry_name 26402 " rowspan="3"> 26403 android.<wbr/>sensor.<wbr/>orientation 26404 </td> 26405 <td class="entry_type"> 26406 <span class="entry_type_name">int32</span> 26407 26408 <span class="entry_type_visibility"> [public]</span> 26409 26410 26411 <span class="entry_type_hwlevel">[legacy] </span> 26412 26413 26414 26415 26416 </td> <!-- entry_type --> 26417 26418 <td class="entry_description"> 26419 <p>Clockwise angle through which the output image needs to be rotated to be 26420upright on the device screen in its native orientation.<wbr/></p> 26421 </td> 26422 26423 <td class="entry_units"> 26424 Degrees of clockwise rotation; always a multiple of 26425 90 26426 </td> 26427 26428 <td class="entry_range"> 26429 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 26430 </td> 26431 26432 <td class="entry_hal_version"> 26433 <p>3.<wbr/>2</p> 26434 </td> 26435 26436 <td class="entry_tags"> 26437 <ul class="entry_tags"> 26438 <li><a href="#tag_BC">BC</a></li> 26439 </ul> 26440 </td> 26441 26442 </tr> 26443 <tr class="entries_header"> 26444 <th class="th_details" colspan="6">Details</th> 26445 </tr> 26446 <tr class="entry_cont"> 26447 <td class="entry_details" colspan="6"> 26448 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in 26449the sensor's coordinate system.<wbr/></p> 26450<p>Starting with Android API level 32,<wbr/> camera clients that query the orientation via 26451<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> on foldable devices which 26452include logical cameras can receive a value that can dynamically change depending on the 26453device/<wbr/>fold state.<wbr/> 26454Clients are advised to not cache or store the orientation value of such logical sensors.<wbr/> 26455In case repeated queries to CameraCharacteristics are not preferred,<wbr/> then clients can 26456also access the entire mapping from device state to sensor orientation in 26457<a href="https://developer.android.com/reference/android/hardware/camera2/params/DeviceStateSensorOrientationMap.html">DeviceStateSensorOrientationMap</a>.<wbr/> 26458Do note that a dynamically changing sensor orientation value in camera characteristics 26459will not be the best way to establish the orientation per frame.<wbr/> Clients that want to 26460know the sensor orientation of a particular captured frame should query the 26461<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 26462check the respective physical camera orientation.<wbr/></p> 26463 </td> 26464 </tr> 26465 26466 26467 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26468 <!-- end of entry --> 26469 26470 26471 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 26472 <td class="entry_name 26473 " rowspan="3"> 26474 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 26475 </td> 26476 <td class="entry_type"> 26477 <span class="entry_type_name">int32</span> 26478 <span class="entry_type_container">x</span> 26479 26480 <span class="entry_type_array"> 26481 3 26482 </span> 26483 <span class="entry_type_visibility"> [system]</span> 26484 26485 26486 26487 26488 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 26489 26490 26491 </td> <!-- entry_type --> 26492 26493 <td class="entry_description"> 26494 <p>The number of input samples for each dimension of 26495<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 26496 </td> 26497 26498 <td class="entry_units"> 26499 </td> 26500 26501 <td class="entry_range"> 26502 <p>Hue >= 1,<wbr/> 26503Saturation >= 2,<wbr/> 26504Value >= 1</p> 26505 </td> 26506 26507 <td class="entry_hal_version"> 26508 <p>3.<wbr/>2</p> 26509 </td> 26510 26511 <td class="entry_tags"> 26512 <ul class="entry_tags"> 26513 <li><a href="#tag_RAW">RAW</a></li> 26514 </ul> 26515 </td> 26516 26517 </tr> 26518 <tr class="entries_header"> 26519 <th class="th_details" colspan="6">Details</th> 26520 </tr> 26521 <tr class="entry_cont"> 26522 <td class="entry_details" colspan="6"> 26523 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 26524dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 26525dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 26526element.<wbr/></p> 26527 </td> 26528 </tr> 26529 26530 26531 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26532 <!-- end of entry --> 26533 26534 26535 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 26536 <td class="entry_name 26537 " rowspan="5"> 26538 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 26539 </td> 26540 <td class="entry_type"> 26541 <span class="entry_type_name">int32</span> 26542 <span class="entry_type_container">x</span> 26543 26544 <span class="entry_type_array"> 26545 n 26546 </span> 26547 <span class="entry_type_visibility"> [public]</span> 26548 26549 26550 26551 26552 <div class="entry_type_notes">list of enums</div> 26553 26554 26555 </td> <!-- entry_type --> 26556 26557 <td class="entry_description"> 26558 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> 26559supported by this camera device.<wbr/></p> 26560 </td> 26561 26562 <td class="entry_units"> 26563 </td> 26564 26565 <td class="entry_range"> 26566 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p> 26567 </td> 26568 26569 <td class="entry_hal_version"> 26570 <p>3.<wbr/>2</p> 26571 </td> 26572 26573 <td class="entry_tags"> 26574 </td> 26575 26576 </tr> 26577 <tr class="entries_header"> 26578 <th class="th_details" colspan="6">Details</th> 26579 </tr> 26580 <tr class="entry_cont"> 26581 <td class="entry_details" colspan="6"> 26582 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p> 26583 </td> 26584 </tr> 26585 26586 <tr class="entries_header"> 26587 <th class="th_details" colspan="6">HAL Implementation Details</th> 26588 </tr> 26589 <tr class="entry_cont"> 26590 <td class="entry_details" colspan="6"> 26591 <p>All custom modes must be >= CUSTOM1.<wbr/></p> 26592 </td> 26593 </tr> 26594 26595 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26596 <!-- end of entry --> 26597 26598 26599 <tr class="entry" id="static_android.sensor.opticalBlackRegions"> 26600 <td class="entry_name 26601 " rowspan="5"> 26602 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions 26603 </td> 26604 <td class="entry_type"> 26605 <span class="entry_type_name">int32</span> 26606 <span class="entry_type_container">x</span> 26607 26608 <span class="entry_type_array"> 26609 4 x num_regions 26610 </span> 26611 <span class="entry_type_visibility"> [public as rectangle]</span> 26612 26613 26614 26615 26616 26617 26618 </td> <!-- entry_type --> 26619 26620 <td class="entry_description"> 26621 <p>List of disjoint rectangles indicating the sensor 26622optically shielded black pixel regions.<wbr/></p> 26623 </td> 26624 26625 <td class="entry_units"> 26626 </td> 26627 26628 <td class="entry_range"> 26629 </td> 26630 26631 <td class="entry_hal_version"> 26632 <p>3.<wbr/>2</p> 26633 </td> 26634 26635 <td class="entry_tags"> 26636 </td> 26637 26638 </tr> 26639 <tr class="entries_header"> 26640 <th class="th_details" colspan="6">Details</th> 26641 </tr> 26642 <tr class="entry_cont"> 26643 <td class="entry_details" colspan="6"> 26644 <p>In most camera sensors,<wbr/> the active array is surrounded by some 26645optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels 26646provides a reliable black reference for black level compensation 26647in active array region.<wbr/></p> 26648<p>This key provides a list of disjoint rectangles specifying the 26649regions of optically shielded (with metal shield) black pixel 26650regions if the camera device is capable of reading out these black 26651pixels in the output raw images.<wbr/> In comparison to the fixed black 26652level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key 26653may provide a more accurate way for the application to calculate 26654black level of each captured raw images.<wbr/></p> 26655<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 26656<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p> 26657 </td> 26658 </tr> 26659 26660 <tr class="entries_header"> 26661 <th class="th_details" colspan="6">HAL Implementation Details</th> 26662 </tr> 26663 <tr class="entry_cont"> 26664 <td class="entry_details" colspan="6"> 26665 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin) 26666must be >= (0,<wbr/>0) and <= 26667<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 26668<= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be 26669outside the region reported by 26670<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> 26671<p>The HAL must report minimal number of disjoint regions for the 26672optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can 26673be covered by one rectangle,<wbr/> the HAL must not split this region into 26674multiple rectangles.<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.sensor.opaqueRawSize"> 26683 <td class="entry_name 26684 " rowspan="5"> 26685 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size 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 x 3 26693 </span> 26694 <span class="entry_type_visibility"> [system]</span> 26695 26696 26697 26698 26699 26700 26701 </td> <!-- entry_type --> 26702 26703 <td class="entry_description"> 26704 <p>Size in bytes for all the listed opaque RAW buffer sizes</p> 26705 </td> 26706 26707 <td class="entry_units"> 26708 </td> 26709 26710 <td class="entry_range"> 26711 <p>Must be large enough to fit the opaque RAW of corresponding size produced by 26712the camera</p> 26713 </td> 26714 26715 <td class="entry_hal_version"> 26716 <p>3.<wbr/>2</p> 26717 </td> 26718 26719 <td class="entry_tags"> 26720 </td> 26721 26722 </tr> 26723 <tr class="entries_header"> 26724 <th class="th_details" colspan="6">Details</th> 26725 </tr> 26726 <tr class="entry_cont"> 26727 <td class="entry_details" colspan="6"> 26728 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/> 26729This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/> 26730All RAW_<wbr/>OPAQUE output stream configuration listed in 26731<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in 26732this key.<wbr/></p> 26733 </td> 26734 </tr> 26735 26736 <tr class="entries_header"> 26737 <th class="th_details" colspan="6">HAL Implementation Details</th> 26738 </tr> 26739 <tr class="entry_cont"> 26740 <td class="entry_details" colspan="6"> 26741 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p> 26742<p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this 26743key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera 26744framework will derive this key by assuming each pixel takes two bytes and no padding bytes 26745between rows.<wbr/></p> 26746 </td> 26747 </tr> 26748 26749 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26750 <!-- end of entry --> 26751 26752 26753 <tr class="entry" id="static_android.sensor.opaqueRawSizeMaximumResolution"> 26754 <td class="entry_name 26755 " rowspan="5"> 26756 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size<wbr/>Maximum<wbr/>Resolution 26757 </td> 26758 <td class="entry_type"> 26759 <span class="entry_type_name">int32</span> 26760 <span class="entry_type_container">x</span> 26761 26762 <span class="entry_type_array"> 26763 n x 3 26764 </span> 26765 <span class="entry_type_visibility"> [system]</span> 26766 26767 26768 26769 26770 26771 26772 </td> <!-- entry_type --> 26773 26774 <td class="entry_description"> 26775 <p>Size in bytes for all the listed opaque RAW buffer sizes when 26776<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 26777<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> 26778 </td> 26779 26780 <td class="entry_units"> 26781 </td> 26782 26783 <td class="entry_range"> 26784 <p>Must be large enough to fit the opaque RAW of corresponding size produced by 26785the camera</p> 26786 </td> 26787 26788 <td class="entry_hal_version"> 26789 <p>3.<wbr/>6</p> 26790 </td> 26791 26792 <td class="entry_tags"> 26793 </td> 26794 26795 </tr> 26796 <tr class="entries_header"> 26797 <th class="th_details" colspan="6">Details</th> 26798 </tr> 26799 <tr class="entry_cont"> 26800 <td class="entry_details" colspan="6"> 26801 <p>Refer to <a href="#static_android.sensor.opaqueRawSize">android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size</a> for details.<wbr/></p> 26802 </td> 26803 </tr> 26804 26805 <tr class="entries_header"> 26806 <th class="th_details" colspan="6">HAL Implementation Details</th> 26807 </tr> 26808 <tr class="entry_cont"> 26809 <td class="entry_details" colspan="6"> 26810 <p>Refer to <a href="#static_android.sensor.opaqueRawSize">android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size</a> for details.<wbr/></p> 26811 </td> 26812 </tr> 26813 26814 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26815 <!-- end of entry --> 26816 26817 26818 26819 <!-- end of kind --> 26820 </tbody> 26821 <tr><td colspan="7" class="kind">dynamic</td></tr> 26822 26823 <thead class="entries_header"> 26824 <tr> 26825 <th class="th_name">Property Name</th> 26826 <th class="th_type">Type</th> 26827 <th class="th_description">Description</th> 26828 <th class="th_units">Units</th> 26829 <th class="th_range">Range</th> 26830 <th class="th_hal_version">Initial HIDL HAL version</th> 26831 <th class="th_tags">Tags</th> 26832 </tr> 26833 </thead> 26834 26835 <tbody> 26836 26837 26838 26839 26840 26841 26842 26843 26844 26845 26846 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 26847 <td class="entry_name 26848 " rowspan="3"> 26849 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 26850 </td> 26851 <td class="entry_type"> 26852 <span class="entry_type_name">int64</span> 26853 26854 <span class="entry_type_visibility"> [public]</span> 26855 26856 26857 <span class="entry_type_hwlevel">[full] </span> 26858 26859 26860 26861 26862 </td> <!-- entry_type --> 26863 26864 <td class="entry_description"> 26865 <p>Duration each pixel is exposed to 26866light.<wbr/></p> 26867 </td> 26868 26869 <td class="entry_units"> 26870 Nanoseconds 26871 </td> 26872 26873 <td class="entry_range"> 26874 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 26875 </td> 26876 26877 <td class="entry_hal_version"> 26878 <p>3.<wbr/>2</p> 26879 </td> 26880 26881 <td class="entry_tags"> 26882 <ul class="entry_tags"> 26883 <li><a href="#tag_V1">V1</a></li> 26884 </ul> 26885 </td> 26886 26887 </tr> 26888 <tr class="entries_header"> 26889 <th class="th_details" colspan="6">Details</th> 26890 </tr> 26891 <tr class="entry_cont"> 26892 <td class="entry_details" colspan="6"> 26893 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 26894duration exposed to the nearest possible value (rather than expose longer).<wbr/> 26895The final exposure time used will be available in the output capture result.<wbr/></p> 26896<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 26897OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 26898 </td> 26899 </tr> 26900 26901 26902 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26903 <!-- end of entry --> 26904 26905 26906 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 26907 <td class="entry_name 26908 " rowspan="5"> 26909 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 26910 </td> 26911 <td class="entry_type"> 26912 <span class="entry_type_name">int64</span> 26913 26914 <span class="entry_type_visibility"> [public]</span> 26915 26916 26917 <span class="entry_type_hwlevel">[full] </span> 26918 26919 26920 26921 26922 </td> <!-- entry_type --> 26923 26924 <td class="entry_description"> 26925 <p>Duration from start of frame exposure to 26926start of next frame exposure.<wbr/></p> 26927 </td> 26928 26929 <td class="entry_units"> 26930 Nanoseconds 26931 </td> 26932 26933 <td class="entry_range"> 26934 <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/> 26935The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 26936 </td> 26937 26938 <td class="entry_hal_version"> 26939 <p>3.<wbr/>2</p> 26940 </td> 26941 26942 <td class="entry_tags"> 26943 <ul class="entry_tags"> 26944 <li><a href="#tag_V1">V1</a></li> 26945 </ul> 26946 </td> 26947 26948 </tr> 26949 <tr class="entries_header"> 26950 <th class="th_details" colspan="6">Details</th> 26951 </tr> 26952 <tr class="entry_cont"> 26953 <td class="entry_details" colspan="6"> 26954 <p>The maximum frame rate that can be supported by a camera subsystem is 26955a function of many factors:</p> 26956<ul> 26957<li>Requested resolutions of output image streams</li> 26958<li>Availability of binning /<wbr/> skipping modes on the imager</li> 26959<li>The bandwidth of the imager interface</li> 26960<li>The bandwidth of the various ISP processing blocks</li> 26961</ul> 26962<p>Since these factors can vary greatly between different ISPs and 26963sensors,<wbr/> the camera abstraction tries to represent the bandwidth 26964restrictions with as simple a model as possible.<wbr/></p> 26965<p>The model presented has the following characteristics:</p> 26966<ul> 26967<li>The image sensor is always configured to output the smallest 26968resolution possible given the application's requested output stream 26969sizes.<wbr/> The smallest resolution is defined as being at least as large 26970as the largest requested output stream size; the camera pipeline must 26971never digitally upsample sensor data when the crop region covers the 26972whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 26973resolutions are configured,<wbr/> the sensor can provide a higher frame 26974rate.<wbr/></li> 26975<li>Since any request may use any or all the currently configured 26976output streams,<wbr/> the sensor and ISP must be configured to support 26977scaling a single capture to all the streams at the same time.<wbr/> This 26978means the camera pipeline must be ready to produce the largest 26979requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 26980frame rate of a given configured stream set is governed only by the 26981largest requested stream resolution.<wbr/></li> 26982<li>Using more than one output stream in a request does not affect the 26983frame duration.<wbr/></li> 26984<li>Certain format-streams may need to do additional background processing 26985before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 26986can run concurrently to the rest of the camera pipeline,<wbr/> but 26987cannot process more than 1 capture at a time.<wbr/></li> 26988</ul> 26989<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via 26990<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 26991These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is 26992possible for a given stream configuration.<wbr/></p> 26993<p>Specifically,<wbr/> the application can use the following rules to 26994determine the minimum frame duration it can request from the camera 26995device:</p> 26996<ol> 26997<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li> 26998<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> 26999(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li> 27000<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum 27001out 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> 27002</ol> 27003<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> 27004using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady 27005state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let 27006this special kind of request be called <code>Rsimple</code>.<wbr/></p> 27007<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a 27008new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if 27009<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all 27010buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p> 27011<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> 27012<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 27013OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 27014 </td> 27015 </tr> 27016 27017 <tr class="entries_header"> 27018 <th class="th_details" colspan="6">HAL Implementation Details</th> 27019 </tr> 27020 <tr class="entry_cont"> 27021 <td class="entry_details" colspan="6"> 27022 <p>For more details about stalling,<wbr/> see 27023<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 27024 </td> 27025 </tr> 27026 27027 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27028 <!-- end of entry --> 27029 27030 27031 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 27032 <td class="entry_name 27033 " rowspan="5"> 27034 android.<wbr/>sensor.<wbr/>sensitivity 27035 </td> 27036 <td class="entry_type"> 27037 <span class="entry_type_name">int32</span> 27038 27039 <span class="entry_type_visibility"> [public]</span> 27040 27041 27042 <span class="entry_type_hwlevel">[full] </span> 27043 27044 27045 27046 27047 </td> <!-- entry_type --> 27048 27049 <td class="entry_description"> 27050 <p>The amount of gain applied to sensor data 27051before processing.<wbr/></p> 27052 </td> 27053 27054 <td class="entry_units"> 27055 ISO arithmetic units 27056 </td> 27057 27058 <td class="entry_range"> 27059 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 27060 </td> 27061 27062 <td class="entry_hal_version"> 27063 <p>3.<wbr/>2</p> 27064 </td> 27065 27066 <td class="entry_tags"> 27067 <ul class="entry_tags"> 27068 <li><a href="#tag_V1">V1</a></li> 27069 </ul> 27070 </td> 27071 27072 </tr> 27073 <tr class="entries_header"> 27074 <th class="th_details" colspan="6">Details</th> 27075 </tr> 27076 <tr class="entry_cont"> 27077 <td class="entry_details" colspan="6"> 27078 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 27079as defined in ISO 12232:2006.<wbr/></p> 27080<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 27081if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 27082is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 27083<p>If the camera device cannot apply the exact sensitivity 27084requested,<wbr/> it will reduce the gain to the nearest supported 27085value.<wbr/> The final sensitivity used will be available in the 27086output capture result.<wbr/></p> 27087<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 27088OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 27089<p>Note that for devices supporting postRawSensitivityBoost,<wbr/> the total sensitivity applied 27090to the final processed image is the combination of <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 27091<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 27092sensitivity from last capture result of an auto request for a manual request,<wbr/> in order 27093to achieve the same brightness in the output image,<wbr/> the application should also 27094set postRawSensitivityBoost.<wbr/></p> 27095 </td> 27096 </tr> 27097 27098 <tr class="entries_header"> 27099 <th class="th_details" colspan="6">HAL Implementation Details</th> 27100 </tr> 27101 <tr class="entry_cont"> 27102 <td class="entry_details" colspan="6"> 27103 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 27104 </td> 27105 </tr> 27106 27107 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27108 <!-- end of entry --> 27109 27110 27111 <tr class="entry" id="dynamic_android.sensor.timestamp"> 27112 <td class="entry_name 27113 " rowspan="5"> 27114 android.<wbr/>sensor.<wbr/>timestamp 27115 </td> 27116 <td class="entry_type"> 27117 <span class="entry_type_name">int64</span> 27118 27119 <span class="entry_type_visibility"> [public]</span> 27120 27121 27122 <span class="entry_type_hwlevel">[legacy] </span> 27123 27124 27125 27126 27127 </td> <!-- entry_type --> 27128 27129 <td class="entry_description"> 27130 <p>Time at start of exposure of first 27131row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p> 27132 </td> 27133 27134 <td class="entry_units"> 27135 Nanoseconds 27136 </td> 27137 27138 <td class="entry_range"> 27139 <p>> 0</p> 27140 </td> 27141 27142 <td class="entry_hal_version"> 27143 <p>3.<wbr/>2</p> 27144 </td> 27145 27146 <td class="entry_tags"> 27147 <ul class="entry_tags"> 27148 <li><a href="#tag_BC">BC</a></li> 27149 </ul> 27150 </td> 27151 27152 </tr> 27153 <tr class="entries_header"> 27154 <th class="th_details" colspan="6">Details</th> 27155 </tr> 27156 <tr class="entry_cont"> 27157 <td class="entry_details" colspan="6"> 27158 <p>The timestamps are also included in all image 27159buffers produced for the same capture,<wbr/> and will be identical 27160on all the outputs.<wbr/></p> 27161<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/> 27162the timestamps measure time since an unspecified starting point,<wbr/> 27163and are monotonically increasing.<wbr/> They can be compared with the 27164timestamps for other captures from the same camera device,<wbr/> but are 27165not guaranteed to be comparable to any other time source.<wbr/></p> 27166<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the 27167timestamps 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 27168be compared to other timestamps from other subsystems that 27169are using that base.<wbr/></p> 27170<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of 27171the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the 27172timestamp</a> in the TotalCaptureResult that was used to create the 27173reprocess capture request.<wbr/></p> 27174 </td> 27175 </tr> 27176 27177 <tr class="entries_header"> 27178 <th class="th_details" colspan="6">HAL Implementation Details</th> 27179 </tr> 27180 <tr class="entry_cont"> 27181 <td class="entry_details" colspan="6"> 27182 <p>All timestamps must be in reference to the kernel's 27183CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for 27184time spent asleep.<wbr/> This allows for synchronization with 27185sensors that continue to operate while the system is 27186otherwise asleep.<wbr/></p> 27187<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 27188The timestamp must be synchronized with the timestamps from other 27189sensor subsystems that are using the same timebase.<wbr/></p> 27190<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up 27191with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the 27192capture request.<wbr/></p> 27193 </td> 27194 </tr> 27195 27196 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27197 <!-- end of entry --> 27198 27199 27200 <tr class="entry" id="dynamic_android.sensor.temperature"> 27201 <td class="entry_name 27202 " rowspan="1"> 27203 android.<wbr/>sensor.<wbr/>temperature 27204 </td> 27205 <td class="entry_type"> 27206 <span class="entry_type_name">float</span> 27207 27208 <span class="entry_type_visibility"> [system]</span> 27209 27210 27211 27212 27213 27214 27215 </td> <!-- entry_type --> 27216 27217 <td class="entry_description"> 27218 <p>The temperature of the sensor,<wbr/> sampled at the time 27219exposure began for this frame.<wbr/></p> 27220<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 27221somewhere close to it.<wbr/></p> 27222 </td> 27223 27224 <td class="entry_units"> 27225 Celsius 27226 </td> 27227 27228 <td class="entry_range"> 27229 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 27230 </td> 27231 27232 <td class="entry_hal_version"> 27233 <p>3.<wbr/>2</p> 27234 </td> 27235 27236 <td class="entry_tags"> 27237 <ul class="entry_tags"> 27238 <li><a href="#tag_FUTURE">FUTURE</a></li> 27239 </ul> 27240 </td> 27241 27242 </tr> 27243 27244 27245 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27246 <!-- end of entry --> 27247 27248 27249 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 27250 <td class="entry_name 27251 " rowspan="3"> 27252 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 27253 </td> 27254 <td class="entry_type"> 27255 <span class="entry_type_name">rational</span> 27256 <span class="entry_type_container">x</span> 27257 27258 <span class="entry_type_array"> 27259 3 27260 </span> 27261 <span class="entry_type_visibility"> [public]</span> 27262 27263 27264 27265 27266 27267 27268 </td> <!-- entry_type --> 27269 27270 <td class="entry_description"> 27271 <p>The estimated camera neutral color in the native sensor colorspace at 27272the time of capture.<wbr/></p> 27273 </td> 27274 27275 <td class="entry_units"> 27276 </td> 27277 27278 <td class="entry_range"> 27279 </td> 27280 27281 <td class="entry_hal_version"> 27282 <p>3.<wbr/>2</p> 27283 </td> 27284 27285 <td class="entry_tags"> 27286 <ul class="entry_tags"> 27287 <li><a href="#tag_RAW">RAW</a></li> 27288 </ul> 27289 </td> 27290 27291 </tr> 27292 <tr class="entries_header"> 27293 <th class="th_details" colspan="6">Details</th> 27294 </tr> 27295 <tr class="entry_cont"> 27296 <td class="entry_details" colspan="6"> 27297 <p>This value gives the neutral color point encoded as an RGB value in the 27298native sensor color space.<wbr/> The neutral color point indicates the 27299currently estimated white point of the scene illumination.<wbr/> It can be 27300used to interpolate between the provided color transforms when 27301processing raw sensor data.<wbr/></p> 27302<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 27303<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 27304the camera device has RAW capability.<wbr/></p> 27305 </td> 27306 </tr> 27307 27308 27309 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27310 <!-- end of entry --> 27311 27312 27313 <tr class="entry" id="dynamic_android.sensor.noiseProfile"> 27314 <td class="entry_name 27315 " rowspan="5"> 27316 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile 27317 </td> 27318 <td class="entry_type"> 27319 <span class="entry_type_name">double</span> 27320 <span class="entry_type_container">x</span> 27321 27322 <span class="entry_type_array"> 27323 2 x CFA Channels 27324 </span> 27325 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span> 27326 27327 27328 27329 27330 <div class="entry_type_notes">Pairs of noise model coefficients</div> 27331 27332 27333 </td> <!-- entry_type --> 27334 27335 <td class="entry_description"> 27336 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p> 27337 </td> 27338 27339 <td class="entry_units"> 27340 </td> 27341 27342 <td class="entry_range"> 27343 </td> 27344 27345 <td class="entry_hal_version"> 27346 <p>3.<wbr/>2</p> 27347 </td> 27348 27349 <td class="entry_tags"> 27350 <ul class="entry_tags"> 27351 <li><a href="#tag_RAW">RAW</a></li> 27352 </ul> 27353 </td> 27354 27355 </tr> 27356 <tr class="entries_header"> 27357 <th class="th_details" colspan="6">Details</th> 27358 </tr> 27359 <tr class="entry_cont"> 27360 <td class="entry_details" colspan="6"> 27361 <p>This key contains two noise model coefficients for each CFA channel 27362corresponding to the sensor amplification (S) and sensor readout 27363noise (O).<wbr/> These are given as pairs of coefficients for each channel 27364in the same order as channels listed for the CFA layout key 27365(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is 27366represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where 27367the first member of the Pair at index n is the S coefficient and the 27368second member is the O coefficient for the nth color channel in the CFA.<wbr/></p> 27369<p>These coefficients are used in a two parameter noise model to describe 27370the amount of noise present in the image for each CFA channel.<wbr/> The 27371noise model used here is:</p> 27372<p>N(x) = sqrt(Sx + O)</p> 27373<p>Where x represents the recorded signal of a CFA channel normalized to 27374the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for 27375that channel.<wbr/></p> 27376<p>A more detailed description of the noise model can be found in the 27377Adobe DNG specification for the NoiseProfile tag.<wbr/></p> 27378<p>For a MONOCHROME camera,<wbr/> there is only one color channel.<wbr/> So the noise model coefficients 27379will only contain one S and one O.<wbr/></p> 27380 </td> 27381 </tr> 27382 27383 <tr class="entries_header"> 27384 <th class="th_details" colspan="6">HAL Implementation Details</th> 27385 </tr> 27386 <tr class="entry_cont"> 27387 <td class="entry_details" colspan="6"> 27388 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as 27389an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients 27390for the red channel,<wbr/> S1 and O1 are the coefficients for the first green 27391channel,<wbr/> etc.<wbr/></p> 27392 </td> 27393 </tr> 27394 27395 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27396 <!-- end of entry --> 27397 27398 27399 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 27400 <td class="entry_name 27401 " rowspan="3"> 27402 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 27403 </td> 27404 <td class="entry_type"> 27405 <span class="entry_type_name">float</span> 27406 <span class="entry_type_container">x</span> 27407 27408 <span class="entry_type_array"> 27409 hue_samples x saturation_samples x value_samples x 3 27410 </span> 27411 <span class="entry_type_visibility"> [system]</span> 27412 27413 27414 27415 27416 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 27417 27418 27419 </td> <!-- entry_type --> 27420 27421 <td class="entry_description"> 27422 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 27423for each pixel.<wbr/></p> 27424 </td> 27425 27426 <td class="entry_units"> 27427 27428 The hue shift is given in degrees; saturation and value scale factors are 27429 unitless and are between 0 and 1 inclusive 27430 27431 </td> 27432 27433 <td class="entry_range"> 27434 </td> 27435 27436 <td class="entry_hal_version"> 27437 <p>3.<wbr/>2</p> 27438 </td> 27439 27440 <td class="entry_tags"> 27441 <ul class="entry_tags"> 27442 <li><a href="#tag_RAW">RAW</a></li> 27443 </ul> 27444 </td> 27445 27446 </tr> 27447 <tr class="entries_header"> 27448 <th class="th_details" colspan="6">Details</th> 27449 </tr> 27450 <tr class="entry_cont"> 27451 <td class="entry_details" colspan="6"> 27452 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 27453<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 27454<p>Each entry of this map contains three floats corresponding to the 27455hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 27456hue shift has the lowest index.<wbr/> The map entries are stored in the key 27457in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 27458hue divisions in the middle loop,<wbr/> and the saturation divisions in the 27459inner loop.<wbr/> All zero input saturation entries are required to have a 27460value scale factor of 1.<wbr/>0.<wbr/></p> 27461 </td> 27462 </tr> 27463 27464 27465 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27466 <!-- end of entry --> 27467 27468 27469 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 27470 <td class="entry_name 27471 " rowspan="3"> 27472 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 27473 </td> 27474 <td class="entry_type"> 27475 <span class="entry_type_name">float</span> 27476 <span class="entry_type_container">x</span> 27477 27478 <span class="entry_type_array"> 27479 samples x 2 27480 </span> 27481 <span class="entry_type_visibility"> [system]</span> 27482 27483 27484 27485 27486 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 27487 27488 27489 </td> <!-- entry_type --> 27490 27491 <td class="entry_description"> 27492 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 27493 </td> 27494 27495 <td class="entry_units"> 27496 </td> 27497 27498 <td class="entry_range"> 27499 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 27500<code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 27501sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 27502 </td> 27503 27504 <td class="entry_hal_version"> 27505 <p>3.<wbr/>2</p> 27506 </td> 27507 27508 <td class="entry_tags"> 27509 <ul class="entry_tags"> 27510 <li><a href="#tag_RAW">RAW</a></li> 27511 </ul> 27512 </td> 27513 27514 </tr> 27515 <tr class="entries_header"> 27516 <th class="th_details" colspan="6">Details</th> 27517 </tr> 27518 <tr class="entry_cont"> 27519 <td class="entry_details" colspan="6"> 27520 <p>This key contains a default tone curve that can be applied while 27521processing the image as a starting point for user adjustments.<wbr/> 27522The curve is specified as a list of value pairs in linear gamma.<wbr/> 27523The curve is interpolated using a cubic spline.<wbr/></p> 27524 </td> 27525 </tr> 27526 27527 27528 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27529 <!-- end of entry --> 27530 27531 27532 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 27533 <td class="entry_name 27534 " rowspan="5"> 27535 android.<wbr/>sensor.<wbr/>green<wbr/>Split 27536 </td> 27537 <td class="entry_type"> 27538 <span class="entry_type_name">float</span> 27539 27540 <span class="entry_type_visibility"> [public]</span> 27541 27542 27543 27544 27545 27546 27547 </td> <!-- entry_type --> 27548 27549 <td class="entry_description"> 27550 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 27551 </td> 27552 27553 <td class="entry_units"> 27554 </td> 27555 27556 <td class="entry_range"> 27557 <p>>= 0</p> 27558 </td> 27559 27560 <td class="entry_hal_version"> 27561 <p>3.<wbr/>2</p> 27562 </td> 27563 27564 <td class="entry_tags"> 27565 <ul class="entry_tags"> 27566 <li><a href="#tag_RAW">RAW</a></li> 27567 </ul> 27568 </td> 27569 27570 </tr> 27571 <tr class="entries_header"> 27572 <th class="th_details" colspan="6">Details</th> 27573 </tr> 27574 <tr class="entry_cont"> 27575 <td class="entry_details" colspan="6"> 27576 <p>This value is an estimate of the worst case split between the 27577Bayer green channels in the red and blue rows in the sensor color 27578filter array.<wbr/></p> 27579<p>The green split is calculated as follows:</p> 27580<ol> 27581<li>A 5x5 pixel (or larger) window W within the active sensor array is 27582chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 27583mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 27584chosen is implementation defined,<wbr/> and should be chosen to provide a 27585green split estimate that is both representative of the entire image 27586for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 27587<li>The arithmetic mean of the green channels from the red 27588rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 27589<li>The arithmetic mean of the green channels from the blue 27590rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 27591<li>The maximum ratio R of the two means is computed as follows: 27592<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 27593</ol> 27594<p>The ratio R is the green split divergence reported for this property,<wbr/> 27595which represents how much the green channels differ in the mosaic 27596pattern.<wbr/> This value is typically used to determine the treatment of 27597the green mosaic channels when demosaicing.<wbr/></p> 27598<p>The green split value can be roughly interpreted as follows:</p> 27599<ul> 27600<li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 27601<li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 27602correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 27603<li>R > 1.<wbr/>20 will require strong software correction to produce 27604a usuable image (>20% divergence).<wbr/></li> 27605</ul> 27606<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if 27607the camera device has RAW capability.<wbr/></p> 27608 </td> 27609 </tr> 27610 27611 <tr class="entries_header"> 27612 <th class="th_details" colspan="6">HAL Implementation Details</th> 27613 </tr> 27614 <tr class="entry_cont"> 27615 <td class="entry_details" colspan="6"> 27616 <p>The green split given may be a static value based on prior 27617characterization of the camera sensor using the green split 27618calculation method given here over a large,<wbr/> representative,<wbr/> sample 27619set of images.<wbr/> Other methods of calculation that produce equivalent 27620results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 27621 </td> 27622 </tr> 27623 27624 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27625 <!-- end of entry --> 27626 27627 27628 <tr class="entry" id="dynamic_android.sensor.testPatternData"> 27629 <td class="entry_name 27630 " rowspan="5"> 27631 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 27632 </td> 27633 <td class="entry_type"> 27634 <span class="entry_type_name">int32</span> 27635 <span class="entry_type_container">x</span> 27636 27637 <span class="entry_type_array"> 27638 4 27639 </span> 27640 <span class="entry_type_visibility"> [public]</span> 27641 27642 27643 27644 27645 27646 27647 </td> <!-- entry_type --> 27648 27649 <td class="entry_description"> 27650 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 27651when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 27652 </td> 27653 27654 <td class="entry_units"> 27655 </td> 27656 27657 <td class="entry_range"> 27658 </td> 27659 27660 <td class="entry_hal_version"> 27661 <p>3.<wbr/>2</p> 27662 </td> 27663 27664 <td class="entry_tags"> 27665 </td> 27666 27667 </tr> 27668 <tr class="entries_header"> 27669 <th class="th_details" colspan="6">Details</th> 27670 </tr> 27671 <tr class="entry_cont"> 27672 <td class="entry_details" colspan="6"> 27673 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 27674The camera device then uses the most significant X bits 27675that correspond to how many bits are in its Bayer raw sensor 27676output.<wbr/></p> 27677<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 2767810 most significant bits from each color channel.<wbr/></p> 27679 </td> 27680 </tr> 27681 27682 <tr class="entries_header"> 27683 <th class="th_details" colspan="6">HAL Implementation Details</th> 27684 </tr> 27685 <tr class="entry_cont"> 27686 <td class="entry_details" colspan="6"> 27687 27688 </td> 27689 </tr> 27690 27691 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27692 <!-- end of entry --> 27693 27694 27695 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 27696 <td class="entry_name 27697 " rowspan="5"> 27698 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 27699 </td> 27700 <td class="entry_type"> 27701 <span class="entry_type_name entry_type_name_enum">int32</span> 27702 27703 <span class="entry_type_visibility"> [public]</span> 27704 27705 27706 27707 27708 27709 <ul class="entry_type_enum"> 27710 <li> 27711 <span class="entry_type_enum_name">OFF (v3.2)</span> 27712 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 27713device returns captures from the image sensor.<wbr/></p> 27714<p>This is the default if the key is not set.<wbr/></p></span> 27715 </li> 27716 <li> 27717 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span> 27718 <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 27719respective color channel provided in 27720<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 27721<p>For example:</p> 27722<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] 27723</code></pre> 27724<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 27725<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] 27726</code></pre> 27727<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 27728are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 27729 </li> 27730 <li> 27731 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span> 27732 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 27733<p>The vertical bars (left-to-right) are as follows:</p> 27734<ul> 27735<li>100% white</li> 27736<li>yellow</li> 27737<li>cyan</li> 27738<li>green</li> 27739<li>magenta</li> 27740<li>red</li> 27741<li>blue</li> 27742<li>black</li> 27743</ul> 27744<p>In general the image would look like the following:</p> 27745<pre><code>W Y C G M R B K 27746W Y C G M R B K 27747W Y C G M R B K 27748W Y C G M R B K 27749W Y C G M R B K 27750.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 27751.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 27752.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 27753 27754(B = Blue,<wbr/> K = Black) 27755</code></pre> 27756<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 27757When this is not possible,<wbr/> the bar size should be rounded 27758down to the nearest integer and the pattern can repeat 27759on the right side.<wbr/></p> 27760<p>Each bar's height must always take up the full sensor 27761pixel array height.<wbr/></p> 27762<p>Each pixel in this test pattern must be set to either 277630% intensity or 100% intensity.<wbr/></p></span> 27764 </li> 27765 <li> 27766 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span> 27767 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 27768each bar should start at its specified color at the top,<wbr/> 27769and fade to gray at the bottom.<wbr/></p> 27770<p>Furthermore each bar is further subdivided into a left and 27771right half.<wbr/> The left half should have a smooth gradient,<wbr/> 27772and the right half should have a quantized gradient.<wbr/></p> 27773<p>In particular,<wbr/> the right half's should consist of blocks of the 27774same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 27775<p>The least significant bits in the quantized gradient should 27776be copied from the most significant bits of the smooth gradient.<wbr/></p> 27777<p>The height of each bar should always be a multiple of 128.<wbr/> 27778When this is not the case,<wbr/> the pattern should repeat at the bottom 27779of the image.<wbr/></p></span> 27780 </li> 27781 <li> 27782 <span class="entry_type_enum_name">PN9 (v3.2)</span> 27783 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 27784generated from a PN9 512-bit sequence (typically implemented 27785in hardware with a linear feedback shift register).<wbr/></p> 27786<p>The generator should be reset at the beginning of each frame,<wbr/> 27787and thus each subsequent raw frame with this test pattern should 27788be exactly the same as the last.<wbr/></p></span> 27789 </li> 27790 <li> 27791 <span class="entry_type_enum_name">BLACK (v3.6)</span> 27792 <span class="entry_type_enum_hidden">[test]</span> 27793 <span class="entry_type_enum_notes"><p>All pixel data is replaced by 0% intensity (black) values.<wbr/></p> 27794<p>This test pattern is identical to SOLID_<wbr/>COLOR with a value of <code>[0,<wbr/> 0,<wbr/> 0,<wbr/> 0]</code> for 27795<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/> It is recommended that devices implement full 27796SOLID_<wbr/>COLOR support instead,<wbr/> but BLACK can be used to provide minimal support for a 27797test pattern suitable for privacy use cases.<wbr/></p></span> 27798 </li> 27799 <li> 27800 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span> 27801 <span class="entry_type_enum_value">256</span> 27802 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 27803available only on this camera device are at least this numeric 27804value.<wbr/></p> 27805<p>All of the custom test patterns will be static 27806(that is the raw image must not vary from frame to frame).<wbr/></p></span> 27807 </li> 27808 </ul> 27809 27810 </td> <!-- entry_type --> 27811 27812 <td class="entry_description"> 27813 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 27814doing a real exposure from the camera.<wbr/></p> 27815 </td> 27816 27817 <td class="entry_units"> 27818 </td> 27819 27820 <td class="entry_range"> 27821 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 27822 </td> 27823 27824 <td class="entry_hal_version"> 27825 <p>3.<wbr/>2</p> 27826 </td> 27827 27828 <td class="entry_tags"> 27829 </td> 27830 27831 </tr> 27832 <tr class="entries_header"> 27833 <th class="th_details" colspan="6">Details</th> 27834 </tr> 27835 <tr class="entry_cont"> 27836 <td class="entry_details" colspan="6"> 27837 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 27838by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 27839work as normal.<wbr/></p> 27840<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 27841occur (and that the test pattern remain unmodified,<wbr/> since the flash 27842would not actually affect it).<wbr/></p> 27843<p>Defaults to OFF.<wbr/></p> 27844 </td> 27845 </tr> 27846 27847 <tr class="entries_header"> 27848 <th class="th_details" colspan="6">HAL Implementation Details</th> 27849 </tr> 27850 <tr class="entry_cont"> 27851 <td class="entry_details" colspan="6"> 27852 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 27853<p>The HAL may choose to substitute test patterns from the sensor 27854with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 27855indistinguishable to the ISP whether the data came from the 27856sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 27857<p>For privacy use cases,<wbr/> if the camera device:</p> 27858<ul> 27859<li>supports SOLID_<wbr/>COLOR or BLACK test patterns,<wbr/></li> 27860<li>is a logical multi-camera,<wbr/> and</li> 27861<li>lists testPatternMode as a physical request key,<wbr/></li> 27862</ul> 27863<p>Each physical camera must support the same SOLID_<wbr/>COLOR and/<wbr/>or BLACK test patterns 27864as the logical camera.<wbr/></p> 27865 </td> 27866 </tr> 27867 27868 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27869 <!-- end of entry --> 27870 27871 27872 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew"> 27873 <td class="entry_name 27874 " rowspan="5"> 27875 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew 27876 </td> 27877 <td class="entry_type"> 27878 <span class="entry_type_name">int64</span> 27879 27880 <span class="entry_type_visibility"> [public]</span> 27881 27882 27883 <span class="entry_type_hwlevel">[limited] </span> 27884 27885 27886 27887 27888 </td> <!-- entry_type --> 27889 27890 <td class="entry_description"> 27891 <p>Duration between the start of exposure for the first row of the image sensor,<wbr/> 27892and the start of exposure for one past the last row of the image sensor.<wbr/></p> 27893 </td> 27894 27895 <td class="entry_units"> 27896 Nanoseconds 27897 </td> 27898 27899 <td class="entry_range"> 27900 <p>>= 0 and < 27901<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p> 27902 </td> 27903 27904 <td class="entry_hal_version"> 27905 <p>3.<wbr/>2</p> 27906 </td> 27907 27908 <td class="entry_tags"> 27909 <ul class="entry_tags"> 27910 <li><a href="#tag_V1">V1</a></li> 27911 </ul> 27912 </td> 27913 27914 </tr> 27915 <tr class="entries_header"> 27916 <th class="th_details" colspan="6">Details</th> 27917 </tr> 27918 <tr class="entry_cont"> 27919 <td class="entry_details" colspan="6"> 27920 <p>This is the exposure time skew between the first and <code>(last+1)</code> row exposure start times.<wbr/> The 27921first row and the last row are the first and last rows inside of the 27922<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 27923<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent to the frame 27924readout time.<wbr/></p> 27925<p>If the image sensor is operating in a binned or cropped mode due to the current output 27926target resolutions,<wbr/> it's possible this skew is reported to be larger than the exposure 27927time,<wbr/> for example,<wbr/> since it is based on the full array even if a partial array is read 27928out.<wbr/> Be sure to scale the number to cover the section of the sensor actually being used 27929for the outputs you care about.<wbr/> So if your output covers N rows of the active array of 27930height H,<wbr/> scale this value by N/<wbr/>H to get the total skew for that viewport.<wbr/></p> 27931<p><em>Note:</em> Prior to Android 11,<wbr/> this field was described as measuring duration from 27932first to last row of the image sensor,<wbr/> which is not equal to the frame readout time for a 27933rolling shutter sensor.<wbr/> Implementations generally reported the latter value,<wbr/> so to resolve 27934the inconsistency,<wbr/> the description has been updated to range from (first,<wbr/> last+1) row 27935exposure start,<wbr/> instead.<wbr/></p> 27936 </td> 27937 </tr> 27938 27939 <tr class="entries_header"> 27940 <th class="th_details" colspan="6">HAL Implementation Details</th> 27941 </tr> 27942 <tr class="entry_cont"> 27943 <td class="entry_details" colspan="6"> 27944 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin 27945exposure at the same time.<wbr/></p> 27946 </td> 27947 </tr> 27948 27949 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27950 <!-- end of entry --> 27951 27952 27953 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel"> 27954 <td class="entry_name 27955 " rowspan="5"> 27956 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level 27957 </td> 27958 <td class="entry_type"> 27959 <span class="entry_type_name">float</span> 27960 <span class="entry_type_container">x</span> 27961 27962 <span class="entry_type_array"> 27963 4 27964 </span> 27965 <span class="entry_type_visibility"> [public]</span> 27966 27967 27968 27969 27970 <div class="entry_type_notes">2x2 raw count block</div> 27971 27972 27973 </td> <!-- entry_type --> 27974 27975 <td class="entry_description"> 27976 <p>A per-frame dynamic black level offset for each of the color filter 27977arrangement (CFA) mosaic channels.<wbr/></p> 27978 </td> 27979 27980 <td class="entry_units"> 27981 </td> 27982 27983 <td class="entry_range"> 27984 <p>>= 0 for each.<wbr/></p> 27985 </td> 27986 27987 <td class="entry_hal_version"> 27988 <p>3.<wbr/>2</p> 27989 </td> 27990 27991 <td class="entry_tags"> 27992 <ul class="entry_tags"> 27993 <li><a href="#tag_RAW">RAW</a></li> 27994 </ul> 27995 </td> 27996 27997 </tr> 27998 <tr class="entries_header"> 27999 <th class="th_details" colspan="6">Details</th> 28000 </tr> 28001 <tr class="entry_cont"> 28002 <td class="entry_details" colspan="6"> 28003 <p>Camera sensor black levels may vary dramatically for different 28004capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black 28005level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too 28006inaccurate to represent the actual value on a per-frame basis.<wbr/> The 28007camera device internal pipeline relies on reliable black level values 28008to process the raw images appropriately.<wbr/> To get the best image 28009quality,<wbr/> the camera device may choose to estimate the per frame black 28010level values either based on optically shielded black regions 28011(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p> 28012<p>This key reports the camera device estimated per-frame zero light 28013value for each of the CFA mosaic channels in the camera sensor.<wbr/> The 28014<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse 28015approximation of the actual black level values.<wbr/> This value is the 28016black level used in camera device internal image processing pipeline 28017and generally more accurate than the fixed black level values.<wbr/> 28018However,<wbr/> since they are estimated values by the camera device,<wbr/> they 28019may not be as accurate as the black level values calculated from the 28020optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p> 28021<p>The values are given in the same order as channels listed for the CFA 28022layout 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 28023nth value given corresponds to the black level offset for the nth 28024color channel listed in the CFA.<wbr/></p> 28025<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p> 28026<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 28027camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p> 28028 </td> 28029 </tr> 28030 28031 <tr class="entries_header"> 28032 <th class="th_details" colspan="6">HAL Implementation Details</th> 28033 </tr> 28034 <tr class="entry_cont"> 28035 <td class="entry_details" colspan="6"> 28036 <p>The values are given in row-column scan order,<wbr/> with the first value 28037corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 28038 </td> 28039 </tr> 28040 28041 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28042 <!-- end of entry --> 28043 28044 28045 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel"> 28046 <td class="entry_name 28047 " rowspan="5"> 28048 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level 28049 </td> 28050 <td class="entry_type"> 28051 <span class="entry_type_name">int32</span> 28052 28053 <span class="entry_type_visibility"> [public]</span> 28054 28055 28056 28057 28058 28059 28060 </td> <!-- entry_type --> 28061 28062 <td class="entry_description"> 28063 <p>Maximum raw value output by sensor for this frame.<wbr/></p> 28064 </td> 28065 28066 <td class="entry_units"> 28067 </td> 28068 28069 <td class="entry_range"> 28070 <p>>= 0</p> 28071 </td> 28072 28073 <td class="entry_hal_version"> 28074 <p>3.<wbr/>2</p> 28075 </td> 28076 28077 <td class="entry_tags"> 28078 <ul class="entry_tags"> 28079 <li><a href="#tag_RAW">RAW</a></li> 28080 </ul> 28081 </td> 28082 28083 </tr> 28084 <tr class="entries_header"> 28085 <th class="th_details" colspan="6">Details</th> 28086 </tr> 28087 <tr class="entry_cont"> 28088 <td class="entry_details" colspan="6"> 28089 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different 28090capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white 28091level will change accordingly.<wbr/> This key is similar to 28092<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device 28093estimated white level for each frame.<wbr/></p> 28094<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is 28095available or the camera device advertises this key via 28096<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 28097 </td> 28098 </tr> 28099 28100 <tr class="entries_header"> 28101 <th class="th_details" colspan="6">HAL Implementation Details</th> 28102 </tr> 28103 <tr class="entry_cont"> 28104 <td class="entry_details" colspan="6"> 28105 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 28106so the value for linear sensors should not be significantly lower 28107than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 28108 </td> 28109 </tr> 28110 28111 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28112 <!-- end of entry --> 28113 28114 28115 <tr class="entry" id="dynamic_android.sensor.pixelMode"> 28116 <td class="entry_name 28117 " rowspan="3"> 28118 android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode 28119 </td> 28120 <td class="entry_type"> 28121 <span class="entry_type_name entry_type_name_enum">byte</span> 28122 28123 <span class="entry_type_visibility"> [public]</span> 28124 28125 28126 28127 28128 28129 <ul class="entry_type_enum"> 28130 <li> 28131 <span class="entry_type_enum_name">DEFAULT (v3.6)</span> 28132 <span class="entry_type_enum_notes"><p>This is the default sensor pixel mode.<wbr/> This is the only sensor pixel mode 28133supported unless a camera device advertises 28134<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>.<wbr/></p></span> 28135 </li> 28136 <li> 28137 <span class="entry_type_enum_name">MAXIMUM_RESOLUTION (v3.6)</span> 28138 <span class="entry_type_enum_notes"><p>This sensor pixel mode is offered by devices with capability 28139<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>.<wbr/> 28140In this mode,<wbr/> sensors typically do not bin pixels,<wbr/> as a result can offer larger 28141image sizes.<wbr/></p></span> 28142 </li> 28143 </ul> 28144 28145 </td> <!-- entry_type --> 28146 28147 <td class="entry_description"> 28148 <p>Switches sensor pixel mode between maximum resolution mode and default mode.<wbr/></p> 28149 </td> 28150 28151 <td class="entry_units"> 28152 </td> 28153 28154 <td class="entry_range"> 28155 </td> 28156 28157 <td class="entry_hal_version"> 28158 <p>3.<wbr/>6</p> 28159 </td> 28160 28161 <td class="entry_tags"> 28162 </td> 28163 28164 </tr> 28165 <tr class="entries_header"> 28166 <th class="th_details" colspan="6">Details</th> 28167 </tr> 28168 <tr class="entry_cont"> 28169 <td class="entry_details" colspan="6"> 28170 <p>This key controls whether the camera sensor operates in 28171<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> 28172mode or not.<wbr/> By default,<wbr/> all camera devices operate in 28173<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/> 28174When operating in 28175<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 28176with <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> 28177capability would typically perform pixel binning in order to improve low light 28178performance,<wbr/> noise reduction etc.<wbr/> However,<wbr/> in 28179<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> 28180mode (supported only 28181by <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> 28182sensors),<wbr/> sensors typically operate in unbinned mode allowing for a larger image size.<wbr/> 28183The stream configurations supported in 28184<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> 28185mode are also different from those of 28186<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/> 28187They can be queried through 28188<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> with 28189<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/> 28190Unless reported by both 28191<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>s,<wbr/> the outputs from 28192<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code> and 28193<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code> 28194must not be mixed in the same CaptureRequest.<wbr/> In other words,<wbr/> these outputs are 28195exclusive to each other.<wbr/> 28196This key does not need to be set for reprocess requests.<wbr/></p> 28197 </td> 28198 </tr> 28199 28200 28201 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28202 <!-- end of entry --> 28203 28204 28205 <tr class="entry" id="dynamic_android.sensor.rawBinningFactorUsed"> 28206 <td class="entry_name 28207 " rowspan="3"> 28208 android.<wbr/>sensor.<wbr/>raw<wbr/>Binning<wbr/>Factor<wbr/>Used 28209 </td> 28210 <td class="entry_type"> 28211 <span class="entry_type_name entry_type_name_enum">byte</span> 28212 28213 <span class="entry_type_visibility"> [public as boolean]</span> 28214 28215 28216 28217 28218 28219 <ul class="entry_type_enum"> 28220 <li> 28221 <span class="entry_type_enum_name">TRUE (v3.6)</span> 28222 <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 28223bayer pattern.<wbr/></p></span> 28224 </li> 28225 <li> 28226 <span class="entry_type_enum_name">FALSE (v3.6)</span> 28227 <span class="entry_type_enum_notes"><p>The <code>RAW</code> targets have a regular bayer pattern in this capture.<wbr/></p></span> 28228 </li> 28229 </ul> 28230 28231 </td> <!-- entry_type --> 28232 28233 <td class="entry_description"> 28234 <p>Whether <code>RAW</code> images requested have their bayer pattern as described by 28235<a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a>.<wbr/></p> 28236 </td> 28237 28238 <td class="entry_units"> 28239 </td> 28240 28241 <td class="entry_range"> 28242 </td> 28243 28244 <td class="entry_hal_version"> 28245 <p>3.<wbr/>6</p> 28246 </td> 28247 28248 <td class="entry_tags"> 28249 </td> 28250 28251 </tr> 28252 <tr class="entries_header"> 28253 <th class="th_details" colspan="6">Details</th> 28254 </tr> 28255 <tr class="entry_cont"> 28256 <td class="entry_details" colspan="6"> 28257 <p>This key will only be present in devices advertisting the 28258<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> 28259capability which also advertise <code>REMOSAIC_<wbr/>REPROCESSING</code> capability.<wbr/> On all other devices 28260RAW targets will have a regular bayer pattern.<wbr/></p> 28261 </td> 28262 </tr> 28263 28264 28265 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28266 <!-- end of entry --> 28267 28268 28269 28270 <!-- end of kind --> 28271 </tbody> 28272 28273 <!-- end of section --> 28274 <tr><td colspan="7" id="section_shading" class="section">shading</td></tr> 28275 28276 28277 <tr><td colspan="7" class="kind">controls</td></tr> 28278 28279 <thead class="entries_header"> 28280 <tr> 28281 <th class="th_name">Property Name</th> 28282 <th class="th_type">Type</th> 28283 <th class="th_description">Description</th> 28284 <th class="th_units">Units</th> 28285 <th class="th_range">Range</th> 28286 <th class="th_hal_version">Initial HIDL HAL version</th> 28287 <th class="th_tags">Tags</th> 28288 </tr> 28289 </thead> 28290 28291 <tbody> 28292 28293 28294 28295 28296 28297 28298 28299 28300 28301 28302 <tr class="entry" id="controls_android.shading.mode"> 28303 <td class="entry_name 28304 " rowspan="3"> 28305 android.<wbr/>shading.<wbr/>mode 28306 </td> 28307 <td class="entry_type"> 28308 <span class="entry_type_name entry_type_name_enum">byte</span> 28309 28310 <span class="entry_type_visibility"> [public]</span> 28311 28312 28313 <span class="entry_type_hwlevel">[full] </span> 28314 28315 28316 28317 <ul class="entry_type_enum"> 28318 <li> 28319 <span class="entry_type_enum_name">OFF (v3.2)</span> 28320 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 28321 </li> 28322 <li> 28323 <span class="entry_type_enum_name">FAST (v3.2)</span> 28324 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 28325frame rate relative to sensor raw output</p></span> 28326 </li> 28327 <li> 28328 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 28329 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 28330cost of possibly reduced frame rate.<wbr/></p></span> 28331 </li> 28332 </ul> 28333 28334 </td> <!-- entry_type --> 28335 28336 <td class="entry_description"> 28337 <p>Quality of lens shading correction applied 28338to the image data.<wbr/></p> 28339 </td> 28340 28341 <td class="entry_units"> 28342 </td> 28343 28344 <td class="entry_range"> 28345 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 28346 </td> 28347 28348 <td class="entry_hal_version"> 28349 <p>3.<wbr/>2</p> 28350 </td> 28351 28352 <td class="entry_tags"> 28353 </td> 28354 28355 </tr> 28356 <tr class="entries_header"> 28357 <th class="th_details" colspan="6">Details</th> 28358 </tr> 28359 <tr class="entry_cont"> 28360 <td class="entry_details" colspan="6"> 28361 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 28362camera device,<wbr/> and an identity lens shading map data will be provided 28363if <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 28364shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 28365the 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 28366map shown below:</p> 28367<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/> 28368 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/> 28369 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/> 28370 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/> 28371 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/> 28372 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 ] 28373</code></pre> 28374<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 28375device.<wbr/> Applications can request lens shading map data by setting 28376<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 28377shading 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 28378data will be the one applied by the camera device for this capture request.<wbr/></p> 28379<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 28380the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 28381AWB 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> 28382OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 28383to be converged before using the returned shading map data.<wbr/></p> 28384 </td> 28385 </tr> 28386 28387 28388 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28389 <!-- end of entry --> 28390 28391 28392 <tr class="entry" id="controls_android.shading.strength"> 28393 <td class="entry_name 28394 " rowspan="1"> 28395 android.<wbr/>shading.<wbr/>strength 28396 </td> 28397 <td class="entry_type"> 28398 <span class="entry_type_name">byte</span> 28399 28400 <span class="entry_type_visibility"> [system]</span> 28401 28402 28403 28404 28405 28406 28407 </td> <!-- entry_type --> 28408 28409 <td class="entry_description"> 28410 <p>Control the amount of shading correction 28411applied to the images</p> 28412 </td> 28413 28414 <td class="entry_units"> 28415 unitless: 1-10; 10 is full shading 28416 compensation 28417 </td> 28418 28419 <td class="entry_range"> 28420 </td> 28421 28422 <td class="entry_hal_version"> 28423 <p>3.<wbr/>2</p> 28424 </td> 28425 28426 <td class="entry_tags"> 28427 <ul class="entry_tags"> 28428 <li><a href="#tag_FUTURE">FUTURE</a></li> 28429 </ul> 28430 </td> 28431 28432 </tr> 28433 28434 28435 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28436 <!-- end of entry --> 28437 28438 28439 28440 <!-- end of kind --> 28441 </tbody> 28442 <tr><td colspan="7" class="kind">dynamic</td></tr> 28443 28444 <thead class="entries_header"> 28445 <tr> 28446 <th class="th_name">Property Name</th> 28447 <th class="th_type">Type</th> 28448 <th class="th_description">Description</th> 28449 <th class="th_units">Units</th> 28450 <th class="th_range">Range</th> 28451 <th class="th_hal_version">Initial HIDL HAL version</th> 28452 <th class="th_tags">Tags</th> 28453 </tr> 28454 </thead> 28455 28456 <tbody> 28457 28458 28459 28460 28461 28462 28463 28464 28465 28466 28467 <tr class="entry" id="dynamic_android.shading.mode"> 28468 <td class="entry_name 28469 " rowspan="3"> 28470 android.<wbr/>shading.<wbr/>mode 28471 </td> 28472 <td class="entry_type"> 28473 <span class="entry_type_name entry_type_name_enum">byte</span> 28474 28475 <span class="entry_type_visibility"> [public]</span> 28476 28477 28478 <span class="entry_type_hwlevel">[full] </span> 28479 28480 28481 28482 <ul class="entry_type_enum"> 28483 <li> 28484 <span class="entry_type_enum_name">OFF (v3.2)</span> 28485 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 28486 </li> 28487 <li> 28488 <span class="entry_type_enum_name">FAST (v3.2)</span> 28489 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 28490frame rate relative to sensor raw output</p></span> 28491 </li> 28492 <li> 28493 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 28494 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 28495cost of possibly reduced frame rate.<wbr/></p></span> 28496 </li> 28497 </ul> 28498 28499 </td> <!-- entry_type --> 28500 28501 <td class="entry_description"> 28502 <p>Quality of lens shading correction applied 28503to the image data.<wbr/></p> 28504 </td> 28505 28506 <td class="entry_units"> 28507 </td> 28508 28509 <td class="entry_range"> 28510 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 28511 </td> 28512 28513 <td class="entry_hal_version"> 28514 <p>3.<wbr/>2</p> 28515 </td> 28516 28517 <td class="entry_tags"> 28518 </td> 28519 28520 </tr> 28521 <tr class="entries_header"> 28522 <th class="th_details" colspan="6">Details</th> 28523 </tr> 28524 <tr class="entry_cont"> 28525 <td class="entry_details" colspan="6"> 28526 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 28527camera device,<wbr/> and an identity lens shading map data will be provided 28528if <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 28529shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 28530the 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 28531map shown below:</p> 28532<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/> 28533 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/> 28534 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/> 28535 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/> 28536 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/> 28537 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 ] 28538</code></pre> 28539<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 28540device.<wbr/> Applications can request lens shading map data by setting 28541<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 28542shading 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 28543data will be the one applied by the camera device for this capture request.<wbr/></p> 28544<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 28545the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 28546AWB 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> 28547OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 28548to be converged before using the returned shading map data.<wbr/></p> 28549 </td> 28550 </tr> 28551 28552 28553 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28554 <!-- end of entry --> 28555 28556 28557 28558 <!-- end of kind --> 28559 </tbody> 28560 <tr><td colspan="7" class="kind">static</td></tr> 28561 28562 <thead class="entries_header"> 28563 <tr> 28564 <th class="th_name">Property Name</th> 28565 <th class="th_type">Type</th> 28566 <th class="th_description">Description</th> 28567 <th class="th_units">Units</th> 28568 <th class="th_range">Range</th> 28569 <th class="th_hal_version">Initial HIDL HAL version</th> 28570 <th class="th_tags">Tags</th> 28571 </tr> 28572 </thead> 28573 28574 <tbody> 28575 28576 28577 28578 28579 28580 28581 28582 28583 28584 28585 <tr class="entry" id="static_android.shading.availableModes"> 28586 <td class="entry_name 28587 " rowspan="5"> 28588 android.<wbr/>shading.<wbr/>available<wbr/>Modes 28589 </td> 28590 <td class="entry_type"> 28591 <span class="entry_type_name">byte</span> 28592 <span class="entry_type_container">x</span> 28593 28594 <span class="entry_type_array"> 28595 n 28596 </span> 28597 <span class="entry_type_visibility"> [public as enumList]</span> 28598 28599 28600 <span class="entry_type_hwlevel">[legacy] </span> 28601 28602 28603 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div> 28604 28605 28606 </td> <!-- entry_type --> 28607 28608 <td class="entry_description"> 28609 <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> 28610 </td> 28611 28612 <td class="entry_units"> 28613 </td> 28614 28615 <td class="entry_range"> 28616 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p> 28617 </td> 28618 28619 <td class="entry_hal_version"> 28620 <p>3.<wbr/>2</p> 28621 </td> 28622 28623 <td class="entry_tags"> 28624 </td> 28625 28626 </tr> 28627 <tr class="entries_header"> 28628 <th class="th_details" colspan="6">Details</th> 28629 </tr> 28630 <tr class="entry_cont"> 28631 <td class="entry_details" colspan="6"> 28632 <p>This list contains lens shading modes that can be set for the camera device.<wbr/> 28633Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always 28634list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/> 28635LEGACY devices will always only support FAST mode.<wbr/></p> 28636 </td> 28637 </tr> 28638 28639 <tr class="entries_header"> 28640 <th class="th_details" colspan="6">HAL Implementation Details</th> 28641 </tr> 28642 <tr class="entry_cont"> 28643 <td class="entry_details" colspan="6"> 28644 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is 28645available on the camera device,<wbr/> but the underlying implementation can be the same for 28646both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not 28647slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 28648 </td> 28649 </tr> 28650 28651 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28652 <!-- end of entry --> 28653 28654 28655 28656 <!-- end of kind --> 28657 </tbody> 28658 28659 <!-- end of section --> 28660 <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr> 28661 28662 28663 <tr><td colspan="7" class="kind">controls</td></tr> 28664 28665 <thead class="entries_header"> 28666 <tr> 28667 <th class="th_name">Property Name</th> 28668 <th class="th_type">Type</th> 28669 <th class="th_description">Description</th> 28670 <th class="th_units">Units</th> 28671 <th class="th_range">Range</th> 28672 <th class="th_hal_version">Initial HIDL HAL version</th> 28673 <th class="th_tags">Tags</th> 28674 </tr> 28675 </thead> 28676 28677 <tbody> 28678 28679 28680 28681 28682 28683 28684 28685 28686 28687 28688 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 28689 <td class="entry_name 28690 " rowspan="5"> 28691 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 28692 </td> 28693 <td class="entry_type"> 28694 <span class="entry_type_name entry_type_name_enum">byte</span> 28695 28696 <span class="entry_type_visibility"> [public]</span> 28697 28698 28699 <span class="entry_type_hwlevel">[legacy] </span> 28700 28701 28702 28703 <ul class="entry_type_enum"> 28704 <li> 28705 <span class="entry_type_enum_name">OFF (v3.2)</span> 28706 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 28707results.<wbr/></p></span> 28708 </li> 28709 <li> 28710 <span class="entry_type_enum_name">SIMPLE (v3.2)</span> 28711 <span class="entry_type_enum_optional">[optional]</span> 28712 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 28713 </li> 28714 <li> 28715 <span class="entry_type_enum_name">FULL (v3.2)</span> 28716 <span class="entry_type_enum_optional">[optional]</span> 28717 <span class="entry_type_enum_notes"><p>Return all face 28718metadata.<wbr/></p> 28719<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 28720 </li> 28721 </ul> 28722 28723 </td> <!-- entry_type --> 28724 28725 <td class="entry_description"> 28726 <p>Operating mode for the face detector 28727unit.<wbr/></p> 28728 </td> 28729 28730 <td class="entry_units"> 28731 </td> 28732 28733 <td class="entry_range"> 28734 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 28735 </td> 28736 28737 <td class="entry_hal_version"> 28738 <p>3.<wbr/>2</p> 28739 </td> 28740 28741 <td class="entry_tags"> 28742 <ul class="entry_tags"> 28743 <li><a href="#tag_BC">BC</a></li> 28744 </ul> 28745 </td> 28746 28747 </tr> 28748 <tr class="entries_header"> 28749 <th class="th_details" colspan="6">Details</th> 28750 </tr> 28751 <tr class="entry_cont"> 28752 <td class="entry_details" colspan="6"> 28753 <p>Whether face detection is enabled,<wbr/> and whether it 28754should output just the basic fields or the full set of 28755fields.<wbr/></p> 28756 </td> 28757 </tr> 28758 28759 <tr class="entries_header"> 28760 <th class="th_details" colspan="6">HAL Implementation Details</th> 28761 </tr> 28762 <tr class="entry_cont"> 28763 <td class="entry_details" colspan="6"> 28764 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 28765<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 28766FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 28767<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 28768 </td> 28769 </tr> 28770 28771 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28772 <!-- end of entry --> 28773 28774 28775 <tr class="entry" id="controls_android.statistics.histogramMode"> 28776 <td class="entry_name 28777 " rowspan="1"> 28778 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 28779 </td> 28780 <td class="entry_type"> 28781 <span class="entry_type_name entry_type_name_enum">byte</span> 28782 28783 <span class="entry_type_visibility"> [system as boolean]</span> 28784 28785 28786 28787 28788 28789 <ul class="entry_type_enum"> 28790 <li> 28791 <span class="entry_type_enum_name">OFF (v3.2)</span> 28792 </li> 28793 <li> 28794 <span class="entry_type_enum_name">ON (v3.2)</span> 28795 </li> 28796 </ul> 28797 28798 </td> <!-- entry_type --> 28799 28800 <td class="entry_description"> 28801 <p>Operating mode for histogram 28802generation</p> 28803 </td> 28804 28805 <td class="entry_units"> 28806 </td> 28807 28808 <td class="entry_range"> 28809 </td> 28810 28811 <td class="entry_hal_version"> 28812 <p>3.<wbr/>2</p> 28813 </td> 28814 28815 <td class="entry_tags"> 28816 <ul class="entry_tags"> 28817 <li><a href="#tag_FUTURE">FUTURE</a></li> 28818 </ul> 28819 </td> 28820 28821 </tr> 28822 28823 28824 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28825 <!-- end of entry --> 28826 28827 28828 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 28829 <td class="entry_name 28830 " rowspan="1"> 28831 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 28832 </td> 28833 <td class="entry_type"> 28834 <span class="entry_type_name entry_type_name_enum">byte</span> 28835 28836 <span class="entry_type_visibility"> [system as boolean]</span> 28837 28838 28839 28840 28841 28842 <ul class="entry_type_enum"> 28843 <li> 28844 <span class="entry_type_enum_name">OFF (v3.2)</span> 28845 </li> 28846 <li> 28847 <span class="entry_type_enum_name">ON (v3.2)</span> 28848 </li> 28849 </ul> 28850 28851 </td> <!-- entry_type --> 28852 28853 <td class="entry_description"> 28854 <p>Operating mode for sharpness map 28855generation</p> 28856 </td> 28857 28858 <td class="entry_units"> 28859 </td> 28860 28861 <td class="entry_range"> 28862 </td> 28863 28864 <td class="entry_hal_version"> 28865 <p>3.<wbr/>2</p> 28866 </td> 28867 28868 <td class="entry_tags"> 28869 <ul class="entry_tags"> 28870 <li><a href="#tag_FUTURE">FUTURE</a></li> 28871 </ul> 28872 </td> 28873 28874 </tr> 28875 28876 28877 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28878 <!-- end of entry --> 28879 28880 28881 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 28882 <td class="entry_name 28883 " rowspan="3"> 28884 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 28885 </td> 28886 <td class="entry_type"> 28887 <span class="entry_type_name entry_type_name_enum">byte</span> 28888 28889 <span class="entry_type_visibility"> [public as boolean]</span> 28890 28891 28892 28893 28894 28895 <ul class="entry_type_enum"> 28896 <li> 28897 <span class="entry_type_enum_name">OFF (v3.2)</span> 28898 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 28899 </li> 28900 <li> 28901 <span class="entry_type_enum_name">ON (v3.2)</span> 28902 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 28903 </li> 28904 </ul> 28905 28906 </td> <!-- entry_type --> 28907 28908 <td class="entry_description"> 28909 <p>Operating mode for hot pixel map generation.<wbr/></p> 28910 </td> 28911 28912 <td class="entry_units"> 28913 </td> 28914 28915 <td class="entry_range"> 28916 <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> 28917 </td> 28918 28919 <td class="entry_hal_version"> 28920 <p>3.<wbr/>2</p> 28921 </td> 28922 28923 <td class="entry_tags"> 28924 <ul class="entry_tags"> 28925 <li><a href="#tag_V1">V1</a></li> 28926 <li><a href="#tag_RAW">RAW</a></li> 28927 </ul> 28928 </td> 28929 28930 </tr> 28931 <tr class="entries_header"> 28932 <th class="th_details" colspan="6">Details</th> 28933 </tr> 28934 <tr class="entry_cont"> 28935 <td class="entry_details" colspan="6"> 28936 <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/> 28937If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 28938 </td> 28939 </tr> 28940 28941 28942 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28943 <!-- end of entry --> 28944 28945 28946 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 28947 <td class="entry_name 28948 " rowspan="3"> 28949 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 28950 </td> 28951 <td class="entry_type"> 28952 <span class="entry_type_name entry_type_name_enum">byte</span> 28953 28954 <span class="entry_type_visibility"> [public]</span> 28955 28956 28957 <span class="entry_type_hwlevel">[full] </span> 28958 28959 28960 28961 <ul class="entry_type_enum"> 28962 <li> 28963 <span class="entry_type_enum_name">OFF (v3.2)</span> 28964 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 28965 </li> 28966 <li> 28967 <span class="entry_type_enum_name">ON (v3.2)</span> 28968 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 28969 </li> 28970 </ul> 28971 28972 </td> <!-- entry_type --> 28973 28974 <td class="entry_description"> 28975 <p>Whether the camera device will output the lens 28976shading map in output result metadata.<wbr/></p> 28977 </td> 28978 28979 <td class="entry_units"> 28980 </td> 28981 28982 <td class="entry_range"> 28983 <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> 28984 </td> 28985 28986 <td class="entry_hal_version"> 28987 <p>3.<wbr/>2</p> 28988 </td> 28989 28990 <td class="entry_tags"> 28991 <ul class="entry_tags"> 28992 <li><a href="#tag_RAW">RAW</a></li> 28993 </ul> 28994 </td> 28995 28996 </tr> 28997 <tr class="entries_header"> 28998 <th class="th_details" colspan="6">Details</th> 28999 </tr> 29000 <tr class="entry_cont"> 29001 <td class="entry_details" colspan="6"> 29002 <p>When set to ON,<wbr/> 29003<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 29004the output result metadata.<wbr/></p> 29005<p>ON is always supported on devices with the RAW capability.<wbr/></p> 29006 </td> 29007 </tr> 29008 29009 29010 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29011 <!-- end of entry --> 29012 29013 29014 <tr class="entry" id="controls_android.statistics.oisDataMode"> 29015 <td class="entry_name 29016 " rowspan="3"> 29017 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode 29018 </td> 29019 <td class="entry_type"> 29020 <span class="entry_type_name entry_type_name_enum">byte</span> 29021 29022 <span class="entry_type_visibility"> [public]</span> 29023 29024 29025 29026 29027 29028 <ul class="entry_type_enum"> 29029 <li> 29030 <span class="entry_type_enum_name">OFF (v3.3)</span> 29031 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span> 29032 </li> 29033 <li> 29034 <span class="entry_type_enum_name">ON (v3.3)</span> 29035 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span> 29036 </li> 29037 </ul> 29038 29039 </td> <!-- entry_type --> 29040 29041 <td class="entry_description"> 29042 <p>A control for selecting whether optical stabilization (OIS) position 29043information is included in output result metadata.<wbr/></p> 29044 </td> 29045 29046 <td class="entry_units"> 29047 </td> 29048 29049 <td class="entry_range"> 29050 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p> 29051 </td> 29052 29053 <td class="entry_hal_version"> 29054 <p>3.<wbr/>3</p> 29055 </td> 29056 29057 <td class="entry_tags"> 29058 </td> 29059 29060 </tr> 29061 <tr class="entries_header"> 29062 <th class="th_details" colspan="6">Details</th> 29063 </tr> 29064 <tr class="entry_cont"> 29065 <td class="entry_details" colspan="6"> 29066 <p>Since optical image stabilization generally involves motion much faster than the duration 29067of individual image exposure,<wbr/> multiple OIS samples can be included for a single capture 29068result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating 29069at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined 29070with the rolling shutter skew to account for lens motion during image exposure in 29071post-processing algorithms.<wbr/></p> 29072 </td> 29073 </tr> 29074 29075 29076 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29077 <!-- end of entry --> 29078 29079 29080 29081 <!-- end of kind --> 29082 </tbody> 29083 <tr><td colspan="7" class="kind">static</td></tr> 29084 29085 <thead class="entries_header"> 29086 <tr> 29087 <th class="th_name">Property Name</th> 29088 <th class="th_type">Type</th> 29089 <th class="th_description">Description</th> 29090 <th class="th_units">Units</th> 29091 <th class="th_range">Range</th> 29092 <th class="th_hal_version">Initial HIDL HAL version</th> 29093 <th class="th_tags">Tags</th> 29094 </tr> 29095 </thead> 29096 29097 <tbody> 29098 29099 29100 29101 29102 29103 29104 29105 29106 29107 29108 29109 29110 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 29111 <td class="entry_name 29112 " rowspan="3"> 29113 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 29114 </td> 29115 <td class="entry_type"> 29116 <span class="entry_type_name">byte</span> 29117 <span class="entry_type_container">x</span> 29118 29119 <span class="entry_type_array"> 29120 n 29121 </span> 29122 <span class="entry_type_visibility"> [public as enumList]</span> 29123 29124 29125 <span class="entry_type_hwlevel">[legacy] </span> 29126 29127 29128 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 29129 29130 29131 </td> <!-- entry_type --> 29132 29133 <td class="entry_description"> 29134 <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 29135supported by this camera device.<wbr/></p> 29136 </td> 29137 29138 <td class="entry_units"> 29139 </td> 29140 29141 <td class="entry_range"> 29142 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p> 29143 </td> 29144 29145 <td class="entry_hal_version"> 29146 <p>3.<wbr/>2</p> 29147 </td> 29148 29149 <td class="entry_tags"> 29150 </td> 29151 29152 </tr> 29153 <tr class="entries_header"> 29154 <th class="th_details" colspan="6">Details</th> 29155 </tr> 29156 <tr class="entry_cont"> 29157 <td class="entry_details" colspan="6"> 29158 <p>OFF is always supported.<wbr/></p> 29159 </td> 29160 </tr> 29161 29162 29163 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29164 <!-- end of entry --> 29165 29166 29167 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 29168 <td class="entry_name 29169 " rowspan="1"> 29170 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 29171 </td> 29172 <td class="entry_type"> 29173 <span class="entry_type_name">int32</span> 29174 29175 <span class="entry_type_visibility"> [system]</span> 29176 29177 29178 29179 29180 29181 29182 </td> <!-- entry_type --> 29183 29184 <td class="entry_description"> 29185 <p>Number of histogram buckets 29186supported</p> 29187 </td> 29188 29189 <td class="entry_units"> 29190 </td> 29191 29192 <td class="entry_range"> 29193 <p>>= 64</p> 29194 </td> 29195 29196 <td class="entry_hal_version"> 29197 <p>3.<wbr/>2</p> 29198 </td> 29199 29200 <td class="entry_tags"> 29201 <ul class="entry_tags"> 29202 <li><a href="#tag_FUTURE">FUTURE</a></li> 29203 </ul> 29204 </td> 29205 29206 </tr> 29207 29208 29209 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29210 <!-- end of entry --> 29211 29212 29213 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 29214 <td class="entry_name 29215 " rowspan="1"> 29216 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 29217 </td> 29218 <td class="entry_type"> 29219 <span class="entry_type_name">int32</span> 29220 29221 <span class="entry_type_visibility"> [public]</span> 29222 29223 29224 <span class="entry_type_hwlevel">[legacy] </span> 29225 29226 29227 29228 29229 </td> <!-- entry_type --> 29230 29231 <td class="entry_description"> 29232 <p>The maximum number of simultaneously detectable 29233faces.<wbr/></p> 29234 </td> 29235 29236 <td class="entry_units"> 29237 </td> 29238 29239 <td class="entry_range"> 29240 <p>0 for cameras without available face detection; otherwise: 29241<code>>=4</code> for LIMITED or FULL hwlevel devices or 29242<code>>0</code> for LEGACY devices.<wbr/></p> 29243 </td> 29244 29245 <td class="entry_hal_version"> 29246 <p>3.<wbr/>2</p> 29247 </td> 29248 29249 <td class="entry_tags"> 29250 <ul class="entry_tags"> 29251 <li><a href="#tag_BC">BC</a></li> 29252 </ul> 29253 </td> 29254 29255 </tr> 29256 29257 29258 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29259 <!-- end of entry --> 29260 29261 29262 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 29263 <td class="entry_name 29264 " rowspan="1"> 29265 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 29266 </td> 29267 <td class="entry_type"> 29268 <span class="entry_type_name">int32</span> 29269 29270 <span class="entry_type_visibility"> [system]</span> 29271 29272 29273 29274 29275 29276 29277 </td> <!-- entry_type --> 29278 29279 <td class="entry_description"> 29280 <p>Maximum value possible for a histogram 29281bucket</p> 29282 </td> 29283 29284 <td class="entry_units"> 29285 </td> 29286 29287 <td class="entry_range"> 29288 </td> 29289 29290 <td class="entry_hal_version"> 29291 <p>3.<wbr/>2</p> 29292 </td> 29293 29294 <td class="entry_tags"> 29295 <ul class="entry_tags"> 29296 <li><a href="#tag_FUTURE">FUTURE</a></li> 29297 </ul> 29298 </td> 29299 29300 </tr> 29301 29302 29303 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29304 <!-- end of entry --> 29305 29306 29307 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 29308 <td class="entry_name 29309 " rowspan="1"> 29310 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 29311 </td> 29312 <td class="entry_type"> 29313 <span class="entry_type_name">int32</span> 29314 29315 <span class="entry_type_visibility"> [system]</span> 29316 29317 29318 29319 29320 29321 29322 </td> <!-- entry_type --> 29323 29324 <td class="entry_description"> 29325 <p>Maximum value possible for a sharpness map 29326region.<wbr/></p> 29327 </td> 29328 29329 <td class="entry_units"> 29330 </td> 29331 29332 <td class="entry_range"> 29333 </td> 29334 29335 <td class="entry_hal_version"> 29336 <p>3.<wbr/>2</p> 29337 </td> 29338 29339 <td class="entry_tags"> 29340 <ul class="entry_tags"> 29341 <li><a href="#tag_FUTURE">FUTURE</a></li> 29342 </ul> 29343 </td> 29344 29345 </tr> 29346 29347 29348 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29349 <!-- end of entry --> 29350 29351 29352 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 29353 <td class="entry_name 29354 " rowspan="1"> 29355 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 29356 </td> 29357 <td class="entry_type"> 29358 <span class="entry_type_name">int32</span> 29359 <span class="entry_type_container">x</span> 29360 29361 <span class="entry_type_array"> 29362 2 29363 </span> 29364 <span class="entry_type_visibility"> [system as size]</span> 29365 29366 29367 29368 29369 <div class="entry_type_notes">width x height</div> 29370 29371 29372 </td> <!-- entry_type --> 29373 29374 <td class="entry_description"> 29375 <p>Dimensions of the sharpness 29376map</p> 29377 </td> 29378 29379 <td class="entry_units"> 29380 </td> 29381 29382 <td class="entry_range"> 29383 <p>Must be at least 32 x 32</p> 29384 </td> 29385 29386 <td class="entry_hal_version"> 29387 <p>3.<wbr/>2</p> 29388 </td> 29389 29390 <td class="entry_tags"> 29391 <ul class="entry_tags"> 29392 <li><a href="#tag_FUTURE">FUTURE</a></li> 29393 </ul> 29394 </td> 29395 29396 </tr> 29397 29398 29399 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29400 <!-- end of entry --> 29401 29402 29403 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 29404 <td class="entry_name 29405 " rowspan="3"> 29406 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 29407 </td> 29408 <td class="entry_type"> 29409 <span class="entry_type_name">byte</span> 29410 <span class="entry_type_container">x</span> 29411 29412 <span class="entry_type_array"> 29413 n 29414 </span> 29415 <span class="entry_type_visibility"> [public as boolean]</span> 29416 29417 29418 29419 29420 <div class="entry_type_notes">list of enums</div> 29421 29422 29423 </td> <!-- entry_type --> 29424 29425 <td class="entry_description"> 29426 <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 29427supported by this camera device.<wbr/></p> 29428 </td> 29429 29430 <td class="entry_units"> 29431 </td> 29432 29433 <td class="entry_range"> 29434 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p> 29435 </td> 29436 29437 <td class="entry_hal_version"> 29438 <p>3.<wbr/>2</p> 29439 </td> 29440 29441 <td class="entry_tags"> 29442 <ul class="entry_tags"> 29443 <li><a href="#tag_V1">V1</a></li> 29444 <li><a href="#tag_RAW">RAW</a></li> 29445 </ul> 29446 </td> 29447 29448 </tr> 29449 <tr class="entries_header"> 29450 <th class="th_details" colspan="6">Details</th> 29451 </tr> 29452 <tr class="entry_cont"> 29453 <td class="entry_details" colspan="6"> 29454 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only 29455<code>false</code>.<wbr/></p> 29456<p>ON is always supported on devices with the RAW capability.<wbr/></p> 29457 </td> 29458 </tr> 29459 29460 29461 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29462 <!-- end of entry --> 29463 29464 29465 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes"> 29466 <td class="entry_name 29467 " rowspan="3"> 29468 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes 29469 </td> 29470 <td class="entry_type"> 29471 <span class="entry_type_name">byte</span> 29472 <span class="entry_type_container">x</span> 29473 29474 <span class="entry_type_array"> 29475 n 29476 </span> 29477 <span class="entry_type_visibility"> [public as enumList]</span> 29478 29479 29480 29481 29482 <div class="entry_type_notes">list of enums</div> 29483 29484 29485 </td> <!-- entry_type --> 29486 29487 <td class="entry_description"> 29488 <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 29489are supported by this camera device.<wbr/></p> 29490 </td> 29491 29492 <td class="entry_units"> 29493 </td> 29494 29495 <td class="entry_range"> 29496 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p> 29497 </td> 29498 29499 <td class="entry_hal_version"> 29500 <p>3.<wbr/>2</p> 29501 </td> 29502 29503 <td class="entry_tags"> 29504 </td> 29505 29506 </tr> 29507 <tr class="entries_header"> 29508 <th class="th_details" colspan="6">Details</th> 29509 </tr> 29510 <tr class="entry_cont"> 29511 <td class="entry_details" colspan="6"> 29512 <p>If no lens shading map output is available for this camera device,<wbr/> this key will 29513contain only OFF.<wbr/></p> 29514<p>ON is always supported on devices with the RAW capability.<wbr/> 29515LEGACY mode devices will always only support OFF.<wbr/></p> 29516 </td> 29517 </tr> 29518 29519 29520 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29521 <!-- end of entry --> 29522 29523 29524 <tr class="entry" id="static_android.statistics.info.availableOisDataModes"> 29525 <td class="entry_name 29526 " rowspan="3"> 29527 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes 29528 </td> 29529 <td class="entry_type"> 29530 <span class="entry_type_name">byte</span> 29531 <span class="entry_type_container">x</span> 29532 29533 <span class="entry_type_array"> 29534 n 29535 </span> 29536 <span class="entry_type_visibility"> [public as enumList]</span> 29537 29538 29539 29540 29541 <div class="entry_type_notes">list of enums</div> 29542 29543 29544 </td> <!-- entry_type --> 29545 29546 <td class="entry_description"> 29547 <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 29548are supported by this camera device.<wbr/></p> 29549 </td> 29550 29551 <td class="entry_units"> 29552 </td> 29553 29554 <td class="entry_range"> 29555 <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p> 29556 </td> 29557 29558 <td class="entry_hal_version"> 29559 <p>3.<wbr/>3</p> 29560 </td> 29561 29562 <td class="entry_tags"> 29563 </td> 29564 29565 </tr> 29566 <tr class="entries_header"> 29567 <th class="th_details" colspan="6">Details</th> 29568 </tr> 29569 <tr class="entry_cont"> 29570 <td class="entry_details" colspan="6"> 29571 <p>If no OIS data output is available for this camera device,<wbr/> this key will 29572contain only OFF.<wbr/></p> 29573 </td> 29574 </tr> 29575 29576 29577 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29578 <!-- end of entry --> 29579 29580 29581 29582 29583 29584 29585 <!-- end of kind --> 29586 </tbody> 29587 <tr><td colspan="7" class="kind">dynamic</td></tr> 29588 29589 <thead class="entries_header"> 29590 <tr> 29591 <th class="th_name">Property Name</th> 29592 <th class="th_type">Type</th> 29593 <th class="th_description">Description</th> 29594 <th class="th_units">Units</th> 29595 <th class="th_range">Range</th> 29596 <th class="th_hal_version">Initial HIDL HAL version</th> 29597 <th class="th_tags">Tags</th> 29598 </tr> 29599 </thead> 29600 29601 <tbody> 29602 29603 29604 29605 29606 29607 29608 29609 29610 29611 29612 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 29613 <td class="entry_name 29614 " rowspan="5"> 29615 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 29616 </td> 29617 <td class="entry_type"> 29618 <span class="entry_type_name entry_type_name_enum">byte</span> 29619 29620 <span class="entry_type_visibility"> [public]</span> 29621 29622 29623 <span class="entry_type_hwlevel">[legacy] </span> 29624 29625 29626 29627 <ul class="entry_type_enum"> 29628 <li> 29629 <span class="entry_type_enum_name">OFF (v3.2)</span> 29630 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 29631results.<wbr/></p></span> 29632 </li> 29633 <li> 29634 <span class="entry_type_enum_name">SIMPLE (v3.2)</span> 29635 <span class="entry_type_enum_optional">[optional]</span> 29636 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 29637 </li> 29638 <li> 29639 <span class="entry_type_enum_name">FULL (v3.2)</span> 29640 <span class="entry_type_enum_optional">[optional]</span> 29641 <span class="entry_type_enum_notes"><p>Return all face 29642metadata.<wbr/></p> 29643<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 29644 </li> 29645 </ul> 29646 29647 </td> <!-- entry_type --> 29648 29649 <td class="entry_description"> 29650 <p>Operating mode for the face detector 29651unit.<wbr/></p> 29652 </td> 29653 29654 <td class="entry_units"> 29655 </td> 29656 29657 <td class="entry_range"> 29658 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 29659 </td> 29660 29661 <td class="entry_hal_version"> 29662 <p>3.<wbr/>2</p> 29663 </td> 29664 29665 <td class="entry_tags"> 29666 <ul class="entry_tags"> 29667 <li><a href="#tag_BC">BC</a></li> 29668 </ul> 29669 </td> 29670 29671 </tr> 29672 <tr class="entries_header"> 29673 <th class="th_details" colspan="6">Details</th> 29674 </tr> 29675 <tr class="entry_cont"> 29676 <td class="entry_details" colspan="6"> 29677 <p>Whether face detection is enabled,<wbr/> and whether it 29678should output just the basic fields or the full set of 29679fields.<wbr/></p> 29680 </td> 29681 </tr> 29682 29683 <tr class="entries_header"> 29684 <th class="th_details" colspan="6">HAL Implementation Details</th> 29685 </tr> 29686 <tr class="entry_cont"> 29687 <td class="entry_details" colspan="6"> 29688 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 29689<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 29690FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 29691<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 29692 </td> 29693 </tr> 29694 29695 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29696 <!-- end of entry --> 29697 29698 29699 <tr class="entry" id="dynamic_android.statistics.faceIds"> 29700 <td class="entry_name 29701 " rowspan="3"> 29702 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 29703 </td> 29704 <td class="entry_type"> 29705 <span class="entry_type_name">int32</span> 29706 <span class="entry_type_container">x</span> 29707 29708 <span class="entry_type_array"> 29709 n 29710 </span> 29711 <span class="entry_type_visibility"> [ndk_public]</span> 29712 29713 29714 <span class="entry_type_hwlevel">[legacy] </span> 29715 29716 29717 29718 29719 </td> <!-- entry_type --> 29720 29721 <td class="entry_description"> 29722 <p>List of unique IDs for detected faces.<wbr/></p> 29723 </td> 29724 29725 <td class="entry_units"> 29726 </td> 29727 29728 <td class="entry_range"> 29729 </td> 29730 29731 <td class="entry_hal_version"> 29732 <p>3.<wbr/>2</p> 29733 </td> 29734 29735 <td class="entry_tags"> 29736 <ul class="entry_tags"> 29737 <li><a href="#tag_BC">BC</a></li> 29738 </ul> 29739 </td> 29740 29741 </tr> 29742 <tr class="entries_header"> 29743 <th class="th_details" colspan="6">Details</th> 29744 </tr> 29745 <tr class="entry_cont"> 29746 <td class="entry_details" colspan="6"> 29747 <p>Each detected face is given a unique ID that is valid for as long as the face is visible 29748to the camera device.<wbr/> A face that leaves the field of view and later returns may be 29749assigned a new ID.<wbr/></p> 29750<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 29751 </td> 29752 </tr> 29753 29754 29755 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29756 <!-- end of entry --> 29757 29758 29759 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 29760 <td class="entry_name 29761 " rowspan="5"> 29762 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 29763 </td> 29764 <td class="entry_type"> 29765 <span class="entry_type_name">int32</span> 29766 <span class="entry_type_container">x</span> 29767 29768 <span class="entry_type_array"> 29769 n x 6 29770 </span> 29771 <span class="entry_type_visibility"> [ndk_public]</span> 29772 29773 29774 <span class="entry_type_hwlevel">[legacy] </span> 29775 29776 29777 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 29778 29779 29780 </td> <!-- entry_type --> 29781 29782 <td class="entry_description"> 29783 <p>List of landmarks for detected 29784faces.<wbr/></p> 29785 </td> 29786 29787 <td class="entry_units"> 29788 </td> 29789 29790 <td class="entry_range"> 29791 </td> 29792 29793 <td class="entry_hal_version"> 29794 <p>3.<wbr/>2</p> 29795 </td> 29796 29797 <td class="entry_tags"> 29798 <ul class="entry_tags"> 29799 <li><a href="#tag_BC">BC</a></li> 29800 </ul> 29801 </td> 29802 29803 </tr> 29804 <tr class="entries_header"> 29805 <th class="th_details" colspan="6">Details</th> 29806 </tr> 29807 <tr class="entry_cont"> 29808 <td class="entry_details" colspan="6"> 29809 <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 29810system 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 29811the top-left pixel of the active array.<wbr/></p> 29812<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 29813system depends on the mode being set.<wbr/> 29814When the distortion correction mode is OFF,<wbr/> the coordinate system follows 29815<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 29816<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/> 29817When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 29818<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 29819<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 29820<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL.<wbr/></p> 29821<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 29822preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 29823pre-zoomRatio field of view.<wbr/> This means that if the relative position of faces and 29824the camera device doesn't change,<wbr/> when zooming in by increasing 29825<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 29826activeArray or preCorrectionActiveArray.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 29827(default),<wbr/> the face landmarks coordinates won't change as <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> 29828changes.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use activeArraySize or 29829preCorrectionActiveArraySize still depends on distortion correction mode.<wbr/></p> 29830 </td> 29831 </tr> 29832 29833 <tr class="entries_header"> 29834 <th class="th_details" colspan="6">HAL Implementation Details</th> 29835 </tr> 29836 <tr class="entry_cont"> 29837 <td class="entry_details" colspan="6"> 29838 <p>HAL must always report face landmarks in the coordinate system of pre-correction 29839active array.<wbr/></p> 29840 </td> 29841 </tr> 29842 29843 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29844 <!-- end of entry --> 29845 29846 29847 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 29848 <td class="entry_name 29849 " rowspan="5"> 29850 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 29851 </td> 29852 <td class="entry_type"> 29853 <span class="entry_type_name">int32</span> 29854 <span class="entry_type_container">x</span> 29855 29856 <span class="entry_type_array"> 29857 n x 4 29858 </span> 29859 <span class="entry_type_visibility"> [ndk_public as rectangle]</span> 29860 29861 29862 <span class="entry_type_hwlevel">[legacy] </span> 29863 29864 29865 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 29866 29867 29868 </td> <!-- entry_type --> 29869 29870 <td class="entry_description"> 29871 <p>List of the bounding rectangles for detected 29872faces.<wbr/></p> 29873 </td> 29874 29875 <td class="entry_units"> 29876 </td> 29877 29878 <td class="entry_range"> 29879 </td> 29880 29881 <td class="entry_hal_version"> 29882 <p>3.<wbr/>2</p> 29883 </td> 29884 29885 <td class="entry_tags"> 29886 <ul class="entry_tags"> 29887 <li><a href="#tag_BC">BC</a></li> 29888 </ul> 29889 </td> 29890 29891 </tr> 29892 <tr class="entries_header"> 29893 <th class="th_details" colspan="6">Details</th> 29894 </tr> 29895 <tr class="entry_cont"> 29896 <td class="entry_details" colspan="6"> 29897 <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 29898system 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 29899the top-left pixel of the active array.<wbr/></p> 29900<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate 29901system depends on the mode being set.<wbr/> 29902When the distortion correction mode is OFF,<wbr/> the coordinate system follows 29903<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 29904<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/> 29905When the distortion correction mode is not OFF,<wbr/> the coordinate system follows 29906<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 29907<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 29908<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 29909<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or 29910preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not 29911pre-zoomRatio field of view.<wbr/> This means that if the relative position of faces and 29912the camera device doesn't change,<wbr/> when zooming in by increasing 29913<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 29914the center of the activeArray or preCorrectionActiveArray.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> 29915is 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> 29916changes.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use activeArraySize or 29917preCorrectionActiveArraySize still depends on distortion correction mode.<wbr/></p> 29918 </td> 29919 </tr> 29920 29921 <tr class="entries_header"> 29922 <th class="th_details" colspan="6">HAL Implementation Details</th> 29923 </tr> 29924 <tr class="entry_cont"> 29925 <td class="entry_details" colspan="6"> 29926 <p>HAL must always report face rectangles in the coordinate system of pre-correction 29927active array.<wbr/></p> 29928 </td> 29929 </tr> 29930 29931 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29932 <!-- end of entry --> 29933 29934 29935 <tr class="entry" id="dynamic_android.statistics.faceScores"> 29936 <td class="entry_name 29937 " rowspan="5"> 29938 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 29939 </td> 29940 <td class="entry_type"> 29941 <span class="entry_type_name">byte</span> 29942 <span class="entry_type_container">x</span> 29943 29944 <span class="entry_type_array"> 29945 n 29946 </span> 29947 <span class="entry_type_visibility"> [ndk_public]</span> 29948 29949 29950 <span class="entry_type_hwlevel">[legacy] </span> 29951 29952 29953 29954 29955 </td> <!-- entry_type --> 29956 29957 <td class="entry_description"> 29958 <p>List of the face confidence scores for 29959detected faces</p> 29960 </td> 29961 29962 <td class="entry_units"> 29963 </td> 29964 29965 <td class="entry_range"> 29966 <p>1-100</p> 29967 </td> 29968 29969 <td class="entry_hal_version"> 29970 <p>3.<wbr/>2</p> 29971 </td> 29972 29973 <td class="entry_tags"> 29974 <ul class="entry_tags"> 29975 <li><a href="#tag_BC">BC</a></li> 29976 </ul> 29977 </td> 29978 29979 </tr> 29980 <tr class="entries_header"> 29981 <th class="th_details" colspan="6">Details</th> 29982 </tr> 29983 <tr class="entry_cont"> 29984 <td class="entry_details" colspan="6"> 29985 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 29986 </td> 29987 </tr> 29988 29989 <tr class="entries_header"> 29990 <th class="th_details" colspan="6">HAL Implementation Details</th> 29991 </tr> 29992 <tr class="entry_cont"> 29993 <td class="entry_details" colspan="6"> 29994 <p>The value should be meaningful (for example,<wbr/> setting 100 at 29995all times is illegal).<wbr/></p> 29996 </td> 29997 </tr> 29998 29999 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30000 <!-- end of entry --> 30001 30002 30003 <tr class="entry" id="dynamic_android.statistics.faces"> 30004 <td class="entry_name 30005 " rowspan="3"> 30006 android.<wbr/>statistics.<wbr/>faces 30007 </td> 30008 <td class="entry_type"> 30009 <span class="entry_type_name">int32</span> 30010 <span class="entry_type_container">x</span> 30011 30012 <span class="entry_type_array"> 30013 n 30014 </span> 30015 <span class="entry_type_visibility"> [java_public as face]</span> 30016 30017 <span class="entry_type_synthetic">[synthetic] </span> 30018 30019 <span class="entry_type_hwlevel">[legacy] </span> 30020 30021 30022 30023 30024 </td> <!-- entry_type --> 30025 30026 <td class="entry_description"> 30027 <p>List of the faces detected through camera face detection 30028in this capture.<wbr/></p> 30029 </td> 30030 30031 <td class="entry_units"> 30032 </td> 30033 30034 <td class="entry_range"> 30035 </td> 30036 30037 <td class="entry_hal_version"> 30038 <p>3.<wbr/>2</p> 30039 </td> 30040 30041 <td class="entry_tags"> 30042 </td> 30043 30044 </tr> 30045 <tr class="entries_header"> 30046 <th class="th_details" colspan="6">Details</th> 30047 </tr> 30048 <tr class="entry_cont"> 30049 <td class="entry_details" colspan="6"> 30050 <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> 30051 </td> 30052 </tr> 30053 30054 30055 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30056 <!-- end of entry --> 30057 30058 30059 <tr class="entry" id="dynamic_android.statistics.histogram"> 30060 <td class="entry_name 30061 " rowspan="3"> 30062 android.<wbr/>statistics.<wbr/>histogram 30063 </td> 30064 <td class="entry_type"> 30065 <span class="entry_type_name">int32</span> 30066 <span class="entry_type_container">x</span> 30067 30068 <span class="entry_type_array"> 30069 n x 3 30070 </span> 30071 <span class="entry_type_visibility"> [system]</span> 30072 30073 30074 30075 30076 <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> 30077 30078 30079 </td> <!-- entry_type --> 30080 30081 <td class="entry_description"> 30082 <p>A 3-channel histogram based on the raw 30083sensor data</p> 30084 </td> 30085 30086 <td class="entry_units"> 30087 </td> 30088 30089 <td class="entry_range"> 30090 </td> 30091 30092 <td class="entry_hal_version"> 30093 <p>3.<wbr/>2</p> 30094 </td> 30095 30096 <td class="entry_tags"> 30097 <ul class="entry_tags"> 30098 <li><a href="#tag_FUTURE">FUTURE</a></li> 30099 </ul> 30100 </td> 30101 30102 </tr> 30103 <tr class="entries_header"> 30104 <th class="th_details" colspan="6">Details</th> 30105 </tr> 30106 <tr class="entry_cont"> 30107 <td class="entry_details" colspan="6"> 30108 <p>The k'th bucket (0-based) covers the input range 30109(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/> 30110(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 30111supported,<wbr/> all channels should have the same data</p> 30112 </td> 30113 </tr> 30114 30115 30116 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30117 <!-- end of entry --> 30118 30119 30120 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 30121 <td class="entry_name 30122 " rowspan="1"> 30123 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 30124 </td> 30125 <td class="entry_type"> 30126 <span class="entry_type_name entry_type_name_enum">byte</span> 30127 30128 <span class="entry_type_visibility"> [system as boolean]</span> 30129 30130 30131 30132 30133 30134 <ul class="entry_type_enum"> 30135 <li> 30136 <span class="entry_type_enum_name">OFF (v3.2)</span> 30137 </li> 30138 <li> 30139 <span class="entry_type_enum_name">ON (v3.2)</span> 30140 </li> 30141 </ul> 30142 30143 </td> <!-- entry_type --> 30144 30145 <td class="entry_description"> 30146 <p>Operating mode for histogram 30147generation</p> 30148 </td> 30149 30150 <td class="entry_units"> 30151 </td> 30152 30153 <td class="entry_range"> 30154 </td> 30155 30156 <td class="entry_hal_version"> 30157 <p>3.<wbr/>2</p> 30158 </td> 30159 30160 <td class="entry_tags"> 30161 <ul class="entry_tags"> 30162 <li><a href="#tag_FUTURE">FUTURE</a></li> 30163 </ul> 30164 </td> 30165 30166 </tr> 30167 30168 30169 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30170 <!-- end of entry --> 30171 30172 30173 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 30174 <td class="entry_name 30175 " rowspan="3"> 30176 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 30177 </td> 30178 <td class="entry_type"> 30179 <span class="entry_type_name">int32</span> 30180 <span class="entry_type_container">x</span> 30181 30182 <span class="entry_type_array"> 30183 n x m x 3 30184 </span> 30185 <span class="entry_type_visibility"> [system]</span> 30186 30187 30188 30189 30190 <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> 30191 30192 30193 </td> <!-- entry_type --> 30194 30195 <td class="entry_description"> 30196 <p>A 3-channel sharpness map,<wbr/> based on the raw 30197sensor data</p> 30198 </td> 30199 30200 <td class="entry_units"> 30201 </td> 30202 30203 <td class="entry_range"> 30204 </td> 30205 30206 <td class="entry_hal_version"> 30207 <p>3.<wbr/>2</p> 30208 </td> 30209 30210 <td class="entry_tags"> 30211 <ul class="entry_tags"> 30212 <li><a href="#tag_FUTURE">FUTURE</a></li> 30213 </ul> 30214 </td> 30215 30216 </tr> 30217 <tr class="entries_header"> 30218 <th class="th_details" colspan="6">Details</th> 30219 </tr> 30220 <tr class="entry_cont"> 30221 <td class="entry_details" colspan="6"> 30222 <p>If only a monochrome sharpness map is supported,<wbr/> 30223all channels should have the same data</p> 30224 </td> 30225 </tr> 30226 30227 30228 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30229 <!-- end of entry --> 30230 30231 30232 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 30233 <td class="entry_name 30234 " rowspan="1"> 30235 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 30236 </td> 30237 <td class="entry_type"> 30238 <span class="entry_type_name entry_type_name_enum">byte</span> 30239 30240 <span class="entry_type_visibility"> [system as boolean]</span> 30241 30242 30243 30244 30245 30246 <ul class="entry_type_enum"> 30247 <li> 30248 <span class="entry_type_enum_name">OFF (v3.2)</span> 30249 </li> 30250 <li> 30251 <span class="entry_type_enum_name">ON (v3.2)</span> 30252 </li> 30253 </ul> 30254 30255 </td> <!-- entry_type --> 30256 30257 <td class="entry_description"> 30258 <p>Operating mode for sharpness map 30259generation</p> 30260 </td> 30261 30262 <td class="entry_units"> 30263 </td> 30264 30265 <td class="entry_range"> 30266 </td> 30267 30268 <td class="entry_hal_version"> 30269 <p>3.<wbr/>2</p> 30270 </td> 30271 30272 <td class="entry_tags"> 30273 <ul class="entry_tags"> 30274 <li><a href="#tag_FUTURE">FUTURE</a></li> 30275 </ul> 30276 </td> 30277 30278 </tr> 30279 30280 30281 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30282 <!-- end of entry --> 30283 30284 30285 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> 30286 <td class="entry_name 30287 " rowspan="3"> 30288 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map 30289 </td> 30290 <td class="entry_type"> 30291 <span class="entry_type_name">byte</span> 30292 30293 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span> 30294 30295 30296 <span class="entry_type_hwlevel">[full] </span> 30297 30298 30299 30300 30301 </td> <!-- entry_type --> 30302 30303 <td class="entry_description"> 30304 <p>The shading map is a low-resolution floating-point map 30305that lists the coefficients used to correct for vignetting,<wbr/> for each 30306Bayer color channel.<wbr/></p> 30307 </td> 30308 30309 <td class="entry_units"> 30310 </td> 30311 30312 <td class="entry_range"> 30313 <p>Each gain factor is >= 1</p> 30314 </td> 30315 30316 <td class="entry_hal_version"> 30317 <p>3.<wbr/>2</p> 30318 </td> 30319 30320 <td class="entry_tags"> 30321 </td> 30322 30323 </tr> 30324 <tr class="entries_header"> 30325 <th class="th_details" colspan="6">Details</th> 30326 </tr> 30327 <tr class="entry_cont"> 30328 <td class="entry_details" colspan="6"> 30329 <p>The map provided here is the same map that is used by the camera device to 30330correct both color shading and vignetting for output non-RAW images.<wbr/></p> 30331<p>When there is no lens shading correction applied to RAW 30332output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> 30333false),<wbr/> this map is the complete lens shading correction 30334map; when there is some lens shading correction applied to 30335the 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 30336correction map that needs to be applied to get shading 30337corrected images that match the camera device's output for 30338non-RAW formats.<wbr/></p> 30339<p>For a complete shading correction map,<wbr/> the least shaded 30340section of the image will have a gain factor of 1; all 30341other sections will have gains above 1.<wbr/></p> 30342<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 30343will take into account the colorCorrection settings.<wbr/></p> 30344<p>The shading map is for the entire active pixel array,<wbr/> and is not 30345affected by the crop region specified in the request.<wbr/> Each shading map 30346entry is the value of the shading compensation map over a specific 30347pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 30348map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 30349(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 30350pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 30351The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 30352<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 30353channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 30354The shading map is stored in a fully interleaved format.<wbr/></p> 30355<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/> 30356and will be smaller than 64x64.<wbr/></p> 30357<p>As an example,<wbr/> given a very small map defined as:</p> 30358<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] 30359values = 30360[ 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/> 30361 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/> 30362 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/> 30363 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/> 30364 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/> 30365 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 ] 30366</code></pre> 30367<p>The low-resolution scaling map images for each channel are 30368(displayed using nearest-neighbor interpolation):</p> 30369<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 30370<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 30371<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 30372<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 30373<p>As a visualization only,<wbr/> inverting the full-color map to recover an 30374image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 30375<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 30376<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example 30377shading map for such a camera is defined as:</p> 30378<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 30379<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 30380[ 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/> 30381 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/> 30382 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/> 30383 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/> 30384 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/> 30385 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 ] 30386</code></pre> 30387 </td> 30388 </tr> 30389 30390 30391 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30392 <!-- end of entry --> 30393 30394 30395 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 30396 <td class="entry_name 30397 " rowspan="5"> 30398 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 30399 </td> 30400 <td class="entry_type"> 30401 <span class="entry_type_name">float</span> 30402 <span class="entry_type_container">x</span> 30403 30404 <span class="entry_type_array"> 30405 4 x n x m 30406 </span> 30407 <span class="entry_type_visibility"> [ndk_public]</span> 30408 30409 30410 <span class="entry_type_hwlevel">[full] </span> 30411 30412 30413 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 30414 30415 30416 </td> <!-- entry_type --> 30417 30418 <td class="entry_description"> 30419 <p>The shading map is a low-resolution floating-point map 30420that lists the coefficients used to correct for vignetting and color shading,<wbr/> 30421for each Bayer color channel of RAW image data.<wbr/></p> 30422 </td> 30423 30424 <td class="entry_units"> 30425 </td> 30426 30427 <td class="entry_range"> 30428 <p>Each gain factor is >= 1</p> 30429 </td> 30430 30431 <td class="entry_hal_version"> 30432 <p>3.<wbr/>2</p> 30433 </td> 30434 30435 <td class="entry_tags"> 30436 </td> 30437 30438 </tr> 30439 <tr class="entries_header"> 30440 <th class="th_details" colspan="6">Details</th> 30441 </tr> 30442 <tr class="entry_cont"> 30443 <td class="entry_details" colspan="6"> 30444 <p>The map provided here is the same map that is used by the camera device to 30445correct both color shading and vignetting for output non-RAW images.<wbr/></p> 30446<p>When there is no lens shading correction applied to RAW 30447output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> 30448false),<wbr/> this map is the complete lens shading correction 30449map; when there is some lens shading correction applied to 30450the 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 30451correction map that needs to be applied to get shading 30452corrected images that match the camera device's output for 30453non-RAW formats.<wbr/></p> 30454<p>For a complete shading correction map,<wbr/> the least shaded 30455section of the image will have a gain factor of 1; all 30456other sections will have gains above 1.<wbr/></p> 30457<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 30458will take into account the colorCorrection settings.<wbr/></p> 30459<p>The shading map is for the entire active pixel array,<wbr/> and is not 30460affected by the crop region specified in the request.<wbr/> Each shading map 30461entry is the value of the shading compensation map over a specific 30462pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 30463map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 30464(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 30465pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 30466The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 30467<p>For a Bayer camera,<wbr/> the channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is 30468the green channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 30469The shading map is stored in a fully interleaved format,<wbr/> and its size 30470is 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> 30471<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/> 30472and will be smaller than 64x64.<wbr/></p> 30473<p>As an example,<wbr/> given a very small map for a Bayer camera defined as:</p> 30474<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 30475<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 30476[ 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/> 30477 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/> 30478 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/> 30479 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/> 30480 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/> 30481 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 ] 30482</code></pre> 30483<p>The low-resolution scaling map images for each channel are 30484(displayed using nearest-neighbor interpolation):</p> 30485<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 30486<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 30487<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 30488<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 30489<p>As a visualization only,<wbr/> inverting the full-color map to recover an 30490image of a gray wall (using bicubic interpolation for visual quality) 30491as captured by the sensor gives:</p> 30492<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 30493<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example 30494shading map for such a camera is defined as:</p> 30495<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 30496<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 30497[ 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/> 30498 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/> 30499 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/> 30500 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/> 30501 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/> 30502 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 ] 30503</code></pre> 30504<p>Note that the RAW image data might be subject to lens shading 30505correction not reported on this map.<wbr/> Query 30506<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 30507to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> 30508is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading 30509correction.<wbr/> In the case full lens shading correction is applied to RAW 30510images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/> 30511In other words,<wbr/> the map reported in this key is the remaining lens shading 30512that needs to be applied on the RAW image to get images without lens shading 30513artifacts.<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 30514formats.<wbr/></p> 30515 </td> 30516 </tr> 30517 30518 <tr class="entries_header"> 30519 <th class="th_details" colspan="6">HAL Implementation Details</th> 30520 </tr> 30521 <tr class="entry_cont"> 30522 <td class="entry_details" colspan="6"> 30523 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> 30524When AE and AWB are in AUTO modes 30525(<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 30526may have all the information it need to generate most accurate lens shading map.<wbr/> When 30527AE or AWB are in manual mode 30528(<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 30529may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 30530generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 30531the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p> 30532 </td> 30533 </tr> 30534 30535 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30536 <!-- end of entry --> 30537 30538 30539 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 30540 <td class="entry_name 30541 entry_name_deprecated 30542 " rowspan="3"> 30543 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 30544 </td> 30545 <td class="entry_type"> 30546 <span class="entry_type_name">float</span> 30547 <span class="entry_type_container">x</span> 30548 30549 <span class="entry_type_array"> 30550 4 30551 </span> 30552 <span class="entry_type_visibility"> [hidden]</span> 30553 30554 30555 30556 <span class="entry_type_deprecated">[deprecated] </span> 30557 30558 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 30559 30560 30561 </td> <!-- entry_type --> 30562 30563 <td class="entry_description"> 30564 <p>The best-fit color channel gains calculated 30565by the camera device's statistics units for the current output frame.<wbr/></p> 30566 </td> 30567 30568 <td class="entry_units"> 30569 </td> 30570 30571 <td class="entry_range"> 30572 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 30573 </td> 30574 30575 <td class="entry_hal_version"> 30576 <p>3.<wbr/>2</p> 30577 </td> 30578 30579 <td class="entry_tags"> 30580 </td> 30581 30582 </tr> 30583 <tr class="entries_header"> 30584 <th class="th_details" colspan="6">Details</th> 30585 </tr> 30586 <tr class="entry_cont"> 30587 <td class="entry_details" colspan="6"> 30588 <p>This may be different than the gains used for this frame,<wbr/> 30589since statistics processing on data from a new frame 30590typically completes after the transform has already been 30591applied to that frame.<wbr/></p> 30592<p>The 4 channel gains are defined in Bayer domain,<wbr/> 30593see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 30594<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 30595regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 30596 </td> 30597 </tr> 30598 30599 30600 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30601 <!-- end of entry --> 30602 30603 30604 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 30605 <td class="entry_name 30606 entry_name_deprecated 30607 " rowspan="3"> 30608 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 30609 </td> 30610 <td class="entry_type"> 30611 <span class="entry_type_name">rational</span> 30612 <span class="entry_type_container">x</span> 30613 30614 <span class="entry_type_array"> 30615 3 x 3 30616 </span> 30617 <span class="entry_type_visibility"> [hidden]</span> 30618 30619 30620 30621 <span class="entry_type_deprecated">[deprecated] </span> 30622 30623 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 30624 30625 30626 </td> <!-- entry_type --> 30627 30628 <td class="entry_description"> 30629 <p>The best-fit color transform matrix estimate 30630calculated by the camera device's statistics units for the current 30631output frame.<wbr/></p> 30632 </td> 30633 30634 <td class="entry_units"> 30635 </td> 30636 30637 <td class="entry_range"> 30638 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 30639 </td> 30640 30641 <td class="entry_hal_version"> 30642 <p>3.<wbr/>2</p> 30643 </td> 30644 30645 <td class="entry_tags"> 30646 </td> 30647 30648 </tr> 30649 <tr class="entries_header"> 30650 <th class="th_details" colspan="6">Details</th> 30651 </tr> 30652 <tr class="entry_cont"> 30653 <td class="entry_details" colspan="6"> 30654 <p>The camera device will provide the estimate from its 30655statistics unit on the white balance transforms to use 30656for the next frame.<wbr/> These are the values the camera device believes 30657are the best fit for the current output frame.<wbr/> This may 30658be different than the transform used for this frame,<wbr/> since 30659statistics processing on data from a new frame typically 30660completes after the transform has already been applied to 30661that frame.<wbr/></p> 30662<p>These estimates must be provided for all frames,<wbr/> even if 30663capture settings and color transforms are set by the application.<wbr/></p> 30664<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 30665regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 30666 </td> 30667 </tr> 30668 30669 30670 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30671 <!-- end of entry --> 30672 30673 30674 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 30675 <td class="entry_name 30676 " rowspan="3"> 30677 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 30678 </td> 30679 <td class="entry_type"> 30680 <span class="entry_type_name entry_type_name_enum">byte</span> 30681 30682 <span class="entry_type_visibility"> [public]</span> 30683 30684 30685 <span class="entry_type_hwlevel">[full] </span> 30686 30687 30688 30689 <ul class="entry_type_enum"> 30690 <li> 30691 <span class="entry_type_enum_name">NONE (v3.2)</span> 30692 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination 30693in the current scene.<wbr/></p></span> 30694 </li> 30695 <li> 30696 <span class="entry_type_enum_name">50HZ (v3.2)</span> 30697 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz 30698in the current scene.<wbr/></p></span> 30699 </li> 30700 <li> 30701 <span class="entry_type_enum_name">60HZ (v3.2)</span> 30702 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz 30703in the current scene.<wbr/></p></span> 30704 </li> 30705 </ul> 30706 30707 </td> <!-- entry_type --> 30708 30709 <td class="entry_description"> 30710 <p>The camera device estimated scene illumination lighting 30711frequency.<wbr/></p> 30712 </td> 30713 30714 <td class="entry_units"> 30715 </td> 30716 30717 <td class="entry_range"> 30718 </td> 30719 30720 <td class="entry_hal_version"> 30721 <p>3.<wbr/>2</p> 30722 </td> 30723 30724 <td class="entry_tags"> 30725 </td> 30726 30727 </tr> 30728 <tr class="entries_header"> 30729 <th class="th_details" colspan="6">Details</th> 30730 </tr> 30731 <tr class="entry_cont"> 30732 <td class="entry_details" colspan="6"> 30733 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 30734that depends on the local utility power standards.<wbr/> This flicker must be 30735accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 30736The camera device uses this entry to tell the application what the scene 30737illuminant frequency is.<wbr/></p> 30738<p>When manual exposure control is enabled 30739(<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> == 30740OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform 30741antibanding,<wbr/> and the application can ensure it selects 30742exposure times that do not cause banding issues by looking 30743into this metadata field.<wbr/> See 30744<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p> 30745<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p> 30746 </td> 30747 </tr> 30748 30749 30750 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30751 <!-- end of entry --> 30752 30753 30754 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 30755 <td class="entry_name 30756 " rowspan="3"> 30757 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 30758 </td> 30759 <td class="entry_type"> 30760 <span class="entry_type_name entry_type_name_enum">byte</span> 30761 30762 <span class="entry_type_visibility"> [public as boolean]</span> 30763 30764 30765 30766 30767 30768 <ul class="entry_type_enum"> 30769 <li> 30770 <span class="entry_type_enum_name">OFF (v3.2)</span> 30771 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 30772 </li> 30773 <li> 30774 <span class="entry_type_enum_name">ON (v3.2)</span> 30775 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 30776 </li> 30777 </ul> 30778 30779 </td> <!-- entry_type --> 30780 30781 <td class="entry_description"> 30782 <p>Operating mode for hot pixel map generation.<wbr/></p> 30783 </td> 30784 30785 <td class="entry_units"> 30786 </td> 30787 30788 <td class="entry_range"> 30789 <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> 30790 </td> 30791 30792 <td class="entry_hal_version"> 30793 <p>3.<wbr/>2</p> 30794 </td> 30795 30796 <td class="entry_tags"> 30797 <ul class="entry_tags"> 30798 <li><a href="#tag_V1">V1</a></li> 30799 <li><a href="#tag_RAW">RAW</a></li> 30800 </ul> 30801 </td> 30802 30803 </tr> 30804 <tr class="entries_header"> 30805 <th class="th_details" colspan="6">Details</th> 30806 </tr> 30807 <tr class="entry_cont"> 30808 <td class="entry_details" colspan="6"> 30809 <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/> 30810If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 30811 </td> 30812 </tr> 30813 30814 30815 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30816 <!-- end of entry --> 30817 30818 30819 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 30820 <td class="entry_name 30821 " rowspan="5"> 30822 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 30823 </td> 30824 <td class="entry_type"> 30825 <span class="entry_type_name">int32</span> 30826 <span class="entry_type_container">x</span> 30827 30828 <span class="entry_type_array"> 30829 2 x n 30830 </span> 30831 <span class="entry_type_visibility"> [public as point]</span> 30832 30833 30834 30835 30836 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 30837 30838 30839 </td> <!-- entry_type --> 30840 30841 <td class="entry_description"> 30842 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 30843 </td> 30844 30845 <td class="entry_units"> 30846 </td> 30847 30848 <td class="entry_range"> 30849 <p>n <= number of pixels on the sensor.<wbr/> 30850The <code>(x,<wbr/> y)</code> coordinates must be bounded by 30851<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 30852 </td> 30853 30854 <td class="entry_hal_version"> 30855 <p>3.<wbr/>2</p> 30856 </td> 30857 30858 <td class="entry_tags"> 30859 <ul class="entry_tags"> 30860 <li><a href="#tag_V1">V1</a></li> 30861 <li><a href="#tag_RAW">RAW</a></li> 30862 </ul> 30863 </td> 30864 30865 </tr> 30866 <tr class="entries_header"> 30867 <th class="th_details" colspan="6">Details</th> 30868 </tr> 30869 <tr class="entry_cont"> 30870 <td class="entry_details" colspan="6"> 30871 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 30872<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 30873bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 30874height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 30875This may include hot pixels that lie outside of the active array 30876bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 30877 </td> 30878 </tr> 30879 30880 <tr class="entries_header"> 30881 <th class="th_details" colspan="6">HAL Implementation Details</th> 30882 </tr> 30883 <tr class="entry_cont"> 30884 <td class="entry_details" colspan="6"> 30885 <p>A hotpixel map contains the coordinates of pixels on the camera 30886sensor that do report valid values (usually due to defects in 30887the camera sensor).<wbr/> This includes pixels that are stuck at certain 30888values,<wbr/> or have a response that does not accuractly encode the 30889incoming light from the scene.<wbr/></p> 30890<p>To avoid performance issues,<wbr/> there should be significantly fewer hot 30891pixels than actual pixels on the camera sensor.<wbr/></p> 30892 </td> 30893 </tr> 30894 30895 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30896 <!-- end of entry --> 30897 30898 30899 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> 30900 <td class="entry_name 30901 " rowspan="3"> 30902 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 30903 </td> 30904 <td class="entry_type"> 30905 <span class="entry_type_name entry_type_name_enum">byte</span> 30906 30907 <span class="entry_type_visibility"> [public]</span> 30908 30909 30910 <span class="entry_type_hwlevel">[full] </span> 30911 30912 30913 30914 <ul class="entry_type_enum"> 30915 <li> 30916 <span class="entry_type_enum_name">OFF (v3.2)</span> 30917 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 30918 </li> 30919 <li> 30920 <span class="entry_type_enum_name">ON (v3.2)</span> 30921 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 30922 </li> 30923 </ul> 30924 30925 </td> <!-- entry_type --> 30926 30927 <td class="entry_description"> 30928 <p>Whether the camera device will output the lens 30929shading map in output result metadata.<wbr/></p> 30930 </td> 30931 30932 <td class="entry_units"> 30933 </td> 30934 30935 <td class="entry_range"> 30936 <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> 30937 </td> 30938 30939 <td class="entry_hal_version"> 30940 <p>3.<wbr/>2</p> 30941 </td> 30942 30943 <td class="entry_tags"> 30944 <ul class="entry_tags"> 30945 <li><a href="#tag_RAW">RAW</a></li> 30946 </ul> 30947 </td> 30948 30949 </tr> 30950 <tr class="entries_header"> 30951 <th class="th_details" colspan="6">Details</th> 30952 </tr> 30953 <tr class="entry_cont"> 30954 <td class="entry_details" colspan="6"> 30955 <p>When set to ON,<wbr/> 30956<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 30957the output result metadata.<wbr/></p> 30958<p>ON is always supported on devices with the RAW capability.<wbr/></p> 30959 </td> 30960 </tr> 30961 30962 30963 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30964 <!-- end of entry --> 30965 30966 30967 <tr class="entry" id="dynamic_android.statistics.oisDataMode"> 30968 <td class="entry_name 30969 " rowspan="3"> 30970 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode 30971 </td> 30972 <td class="entry_type"> 30973 <span class="entry_type_name entry_type_name_enum">byte</span> 30974 30975 <span class="entry_type_visibility"> [public]</span> 30976 30977 30978 30979 30980 30981 <ul class="entry_type_enum"> 30982 <li> 30983 <span class="entry_type_enum_name">OFF (v3.3)</span> 30984 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span> 30985 </li> 30986 <li> 30987 <span class="entry_type_enum_name">ON (v3.3)</span> 30988 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span> 30989 </li> 30990 </ul> 30991 30992 </td> <!-- entry_type --> 30993 30994 <td class="entry_description"> 30995 <p>A control for selecting whether optical stabilization (OIS) position 30996information is included in output result metadata.<wbr/></p> 30997 </td> 30998 30999 <td class="entry_units"> 31000 </td> 31001 31002 <td class="entry_range"> 31003 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p> 31004 </td> 31005 31006 <td class="entry_hal_version"> 31007 <p>3.<wbr/>3</p> 31008 </td> 31009 31010 <td class="entry_tags"> 31011 </td> 31012 31013 </tr> 31014 <tr class="entries_header"> 31015 <th class="th_details" colspan="6">Details</th> 31016 </tr> 31017 <tr class="entry_cont"> 31018 <td class="entry_details" colspan="6"> 31019 <p>Since optical image stabilization generally involves motion much faster than the duration 31020of individual image exposure,<wbr/> multiple OIS samples can be included for a single capture 31021result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating 31022at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined 31023with the rolling shutter skew to account for lens motion during image exposure in 31024post-processing algorithms.<wbr/></p> 31025 </td> 31026 </tr> 31027 31028 31029 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31030 <!-- end of entry --> 31031 31032 31033 <tr class="entry" id="dynamic_android.statistics.oisTimestamps"> 31034 <td class="entry_name 31035 " rowspan="3"> 31036 android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps 31037 </td> 31038 <td class="entry_type"> 31039 <span class="entry_type_name">int64</span> 31040 <span class="entry_type_container">x</span> 31041 31042 <span class="entry_type_array"> 31043 n 31044 </span> 31045 <span class="entry_type_visibility"> [ndk_public]</span> 31046 31047 31048 31049 31050 31051 31052 </td> <!-- entry_type --> 31053 31054 <td class="entry_description"> 31055 <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p> 31056 </td> 31057 31058 <td class="entry_units"> 31059 nanoseconds 31060 </td> 31061 31062 <td class="entry_range"> 31063 </td> 31064 31065 <td class="entry_hal_version"> 31066 <p>3.<wbr/>3</p> 31067 </td> 31068 31069 <td class="entry_tags"> 31070 </td> 31071 31072 </tr> 31073 <tr class="entries_header"> 31074 <th class="th_details" colspan="6">Details</th> 31075 </tr> 31076 <tr class="entry_cont"> 31077 <td class="entry_details" colspan="6"> 31078 <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same 31079timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p> 31080 </td> 31081 </tr> 31082 31083 31084 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31085 <!-- end of entry --> 31086 31087 31088 <tr class="entry" id="dynamic_android.statistics.oisXShifts"> 31089 <td class="entry_name 31090 " rowspan="3"> 31091 android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts 31092 </td> 31093 <td class="entry_type"> 31094 <span class="entry_type_name">float</span> 31095 <span class="entry_type_container">x</span> 31096 31097 <span class="entry_type_array"> 31098 n 31099 </span> 31100 <span class="entry_type_visibility"> [ndk_public]</span> 31101 31102 31103 31104 31105 31106 31107 </td> <!-- entry_type --> 31108 31109 <td class="entry_description"> 31110 <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p> 31111 </td> 31112 31113 <td class="entry_units"> 31114 Pixels in active array.<wbr/> 31115 </td> 31116 31117 <td class="entry_range"> 31118 </td> 31119 31120 <td class="entry_hal_version"> 31121 <p>3.<wbr/>3</p> 31122 </td> 31123 31124 <td class="entry_tags"> 31125 </td> 31126 31127 </tr> 31128 <tr class="entries_header"> 31129 <th class="th_details" colspan="6">Details</th> 31130 </tr> 31131 <tr class="entry_cont"> 31132 <td class="entry_details" colspan="6"> 31133 <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/> 31134A positive value is a shift from left to right in the pre-correction active array 31135coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in pre-correction 31136active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p> 31137<p>The number of shifts must match the number of timestamps in 31138<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p> 31139<p>The OIS samples are not affected by whether lens distortion correction is enabled (on 31140supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/> 31141since the scaling of OIS shifts would depend on the specific spot on the sensor the shift 31142is needed.<wbr/></p> 31143 </td> 31144 </tr> 31145 31146 31147 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31148 <!-- end of entry --> 31149 31150 31151 <tr class="entry" id="dynamic_android.statistics.oisYShifts"> 31152 <td class="entry_name 31153 " rowspan="3"> 31154 android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts 31155 </td> 31156 <td class="entry_type"> 31157 <span class="entry_type_name">float</span> 31158 <span class="entry_type_container">x</span> 31159 31160 <span class="entry_type_array"> 31161 n 31162 </span> 31163 <span class="entry_type_visibility"> [ndk_public]</span> 31164 31165 31166 31167 31168 31169 31170 </td> <!-- entry_type --> 31171 31172 <td class="entry_description"> 31173 <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p> 31174 </td> 31175 31176 <td class="entry_units"> 31177 Pixels in active array.<wbr/> 31178 </td> 31179 31180 <td class="entry_range"> 31181 </td> 31182 31183 <td class="entry_hal_version"> 31184 <p>3.<wbr/>3</p> 31185 </td> 31186 31187 <td class="entry_tags"> 31188 </td> 31189 31190 </tr> 31191 <tr class="entries_header"> 31192 <th class="th_details" colspan="6">Details</th> 31193 </tr> 31194 <tr class="entry_cont"> 31195 <td class="entry_details" colspan="6"> 31196 <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/> 31197A positive value is a shift from top to bottom in pre-correction active array coordinate 31198system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a 31199shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p> 31200<p>The number of shifts must match the number of timestamps in 31201<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p> 31202<p>The OIS samples are not affected by whether lens distortion correction is enabled (on 31203supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/> 31204since the scaling of OIS shifts would depend on the specific spot on the sensor the shift 31205is needed.<wbr/></p> 31206 </td> 31207 </tr> 31208 31209 31210 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31211 <!-- end of entry --> 31212 31213 31214 <tr class="entry" id="dynamic_android.statistics.oisSamples"> 31215 <td class="entry_name 31216 " rowspan="3"> 31217 android.<wbr/>statistics.<wbr/>ois<wbr/>Samples 31218 </td> 31219 <td class="entry_type"> 31220 <span class="entry_type_name">float</span> 31221 <span class="entry_type_container">x</span> 31222 31223 <span class="entry_type_array"> 31224 n 31225 </span> 31226 <span class="entry_type_visibility"> [java_public as oisSample]</span> 31227 31228 <span class="entry_type_synthetic">[synthetic] </span> 31229 31230 31231 31232 31233 31234 </td> <!-- entry_type --> 31235 31236 <td class="entry_description"> 31237 <p>An array of optical stabilization (OIS) position samples.<wbr/></p> 31238 </td> 31239 31240 <td class="entry_units"> 31241 </td> 31242 31243 <td class="entry_range"> 31244 </td> 31245 31246 <td class="entry_hal_version"> 31247 <p>3.<wbr/>3</p> 31248 </td> 31249 31250 <td class="entry_tags"> 31251 </td> 31252 31253 </tr> 31254 <tr class="entries_header"> 31255 <th class="th_details" colspan="6">Details</th> 31256 </tr> 31257 <tr class="entry_cont"> 31258 <td class="entry_details" colspan="6"> 31259 <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/> 31260in pixels,<wbr/> of the OIS sample.<wbr/></p> 31261<p>A positive value for a shift in x direction is a shift from left to right in the 31262pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is 31263(1000,<wbr/> 500) in pre-correction active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new 31264optical center at (1003,<wbr/> 500).<wbr/></p> 31265<p>A positive value for a shift in y direction is a shift from top to bottom in 31266pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is 31267(1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at 31268(1000,<wbr/> 505).<wbr/></p> 31269<p>The OIS samples are not affected by whether lens distortion correction is enabled (on 31270supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/> 31271since the scaling of OIS shifts would depend on the specific spot on the sensor the shift 31272is needed.<wbr/></p> 31273 </td> 31274 </tr> 31275 31276 31277 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31278 <!-- end of entry --> 31279 31280 31281 31282 <!-- end of kind --> 31283 </tbody> 31284 31285 <!-- end of section --> 31286 <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr> 31287 31288 31289 <tr><td colspan="7" class="kind">controls</td></tr> 31290 31291 <thead class="entries_header"> 31292 <tr> 31293 <th class="th_name">Property Name</th> 31294 <th class="th_type">Type</th> 31295 <th class="th_description">Description</th> 31296 <th class="th_units">Units</th> 31297 <th class="th_range">Range</th> 31298 <th class="th_hal_version">Initial HIDL HAL version</th> 31299 <th class="th_tags">Tags</th> 31300 </tr> 31301 </thead> 31302 31303 <tbody> 31304 31305 31306 31307 31308 31309 31310 31311 31312 31313 31314 <tr class="entry" id="controls_android.tonemap.curveBlue"> 31315 <td class="entry_name 31316 " rowspan="3"> 31317 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 31318 </td> 31319 <td class="entry_type"> 31320 <span class="entry_type_name">float</span> 31321 <span class="entry_type_container">x</span> 31322 31323 <span class="entry_type_array"> 31324 n x 2 31325 </span> 31326 <span class="entry_type_visibility"> [ndk_public]</span> 31327 31328 31329 <span class="entry_type_hwlevel">[full] </span> 31330 31331 31332 <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> 31333 31334 31335 </td> <!-- entry_type --> 31336 31337 <td class="entry_description"> 31338 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 31339channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 31340CONTRAST_<wbr/>CURVE.<wbr/></p> 31341 </td> 31342 31343 <td class="entry_units"> 31344 </td> 31345 31346 <td class="entry_range"> 31347 </td> 31348 31349 <td class="entry_hal_version"> 31350 <p>3.<wbr/>2</p> 31351 </td> 31352 31353 <td class="entry_tags"> 31354 </td> 31355 31356 </tr> 31357 <tr class="entries_header"> 31358 <th class="th_details" colspan="6">Details</th> 31359 </tr> 31360 <tr class="entry_cont"> 31361 <td class="entry_details" colspan="6"> 31362 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 31363 </td> 31364 </tr> 31365 31366 31367 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31368 <!-- end of entry --> 31369 31370 31371 <tr class="entry" id="controls_android.tonemap.curveGreen"> 31372 <td class="entry_name 31373 " rowspan="3"> 31374 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 31375 </td> 31376 <td class="entry_type"> 31377 <span class="entry_type_name">float</span> 31378 <span class="entry_type_container">x</span> 31379 31380 <span class="entry_type_array"> 31381 n x 2 31382 </span> 31383 <span class="entry_type_visibility"> [ndk_public]</span> 31384 31385 31386 <span class="entry_type_hwlevel">[full] </span> 31387 31388 31389 <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> 31390 31391 31392 </td> <!-- entry_type --> 31393 31394 <td class="entry_description"> 31395 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 31396channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 31397CONTRAST_<wbr/>CURVE.<wbr/></p> 31398 </td> 31399 31400 <td class="entry_units"> 31401 </td> 31402 31403 <td class="entry_range"> 31404 </td> 31405 31406 <td class="entry_hal_version"> 31407 <p>3.<wbr/>2</p> 31408 </td> 31409 31410 <td class="entry_tags"> 31411 </td> 31412 31413 </tr> 31414 <tr class="entries_header"> 31415 <th class="th_details" colspan="6">Details</th> 31416 </tr> 31417 <tr class="entry_cont"> 31418 <td class="entry_details" colspan="6"> 31419 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 31420 </td> 31421 </tr> 31422 31423 31424 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31425 <!-- end of entry --> 31426 31427 31428 <tr class="entry" id="controls_android.tonemap.curveRed"> 31429 <td class="entry_name 31430 " rowspan="5"> 31431 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 31432 </td> 31433 <td class="entry_type"> 31434 <span class="entry_type_name">float</span> 31435 <span class="entry_type_container">x</span> 31436 31437 <span class="entry_type_array"> 31438 n x 2 31439 </span> 31440 <span class="entry_type_visibility"> [ndk_public]</span> 31441 31442 31443 <span class="entry_type_hwlevel">[full] </span> 31444 31445 31446 <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> 31447 31448 31449 </td> <!-- entry_type --> 31450 31451 <td class="entry_description"> 31452 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 31453channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 31454CONTRAST_<wbr/>CURVE.<wbr/></p> 31455 </td> 31456 31457 <td class="entry_units"> 31458 </td> 31459 31460 <td class="entry_range"> 31461 <p>0-1 on both input and output coordinates,<wbr/> normalized 31462as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 31463 </td> 31464 31465 <td class="entry_hal_version"> 31466 <p>3.<wbr/>2</p> 31467 </td> 31468 31469 <td class="entry_tags"> 31470 </td> 31471 31472 </tr> 31473 <tr class="entries_header"> 31474 <th class="th_details" colspan="6">Details</th> 31475 </tr> 31476 <tr class="entry_cont"> 31477 <td class="entry_details" colspan="6"> 31478 <p>Each channel's curve is defined by an array of control points:</p> 31479<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 31480 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 314812 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 31482<p>These are sorted in order of increasing <code>Pin</code>; it is 31483required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 31484define a complete mapping.<wbr/> For input values between control points,<wbr/> 31485the camera device must linearly interpolate between the control 31486points.<wbr/></p> 31487<p>Each curve can have an independent number of points,<wbr/> and the number 31488of points can be less than max (that is,<wbr/> the request doesn't have to 31489always provide a curve with number of points equivalent to 31490<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 31491<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of 31492control points.<wbr/></p> 31493<p>A few examples,<wbr/> and their corresponding graphical mappings; these 31494only specify the red channel and the precision is limited to 4 31495digits,<wbr/> for conciseness.<wbr/></p> 31496<p>Linear mapping:</p> 31497<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 ] 31498</code></pre> 31499<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 31500<p>Invert mapping:</p> 31501<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 ] 31502</code></pre> 31503<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 31504<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 31505<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 31506 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/> 31507 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/> 31508 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/> 31509 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 ] 31510</code></pre> 31511<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 31512<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 31513<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 31514 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/> 31515 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/> 31516 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/> 31517 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 ] 31518</code></pre> 31519<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 31520 </td> 31521 </tr> 31522 31523 <tr class="entries_header"> 31524 <th class="th_details" colspan="6">HAL Implementation Details</th> 31525 </tr> 31526 <tr class="entry_cont"> 31527 <td class="entry_details" colspan="6"> 31528 <p>For good quality of mapping,<wbr/> at least 128 control points are 31529preferred.<wbr/></p> 31530<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 31531control points used as are available.<wbr/></p> 31532 </td> 31533 </tr> 31534 31535 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31536 <!-- end of entry --> 31537 31538 31539 <tr class="entry" id="controls_android.tonemap.curve"> 31540 <td class="entry_name 31541 " rowspan="5"> 31542 android.<wbr/>tonemap.<wbr/>curve 31543 </td> 31544 <td class="entry_type"> 31545 <span class="entry_type_name">float</span> 31546 31547 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span> 31548 31549 <span class="entry_type_synthetic">[synthetic] </span> 31550 31551 <span class="entry_type_hwlevel">[full] </span> 31552 31553 31554 31555 31556 </td> <!-- entry_type --> 31557 31558 <td class="entry_description"> 31559 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 31560is CONTRAST_<wbr/>CURVE.<wbr/></p> 31561 </td> 31562 31563 <td class="entry_units"> 31564 </td> 31565 31566 <td class="entry_range"> 31567 </td> 31568 31569 <td class="entry_hal_version"> 31570 <p>3.<wbr/>2</p> 31571 </td> 31572 31573 <td class="entry_tags"> 31574 </td> 31575 31576 </tr> 31577 <tr class="entries_header"> 31578 <th class="th_details" colspan="6">Details</th> 31579 </tr> 31580 <tr class="entry_cont"> 31581 <td class="entry_details" colspan="6"> 31582 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 31583channels respectively.<wbr/> The following example uses the red channel as an 31584example.<wbr/> The same logic applies to green and blue channel.<wbr/> 31585Each channel's curve is defined by an array of control points:</p> 31586<pre><code>curveRed = 31587 [ 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) ] 315882 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 31589<p>These are sorted in order of increasing <code>Pin</code>; it is always 31590guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 31591define a complete mapping.<wbr/> For input values between control points,<wbr/> 31592the camera device must linearly interpolate between the control 31593points.<wbr/></p> 31594<p>Each curve can have an independent number of points,<wbr/> and the number 31595of points can be less than max (that is,<wbr/> the request doesn't have to 31596always provide a curve with number of points equivalent to 31597<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 31598<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of 31599control points.<wbr/></p> 31600<p>A few examples,<wbr/> and their corresponding graphical mappings; these 31601only specify the red channel and the precision is limited to 4 31602digits,<wbr/> for conciseness.<wbr/></p> 31603<p>Linear mapping:</p> 31604<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 31605</code></pre> 31606<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 31607<p>Invert mapping:</p> 31608<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 31609</code></pre> 31610<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 31611<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 31612<pre><code>curveRed = [ 31613 (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/> 31614 (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/> 31615 (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/> 31616 (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) ] 31617</code></pre> 31618<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 31619<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 31620<pre><code>curveRed = [ 31621 (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/> 31622 (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/> 31623 (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/> 31624 (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) ] 31625</code></pre> 31626<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 31627 </td> 31628 </tr> 31629 31630 <tr class="entries_header"> 31631 <th class="th_details" colspan="6">HAL Implementation Details</th> 31632 </tr> 31633 <tr class="entry_cont"> 31634 <td class="entry_details" colspan="6"> 31635 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 31636curveBlue entries.<wbr/></p> 31637 </td> 31638 </tr> 31639 31640 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31641 <!-- end of entry --> 31642 31643 31644 <tr class="entry" id="controls_android.tonemap.mode"> 31645 <td class="entry_name 31646 " rowspan="3"> 31647 android.<wbr/>tonemap.<wbr/>mode 31648 </td> 31649 <td class="entry_type"> 31650 <span class="entry_type_name entry_type_name_enum">byte</span> 31651 31652 <span class="entry_type_visibility"> [public]</span> 31653 31654 31655 <span class="entry_type_hwlevel">[full] </span> 31656 31657 31658 31659 <ul class="entry_type_enum"> 31660 <li> 31661 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span> 31662 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 31663the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 31664<p>All color enhancement and tonemapping must be disabled,<wbr/> except 31665for applying the tonemapping curve specified by 31666<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 31667<p>Must not slow down frame rate relative to raw 31668sensor output.<wbr/></p></span> 31669 </li> 31670 <li> 31671 <span class="entry_type_enum_name">FAST (v3.2)</span> 31672 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 31673reducing frame rate compared to raw sensor output.<wbr/></p></span> 31674 </li> 31675 <li> 31676 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 31677 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 31678the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 31679 </li> 31680 <li> 31681 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span> 31682 <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform 31683tonemapping.<wbr/></p> 31684<p>All color enhancement and tonemapping must be disabled,<wbr/> except 31685for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 31686<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 31687 </li> 31688 <li> 31689 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span> 31690 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 31691<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 31692<p>All color enhancement and tonemapping must be disabled,<wbr/> except 31693for applying the tonemapping curve specified by 31694<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 31695<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 31696 </li> 31697 </ul> 31698 31699 </td> <!-- entry_type --> 31700 31701 <td class="entry_description"> 31702 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 31703 </td> 31704 31705 <td class="entry_units"> 31706 </td> 31707 31708 <td class="entry_range"> 31709 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 31710 </td> 31711 31712 <td class="entry_hal_version"> 31713 <p>3.<wbr/>2</p> 31714 </td> 31715 31716 <td class="entry_tags"> 31717 </td> 31718 31719 </tr> 31720 <tr class="entries_header"> 31721 <th class="th_details" colspan="6">Details</th> 31722 </tr> 31723 <tr class="entry_cont"> 31724 <td class="entry_details" colspan="6"> 31725 <p>When switching to an application-defined contrast curve by setting 31726<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 31727per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 31728mapping from input high-bit-depth pixel value to the output 31729low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 31730and output may change depending on the camera pipeline,<wbr/> the values 31731are specified by normalized floating-point numbers.<wbr/></p> 31732<p>More-complex color mapping operations such as 3D color look-up 31733tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 31734transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 31735CONTRAST_<wbr/>CURVE.<wbr/></p> 31736<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 31737emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 31738These values are always available,<wbr/> and as close as possible to the 31739actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 31740<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 31741provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 31742roughly the same.<wbr/></p> 31743 </td> 31744 </tr> 31745 31746 31747 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31748 <!-- end of entry --> 31749 31750 31751 <tr class="entry" id="controls_android.tonemap.gamma"> 31752 <td class="entry_name 31753 " rowspan="3"> 31754 android.<wbr/>tonemap.<wbr/>gamma 31755 </td> 31756 <td class="entry_type"> 31757 <span class="entry_type_name">float</span> 31758 31759 <span class="entry_type_visibility"> [public]</span> 31760 31761 31762 31763 31764 31765 31766 </td> <!-- entry_type --> 31767 31768 <td class="entry_description"> 31769 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 31770GAMMA_<wbr/>VALUE</p> 31771 </td> 31772 31773 <td class="entry_units"> 31774 </td> 31775 31776 <td class="entry_range"> 31777 </td> 31778 31779 <td class="entry_hal_version"> 31780 <p>3.<wbr/>2</p> 31781 </td> 31782 31783 <td class="entry_tags"> 31784 </td> 31785 31786 </tr> 31787 <tr class="entries_header"> 31788 <th class="th_details" colspan="6">Details</th> 31789 </tr> 31790 <tr class="entry_cont"> 31791 <td class="entry_details" colspan="6"> 31792 <p>The tonemap curve will be defined the following formula: 31793* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 31794where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 31795pow is the power function and gamma is the gamma value specified by this 31796key.<wbr/></p> 31797<p>The same curve will be applied to all color channels.<wbr/> The camera device 31798may clip the input gamma value to its supported range.<wbr/> The actual applied 31799value will be returned in capture result.<wbr/></p> 31800<p>The valid range of gamma value varies on different devices,<wbr/> but values 31801within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 31802 </td> 31803 </tr> 31804 31805 31806 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31807 <!-- end of entry --> 31808 31809 31810 <tr class="entry" id="controls_android.tonemap.presetCurve"> 31811 <td class="entry_name 31812 " rowspan="3"> 31813 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 31814 </td> 31815 <td class="entry_type"> 31816 <span class="entry_type_name entry_type_name_enum">byte</span> 31817 31818 <span class="entry_type_visibility"> [public]</span> 31819 31820 31821 31822 31823 31824 <ul class="entry_type_enum"> 31825 <li> 31826 <span class="entry_type_enum_name">SRGB (v3.2)</span> 31827 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 31828 </li> 31829 <li> 31830 <span class="entry_type_enum_name">REC709 (v3.2)</span> 31831 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 31832 </li> 31833 </ul> 31834 31835 </td> <!-- entry_type --> 31836 31837 <td class="entry_description"> 31838 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 31839PRESET_<wbr/>CURVE</p> 31840 </td> 31841 31842 <td class="entry_units"> 31843 </td> 31844 31845 <td class="entry_range"> 31846 </td> 31847 31848 <td class="entry_hal_version"> 31849 <p>3.<wbr/>2</p> 31850 </td> 31851 31852 <td class="entry_tags"> 31853 </td> 31854 31855 </tr> 31856 <tr class="entries_header"> 31857 <th class="th_details" colspan="6">Details</th> 31858 </tr> 31859 <tr class="entry_cont"> 31860 <td class="entry_details" colspan="6"> 31861 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 31862<p>sRGB (approximated by 16 control points):</p> 31863<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 31864<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 31865<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 31866<p>Note that above figures show a 16 control points approximation of preset 31867curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 31868 </td> 31869 </tr> 31870 31871 31872 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31873 <!-- end of entry --> 31874 31875 31876 31877 <!-- end of kind --> 31878 </tbody> 31879 <tr><td colspan="7" class="kind">static</td></tr> 31880 31881 <thead class="entries_header"> 31882 <tr> 31883 <th class="th_name">Property Name</th> 31884 <th class="th_type">Type</th> 31885 <th class="th_description">Description</th> 31886 <th class="th_units">Units</th> 31887 <th class="th_range">Range</th> 31888 <th class="th_hal_version">Initial HIDL HAL version</th> 31889 <th class="th_tags">Tags</th> 31890 </tr> 31891 </thead> 31892 31893 <tbody> 31894 31895 31896 31897 31898 31899 31900 31901 31902 31903 31904 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 31905 <td class="entry_name 31906 " rowspan="5"> 31907 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 31908 </td> 31909 <td class="entry_type"> 31910 <span class="entry_type_name">int32</span> 31911 31912 <span class="entry_type_visibility"> [public]</span> 31913 31914 31915 <span class="entry_type_hwlevel">[full] </span> 31916 31917 31918 31919 31920 </td> <!-- entry_type --> 31921 31922 <td class="entry_description"> 31923 <p>Maximum number of supported points in the 31924tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 31925 </td> 31926 31927 <td class="entry_units"> 31928 </td> 31929 31930 <td class="entry_range"> 31931 </td> 31932 31933 <td class="entry_hal_version"> 31934 <p>3.<wbr/>2</p> 31935 </td> 31936 31937 <td class="entry_tags"> 31938 </td> 31939 31940 </tr> 31941 <tr class="entries_header"> 31942 <th class="th_details" colspan="6">Details</th> 31943 </tr> 31944 <tr class="entry_cont"> 31945 <td class="entry_details" colspan="6"> 31946 <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 31947less than this maximum,<wbr/> the camera device will resample the curve to its internal 31948representation,<wbr/> using linear interpolation.<wbr/></p> 31949<p>The output curves in the result metadata may have a different number 31950of points than the input curves,<wbr/> and will represent the actual 31951hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 31952 </td> 31953 </tr> 31954 31955 <tr class="entries_header"> 31956 <th class="th_details" colspan="6">HAL Implementation Details</th> 31957 </tr> 31958 <tr class="entry_cont"> 31959 <td class="entry_details" colspan="6"> 31960 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 31961 </td> 31962 </tr> 31963 31964 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 31965 <!-- end of entry --> 31966 31967 31968 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 31969 <td class="entry_name 31970 " rowspan="5"> 31971 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 31972 </td> 31973 <td class="entry_type"> 31974 <span class="entry_type_name">byte</span> 31975 <span class="entry_type_container">x</span> 31976 31977 <span class="entry_type_array"> 31978 n 31979 </span> 31980 <span class="entry_type_visibility"> [public as enumList]</span> 31981 31982 31983 <span class="entry_type_hwlevel">[full] </span> 31984 31985 31986 <div class="entry_type_notes">list of enums</div> 31987 31988 31989 </td> <!-- entry_type --> 31990 31991 <td class="entry_description"> 31992 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera 31993device.<wbr/></p> 31994 </td> 31995 31996 <td class="entry_units"> 31997 </td> 31998 31999 <td class="entry_range"> 32000 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p> 32001 </td> 32002 32003 <td class="entry_hal_version"> 32004 <p>3.<wbr/>2</p> 32005 </td> 32006 32007 <td class="entry_tags"> 32008 </td> 32009 32010 </tr> 32011 <tr class="entries_header"> 32012 <th class="th_details" colspan="6">Details</th> 32013 </tr> 32014 <tr class="entry_cont"> 32015 <td class="entry_details" colspan="6"> 32016 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain 32017at least one of below mode combinations:</p> 32018<ul> 32019<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 32020<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 32021</ul> 32022<p>This includes all FULL level devices.<wbr/></p> 32023 </td> 32024 </tr> 32025 32026 <tr class="entries_header"> 32027 <th class="th_details" colspan="6">HAL Implementation Details</th> 32028 </tr> 32029 <tr class="entry_cont"> 32030 <td class="entry_details" colspan="6"> 32031 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available 32032on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 32033That is,<wbr/> if the highest quality implementation on the camera device does not slow down 32034capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 32035 </td> 32036 </tr> 32037 32038 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32039 <!-- end of entry --> 32040 32041 32042 32043 <!-- end of kind --> 32044 </tbody> 32045 <tr><td colspan="7" class="kind">dynamic</td></tr> 32046 32047 <thead class="entries_header"> 32048 <tr> 32049 <th class="th_name">Property Name</th> 32050 <th class="th_type">Type</th> 32051 <th class="th_description">Description</th> 32052 <th class="th_units">Units</th> 32053 <th class="th_range">Range</th> 32054 <th class="th_hal_version">Initial HIDL HAL version</th> 32055 <th class="th_tags">Tags</th> 32056 </tr> 32057 </thead> 32058 32059 <tbody> 32060 32061 32062 32063 32064 32065 32066 32067 32068 32069 32070 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 32071 <td class="entry_name 32072 " rowspan="3"> 32073 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 32074 </td> 32075 <td class="entry_type"> 32076 <span class="entry_type_name">float</span> 32077 <span class="entry_type_container">x</span> 32078 32079 <span class="entry_type_array"> 32080 n x 2 32081 </span> 32082 <span class="entry_type_visibility"> [ndk_public]</span> 32083 32084 32085 <span class="entry_type_hwlevel">[full] </span> 32086 32087 32088 <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> 32089 32090 32091 </td> <!-- entry_type --> 32092 32093 <td class="entry_description"> 32094 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 32095channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 32096CONTRAST_<wbr/>CURVE.<wbr/></p> 32097 </td> 32098 32099 <td class="entry_units"> 32100 </td> 32101 32102 <td class="entry_range"> 32103 </td> 32104 32105 <td class="entry_hal_version"> 32106 <p>3.<wbr/>2</p> 32107 </td> 32108 32109 <td class="entry_tags"> 32110 </td> 32111 32112 </tr> 32113 <tr class="entries_header"> 32114 <th class="th_details" colspan="6">Details</th> 32115 </tr> 32116 <tr class="entry_cont"> 32117 <td class="entry_details" colspan="6"> 32118 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 32119 </td> 32120 </tr> 32121 32122 32123 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32124 <!-- end of entry --> 32125 32126 32127 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 32128 <td class="entry_name 32129 " rowspan="3"> 32130 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 32131 </td> 32132 <td class="entry_type"> 32133 <span class="entry_type_name">float</span> 32134 <span class="entry_type_container">x</span> 32135 32136 <span class="entry_type_array"> 32137 n x 2 32138 </span> 32139 <span class="entry_type_visibility"> [ndk_public]</span> 32140 32141 32142 <span class="entry_type_hwlevel">[full] </span> 32143 32144 32145 <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> 32146 32147 32148 </td> <!-- entry_type --> 32149 32150 <td class="entry_description"> 32151 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 32152channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 32153CONTRAST_<wbr/>CURVE.<wbr/></p> 32154 </td> 32155 32156 <td class="entry_units"> 32157 </td> 32158 32159 <td class="entry_range"> 32160 </td> 32161 32162 <td class="entry_hal_version"> 32163 <p>3.<wbr/>2</p> 32164 </td> 32165 32166 <td class="entry_tags"> 32167 </td> 32168 32169 </tr> 32170 <tr class="entries_header"> 32171 <th class="th_details" colspan="6">Details</th> 32172 </tr> 32173 <tr class="entry_cont"> 32174 <td class="entry_details" colspan="6"> 32175 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 32176 </td> 32177 </tr> 32178 32179 32180 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32181 <!-- end of entry --> 32182 32183 32184 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 32185 <td class="entry_name 32186 " rowspan="5"> 32187 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 32188 </td> 32189 <td class="entry_type"> 32190 <span class="entry_type_name">float</span> 32191 <span class="entry_type_container">x</span> 32192 32193 <span class="entry_type_array"> 32194 n x 2 32195 </span> 32196 <span class="entry_type_visibility"> [ndk_public]</span> 32197 32198 32199 <span class="entry_type_hwlevel">[full] </span> 32200 32201 32202 <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> 32203 32204 32205 </td> <!-- entry_type --> 32206 32207 <td class="entry_description"> 32208 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 32209channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 32210CONTRAST_<wbr/>CURVE.<wbr/></p> 32211 </td> 32212 32213 <td class="entry_units"> 32214 </td> 32215 32216 <td class="entry_range"> 32217 <p>0-1 on both input and output coordinates,<wbr/> normalized 32218as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 32219 </td> 32220 32221 <td class="entry_hal_version"> 32222 <p>3.<wbr/>2</p> 32223 </td> 32224 32225 <td class="entry_tags"> 32226 </td> 32227 32228 </tr> 32229 <tr class="entries_header"> 32230 <th class="th_details" colspan="6">Details</th> 32231 </tr> 32232 <tr class="entry_cont"> 32233 <td class="entry_details" colspan="6"> 32234 <p>Each channel's curve is defined by an array of control points:</p> 32235<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 32236 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 322372 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 32238<p>These are sorted in order of increasing <code>Pin</code>; it is 32239required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 32240define a complete mapping.<wbr/> For input values between control points,<wbr/> 32241the camera device must linearly interpolate between the control 32242points.<wbr/></p> 32243<p>Each curve can have an independent number of points,<wbr/> and the number 32244of points can be less than max (that is,<wbr/> the request doesn't have to 32245always provide a curve with number of points equivalent to 32246<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 32247<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of 32248control points.<wbr/></p> 32249<p>A few examples,<wbr/> and their corresponding graphical mappings; these 32250only specify the red channel and the precision is limited to 4 32251digits,<wbr/> for conciseness.<wbr/></p> 32252<p>Linear mapping:</p> 32253<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 ] 32254</code></pre> 32255<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 32256<p>Invert mapping:</p> 32257<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 ] 32258</code></pre> 32259<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 32260<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 32261<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 32262 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/> 32263 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/> 32264 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/> 32265 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 ] 32266</code></pre> 32267<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 32268<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 32269<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 32270 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/> 32271 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/> 32272 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/> 32273 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 ] 32274</code></pre> 32275<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 32276 </td> 32277 </tr> 32278 32279 <tr class="entries_header"> 32280 <th class="th_details" colspan="6">HAL Implementation Details</th> 32281 </tr> 32282 <tr class="entry_cont"> 32283 <td class="entry_details" colspan="6"> 32284 <p>For good quality of mapping,<wbr/> at least 128 control points are 32285preferred.<wbr/></p> 32286<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 32287control points used as are available.<wbr/></p> 32288 </td> 32289 </tr> 32290 32291 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32292 <!-- end of entry --> 32293 32294 32295 <tr class="entry" id="dynamic_android.tonemap.curve"> 32296 <td class="entry_name 32297 " rowspan="5"> 32298 android.<wbr/>tonemap.<wbr/>curve 32299 </td> 32300 <td class="entry_type"> 32301 <span class="entry_type_name">float</span> 32302 32303 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span> 32304 32305 <span class="entry_type_synthetic">[synthetic] </span> 32306 32307 <span class="entry_type_hwlevel">[full] </span> 32308 32309 32310 32311 32312 </td> <!-- entry_type --> 32313 32314 <td class="entry_description"> 32315 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 32316is CONTRAST_<wbr/>CURVE.<wbr/></p> 32317 </td> 32318 32319 <td class="entry_units"> 32320 </td> 32321 32322 <td class="entry_range"> 32323 </td> 32324 32325 <td class="entry_hal_version"> 32326 <p>3.<wbr/>2</p> 32327 </td> 32328 32329 <td class="entry_tags"> 32330 </td> 32331 32332 </tr> 32333 <tr class="entries_header"> 32334 <th class="th_details" colspan="6">Details</th> 32335 </tr> 32336 <tr class="entry_cont"> 32337 <td class="entry_details" colspan="6"> 32338 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 32339channels respectively.<wbr/> The following example uses the red channel as an 32340example.<wbr/> The same logic applies to green and blue channel.<wbr/> 32341Each channel's curve is defined by an array of control points:</p> 32342<pre><code>curveRed = 32343 [ 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) ] 323442 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 32345<p>These are sorted in order of increasing <code>Pin</code>; it is always 32346guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 32347define a complete mapping.<wbr/> For input values between control points,<wbr/> 32348the camera device must linearly interpolate between the control 32349points.<wbr/></p> 32350<p>Each curve can have an independent number of points,<wbr/> and the number 32351of points can be less than max (that is,<wbr/> the request doesn't have to 32352always provide a curve with number of points equivalent to 32353<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 32354<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of 32355control points.<wbr/></p> 32356<p>A few examples,<wbr/> and their corresponding graphical mappings; these 32357only specify the red channel and the precision is limited to 4 32358digits,<wbr/> for conciseness.<wbr/></p> 32359<p>Linear mapping:</p> 32360<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 32361</code></pre> 32362<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 32363<p>Invert mapping:</p> 32364<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 32365</code></pre> 32366<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 32367<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 32368<pre><code>curveRed = [ 32369 (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/> 32370 (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/> 32371 (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/> 32372 (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) ] 32373</code></pre> 32374<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 32375<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 32376<pre><code>curveRed = [ 32377 (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/> 32378 (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/> 32379 (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/> 32380 (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) ] 32381</code></pre> 32382<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 32383 </td> 32384 </tr> 32385 32386 <tr class="entries_header"> 32387 <th class="th_details" colspan="6">HAL Implementation Details</th> 32388 </tr> 32389 <tr class="entry_cont"> 32390 <td class="entry_details" colspan="6"> 32391 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 32392curveBlue entries.<wbr/></p> 32393 </td> 32394 </tr> 32395 32396 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32397 <!-- end of entry --> 32398 32399 32400 <tr class="entry" id="dynamic_android.tonemap.mode"> 32401 <td class="entry_name 32402 " rowspan="3"> 32403 android.<wbr/>tonemap.<wbr/>mode 32404 </td> 32405 <td class="entry_type"> 32406 <span class="entry_type_name entry_type_name_enum">byte</span> 32407 32408 <span class="entry_type_visibility"> [public]</span> 32409 32410 32411 <span class="entry_type_hwlevel">[full] </span> 32412 32413 32414 32415 <ul class="entry_type_enum"> 32416 <li> 32417 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span> 32418 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 32419the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 32420<p>All color enhancement and tonemapping must be disabled,<wbr/> except 32421for applying the tonemapping curve specified by 32422<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 32423<p>Must not slow down frame rate relative to raw 32424sensor output.<wbr/></p></span> 32425 </li> 32426 <li> 32427 <span class="entry_type_enum_name">FAST (v3.2)</span> 32428 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 32429reducing frame rate compared to raw sensor output.<wbr/></p></span> 32430 </li> 32431 <li> 32432 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 32433 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 32434the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 32435 </li> 32436 <li> 32437 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span> 32438 <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform 32439tonemapping.<wbr/></p> 32440<p>All color enhancement and tonemapping must be disabled,<wbr/> except 32441for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 32442<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 32443 </li> 32444 <li> 32445 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span> 32446 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 32447<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 32448<p>All color enhancement and tonemapping must be disabled,<wbr/> except 32449for applying the tonemapping curve specified by 32450<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 32451<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 32452 </li> 32453 </ul> 32454 32455 </td> <!-- entry_type --> 32456 32457 <td class="entry_description"> 32458 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 32459 </td> 32460 32461 <td class="entry_units"> 32462 </td> 32463 32464 <td class="entry_range"> 32465 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 32466 </td> 32467 32468 <td class="entry_hal_version"> 32469 <p>3.<wbr/>2</p> 32470 </td> 32471 32472 <td class="entry_tags"> 32473 </td> 32474 32475 </tr> 32476 <tr class="entries_header"> 32477 <th class="th_details" colspan="6">Details</th> 32478 </tr> 32479 <tr class="entry_cont"> 32480 <td class="entry_details" colspan="6"> 32481 <p>When switching to an application-defined contrast curve by setting 32482<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 32483per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 32484mapping from input high-bit-depth pixel value to the output 32485low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 32486and output may change depending on the camera pipeline,<wbr/> the values 32487are specified by normalized floating-point numbers.<wbr/></p> 32488<p>More-complex color mapping operations such as 3D color look-up 32489tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 32490transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 32491CONTRAST_<wbr/>CURVE.<wbr/></p> 32492<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 32493emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 32494These values are always available,<wbr/> and as close as possible to the 32495actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 32496<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 32497provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 32498roughly the same.<wbr/></p> 32499 </td> 32500 </tr> 32501 32502 32503 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32504 <!-- end of entry --> 32505 32506 32507 <tr class="entry" id="dynamic_android.tonemap.gamma"> 32508 <td class="entry_name 32509 " rowspan="3"> 32510 android.<wbr/>tonemap.<wbr/>gamma 32511 </td> 32512 <td class="entry_type"> 32513 <span class="entry_type_name">float</span> 32514 32515 <span class="entry_type_visibility"> [public]</span> 32516 32517 32518 32519 32520 32521 32522 </td> <!-- entry_type --> 32523 32524 <td class="entry_description"> 32525 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 32526GAMMA_<wbr/>VALUE</p> 32527 </td> 32528 32529 <td class="entry_units"> 32530 </td> 32531 32532 <td class="entry_range"> 32533 </td> 32534 32535 <td class="entry_hal_version"> 32536 <p>3.<wbr/>2</p> 32537 </td> 32538 32539 <td class="entry_tags"> 32540 </td> 32541 32542 </tr> 32543 <tr class="entries_header"> 32544 <th class="th_details" colspan="6">Details</th> 32545 </tr> 32546 <tr class="entry_cont"> 32547 <td class="entry_details" colspan="6"> 32548 <p>The tonemap curve will be defined the following formula: 32549* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 32550where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 32551pow is the power function and gamma is the gamma value specified by this 32552key.<wbr/></p> 32553<p>The same curve will be applied to all color channels.<wbr/> The camera device 32554may clip the input gamma value to its supported range.<wbr/> The actual applied 32555value will be returned in capture result.<wbr/></p> 32556<p>The valid range of gamma value varies on different devices,<wbr/> but values 32557within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 32558 </td> 32559 </tr> 32560 32561 32562 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32563 <!-- end of entry --> 32564 32565 32566 <tr class="entry" id="dynamic_android.tonemap.presetCurve"> 32567 <td class="entry_name 32568 " rowspan="3"> 32569 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 32570 </td> 32571 <td class="entry_type"> 32572 <span class="entry_type_name entry_type_name_enum">byte</span> 32573 32574 <span class="entry_type_visibility"> [public]</span> 32575 32576 32577 32578 32579 32580 <ul class="entry_type_enum"> 32581 <li> 32582 <span class="entry_type_enum_name">SRGB (v3.2)</span> 32583 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 32584 </li> 32585 <li> 32586 <span class="entry_type_enum_name">REC709 (v3.2)</span> 32587 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 32588 </li> 32589 </ul> 32590 32591 </td> <!-- entry_type --> 32592 32593 <td class="entry_description"> 32594 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 32595PRESET_<wbr/>CURVE</p> 32596 </td> 32597 32598 <td class="entry_units"> 32599 </td> 32600 32601 <td class="entry_range"> 32602 </td> 32603 32604 <td class="entry_hal_version"> 32605 <p>3.<wbr/>2</p> 32606 </td> 32607 32608 <td class="entry_tags"> 32609 </td> 32610 32611 </tr> 32612 <tr class="entries_header"> 32613 <th class="th_details" colspan="6">Details</th> 32614 </tr> 32615 <tr class="entry_cont"> 32616 <td class="entry_details" colspan="6"> 32617 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 32618<p>sRGB (approximated by 16 control points):</p> 32619<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 32620<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 32621<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 32622<p>Note that above figures show a 16 control points approximation of preset 32623curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 32624 </td> 32625 </tr> 32626 32627 32628 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32629 <!-- end of entry --> 32630 32631 32632 32633 <!-- end of kind --> 32634 </tbody> 32635 32636 <!-- end of section --> 32637 <tr><td colspan="7" id="section_led" class="section">led</td></tr> 32638 32639 32640 <tr><td colspan="7" class="kind">controls</td></tr> 32641 32642 <thead class="entries_header"> 32643 <tr> 32644 <th class="th_name">Property Name</th> 32645 <th class="th_type">Type</th> 32646 <th class="th_description">Description</th> 32647 <th class="th_units">Units</th> 32648 <th class="th_range">Range</th> 32649 <th class="th_hal_version">Initial HIDL HAL version</th> 32650 <th class="th_tags">Tags</th> 32651 </tr> 32652 </thead> 32653 32654 <tbody> 32655 32656 32657 32658 32659 32660 32661 32662 32663 32664 32665 <tr class="entry" id="controls_android.led.transmit"> 32666 <td class="entry_name 32667 " rowspan="1"> 32668 android.<wbr/>led.<wbr/>transmit 32669 </td> 32670 <td class="entry_type"> 32671 <span class="entry_type_name entry_type_name_enum">byte</span> 32672 32673 <span class="entry_type_visibility"> [hidden as boolean]</span> 32674 32675 32676 32677 32678 32679 <ul class="entry_type_enum"> 32680 <li> 32681 <span class="entry_type_enum_name">OFF (v3.2)</span> 32682 </li> 32683 <li> 32684 <span class="entry_type_enum_name">ON (v3.2)</span> 32685 </li> 32686 </ul> 32687 32688 </td> <!-- entry_type --> 32689 32690 <td class="entry_description"> 32691 <p>This LED is nominally used to indicate to the user 32692that the camera is powered on and may be streaming images back to the 32693Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 32694disable this when video is processed locally and not transmitted to 32695any untrusted applications.<wbr/></p> 32696<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 32697transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 32698data is stored locally on the device.<wbr/></p> 32699<p>The LED <em>may</em> be off if a trusted application is using the data that 32700doesn't violate the above rules.<wbr/></p> 32701 </td> 32702 32703 <td class="entry_units"> 32704 </td> 32705 32706 <td class="entry_range"> 32707 </td> 32708 32709 <td class="entry_hal_version"> 32710 <p>3.<wbr/>2</p> 32711 </td> 32712 32713 <td class="entry_tags"> 32714 </td> 32715 32716 </tr> 32717 32718 32719 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32720 <!-- end of entry --> 32721 32722 32723 32724 <!-- end of kind --> 32725 </tbody> 32726 <tr><td colspan="7" class="kind">dynamic</td></tr> 32727 32728 <thead class="entries_header"> 32729 <tr> 32730 <th class="th_name">Property Name</th> 32731 <th class="th_type">Type</th> 32732 <th class="th_description">Description</th> 32733 <th class="th_units">Units</th> 32734 <th class="th_range">Range</th> 32735 <th class="th_hal_version">Initial HIDL HAL version</th> 32736 <th class="th_tags">Tags</th> 32737 </tr> 32738 </thead> 32739 32740 <tbody> 32741 32742 32743 32744 32745 32746 32747 32748 32749 32750 32751 <tr class="entry" id="dynamic_android.led.transmit"> 32752 <td class="entry_name 32753 " rowspan="1"> 32754 android.<wbr/>led.<wbr/>transmit 32755 </td> 32756 <td class="entry_type"> 32757 <span class="entry_type_name entry_type_name_enum">byte</span> 32758 32759 <span class="entry_type_visibility"> [hidden as boolean]</span> 32760 32761 32762 32763 32764 32765 <ul class="entry_type_enum"> 32766 <li> 32767 <span class="entry_type_enum_name">OFF (v3.2)</span> 32768 </li> 32769 <li> 32770 <span class="entry_type_enum_name">ON (v3.2)</span> 32771 </li> 32772 </ul> 32773 32774 </td> <!-- entry_type --> 32775 32776 <td class="entry_description"> 32777 <p>This LED is nominally used to indicate to the user 32778that the camera is powered on and may be streaming images back to the 32779Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 32780disable this when video is processed locally and not transmitted to 32781any untrusted applications.<wbr/></p> 32782<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 32783transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 32784data is stored locally on the device.<wbr/></p> 32785<p>The LED <em>may</em> be off if a trusted application is using the data that 32786doesn't violate the above rules.<wbr/></p> 32787 </td> 32788 32789 <td class="entry_units"> 32790 </td> 32791 32792 <td class="entry_range"> 32793 </td> 32794 32795 <td class="entry_hal_version"> 32796 <p>3.<wbr/>2</p> 32797 </td> 32798 32799 <td class="entry_tags"> 32800 </td> 32801 32802 </tr> 32803 32804 32805 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32806 <!-- end of entry --> 32807 32808 32809 32810 <!-- end of kind --> 32811 </tbody> 32812 <tr><td colspan="7" class="kind">static</td></tr> 32813 32814 <thead class="entries_header"> 32815 <tr> 32816 <th class="th_name">Property Name</th> 32817 <th class="th_type">Type</th> 32818 <th class="th_description">Description</th> 32819 <th class="th_units">Units</th> 32820 <th class="th_range">Range</th> 32821 <th class="th_hal_version">Initial HIDL HAL version</th> 32822 <th class="th_tags">Tags</th> 32823 </tr> 32824 </thead> 32825 32826 <tbody> 32827 32828 32829 32830 32831 32832 32833 32834 32835 32836 32837 <tr class="entry" id="static_android.led.availableLeds"> 32838 <td class="entry_name 32839 " rowspan="1"> 32840 android.<wbr/>led.<wbr/>available<wbr/>Leds 32841 </td> 32842 <td class="entry_type"> 32843 <span class="entry_type_name entry_type_name_enum">byte</span> 32844 <span class="entry_type_container">x</span> 32845 32846 <span class="entry_type_array"> 32847 n 32848 </span> 32849 <span class="entry_type_visibility"> [hidden]</span> 32850 32851 32852 32853 32854 32855 <ul class="entry_type_enum"> 32856 <li> 32857 <span class="entry_type_enum_name">TRANSMIT (v3.2)</span> 32858 <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> 32859 </li> 32860 </ul> 32861 32862 </td> <!-- entry_type --> 32863 32864 <td class="entry_description"> 32865 <p>A list of camera LEDs that are available on this system.<wbr/></p> 32866 </td> 32867 32868 <td class="entry_units"> 32869 </td> 32870 32871 <td class="entry_range"> 32872 </td> 32873 32874 <td class="entry_hal_version"> 32875 <p>3.<wbr/>2</p> 32876 </td> 32877 32878 <td class="entry_tags"> 32879 </td> 32880 32881 </tr> 32882 32883 32884 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 32885 <!-- end of entry --> 32886 32887 32888 32889 <!-- end of kind --> 32890 </tbody> 32891 32892 <!-- end of section --> 32893 <tr><td colspan="7" id="section_info" class="section">info</td></tr> 32894 32895 32896 <tr><td colspan="7" class="kind">static</td></tr> 32897 32898 <thead class="entries_header"> 32899 <tr> 32900 <th class="th_name">Property Name</th> 32901 <th class="th_type">Type</th> 32902 <th class="th_description">Description</th> 32903 <th class="th_units">Units</th> 32904 <th class="th_range">Range</th> 32905 <th class="th_hal_version">Initial HIDL HAL version</th> 32906 <th class="th_tags">Tags</th> 32907 </tr> 32908 </thead> 32909 32910 <tbody> 32911 32912 32913 32914 32915 32916 32917 32918 32919 32920 32921 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 32922 <td class="entry_name 32923 " rowspan="5"> 32924 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 32925 </td> 32926 <td class="entry_type"> 32927 <span class="entry_type_name entry_type_name_enum">byte</span> 32928 32929 <span class="entry_type_visibility"> [public]</span> 32930 32931 32932 <span class="entry_type_hwlevel">[legacy] </span> 32933 32934 32935 32936 <ul class="entry_type_enum"> 32937 <li> 32938 <span class="entry_type_enum_name">LIMITED (v3.2)</span> 32939 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or 32940better.<wbr/></p> 32941<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the 32942<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> 32943<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic 32944support for color image capture.<wbr/> The only exception is that the device may 32945alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth 32946measurements and not color images.<wbr/></p> 32947<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> 32948to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before 32949capturing a high-quality still image.<wbr/></p> 32950<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only 32951required to support full-automatic operation and post-processing (<code>OFF</code> is not 32952supported 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 32953<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p> 32954<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and 32955can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span> 32956 </li> 32957 <li> 32958 <span class="entry_type_enum_name">FULL (v3.2)</span> 32959 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p> 32960<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the 32961<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> 32962<p>A <code>FULL</code> device will support below capabilities:</p> 32963<ul> 32964<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 32965 <code>BURST_<wbr/>CAPTURE</code>)</li> 32966<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> 32967<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> 32968<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 32969 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li> 32970<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> 32971<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> 32972</ul> 32973<p>Note: 32974Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region 32975(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level 3297623,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span> 32977 </li> 32978 <li> 32979 <span class="entry_type_enum_name">LEGACY (v3.2)</span> 32980 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p> 32981<p>Only the stream configurations listed in the <code>LEGACY</code> table in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are supported.<wbr/></p> 32982<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual 32983post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/> 32984No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a 32985<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 32986<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> 32987devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated 32988as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may 32989fire the flash for flash power metering during precapture,<wbr/> and then fire the flash 32990for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to 32991enable the flash.<wbr/></p> 32992<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> 32993 </li> 32994 <li> 32995 <span class="entry_type_enum_name">3 (v3.2)</span> 32996 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to 32997FULL-level capabilities.<wbr/></p> 32998<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 32999<code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> 33000<p>The following additional capabilities are guaranteed to be supported:</p> 33001<ul> 33002<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 33003 <code>YUV_<wbr/>REPROCESSING</code>)</li> 33004<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 33005 <code>RAW</code>)</li> 33006</ul></span> 33007 </li> 33008 <li> 33009 <span class="entry_type_enum_name">EXTERNAL (v3.3)</span> 33010 <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p> 33011<p>The device has capability identical to a LIMITED level device,<wbr/> with the following 33012exceptions:</p> 33013<ul> 33014<li>The device may not report lens/<wbr/>sensor related information such as<ul> 33015<li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li> 33016<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li> 33017<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li> 33018<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li> 33019<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li> 33020<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li> 33021<li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li> 33022</ul> 33023</li> 33024<li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li> 33025<li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends 33026 on the external camera being used.<wbr/></li> 33027</ul></span> 33028 </li> 33029 </ul> 33030 33031 </td> <!-- entry_type --> 33032 33033 <td class="entry_description"> 33034 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 33035 </td> 33036 33037 <td class="entry_units"> 33038 </td> 33039 33040 <td class="entry_range"> 33041 </td> 33042 33043 <td class="entry_hal_version"> 33044 <p>3.<wbr/>2</p> 33045 </td> 33046 33047 <td class="entry_tags"> 33048 </td> 33049 33050 </tr> 33051 <tr class="entries_header"> 33052 <th class="th_details" colspan="6">Details</th> 33053 </tr> 33054 <tr class="entry_cont"> 33055 <td class="entry_details" colspan="6"> 33056 <p>The supported hardware level is a high-level description of the camera device's 33057capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional 33058features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/> 33059The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p> 33060<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing 33061numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/> 33062the following code snippet can be used:</p> 33063<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/> 33064boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) { 33065 final int[] sortedHwLevels = { 33066 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY,<wbr/> 33067 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>EXTERNAL,<wbr/> 33068 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LIMITED,<wbr/> 33069 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>FULL,<wbr/> 33070 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>3 33071 }; 33072 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL); 33073 if (requiredLevel == deviceLevel) { 33074 return true; 33075 } 33076 33077 for (int sortedlevel : sortedHwLevels) { 33078 if (sortedlevel == requiredLevel) { 33079 return true; 33080 } else if (sortedlevel == deviceLevel) { 33081 return false; 33082 } 33083 } 33084 return false; //<wbr/> Should never reach here 33085} 33086</code></pre> 33087<p>At a high level,<wbr/> the levels are:</p> 33088<ul> 33089<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older 33090 Android devices,<wbr/> and have very limited capabilities.<wbr/></li> 33091<li><code>LIMITED</code> devices represent the 33092 baseline feature set,<wbr/> and may also include additional capabilities that are 33093 subsets of <code>FULL</code>.<wbr/></li> 33094<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and 33095 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li> 33096<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along 33097 with additional output stream configurations.<wbr/></li> 33098<li><code>EXTERNAL</code> devices are similar to <code>LIMITED</code> devices with exceptions like some sensor or 33099 lens information not reported or less stable framerates.<wbr/></li> 33100</ul> 33101<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The 33102<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a 33103finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or 33104ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 33105<p>Some features are not part of any particular hardware level or capability and must be 33106queried separately.<wbr/> These include:</p> 33107<ul> 33108<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li> 33109<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> 33110<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> 33111<li>Optical or electrical image stabilization 33112 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/> 33113 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li> 33114</ul> 33115 </td> 33116 </tr> 33117 33118 <tr class="entries_header"> 33119 <th class="th_details" colspan="6">HAL Implementation Details</th> 33120 </tr> 33121 <tr class="entry_cont"> 33122 <td class="entry_details" colspan="6"> 33123 <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/> 33124FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p> 33125<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited 33126mode has hardware requirements roughly in line with those for a camera HAL device v1 33127implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict 33128superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p> 33129<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 33130<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in 33131the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is 33132implemented by the camera framework code.<wbr/></p> 33133<p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend 33134on the external camera being used and is not fully controlled by the device manufacturer.<wbr/> 33135The ITS test suite is exempted for the same reason.<wbr/></p> 33136 </td> 33137 </tr> 33138 33139 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33140 <!-- end of entry --> 33141 33142 33143 <tr class="entry" id="static_android.info.version"> 33144 <td class="entry_name 33145 " rowspan="5"> 33146 android.<wbr/>info.<wbr/>version 33147 </td> 33148 <td class="entry_type"> 33149 <span class="entry_type_name">byte</span> 33150 33151 <span class="entry_type_visibility"> [public as string]</span> 33152 33153 33154 33155 33156 33157 33158 </td> <!-- entry_type --> 33159 33160 <td class="entry_description"> 33161 <p>A short string for manufacturer version information about the camera device,<wbr/> such as 33162ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p> 33163 </td> 33164 33165 <td class="entry_units"> 33166 </td> 33167 33168 <td class="entry_range"> 33169 </td> 33170 33171 <td class="entry_hal_version"> 33172 <p>3.<wbr/>3</p> 33173 </td> 33174 33175 <td class="entry_tags"> 33176 </td> 33177 33178 </tr> 33179 <tr class="entries_header"> 33180 <th class="th_details" colspan="6">Details</th> 33181 </tr> 33182 <tr class="entry_cont"> 33183 <td class="entry_details" colspan="6"> 33184 <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> 33185in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the 33186device.<wbr/></p> 33187 </td> 33188 </tr> 33189 33190 <tr class="entries_header"> 33191 <th class="th_details" colspan="6">HAL Implementation Details</th> 33192 </tr> 33193 <tr class="entry_cont"> 33194 <td class="entry_details" colspan="6"> 33195 <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and 33196whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/> 33197It must not exceed 256 characters.<wbr/></p> 33198 </td> 33199 </tr> 33200 33201 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33202 <!-- end of entry --> 33203 33204 33205 <tr class="entry" id="static_android.info.supportedBufferManagementVersion"> 33206 <td class="entry_name 33207 " rowspan="3"> 33208 android.<wbr/>info.<wbr/>supported<wbr/>Buffer<wbr/>Management<wbr/>Version 33209 </td> 33210 <td class="entry_type"> 33211 <span class="entry_type_name entry_type_name_enum">byte</span> 33212 33213 <span class="entry_type_visibility"> [system]</span> 33214 33215 33216 33217 33218 33219 <ul class="entry_type_enum"> 33220 <li> 33221 <span class="entry_type_enum_name">HIDL_DEVICE_3_5 (v3.4)</span> 33222 <span class="entry_type_enum_notes"><p>This camera device supports and opts in to the buffer management APIs provided by 33223HIDL ICameraDevice version 3.<wbr/>5.<wbr/></p></span> 33224 </li> 33225 </ul> 33226 33227 </td> <!-- entry_type --> 33228 33229 <td class="entry_description"> 33230 <p>The version of buffer management API this camera device supports and opts into.<wbr/></p> 33231 </td> 33232 33233 <td class="entry_units"> 33234 </td> 33235 33236 <td class="entry_range"> 33237 </td> 33238 33239 <td class="entry_hal_version"> 33240 <p>3.<wbr/>4</p> 33241 </td> 33242 33243 <td class="entry_tags"> 33244 </td> 33245 33246 </tr> 33247 <tr class="entries_header"> 33248 <th class="th_details" colspan="6">Details</th> 33249 </tr> 33250 <tr class="entry_cont"> 33251 <td class="entry_details" colspan="6"> 33252 <p>When this key is not present,<wbr/> camera framework will interact with this camera device 33253without any buffer management HAL API.<wbr/> When this key is present and camera framework 33254supports the buffer management API version,<wbr/> camera framework will interact with camera 33255HAL using such version of buffer management API.<wbr/></p> 33256 </td> 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.info.deviceStateSensorOrientationMap"> 33265 <td class="entry_name 33266 " rowspan="3"> 33267 android.<wbr/>info.<wbr/>device<wbr/>State<wbr/>Sensor<wbr/>Orientation<wbr/>Map 33268 </td> 33269 <td class="entry_type"> 33270 <span class="entry_type_name">int64</span> 33271 33272 <span class="entry_type_visibility"> [java_public as deviceStateSensorOrientationMap]</span> 33273 33274 <span class="entry_type_synthetic">[synthetic] </span> 33275 33276 <span class="entry_type_hwlevel">[limited] </span> 33277 33278 33279 33280 33281 </td> <!-- entry_type --> 33282 33283 <td class="entry_description"> 33284 <p>This lists the mapping between a device folding state and 33285specific camera sensor orientation for logical cameras on a foldable device.<wbr/></p> 33286 </td> 33287 33288 <td class="entry_units"> 33289 </td> 33290 33291 <td class="entry_range"> 33292 </td> 33293 33294 <td class="entry_hal_version"> 33295 <p>3.<wbr/>2</p> 33296 </td> 33297 33298 <td class="entry_tags"> 33299 </td> 33300 33301 </tr> 33302 <tr class="entries_header"> 33303 <th class="th_details" colspan="6">Details</th> 33304 </tr> 33305 <tr class="entry_cont"> 33306 <td class="entry_details" colspan="6"> 33307 <p>Logical cameras on foldable devices can support sensors with different orientation 33308values.<wbr/> The orientation value may need to change depending on the specific folding 33309state.<wbr/> Information about the mapping between the device folding state and the 33310sensor orientation can be obtained in 33311<a href="https://developer.android.com/reference/android/hardware/camera2/params/DeviceStateSensorOrientationMap.html">DeviceStateSensorOrientationMap</a>.<wbr/> 33312Device state orientation maps are optional and maybe present on devices that support 33313<a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a>.<wbr/></p> 33314 </td> 33315 </tr> 33316 33317 33318 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33319 <!-- end of entry --> 33320 33321 33322 <tr class="entry" id="static_android.info.deviceStateOrientations"> 33323 <td class="entry_name 33324 " rowspan="3"> 33325 android.<wbr/>info.<wbr/>device<wbr/>State<wbr/>Orientations 33326 </td> 33327 <td class="entry_type"> 33328 <span class="entry_type_name">int64</span> 33329 <span class="entry_type_container">x</span> 33330 33331 <span class="entry_type_array"> 33332 2 x n 33333 </span> 33334 <span class="entry_type_visibility"> [ndk_public]</span> 33335 33336 33337 <span class="entry_type_hwlevel">[limited] </span> 33338 33339 33340 33341 33342 </td> <!-- entry_type --> 33343 33344 <td class="entry_description"> 33345 </td> 33346 33347 <td class="entry_units"> 33348 (device fold state,<wbr/> sensor orientation) x n 33349 </td> 33350 33351 <td class="entry_range"> 33352 </td> 33353 33354 <td class="entry_hal_version"> 33355 <p>3.<wbr/>7</p> 33356 </td> 33357 33358 <td class="entry_tags"> 33359 </td> 33360 33361 </tr> 33362 <tr class="entries_header"> 33363 <th class="th_details" colspan="6">Details</th> 33364 </tr> 33365 <tr class="entry_cont"> 33366 <td class="entry_details" colspan="6"> 33367 <p>HAL must populate the array with 33368(hardware::camera::provider::V2_<wbr/>5::DeviceState,<wbr/> sensorOrientation) pairs for each 33369supported device state bitwise combination.<wbr/></p> 33370 </td> 33371 </tr> 33372 33373 33374 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33375 <!-- end of entry --> 33376 33377 33378 33379 <!-- end of kind --> 33380 </tbody> 33381 33382 <!-- end of section --> 33383 <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr> 33384 33385 33386 <tr><td colspan="7" class="kind">controls</td></tr> 33387 33388 <thead class="entries_header"> 33389 <tr> 33390 <th class="th_name">Property Name</th> 33391 <th class="th_type">Type</th> 33392 <th class="th_description">Description</th> 33393 <th class="th_units">Units</th> 33394 <th class="th_range">Range</th> 33395 <th class="th_hal_version">Initial HIDL HAL version</th> 33396 <th class="th_tags">Tags</th> 33397 </tr> 33398 </thead> 33399 33400 <tbody> 33401 33402 33403 33404 33405 33406 33407 33408 33409 33410 33411 <tr class="entry" id="controls_android.blackLevel.lock"> 33412 <td class="entry_name 33413 " rowspan="5"> 33414 android.<wbr/>black<wbr/>Level.<wbr/>lock 33415 </td> 33416 <td class="entry_type"> 33417 <span class="entry_type_name entry_type_name_enum">byte</span> 33418 33419 <span class="entry_type_visibility"> [public as boolean]</span> 33420 33421 33422 <span class="entry_type_hwlevel">[full] </span> 33423 33424 33425 33426 <ul class="entry_type_enum"> 33427 <li> 33428 <span class="entry_type_enum_name">OFF (v3.2)</span> 33429 </li> 33430 <li> 33431 <span class="entry_type_enum_name">ON (v3.2)</span> 33432 </li> 33433 </ul> 33434 33435 </td> <!-- entry_type --> 33436 33437 <td class="entry_description"> 33438 <p>Whether black-level compensation is locked 33439to its current values,<wbr/> or is free to vary.<wbr/></p> 33440 </td> 33441 33442 <td class="entry_units"> 33443 </td> 33444 33445 <td class="entry_range"> 33446 </td> 33447 33448 <td class="entry_hal_version"> 33449 <p>3.<wbr/>2</p> 33450 </td> 33451 33452 <td class="entry_tags"> 33453 <ul class="entry_tags"> 33454 <li><a href="#tag_HAL2">HAL2</a></li> 33455 </ul> 33456 </td> 33457 33458 </tr> 33459 <tr class="entries_header"> 33460 <th class="th_details" colspan="6">Details</th> 33461 </tr> 33462 <tr class="entry_cont"> 33463 <td class="entry_details" colspan="6"> 33464 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level 33465compensation will not change until the lock is set to 33466<code>false</code> (OFF).<wbr/></p> 33467<p>Since changes to certain capture parameters (such as 33468exposure time) may require resetting of black level 33469compensation,<wbr/> the camera device must report whether setting 33470the black level lock was successful in the output result 33471metadata.<wbr/></p> 33472<p>For example,<wbr/> if a sequence of requests is as follows:</p> 33473<ul> 33474<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 33475<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 33476<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 33477<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 33478<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 33479<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 33480</ul> 33481<p>And the exposure change in Request 4 requires the camera 33482device to reset the black level offsets,<wbr/> then the output 33483result metadata is expected to be:</p> 33484<ul> 33485<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 33486<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 33487<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 33488<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 33489<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 33490<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 33491</ul> 33492<p>This indicates to the application that on frame 4,<wbr/> black 33493levels were reset due to exposure value changes,<wbr/> and pixel 33494values may not be consistent across captures.<wbr/></p> 33495<p>The camera device will maintain the lock to the extent 33496possible,<wbr/> only overriding the lock to OFF when changes to 33497other request parameters require a black level recalculation 33498or reset.<wbr/></p> 33499 </td> 33500 </tr> 33501 33502 <tr class="entries_header"> 33503 <th class="th_details" colspan="6">HAL Implementation Details</th> 33504 </tr> 33505 <tr class="entry_cont"> 33506 <td class="entry_details" colspan="6"> 33507 <p>If for some reason black level locking is no longer possible 33508(for example,<wbr/> the analog gain has changed,<wbr/> which forces 33509black level offsets to be recalculated),<wbr/> then the HAL must 33510override this request (and it must report 'OFF' when this 33511does happen) until the next capture for which locking is 33512possible again.<wbr/></p> 33513 </td> 33514 </tr> 33515 33516 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33517 <!-- end of entry --> 33518 33519 33520 33521 <!-- end of kind --> 33522 </tbody> 33523 <tr><td colspan="7" class="kind">dynamic</td></tr> 33524 33525 <thead class="entries_header"> 33526 <tr> 33527 <th class="th_name">Property Name</th> 33528 <th class="th_type">Type</th> 33529 <th class="th_description">Description</th> 33530 <th class="th_units">Units</th> 33531 <th class="th_range">Range</th> 33532 <th class="th_hal_version">Initial HIDL HAL version</th> 33533 <th class="th_tags">Tags</th> 33534 </tr> 33535 </thead> 33536 33537 <tbody> 33538 33539 33540 33541 33542 33543 33544 33545 33546 33547 33548 <tr class="entry" id="dynamic_android.blackLevel.lock"> 33549 <td class="entry_name 33550 " rowspan="5"> 33551 android.<wbr/>black<wbr/>Level.<wbr/>lock 33552 </td> 33553 <td class="entry_type"> 33554 <span class="entry_type_name entry_type_name_enum">byte</span> 33555 33556 <span class="entry_type_visibility"> [public as boolean]</span> 33557 33558 33559 <span class="entry_type_hwlevel">[full] </span> 33560 33561 33562 33563 <ul class="entry_type_enum"> 33564 <li> 33565 <span class="entry_type_enum_name">OFF (v3.2)</span> 33566 </li> 33567 <li> 33568 <span class="entry_type_enum_name">ON (v3.2)</span> 33569 </li> 33570 </ul> 33571 33572 </td> <!-- entry_type --> 33573 33574 <td class="entry_description"> 33575 <p>Whether black-level compensation is locked 33576to its current values,<wbr/> or is free to vary.<wbr/></p> 33577 </td> 33578 33579 <td class="entry_units"> 33580 </td> 33581 33582 <td class="entry_range"> 33583 </td> 33584 33585 <td class="entry_hal_version"> 33586 <p>3.<wbr/>2</p> 33587 </td> 33588 33589 <td class="entry_tags"> 33590 <ul class="entry_tags"> 33591 <li><a href="#tag_HAL2">HAL2</a></li> 33592 </ul> 33593 </td> 33594 33595 </tr> 33596 <tr class="entries_header"> 33597 <th class="th_details" colspan="6">Details</th> 33598 </tr> 33599 <tr class="entry_cont"> 33600 <td class="entry_details" colspan="6"> 33601 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 33602ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 33603a change in other capture settings forced the camera device to 33604perform a black level reset.<wbr/></p> 33605 </td> 33606 </tr> 33607 33608 <tr class="entries_header"> 33609 <th class="th_details" colspan="6">HAL Implementation Details</th> 33610 </tr> 33611 <tr class="entry_cont"> 33612 <td class="entry_details" colspan="6"> 33613 <p>If for some reason black level locking is no longer possible 33614(for example,<wbr/> the analog gain has changed,<wbr/> which forces 33615black level offsets to be recalculated),<wbr/> then the HAL must 33616override this request (and it must report 'OFF' when this 33617does happen) until the next capture for which locking is 33618possible again.<wbr/></p> 33619 </td> 33620 </tr> 33621 33622 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33623 <!-- end of entry --> 33624 33625 33626 33627 <!-- end of kind --> 33628 </tbody> 33629 33630 <!-- end of section --> 33631 <tr><td colspan="7" id="section_sync" class="section">sync</td></tr> 33632 33633 33634 <tr><td colspan="7" class="kind">dynamic</td></tr> 33635 33636 <thead class="entries_header"> 33637 <tr> 33638 <th class="th_name">Property Name</th> 33639 <th class="th_type">Type</th> 33640 <th class="th_description">Description</th> 33641 <th class="th_units">Units</th> 33642 <th class="th_range">Range</th> 33643 <th class="th_hal_version">Initial HIDL HAL version</th> 33644 <th class="th_tags">Tags</th> 33645 </tr> 33646 </thead> 33647 33648 <tbody> 33649 33650 33651 33652 33653 33654 33655 33656 33657 33658 33659 <tr class="entry" id="dynamic_android.sync.frameNumber"> 33660 <td class="entry_name 33661 " rowspan="5"> 33662 android.<wbr/>sync.<wbr/>frame<wbr/>Number 33663 </td> 33664 <td class="entry_type"> 33665 <span class="entry_type_name entry_type_name_enum">int64</span> 33666 33667 <span class="entry_type_visibility"> [ndk_public]</span> 33668 33669 33670 <span class="entry_type_hwlevel">[legacy] </span> 33671 33672 33673 33674 <ul class="entry_type_enum"> 33675 <li> 33676 <span class="entry_type_enum_name">CONVERGING (v3.2)</span> 33677 <span class="entry_type_enum_value">-1</span> 33678 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p> 33679<p>Synchronization is in progress,<wbr/> and reading metadata from this 33680result may include a mix of data that have taken effect since the 33681last synchronization time.<wbr/></p> 33682<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 33683this value will update to the actual frame number frame number 33684the result is guaranteed to be synchronized to (as long as the 33685request settings remain constant).<wbr/></p></span> 33686 </li> 33687 <li> 33688 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span> 33689 <span class="entry_type_enum_value">-2</span> 33690 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p> 33691<p>The result may have already converged,<wbr/> or it may be in 33692progress.<wbr/> Reading from this result may include some mix 33693of settings from past requests.<wbr/></p> 33694<p>After a settings change,<wbr/> the new settings will eventually all 33695take effect for the output buffers and results.<wbr/> However,<wbr/> this 33696value will not change when that happens.<wbr/> Altering settings 33697rapidly may provide outcomes using mixes of settings from recent 33698requests.<wbr/></p> 33699<p>This value is intended primarily for backwards compatibility with 33700the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 33701 </li> 33702 </ul> 33703 33704 </td> <!-- entry_type --> 33705 33706 <td class="entry_description"> 33707 <p>The frame number corresponding to the last request 33708with which the output result (metadata + buffers) has been fully 33709synchronized.<wbr/></p> 33710 </td> 33711 33712 <td class="entry_units"> 33713 </td> 33714 33715 <td class="entry_range"> 33716 <p>Either a non-negative value corresponding to a 33717<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 33718 </td> 33719 33720 <td class="entry_hal_version"> 33721 <p>3.<wbr/>2</p> 33722 </td> 33723 33724 <td class="entry_tags"> 33725 <ul class="entry_tags"> 33726 <li><a href="#tag_V1">V1</a></li> 33727 </ul> 33728 </td> 33729 33730 </tr> 33731 <tr class="entries_header"> 33732 <th class="th_details" colspan="6">Details</th> 33733 </tr> 33734 <tr class="entry_cont"> 33735 <td class="entry_details" colspan="6"> 33736 <p>When a request is submitted to the camera device,<wbr/> there is usually a 33737delay of several frames before the controls get applied.<wbr/> A camera 33738device may either choose to account for this delay by implementing a 33739pipeline and carefully submit well-timed atomic control updates,<wbr/> or 33740it may start streaming control changes that span over several frame 33741boundaries.<wbr/></p> 33742<p>In the latter case,<wbr/> whenever a request's settings change relative to 33743the previous submitted request,<wbr/> the full set of changes may take 33744multiple frame durations to fully take effect.<wbr/> Some settings may 33745take effect sooner (in less frame durations) than others.<wbr/></p> 33746<p>While a set of control changes are being propagated,<wbr/> this value 33747will be CONVERGING.<wbr/></p> 33748<p>Once it is fully known that a set of control changes have been 33749finished propagating,<wbr/> and the resulting updated control settings 33750have been read back by the camera device,<wbr/> this value will be set 33751to a non-negative frame number (corresponding to the request to 33752which the results have synchronized to).<wbr/></p> 33753<p>Older camera device implementations may not have a way to detect 33754when all camera controls have been applied,<wbr/> and will always set this 33755value to UNKNOWN.<wbr/></p> 33756<p>FULL capability devices will always have this value set to the 33757frame number of the request corresponding to this result.<wbr/></p> 33758<p><em>Further details</em>:</p> 33759<ul> 33760<li>Whenever a request differs from the last request,<wbr/> any future 33761results not yet returned may have this value set to CONVERGING (this 33762could include any in-progress captures not yet returned by the camera 33763device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 33764<li>Submitting a series of multiple requests that differ from the 33765previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 33766moves the new synchronization frame to the last non-repeating 33767request (using the smallest frame number from the contiguous list of 33768repeating requests).<wbr/></li> 33769<li>Submitting the same request repeatedly will not change this value 33770to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 33771<li>When this value changes to non-negative,<wbr/> that means that all of the 33772metadata controls from the request have been applied,<wbr/> all of the 33773metadata controls from the camera device have been read to the 33774updated values (into the result),<wbr/> and all of the graphics buffers 33775corresponding to this result are also synchronized to the request.<wbr/></li> 33776</ul> 33777<p><em>Pipeline considerations</em>:</p> 33778<p>Submitting a request with updated controls relative to the previously 33779submitted requests may also invalidate the synchronization state 33780of all the results corresponding to currently in-flight requests.<wbr/></p> 33781<p>In other words,<wbr/> results for this current request and up to 33782<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 33783<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 33784 </td> 33785 </tr> 33786 33787 <tr class="entries_header"> 33788 <th class="th_details" colspan="6">HAL Implementation Details</th> 33789 </tr> 33790 <tr class="entry_cont"> 33791 <td class="entry_details" colspan="6"> 33792 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 33793is also UNKNOWN.<wbr/></p> 33794<p>FULL capability devices should simply set this value to the 33795<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 33796 </td> 33797 </tr> 33798 33799 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33800 <!-- end of entry --> 33801 33802 33803 33804 <!-- end of kind --> 33805 </tbody> 33806 <tr><td colspan="7" class="kind">static</td></tr> 33807 33808 <thead class="entries_header"> 33809 <tr> 33810 <th class="th_name">Property Name</th> 33811 <th class="th_type">Type</th> 33812 <th class="th_description">Description</th> 33813 <th class="th_units">Units</th> 33814 <th class="th_range">Range</th> 33815 <th class="th_hal_version">Initial HIDL HAL version</th> 33816 <th class="th_tags">Tags</th> 33817 </tr> 33818 </thead> 33819 33820 <tbody> 33821 33822 33823 33824 33825 33826 33827 33828 33829 33830 33831 <tr class="entry" id="static_android.sync.maxLatency"> 33832 <td class="entry_name 33833 " rowspan="5"> 33834 android.<wbr/>sync.<wbr/>max<wbr/>Latency 33835 </td> 33836 <td class="entry_type"> 33837 <span class="entry_type_name entry_type_name_enum">int32</span> 33838 33839 <span class="entry_type_visibility"> [public]</span> 33840 33841 33842 <span class="entry_type_hwlevel">[legacy] </span> 33843 33844 33845 33846 <ul class="entry_type_enum"> 33847 <li> 33848 <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span> 33849 <span class="entry_type_enum_value">0</span> 33850 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p> 33851<p>Changing controls over multiple requests one after another will 33852produce results that have those controls applied atomically 33853each frame.<wbr/></p> 33854<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 33855 </li> 33856 <li> 33857 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span> 33858 <span class="entry_type_enum_value">-1</span> 33859 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 33860of the past requests applied to the camera settings.<wbr/></p> 33861<p>By submitting a series of identical requests,<wbr/> the camera device 33862will eventually have the camera settings applied,<wbr/> but it is 33863unknown when that exact point will be.<wbr/></p> 33864<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span> 33865 </li> 33866 </ul> 33867 33868 </td> <!-- entry_type --> 33869 33870 <td class="entry_description"> 33871 <p>The maximum number of frames that can occur after a request 33872(different than the previous) has been submitted,<wbr/> and before the 33873result's state becomes synchronized.<wbr/></p> 33874 </td> 33875 33876 <td class="entry_units"> 33877 Frame counts 33878 </td> 33879 33880 <td class="entry_range"> 33881 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p> 33882 </td> 33883 33884 <td class="entry_hal_version"> 33885 <p>3.<wbr/>2</p> 33886 </td> 33887 33888 <td class="entry_tags"> 33889 <ul class="entry_tags"> 33890 <li><a href="#tag_V1">V1</a></li> 33891 </ul> 33892 </td> 33893 33894 </tr> 33895 <tr class="entries_header"> 33896 <th class="th_details" colspan="6">Details</th> 33897 </tr> 33898 <tr class="entry_cont"> 33899 <td class="entry_details" colspan="6"> 33900 <p>This defines the maximum distance (in number of metadata results),<wbr/> 33901between the frame number of the request that has new controls to apply 33902and the frame number of the result that has all the controls applied.<wbr/></p> 33903<p>In other words this acts as an upper boundary for how many frames 33904must occur before the camera device knows for a fact that the new 33905submitted camera settings have been applied in outgoing frames.<wbr/></p> 33906 </td> 33907 </tr> 33908 33909 <tr class="entries_header"> 33910 <th class="th_details" colspan="6">HAL Implementation Details</th> 33911 </tr> 33912 <tr class="entry_cont"> 33913 <td class="entry_details" colspan="6"> 33914 <p>For example if maxLatency was 2,<wbr/></p> 33915<pre><code>initial request = X (repeating) 33916request1 = X 33917request2 = Y 33918request3 = Y 33919request4 = Y 33920 33921where requestN has frameNumber N,<wbr/> and the first of the repeating 33922initial request's has frameNumber F (and F < 1).<wbr/> 33923 33924initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 33925result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 33926result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 33927result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 33928result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 33929 33930where resultN has frameNumber N.<wbr/> 33931</code></pre> 33932<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 33933<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 33934<code>4 - 2 = 2</code>.<wbr/></p> 33935<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 33936<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or 33937<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p> 33938<p>LIMITED devices are strongly encouraged to use a non-negative 33939value.<wbr/> If UNKNOWN is used here then app developers do not have a way 33940to know when sensor settings have been applied.<wbr/></p> 33941 </td> 33942 </tr> 33943 33944 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 33945 <!-- end of entry --> 33946 33947 33948 33949 <!-- end of kind --> 33950 </tbody> 33951 33952 <!-- end of section --> 33953 <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr> 33954 33955 33956 <tr><td colspan="7" class="kind">controls</td></tr> 33957 33958 <thead class="entries_header"> 33959 <tr> 33960 <th class="th_name">Property Name</th> 33961 <th class="th_type">Type</th> 33962 <th class="th_description">Description</th> 33963 <th class="th_units">Units</th> 33964 <th class="th_range">Range</th> 33965 <th class="th_hal_version">Initial HIDL HAL version</th> 33966 <th class="th_tags">Tags</th> 33967 </tr> 33968 </thead> 33969 33970 <tbody> 33971 33972 33973 33974 33975 33976 33977 33978 33979 33980 33981 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor"> 33982 <td class="entry_name 33983 " rowspan="3"> 33984 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 33985 </td> 33986 <td class="entry_type"> 33987 <span class="entry_type_name">float</span> 33988 33989 <span class="entry_type_visibility"> [java_public]</span> 33990 33991 33992 <span class="entry_type_hwlevel">[limited] </span> 33993 33994 33995 33996 33997 </td> <!-- entry_type --> 33998 33999 <td class="entry_description"> 34000 <p>The amount of exposure time increase factor applied to the original output 34001frame by the application processing before sending for reprocessing.<wbr/></p> 34002 </td> 34003 34004 <td class="entry_units"> 34005 Relative exposure time increase factor.<wbr/> 34006 </td> 34007 34008 <td class="entry_range"> 34009 <p>>= 1.<wbr/>0</p> 34010 </td> 34011 34012 <td class="entry_hal_version"> 34013 <p>3.<wbr/>2</p> 34014 </td> 34015 34016 <td class="entry_tags"> 34017 <ul class="entry_tags"> 34018 <li><a href="#tag_REPROC">REPROC</a></li> 34019 </ul> 34020 </td> 34021 34022 </tr> 34023 <tr class="entries_header"> 34024 <th class="th_details" colspan="6">Details</th> 34025 </tr> 34026 <tr class="entry_cont"> 34027 <td class="entry_details" colspan="6"> 34028 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 34029capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 34030<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 34031output frames to effectively reduce the noise to the same level as a frame that was 34032captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 34033images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 34034the camera device is that the amount of noise in the image would be approximately what 34035would be expected if the original capture parameters had been a sensitivity of 34036S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 34037than S and T respectively.<wbr/> If the captured images were processed by the application 34038before being sent for reprocessing,<wbr/> then the application may have used image processing 34039algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 34040application-processed images (input images).<wbr/> By using the effectiveExposureFactor 34041control,<wbr/> the application can communicate to the camera device the actual noise level 34042improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 34043device can select appropriate noise reduction and edge enhancement parameters to avoid 34044excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 34045enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 34046<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 34047multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 34048fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 34049square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 34050adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 34051produce the best quality images.<wbr/></p> 34052<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 34053buffer in a way that affects its effective exposure time.<wbr/></p> 34054<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 34055reduction 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/> 34056Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 34057<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 34058 </td> 34059 </tr> 34060 34061 34062 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34063 <!-- end of entry --> 34064 34065 34066 34067 <!-- end of kind --> 34068 </tbody> 34069 <tr><td colspan="7" class="kind">dynamic</td></tr> 34070 34071 <thead class="entries_header"> 34072 <tr> 34073 <th class="th_name">Property Name</th> 34074 <th class="th_type">Type</th> 34075 <th class="th_description">Description</th> 34076 <th class="th_units">Units</th> 34077 <th class="th_range">Range</th> 34078 <th class="th_hal_version">Initial HIDL HAL version</th> 34079 <th class="th_tags">Tags</th> 34080 </tr> 34081 </thead> 34082 34083 <tbody> 34084 34085 34086 34087 34088 34089 34090 34091 34092 34093 34094 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor"> 34095 <td class="entry_name 34096 " rowspan="3"> 34097 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 34098 </td> 34099 <td class="entry_type"> 34100 <span class="entry_type_name">float</span> 34101 34102 <span class="entry_type_visibility"> [java_public]</span> 34103 34104 34105 <span class="entry_type_hwlevel">[limited] </span> 34106 34107 34108 34109 34110 </td> <!-- entry_type --> 34111 34112 <td class="entry_description"> 34113 <p>The amount of exposure time increase factor applied to the original output 34114frame by the application processing before sending for reprocessing.<wbr/></p> 34115 </td> 34116 34117 <td class="entry_units"> 34118 Relative exposure time increase factor.<wbr/> 34119 </td> 34120 34121 <td class="entry_range"> 34122 <p>>= 1.<wbr/>0</p> 34123 </td> 34124 34125 <td class="entry_hal_version"> 34126 <p>3.<wbr/>2</p> 34127 </td> 34128 34129 <td class="entry_tags"> 34130 <ul class="entry_tags"> 34131 <li><a href="#tag_REPROC">REPROC</a></li> 34132 </ul> 34133 </td> 34134 34135 </tr> 34136 <tr class="entries_header"> 34137 <th class="th_details" colspan="6">Details</th> 34138 </tr> 34139 <tr class="entry_cont"> 34140 <td class="entry_details" colspan="6"> 34141 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 34142capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 34143<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 34144output frames to effectively reduce the noise to the same level as a frame that was 34145captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 34146images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 34147the camera device is that the amount of noise in the image would be approximately what 34148would be expected if the original capture parameters had been a sensitivity of 34149S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 34150than S and T respectively.<wbr/> If the captured images were processed by the application 34151before being sent for reprocessing,<wbr/> then the application may have used image processing 34152algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 34153application-processed images (input images).<wbr/> By using the effectiveExposureFactor 34154control,<wbr/> the application can communicate to the camera device the actual noise level 34155improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 34156device can select appropriate noise reduction and edge enhancement parameters to avoid 34157excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 34158enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 34159<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 34160multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 34161fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 34162square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 34163adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 34164produce the best quality images.<wbr/></p> 34165<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 34166buffer in a way that affects its effective exposure time.<wbr/></p> 34167<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 34168reduction 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/> 34169Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 34170<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 34171 </td> 34172 </tr> 34173 34174 34175 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34176 <!-- end of entry --> 34177 34178 34179 34180 <!-- end of kind --> 34181 </tbody> 34182 <tr><td colspan="7" class="kind">static</td></tr> 34183 34184 <thead class="entries_header"> 34185 <tr> 34186 <th class="th_name">Property Name</th> 34187 <th class="th_type">Type</th> 34188 <th class="th_description">Description</th> 34189 <th class="th_units">Units</th> 34190 <th class="th_range">Range</th> 34191 <th class="th_hal_version">Initial HIDL HAL version</th> 34192 <th class="th_tags">Tags</th> 34193 </tr> 34194 </thead> 34195 34196 <tbody> 34197 34198 34199 34200 34201 34202 34203 34204 34205 34206 34207 <tr class="entry" id="static_android.reprocess.maxCaptureStall"> 34208 <td class="entry_name 34209 " rowspan="3"> 34210 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall 34211 </td> 34212 <td class="entry_type"> 34213 <span class="entry_type_name">int32</span> 34214 34215 <span class="entry_type_visibility"> [java_public]</span> 34216 34217 34218 <span class="entry_type_hwlevel">[limited] </span> 34219 34220 34221 34222 34223 </td> <!-- entry_type --> 34224 34225 <td class="entry_description"> 34226 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a 34227reprocess capture request.<wbr/></p> 34228 </td> 34229 34230 <td class="entry_units"> 34231 Number of frames.<wbr/> 34232 </td> 34233 34234 <td class="entry_range"> 34235 <p><= 4</p> 34236 </td> 34237 34238 <td class="entry_hal_version"> 34239 <p>3.<wbr/>2</p> 34240 </td> 34241 34242 <td class="entry_tags"> 34243 <ul class="entry_tags"> 34244 <li><a href="#tag_REPROC">REPROC</a></li> 34245 </ul> 34246 </td> 34247 34248 </tr> 34249 <tr class="entries_header"> 34250 <th class="th_details" colspan="6">Details</th> 34251 </tr> 34252 <tr class="entry_cont"> 34253 <td class="entry_details" colspan="6"> 34254 <p>The key describes the maximal interference that one reprocess (input) request 34255can introduce to the camera simultaneous streaming of regular (output) capture 34256requests,<wbr/> including repeating requests.<wbr/></p> 34257<p>When a reprocessing capture request is submitted while a camera output repeating request 34258(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture 34259pipeline for at least one frame duration so that the camera device is unable to process 34260the following capture request in time for the next sensor start of exposure boundary.<wbr/> 34261When this happens,<wbr/> the application may observe a capture time gap (longer than one frame 34262duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview 34263glitch if the repeating request output targets include a preview surface.<wbr/> This key gives 34264the worst-case number of frame stall introduced by one reprocess request with any kind of 34265formats/<wbr/>sizes combination.<wbr/></p> 34266<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the 34267ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p> 34268<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing ( 34269i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or 34270YUV_<wbr/>REPROCESSING).<wbr/></p> 34271 </td> 34272 </tr> 34273 34274 34275 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34276 <!-- end of entry --> 34277 34278 34279 34280 <!-- end of kind --> 34281 </tbody> 34282 34283 <!-- end of section --> 34284 <tr><td colspan="7" id="section_depth" class="section">depth</td></tr> 34285 34286 34287 <tr><td colspan="7" class="kind">static</td></tr> 34288 34289 <thead class="entries_header"> 34290 <tr> 34291 <th class="th_name">Property Name</th> 34292 <th class="th_type">Type</th> 34293 <th class="th_description">Description</th> 34294 <th class="th_units">Units</th> 34295 <th class="th_range">Range</th> 34296 <th class="th_hal_version">Initial HIDL HAL version</th> 34297 <th class="th_tags">Tags</th> 34298 </tr> 34299 </thead> 34300 34301 <tbody> 34302 34303 34304 34305 34306 34307 34308 34309 34310 34311 34312 <tr class="entry" id="static_android.depth.maxDepthSamples"> 34313 <td class="entry_name 34314 " rowspan="3"> 34315 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples 34316 </td> 34317 <td class="entry_type"> 34318 <span class="entry_type_name">int32</span> 34319 34320 <span class="entry_type_visibility"> [system]</span> 34321 34322 34323 <span class="entry_type_hwlevel">[limited] </span> 34324 34325 34326 34327 34328 </td> <!-- entry_type --> 34329 34330 <td class="entry_description"> 34331 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p> 34332 </td> 34333 34334 <td class="entry_units"> 34335 </td> 34336 34337 <td class="entry_range"> 34338 </td> 34339 34340 <td class="entry_hal_version"> 34341 <p>3.<wbr/>2</p> 34342 </td> 34343 34344 <td class="entry_tags"> 34345 <ul class="entry_tags"> 34346 <li><a href="#tag_DEPTH">DEPTH</a></li> 34347 </ul> 34348 </td> 34349 34350 </tr> 34351 <tr class="entries_header"> 34352 <th class="th_details" colspan="6">Details</th> 34353 </tr> 34354 <tr class="entry_cont"> 34355 <td class="entry_details" colspan="6"> 34356 <p>If a camera device supports outputting depth range data in the form of a depth point 34357cloud (<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 34358number of points an output buffer may contain.<wbr/></p> 34359<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/> 34360If output in the depth point cloud format is not supported,<wbr/> this entry will 34361not be defined.<wbr/></p> 34362 </td> 34363 </tr> 34364 34365 34366 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34367 <!-- end of entry --> 34368 34369 34370 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations"> 34371 <td class="entry_name 34372 " rowspan="3"> 34373 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations 34374 </td> 34375 <td class="entry_type"> 34376 <span class="entry_type_name entry_type_name_enum">int32</span> 34377 <span class="entry_type_container">x</span> 34378 34379 <span class="entry_type_array"> 34380 n x 4 34381 </span> 34382 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 34383 34384 34385 <span class="entry_type_hwlevel">[limited] </span> 34386 34387 34388 34389 <ul class="entry_type_enum"> 34390 <li> 34391 <span class="entry_type_enum_name">OUTPUT (v3.2)</span> 34392 </li> 34393 <li> 34394 <span class="entry_type_enum_name">INPUT (v3.2)</span> 34395 </li> 34396 </ul> 34397 34398 </td> <!-- entry_type --> 34399 34400 <td class="entry_description"> 34401 <p>The available depth dataspace stream 34402configurations that this camera device supports 34403(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 34404 </td> 34405 34406 <td class="entry_units"> 34407 </td> 34408 34409 <td class="entry_range"> 34410 </td> 34411 34412 <td class="entry_hal_version"> 34413 <p>3.<wbr/>2</p> 34414 </td> 34415 34416 <td class="entry_tags"> 34417 <ul class="entry_tags"> 34418 <li><a href="#tag_DEPTH">DEPTH</a></li> 34419 </ul> 34420 </td> 34421 34422 </tr> 34423 <tr class="entries_header"> 34424 <th class="th_details" colspan="6">Details</th> 34425 </tr> 34426 <tr class="entry_cont"> 34427 <td class="entry_details" colspan="6"> 34428 <p>These are output stream configurations for use with 34429dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are 34430listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 34431<p>Only devices that support depth output for at least 34432the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include 34433this entry.<wbr/></p> 34434<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB 34435sparse depth point cloud must report a single entry for 34436the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/> 34437<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to 34438the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p> 34439 </td> 34440 </tr> 34441 34442 34443 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34444 <!-- end of entry --> 34445 34446 34447 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations"> 34448 <td class="entry_name 34449 " rowspan="3"> 34450 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 34451 </td> 34452 <td class="entry_type"> 34453 <span class="entry_type_name">int64</span> 34454 <span class="entry_type_container">x</span> 34455 34456 <span class="entry_type_array"> 34457 4 x n 34458 </span> 34459 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 34460 34461 34462 <span class="entry_type_hwlevel">[limited] </span> 34463 34464 34465 34466 34467 </td> <!-- entry_type --> 34468 34469 <td class="entry_description"> 34470 <p>This lists the minimum frame duration for each 34471format/<wbr/>size combination for depth output formats.<wbr/></p> 34472 </td> 34473 34474 <td class="entry_units"> 34475 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 34476 </td> 34477 34478 <td class="entry_range"> 34479 </td> 34480 34481 <td class="entry_hal_version"> 34482 <p>3.<wbr/>2</p> 34483 </td> 34484 34485 <td class="entry_tags"> 34486 <ul class="entry_tags"> 34487 <li><a href="#tag_DEPTH">DEPTH</a></li> 34488 </ul> 34489 </td> 34490 34491 </tr> 34492 <tr class="entries_header"> 34493 <th class="th_details" colspan="6">Details</th> 34494 </tr> 34495 <tr class="entry_cont"> 34496 <td class="entry_details" colspan="6"> 34497 <p>This should correspond to the frame duration when only that 34498stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 34499set to either OFF or FAST.<wbr/></p> 34500<p>When multiple streams are used in a request,<wbr/> the minimum frame 34501duration will be max(individual stream min durations).<wbr/></p> 34502<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 34503is the same regardless of whether the stream is input or output.<wbr/></p> 34504<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 34505<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 34506calculating the max frame rate.<wbr/></p> 34507 </td> 34508 </tr> 34509 34510 34511 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34512 <!-- end of entry --> 34513 34514 34515 <tr class="entry" id="static_android.depth.availableDepthStallDurations"> 34516 <td class="entry_name 34517 " rowspan="3"> 34518 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations 34519 </td> 34520 <td class="entry_type"> 34521 <span class="entry_type_name">int64</span> 34522 <span class="entry_type_container">x</span> 34523 34524 <span class="entry_type_array"> 34525 4 x n 34526 </span> 34527 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 34528 34529 34530 <span class="entry_type_hwlevel">[limited] </span> 34531 34532 34533 34534 34535 </td> <!-- entry_type --> 34536 34537 <td class="entry_description"> 34538 <p>This lists the maximum stall duration for each 34539output format/<wbr/>size combination for depth streams.<wbr/></p> 34540 </td> 34541 34542 <td class="entry_units"> 34543 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 34544 </td> 34545 34546 <td class="entry_range"> 34547 </td> 34548 34549 <td class="entry_hal_version"> 34550 <p>3.<wbr/>2</p> 34551 </td> 34552 34553 <td class="entry_tags"> 34554 <ul class="entry_tags"> 34555 <li><a href="#tag_DEPTH">DEPTH</a></li> 34556 </ul> 34557 </td> 34558 34559 </tr> 34560 <tr class="entries_header"> 34561 <th class="th_details" colspan="6">Details</th> 34562 </tr> 34563 <tr class="entry_cont"> 34564 <td class="entry_details" colspan="6"> 34565 <p>A stall duration is how much extra time would get added 34566to the normal minimum frame duration for a repeating request 34567that has streams with non-zero stall.<wbr/></p> 34568<p>This functions similarly to 34569<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth 34570streams.<wbr/></p> 34571<p>All depth output stream formats may have a nonzero stall 34572duration.<wbr/></p> 34573 </td> 34574 </tr> 34575 34576 34577 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34578 <!-- end of entry --> 34579 34580 34581 <tr class="entry" id="static_android.depth.depthIsExclusive"> 34582 <td class="entry_name 34583 " rowspan="3"> 34584 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive 34585 </td> 34586 <td class="entry_type"> 34587 <span class="entry_type_name entry_type_name_enum">byte</span> 34588 34589 <span class="entry_type_visibility"> [public as boolean]</span> 34590 34591 34592 <span class="entry_type_hwlevel">[limited] </span> 34593 34594 34595 34596 <ul class="entry_type_enum"> 34597 <li> 34598 <span class="entry_type_enum_name">FALSE (v3.2)</span> 34599 </li> 34600 <li> 34601 <span class="entry_type_enum_name">TRUE (v3.2)</span> 34602 </li> 34603 </ul> 34604 34605 </td> <!-- entry_type --> 34606 34607 <td class="entry_description"> 34608 <p>Indicates whether a capture request may target both a 34609DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as 34610YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p> 34611 </td> 34612 34613 <td class="entry_units"> 34614 </td> 34615 34616 <td class="entry_range"> 34617 </td> 34618 34619 <td class="entry_hal_version"> 34620 <p>3.<wbr/>2</p> 34621 </td> 34622 34623 <td class="entry_tags"> 34624 </td> 34625 34626 </tr> 34627 <tr class="entries_header"> 34628 <th class="th_details" colspan="6">Details</th> 34629 </tr> 34630 <tr class="entry_cont"> 34631 <td class="entry_details" colspan="6"> 34632 <p>If TRUE,<wbr/> including both depth and color outputs in a single 34633capture request is not supported.<wbr/> An application must interleave color 34634and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types 34635of output.<wbr/></p> 34636<p>Typically,<wbr/> this restriction exists on camera devices that 34637need to emit a specific pattern or wavelength of light to 34638measure depth values,<wbr/> which causes the color image to be 34639corrupted during depth measurement.<wbr/></p> 34640 </td> 34641 </tr> 34642 34643 34644 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34645 <!-- end of entry --> 34646 34647 34648 <tr class="entry" id="static_android.depth.availableRecommendedDepthStreamConfigurations"> 34649 <td class="entry_name 34650 " rowspan="5"> 34651 android.<wbr/>depth.<wbr/>available<wbr/>Recommended<wbr/>Depth<wbr/>Stream<wbr/>Configurations 34652 </td> 34653 <td class="entry_type"> 34654 <span class="entry_type_name">int32</span> 34655 <span class="entry_type_container">x</span> 34656 34657 <span class="entry_type_array"> 34658 n x 5 34659 </span> 34660 <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span> 34661 34662 34663 34664 34665 34666 34667 </td> <!-- entry_type --> 34668 34669 <td class="entry_description"> 34670 <p>Recommended depth stream configurations for common client use cases.<wbr/></p> 34671 </td> 34672 34673 <td class="entry_units"> 34674 </td> 34675 34676 <td class="entry_range"> 34677 </td> 34678 34679 <td class="entry_hal_version"> 34680 <p>3.<wbr/>4</p> 34681 </td> 34682 34683 <td class="entry_tags"> 34684 </td> 34685 34686 </tr> 34687 <tr class="entries_header"> 34688 <th class="th_details" colspan="6">Details</th> 34689 </tr> 34690 <tr class="entry_cont"> 34691 <td class="entry_details" colspan="6"> 34692 <p>Optional subset of the <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a> that 34693contains similar tuples listed as 34694(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/> 34695Camera devices will be able to suggest particular depth stream configurations which are 34696power and performance efficient for specific use cases.<wbr/> For more information about 34697retrieving the suggestions see 34698<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p> 34699 </td> 34700 </tr> 34701 34702 <tr class="entries_header"> 34703 <th class="th_details" colspan="6">HAL Implementation Details</th> 34704 </tr> 34705 <tr class="entry_cont"> 34706 <td class="entry_details" colspan="6"> 34707 <p>Recommended depth configurations are expected to be declared with SNAPSHOT and/<wbr/>or 34708ZSL if supported by the device.<wbr/> 34709For additional details on how to declare recommended stream configurations,<wbr/> check 34710<a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 34711For additional requirements on depth streams please consider 34712<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p> 34713 </td> 34714 </tr> 34715 34716 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34717 <!-- end of entry --> 34718 34719 34720 <tr class="entry" id="static_android.depth.availableDynamicDepthStreamConfigurations"> 34721 <td class="entry_name 34722 " rowspan="5"> 34723 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations 34724 </td> 34725 <td class="entry_type"> 34726 <span class="entry_type_name entry_type_name_enum">int32</span> 34727 <span class="entry_type_container">x</span> 34728 34729 <span class="entry_type_array"> 34730 n x 4 34731 </span> 34732 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 34733 34734 34735 34736 34737 34738 <ul class="entry_type_enum"> 34739 <li> 34740 <span class="entry_type_enum_name">OUTPUT (v3.4)</span> 34741 </li> 34742 <li> 34743 <span class="entry_type_enum_name">INPUT (v3.4)</span> 34744 </li> 34745 </ul> 34746 34747 </td> <!-- entry_type --> 34748 34749 <td class="entry_description"> 34750 <p>The available dynamic depth dataspace stream 34751configurations that this camera device supports 34752(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 34753 </td> 34754 34755 <td class="entry_units"> 34756 </td> 34757 34758 <td class="entry_range"> 34759 </td> 34760 34761 <td class="entry_hal_version"> 34762 <p>3.<wbr/>4</p> 34763 </td> 34764 34765 <td class="entry_tags"> 34766 <ul class="entry_tags"> 34767 <li><a href="#tag_DEPTH">DEPTH</a></li> 34768 </ul> 34769 </td> 34770 34771 </tr> 34772 <tr class="entries_header"> 34773 <th class="th_details" colspan="6">Details</th> 34774 </tr> 34775 <tr class="entry_cont"> 34776 <td class="entry_details" colspan="6"> 34777 <p>These are output stream configurations for use with 34778dataSpace DYNAMIC_<wbr/>DEPTH.<wbr/> The configurations are 34779listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 34780<p>Only devices that support depth output for at least 34781the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map along with 34782HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB with the same size or size with 34783the same aspect ratio can have dynamic depth dataspace 34784stream configuration.<wbr/> <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> also 34785needs to be set to FALSE.<wbr/></p> 34786 </td> 34787 </tr> 34788 34789 <tr class="entries_header"> 34790 <th class="th_details" colspan="6">HAL Implementation Details</th> 34791 </tr> 34792 <tr class="entry_cont"> 34793 <td class="entry_details" colspan="6"> 34794 <p>Do not set this property directly.<wbr/> 34795It is populated by camera framework and must not be set 34796at the HAL layer.<wbr/></p> 34797 </td> 34798 </tr> 34799 34800 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34801 <!-- end of entry --> 34802 34803 34804 <tr class="entry" id="static_android.depth.availableDynamicDepthMinFrameDurations"> 34805 <td class="entry_name 34806 " rowspan="5"> 34807 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 34808 </td> 34809 <td class="entry_type"> 34810 <span class="entry_type_name">int64</span> 34811 <span class="entry_type_container">x</span> 34812 34813 <span class="entry_type_array"> 34814 4 x n 34815 </span> 34816 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 34817 34818 34819 34820 34821 34822 34823 </td> <!-- entry_type --> 34824 34825 <td class="entry_description"> 34826 <p>This lists the minimum frame duration for each 34827format/<wbr/>size combination for dynamic depth output streams.<wbr/></p> 34828 </td> 34829 34830 <td class="entry_units"> 34831 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 34832 </td> 34833 34834 <td class="entry_range"> 34835 </td> 34836 34837 <td class="entry_hal_version"> 34838 <p>3.<wbr/>4</p> 34839 </td> 34840 34841 <td class="entry_tags"> 34842 <ul class="entry_tags"> 34843 <li><a href="#tag_DEPTH">DEPTH</a></li> 34844 </ul> 34845 </td> 34846 34847 </tr> 34848 <tr class="entries_header"> 34849 <th class="th_details" colspan="6">Details</th> 34850 </tr> 34851 <tr class="entry_cont"> 34852 <td class="entry_details" colspan="6"> 34853 <p>This should correspond to the frame duration when only that 34854stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 34855set to either OFF or FAST.<wbr/></p> 34856<p>When multiple streams are used in a request,<wbr/> the minimum frame 34857duration will be max(individual stream min durations).<wbr/></p> 34858<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 34859is the same regardless of whether the stream is input or output.<wbr/></p> 34860 </td> 34861 </tr> 34862 34863 <tr class="entries_header"> 34864 <th class="th_details" colspan="6">HAL Implementation Details</th> 34865 </tr> 34866 <tr class="entry_cont"> 34867 <td class="entry_details" colspan="6"> 34868 <p>Do not set this property directly.<wbr/> 34869It is populated by camera framework and must not be set 34870at the HAL layer.<wbr/></p> 34871 </td> 34872 </tr> 34873 34874 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34875 <!-- end of entry --> 34876 34877 34878 <tr class="entry" id="static_android.depth.availableDynamicDepthStallDurations"> 34879 <td class="entry_name 34880 " rowspan="5"> 34881 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations 34882 </td> 34883 <td class="entry_type"> 34884 <span class="entry_type_name">int64</span> 34885 <span class="entry_type_container">x</span> 34886 34887 <span class="entry_type_array"> 34888 4 x n 34889 </span> 34890 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 34891 34892 34893 34894 34895 34896 34897 </td> <!-- entry_type --> 34898 34899 <td class="entry_description"> 34900 <p>This lists the maximum stall duration for each 34901output format/<wbr/>size combination for dynamic depth streams.<wbr/></p> 34902 </td> 34903 34904 <td class="entry_units"> 34905 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 34906 </td> 34907 34908 <td class="entry_range"> 34909 </td> 34910 34911 <td class="entry_hal_version"> 34912 <p>3.<wbr/>4</p> 34913 </td> 34914 34915 <td class="entry_tags"> 34916 <ul class="entry_tags"> 34917 <li><a href="#tag_DEPTH">DEPTH</a></li> 34918 </ul> 34919 </td> 34920 34921 </tr> 34922 <tr class="entries_header"> 34923 <th class="th_details" colspan="6">Details</th> 34924 </tr> 34925 <tr class="entry_cont"> 34926 <td class="entry_details" colspan="6"> 34927 <p>A stall duration is how much extra time would get added 34928to the normal minimum frame duration for a repeating request 34929that has streams with non-zero stall.<wbr/></p> 34930<p>All dynamic depth output streams may have a nonzero stall 34931duration.<wbr/></p> 34932 </td> 34933 </tr> 34934 34935 <tr class="entries_header"> 34936 <th class="th_details" colspan="6">HAL Implementation Details</th> 34937 </tr> 34938 <tr class="entry_cont"> 34939 <td class="entry_details" colspan="6"> 34940 <p>Do not set this property directly.<wbr/> 34941It is populated by camera framework and must not be set 34942at the HAL layer.<wbr/></p> 34943 </td> 34944 </tr> 34945 34946 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 34947 <!-- end of entry --> 34948 34949 34950 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurationsMaximumResolution"> 34951 <td class="entry_name 34952 " rowspan="3"> 34953 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution 34954 </td> 34955 <td class="entry_type"> 34956 <span class="entry_type_name entry_type_name_enum">int32</span> 34957 <span class="entry_type_container">x</span> 34958 34959 <span class="entry_type_array"> 34960 n x 4 34961 </span> 34962 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 34963 34964 34965 34966 34967 34968 <ul class="entry_type_enum"> 34969 <li> 34970 <span class="entry_type_enum_name">OUTPUT (v3.6)</span> 34971 </li> 34972 <li> 34973 <span class="entry_type_enum_name">INPUT (v3.6)</span> 34974 </li> 34975 </ul> 34976 34977 </td> <!-- entry_type --> 34978 34979 <td class="entry_description"> 34980 <p>The available depth dataspace stream 34981configurations that this camera device supports 34982(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream) when a CaptureRequest is submitted with 34983<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to 34984<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> 34985 </td> 34986 34987 <td class="entry_units"> 34988 </td> 34989 34990 <td class="entry_range"> 34991 </td> 34992 34993 <td class="entry_hal_version"> 34994 <p>3.<wbr/>6</p> 34995 </td> 34996 34997 <td class="entry_tags"> 34998 <ul class="entry_tags"> 34999 <li><a href="#tag_DEPTH">DEPTH</a></li> 35000 </ul> 35001 </td> 35002 35003 </tr> 35004 <tr class="entries_header"> 35005 <th class="th_details" colspan="6">Details</th> 35006 </tr> 35007 <tr class="entry_cont"> 35008 <td class="entry_details" colspan="6"> 35009 <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 35010are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 35011<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> 35012 </td> 35013 </tr> 35014 35015 35016 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35017 <!-- end of entry --> 35018 35019 35020 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurationsMaximumResolution"> 35021 <td class="entry_name 35022 " rowspan="3"> 35023 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 35024 </td> 35025 <td class="entry_type"> 35026 <span class="entry_type_name">int64</span> 35027 <span class="entry_type_container">x</span> 35028 35029 <span class="entry_type_array"> 35030 4 x n 35031 </span> 35032 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 35033 35034 35035 35036 35037 35038 35039 </td> <!-- entry_type --> 35040 35041 <td class="entry_description"> 35042 <p>This lists the minimum frame duration for each 35043format/<wbr/>size combination for depth output formats when a CaptureRequest is submitted with 35044<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to 35045<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> 35046 </td> 35047 35048 <td class="entry_units"> 35049 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 35050 </td> 35051 35052 <td class="entry_range"> 35053 </td> 35054 35055 <td class="entry_hal_version"> 35056 <p>3.<wbr/>6</p> 35057 </td> 35058 35059 <td class="entry_tags"> 35060 <ul class="entry_tags"> 35061 <li><a href="#tag_DEPTH">DEPTH</a></li> 35062 </ul> 35063 </td> 35064 35065 </tr> 35066 <tr class="entries_header"> 35067 <th class="th_details" colspan="6">Details</th> 35068 </tr> 35069 <tr class="entry_cont"> 35070 <td class="entry_details" colspan="6"> 35071 <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 35072are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 35073<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> 35074<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 35075<a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution</a> for more details about 35076calculating the max frame rate.<wbr/></p> 35077 </td> 35078 </tr> 35079 35080 35081 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35082 <!-- end of entry --> 35083 35084 35085 <tr class="entry" id="static_android.depth.availableDepthStallDurationsMaximumResolution"> 35086 <td class="entry_name 35087 " rowspan="3"> 35088 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 35089 </td> 35090 <td class="entry_type"> 35091 <span class="entry_type_name">int64</span> 35092 <span class="entry_type_container">x</span> 35093 35094 <span class="entry_type_array"> 35095 4 x n 35096 </span> 35097 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 35098 35099 35100 35101 35102 35103 35104 </td> <!-- entry_type --> 35105 35106 <td class="entry_description"> 35107 <p>This lists the maximum stall duration for each 35108output format/<wbr/>size combination for depth streams for CaptureRequests where 35109<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 35110<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> 35111 </td> 35112 35113 <td class="entry_units"> 35114 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 35115 </td> 35116 35117 <td class="entry_range"> 35118 </td> 35119 35120 <td class="entry_hal_version"> 35121 <p>3.<wbr/>6</p> 35122 </td> 35123 35124 <td class="entry_tags"> 35125 <ul class="entry_tags"> 35126 <li><a href="#tag_DEPTH">DEPTH</a></li> 35127 </ul> 35128 </td> 35129 35130 </tr> 35131 <tr class="entries_header"> 35132 <th class="th_details" colspan="6">Details</th> 35133 </tr> 35134 <tr class="entry_cont"> 35135 <td class="entry_details" colspan="6"> 35136 <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 35137are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 35138<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> 35139 </td> 35140 </tr> 35141 35142 35143 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35144 <!-- end of entry --> 35145 35146 35147 <tr class="entry" id="static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution"> 35148 <td class="entry_name 35149 " rowspan="5"> 35150 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution 35151 </td> 35152 <td class="entry_type"> 35153 <span class="entry_type_name entry_type_name_enum">int32</span> 35154 <span class="entry_type_container">x</span> 35155 35156 <span class="entry_type_array"> 35157 n x 4 35158 </span> 35159 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 35160 35161 35162 35163 35164 35165 <ul class="entry_type_enum"> 35166 <li> 35167 <span class="entry_type_enum_name">OUTPUT (v3.6)</span> 35168 </li> 35169 <li> 35170 <span class="entry_type_enum_name">INPUT (v3.6)</span> 35171 </li> 35172 </ul> 35173 35174 </td> <!-- entry_type --> 35175 35176 <td class="entry_description"> 35177 <p>The available dynamic depth dataspace stream 35178configurations that this camera device supports (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> 35179output/<wbr/>input stream) for CaptureRequests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 35180<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> 35181 </td> 35182 35183 <td class="entry_units"> 35184 </td> 35185 35186 <td class="entry_range"> 35187 </td> 35188 35189 <td class="entry_hal_version"> 35190 <p>3.<wbr/>6</p> 35191 </td> 35192 35193 <td class="entry_tags"> 35194 <ul class="entry_tags"> 35195 <li><a href="#tag_DEPTH">DEPTH</a></li> 35196 </ul> 35197 </td> 35198 35199 </tr> 35200 <tr class="entries_header"> 35201 <th class="th_details" colspan="6">Details</th> 35202 </tr> 35203 <tr class="entry_cont"> 35204 <td class="entry_details" colspan="6"> 35205 <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 35206which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 35207<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> 35208 </td> 35209 </tr> 35210 35211 <tr class="entries_header"> 35212 <th class="th_details" colspan="6">HAL Implementation Details</th> 35213 </tr> 35214 <tr class="entry_cont"> 35215 <td class="entry_details" colspan="6"> 35216 <p>Do not set this property directly.<wbr/> 35217It is populated by camera framework and must not be set 35218at the HAL layer.<wbr/></p> 35219 </td> 35220 </tr> 35221 35222 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35223 <!-- end of entry --> 35224 35225 35226 <tr class="entry" id="static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution"> 35227 <td class="entry_name 35228 " rowspan="5"> 35229 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 35230 </td> 35231 <td class="entry_type"> 35232 <span class="entry_type_name">int64</span> 35233 <span class="entry_type_container">x</span> 35234 35235 <span class="entry_type_array"> 35236 4 x n 35237 </span> 35238 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 35239 35240 35241 35242 35243 35244 35245 </td> <!-- entry_type --> 35246 35247 <td class="entry_description"> 35248 <p>This lists the minimum frame duration for each 35249format/<wbr/>size combination for dynamic depth output streams for CaptureRequests where 35250<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 35251<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> 35252 </td> 35253 35254 <td class="entry_units"> 35255 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 35256 </td> 35257 35258 <td class="entry_range"> 35259 </td> 35260 35261 <td class="entry_hal_version"> 35262 <p>3.<wbr/>6</p> 35263 </td> 35264 35265 <td class="entry_tags"> 35266 <ul class="entry_tags"> 35267 <li><a href="#tag_DEPTH">DEPTH</a></li> 35268 </ul> 35269 </td> 35270 35271 </tr> 35272 <tr class="entries_header"> 35273 <th class="th_details" colspan="6">Details</th> 35274 </tr> 35275 <tr class="entry_cont"> 35276 <td class="entry_details" colspan="6"> 35277 <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 35278which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 35279<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> 35280 </td> 35281 </tr> 35282 35283 <tr class="entries_header"> 35284 <th class="th_details" colspan="6">HAL Implementation Details</th> 35285 </tr> 35286 <tr class="entry_cont"> 35287 <td class="entry_details" colspan="6"> 35288 <p>Do not set this property directly.<wbr/> 35289It is populated by camera framework and must not be set 35290at the HAL layer.<wbr/></p> 35291 </td> 35292 </tr> 35293 35294 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35295 <!-- end of entry --> 35296 35297 35298 <tr class="entry" id="static_android.depth.availableDynamicDepthStallDurationsMaximumResolution"> 35299 <td class="entry_name 35300 " rowspan="5"> 35301 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 35302 </td> 35303 <td class="entry_type"> 35304 <span class="entry_type_name">int64</span> 35305 <span class="entry_type_container">x</span> 35306 35307 <span class="entry_type_array"> 35308 4 x n 35309 </span> 35310 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 35311 35312 35313 35314 35315 35316 35317 </td> <!-- entry_type --> 35318 35319 <td class="entry_description"> 35320 <p>This lists the maximum stall duration for each 35321output format/<wbr/>size combination for dynamic depth streams for CaptureRequests where 35322<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 35323<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> 35324 </td> 35325 35326 <td class="entry_units"> 35327 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 35328 </td> 35329 35330 <td class="entry_range"> 35331 </td> 35332 35333 <td class="entry_hal_version"> 35334 <p>3.<wbr/>6</p> 35335 </td> 35336 35337 <td class="entry_tags"> 35338 <ul class="entry_tags"> 35339 <li><a href="#tag_DEPTH">DEPTH</a></li> 35340 </ul> 35341 </td> 35342 35343 </tr> 35344 <tr class="entries_header"> 35345 <th class="th_details" colspan="6">Details</th> 35346 </tr> 35347 <tr class="entry_cont"> 35348 <td class="entry_details" colspan="6"> 35349 <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 35350which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 35351<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> 35352 </td> 35353 </tr> 35354 35355 <tr class="entries_header"> 35356 <th class="th_details" colspan="6">HAL Implementation Details</th> 35357 </tr> 35358 <tr class="entry_cont"> 35359 <td class="entry_details" colspan="6"> 35360 <p>Do not set this property directly.<wbr/> 35361It is populated by camera framework and must not be set 35362at the HAL layer.<wbr/></p> 35363 </td> 35364 </tr> 35365 35366 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35367 <!-- end of entry --> 35368 35369 35370 35371 <!-- end of kind --> 35372 </tbody> 35373 35374 <!-- end of section --> 35375 <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr> 35376 35377 35378 <tr><td colspan="7" class="kind">static</td></tr> 35379 35380 <thead class="entries_header"> 35381 <tr> 35382 <th class="th_name">Property Name</th> 35383 <th class="th_type">Type</th> 35384 <th class="th_description">Description</th> 35385 <th class="th_units">Units</th> 35386 <th class="th_range">Range</th> 35387 <th class="th_hal_version">Initial HIDL HAL version</th> 35388 <th class="th_tags">Tags</th> 35389 </tr> 35390 </thead> 35391 35392 <tbody> 35393 35394 35395 35396 35397 35398 35399 35400 35401 35402 35403 <tr class="entry" id="static_android.logicalMultiCamera.physicalIds"> 35404 <td class="entry_name 35405 " rowspan="3"> 35406 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids 35407 </td> 35408 <td class="entry_type"> 35409 <span class="entry_type_name">byte</span> 35410 <span class="entry_type_container">x</span> 35411 35412 <span class="entry_type_array"> 35413 n 35414 </span> 35415 <span class="entry_type_visibility"> [ndk_public]</span> 35416 35417 35418 <span class="entry_type_hwlevel">[limited] </span> 35419 35420 35421 35422 35423 </td> <!-- entry_type --> 35424 35425 <td class="entry_description"> 35426 <p>String containing the ids of the underlying physical cameras.<wbr/></p> 35427 </td> 35428 35429 <td class="entry_units"> 35430 UTF-8 null-terminated string 35431 </td> 35432 35433 <td class="entry_range"> 35434 </td> 35435 35436 <td class="entry_hal_version"> 35437 <p>3.<wbr/>3</p> 35438 </td> 35439 35440 <td class="entry_tags"> 35441 <ul class="entry_tags"> 35442 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> 35443 </ul> 35444 </td> 35445 35446 </tr> 35447 <tr class="entries_header"> 35448 <th class="th_details" colspan="6">Details</th> 35449 </tr> 35450 <tr class="entry_cont"> 35451 <td class="entry_details" colspan="6"> 35452 <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera IDs.<wbr/> 35453The null terminator for physical camera ID must be preserved so that the whole string 35454can be tokenized using '\0' to generate list of physical camera IDs.<wbr/></p> 35455<p>For example,<wbr/> if the physical camera IDs of the logical camera are "2" and "3",<wbr/> the 35456value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p> 35457<p>The number of physical camera IDs must be no less than 2.<wbr/></p> 35458 </td> 35459 </tr> 35460 35461 35462 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35463 <!-- end of entry --> 35464 35465 35466 <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType"> 35467 <td class="entry_name 35468 " rowspan="3"> 35469 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type 35470 </td> 35471 <td class="entry_type"> 35472 <span class="entry_type_name entry_type_name_enum">byte</span> 35473 35474 <span class="entry_type_visibility"> [public]</span> 35475 35476 35477 <span class="entry_type_hwlevel">[limited] </span> 35478 35479 35480 35481 <ul class="entry_type_enum"> 35482 <li> 35483 <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span> 35484 <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/> 35485the timestamp of an image from a physical stream is only an approximation of the 35486image sensor start-of-exposure time.<wbr/></p></span> 35487 </li> 35488 <li> 35489 <span class="entry_type_enum_name">CALIBRATED (v3.3)</span> 35490 <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/> 35491and the timestamp of a physical stream image accurately reflects its 35492start-of-exposure time.<wbr/></p></span> 35493 </li> 35494 </ul> 35495 35496 </td> <!-- entry_type --> 35497 35498 <td class="entry_description"> 35499 <p>The accuracy of frame timestamp synchronization between physical cameras</p> 35500 </td> 35501 35502 <td class="entry_units"> 35503 </td> 35504 35505 <td class="entry_range"> 35506 </td> 35507 35508 <td class="entry_hal_version"> 35509 <p>3.<wbr/>3</p> 35510 </td> 35511 35512 <td class="entry_tags"> 35513 <ul class="entry_tags"> 35514 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> 35515 </ul> 35516 </td> 35517 35518 </tr> 35519 <tr class="entries_header"> 35520 <th class="th_details" colspan="6">Details</th> 35521 </tr> 35522 <tr class="entry_cont"> 35523 <td class="entry_details" colspan="6"> 35524 <p>The accuracy of the frame timestamp synchronization determines the physical cameras' 35525ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/> the 35526physical camera sensors usually run in leader/<wbr/>follower mode where one sensor generates a 35527timing signal for the other,<wbr/> so that their shutter time is synchronized.<wbr/> For APPROXIMATE 35528sensorSyncType,<wbr/> the camera sensors usually run in leader/<wbr/>leader mode,<wbr/> where both sensors 35529use their own timing generator,<wbr/> and there could be offset between their start of exposure.<wbr/></p> 35530<p>In both cases,<wbr/> all images generated for a particular capture request still carry the same 35531timestamps,<wbr/> so that they can be used to look up the matching frame number and 35532onCaptureStarted callback.<wbr/></p> 35533<p>This tag is only applicable if the logical camera device supports concurrent physical 35534streams from different physical cameras.<wbr/></p> 35535 </td> 35536 </tr> 35537 35538 35539 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35540 <!-- end of entry --> 35541 35542 35543 35544 <!-- end of kind --> 35545 </tbody> 35546 <tr><td colspan="7" class="kind">dynamic</td></tr> 35547 35548 <thead class="entries_header"> 35549 <tr> 35550 <th class="th_name">Property Name</th> 35551 <th class="th_type">Type</th> 35552 <th class="th_description">Description</th> 35553 <th class="th_units">Units</th> 35554 <th class="th_range">Range</th> 35555 <th class="th_hal_version">Initial HIDL HAL version</th> 35556 <th class="th_tags">Tags</th> 35557 </tr> 35558 </thead> 35559 35560 <tbody> 35561 35562 35563 35564 35565 35566 35567 35568 35569 35570 35571 <tr class="entry" id="dynamic_android.logicalMultiCamera.activePhysicalId"> 35572 <td class="entry_name 35573 " rowspan="5"> 35574 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id 35575 </td> 35576 <td class="entry_type"> 35577 <span class="entry_type_name">byte</span> 35578 35579 <span class="entry_type_visibility"> [public as string]</span> 35580 35581 35582 35583 35584 35585 35586 </td> <!-- entry_type --> 35587 35588 <td class="entry_description"> 35589 <p>String containing the ID of the underlying active physical camera.<wbr/></p> 35590 </td> 35591 35592 <td class="entry_units"> 35593 UTF-8 null-terminated string 35594 </td> 35595 35596 <td class="entry_range"> 35597 </td> 35598 35599 <td class="entry_hal_version"> 35600 <p>3.<wbr/>4</p> 35601 </td> 35602 35603 <td class="entry_tags"> 35604 <ul class="entry_tags"> 35605 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> 35606 </ul> 35607 </td> 35608 35609 </tr> 35610 <tr class="entries_header"> 35611 <th class="th_details" colspan="6">Details</th> 35612 </tr> 35613 <tr class="entry_cont"> 35614 <td class="entry_details" colspan="6"> 35615 <p>The ID of the active physical camera that's backing the logical camera.<wbr/> All camera 35616streams and metadata that are not physical camera specific will be originating from this 35617physical camera.<wbr/></p> 35618<p>For a logical camera made up of physical cameras where each camera's lenses have 35619different characteristics,<wbr/> the camera device may choose to switch between the physical 35620cameras when application changes FOCAL_<wbr/>LENGTH or SCALER_<wbr/>CROP_<wbr/>REGION.<wbr/> 35621At the time of lens switch,<wbr/> this result metadata reflects the new active physical camera 35622ID.<wbr/></p> 35623<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/> 35624When available,<wbr/> this must be one of valid physical IDs backing this logical multi-camera.<wbr/> 35625If this key is not available for a logical multi-camera,<wbr/> the camera device implementation 35626may still switch between different active physical cameras based on use case,<wbr/> but the 35627current active physical camera information won't be available to the application.<wbr/></p> 35628 </td> 35629 </tr> 35630 35631 <tr class="entries_header"> 35632 <th class="th_details" colspan="6">HAL Implementation Details</th> 35633 </tr> 35634 <tr class="entry_cont"> 35635 <td class="entry_details" colspan="6"> 35636 <p>Staring from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> the tag must be available in the capture 35637result metadata to indicate current active physical camera ID.<wbr/></p> 35638 </td> 35639 </tr> 35640 35641 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35642 <!-- end of entry --> 35643 35644 35645 35646 <!-- end of kind --> 35647 </tbody> 35648 35649 <!-- end of section --> 35650 <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr> 35651 35652 35653 <tr><td colspan="7" class="kind">controls</td></tr> 35654 35655 <thead class="entries_header"> 35656 <tr> 35657 <th class="th_name">Property Name</th> 35658 <th class="th_type">Type</th> 35659 <th class="th_description">Description</th> 35660 <th class="th_units">Units</th> 35661 <th class="th_range">Range</th> 35662 <th class="th_hal_version">Initial HIDL HAL version</th> 35663 <th class="th_tags">Tags</th> 35664 </tr> 35665 </thead> 35666 35667 <tbody> 35668 35669 35670 35671 35672 35673 35674 35675 35676 35677 35678 <tr class="entry" id="controls_android.distortionCorrection.mode"> 35679 <td class="entry_name 35680 " rowspan="3"> 35681 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode 35682 </td> 35683 <td class="entry_type"> 35684 <span class="entry_type_name entry_type_name_enum">byte</span> 35685 35686 <span class="entry_type_visibility"> [public]</span> 35687 35688 35689 35690 35691 35692 <ul class="entry_type_enum"> 35693 <li> 35694 <span class="entry_type_enum_name">OFF (v3.3)</span> 35695 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span> 35696 </li> 35697 <li> 35698 <span class="entry_type_enum_name">FAST (v3.3)</span> 35699 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate 35700relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would 35701reduce frame rate relative to sensor.<wbr/></p></span> 35702 </li> 35703 <li> 35704 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span> 35705 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of 35706possibly reduced frame rate relative to sensor output.<wbr/></p></span> 35707 </li> 35708 </ul> 35709 35710 </td> <!-- entry_type --> 35711 35712 <td class="entry_description"> 35713 <p>Mode of operation for the lens distortion correction block.<wbr/></p> 35714 </td> 35715 35716 <td class="entry_units"> 35717 </td> 35718 35719 <td class="entry_range"> 35720 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p> 35721 </td> 35722 35723 <td class="entry_hal_version"> 35724 <p>3.<wbr/>3</p> 35725 </td> 35726 35727 <td class="entry_tags"> 35728 </td> 35729 35730 </tr> 35731 <tr class="entries_header"> 35732 <th class="th_details" colspan="6">Details</th> 35733 </tr> 35734 <tr class="entry_cont"> 35735 <td class="entry_details" colspan="6"> 35736 <p>The lens distortion correction block attempts to improve image quality by fixing 35737radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If 35738available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p> 35739<p>OFF means no distortion correction is done.<wbr/></p> 35740<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be 35741applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality 35742correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device 35743will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if 35744any correction at all would slow down capture rate.<wbr/> Every output stream will have a 35745similar amount of enhancement applied.<wbr/></p> 35746<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is 35747not applied to any RAW output.<wbr/></p> 35748<p>This control will be on by default on devices that support this control.<wbr/> Applications 35749disabling distortion correction need to pay extra attention with the coordinate system of 35750metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/> 35751metadata coordinates follow the coordinate system of 35752<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 35753coordinates 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 35754camera device will map these metadata fields to match the corrected image produced by the 35755camera device,<wbr/> for both capture requests and results.<wbr/> However,<wbr/> this mapping is not very 35756precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/> Only linear 35757scaling between the active array and precorrection active array coordinates is 35758performed.<wbr/> Applications that require precise correction of metadata need to undo that 35759linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's 35760own requirements.<wbr/></p> 35761<p>The full list of metadata that is affected in this way by distortion correction is:</p> 35762<ul> 35763<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 35764<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 35765<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 35766<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 35767<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li> 35768</ul> 35769 </td> 35770 </tr> 35771 35772 35773 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35774 <!-- end of entry --> 35775 35776 35777 35778 <!-- end of kind --> 35779 </tbody> 35780 <tr><td colspan="7" class="kind">static</td></tr> 35781 35782 <thead class="entries_header"> 35783 <tr> 35784 <th class="th_name">Property Name</th> 35785 <th class="th_type">Type</th> 35786 <th class="th_description">Description</th> 35787 <th class="th_units">Units</th> 35788 <th class="th_range">Range</th> 35789 <th class="th_hal_version">Initial HIDL HAL version</th> 35790 <th class="th_tags">Tags</th> 35791 </tr> 35792 </thead> 35793 35794 <tbody> 35795 35796 35797 35798 35799 35800 35801 35802 35803 35804 35805 <tr class="entry" id="static_android.distortionCorrection.availableModes"> 35806 <td class="entry_name 35807 " rowspan="5"> 35808 android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes 35809 </td> 35810 <td class="entry_type"> 35811 <span class="entry_type_name">byte</span> 35812 <span class="entry_type_container">x</span> 35813 35814 <span class="entry_type_array"> 35815 n 35816 </span> 35817 <span class="entry_type_visibility"> [public as enumList]</span> 35818 35819 35820 35821 35822 <div class="entry_type_notes">list of enums</div> 35823 35824 35825 </td> <!-- entry_type --> 35826 35827 <td class="entry_description"> 35828 <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are 35829supported by this camera device.<wbr/></p> 35830 </td> 35831 35832 <td class="entry_units"> 35833 </td> 35834 35835 <td class="entry_range"> 35836 <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p> 35837 </td> 35838 35839 <td class="entry_hal_version"> 35840 <p>3.<wbr/>3</p> 35841 </td> 35842 35843 <td class="entry_tags"> 35844 <ul class="entry_tags"> 35845 <li><a href="#tag_V1">V1</a></li> 35846 <li><a href="#tag_REPROC">REPROC</a></li> 35847 </ul> 35848 </td> 35849 35850 </tr> 35851 <tr class="entries_header"> 35852 <th class="th_details" colspan="6">Details</th> 35853 </tr> 35854 <tr class="entry_cont"> 35855 <td class="entry_details" colspan="6"> 35856 <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/> 35857All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p> 35858 </td> 35859 </tr> 35860 35861 <tr class="entries_header"> 35862 <th class="th_details" colspan="6">HAL Implementation Details</th> 35863 </tr> 35864 <tr class="entry_cont"> 35865 <td class="entry_details" colspan="6"> 35866 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available 35867on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 35868That is,<wbr/> if the highest quality implementation on the camera device does not slow down 35869capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 35870 </td> 35871 </tr> 35872 35873 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 35874 <!-- end of entry --> 35875 35876 35877 35878 <!-- end of kind --> 35879 </tbody> 35880 <tr><td colspan="7" class="kind">dynamic</td></tr> 35881 35882 <thead class="entries_header"> 35883 <tr> 35884 <th class="th_name">Property Name</th> 35885 <th class="th_type">Type</th> 35886 <th class="th_description">Description</th> 35887 <th class="th_units">Units</th> 35888 <th class="th_range">Range</th> 35889 <th class="th_hal_version">Initial HIDL HAL version</th> 35890 <th class="th_tags">Tags</th> 35891 </tr> 35892 </thead> 35893 35894 <tbody> 35895 35896 35897 35898 35899 35900 35901 35902 35903 35904 35905 <tr class="entry" id="dynamic_android.distortionCorrection.mode"> 35906 <td class="entry_name 35907 " rowspan="3"> 35908 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode 35909 </td> 35910 <td class="entry_type"> 35911 <span class="entry_type_name entry_type_name_enum">byte</span> 35912 35913 <span class="entry_type_visibility"> [public]</span> 35914 35915 35916 35917 35918 35919 <ul class="entry_type_enum"> 35920 <li> 35921 <span class="entry_type_enum_name">OFF (v3.3)</span> 35922 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span> 35923 </li> 35924 <li> 35925 <span class="entry_type_enum_name">FAST (v3.3)</span> 35926 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate 35927relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would 35928reduce frame rate relative to sensor.<wbr/></p></span> 35929 </li> 35930 <li> 35931 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span> 35932 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of 35933possibly reduced frame rate relative to sensor output.<wbr/></p></span> 35934 </li> 35935 </ul> 35936 35937 </td> <!-- entry_type --> 35938 35939 <td class="entry_description"> 35940 <p>Mode of operation for the lens distortion correction block.<wbr/></p> 35941 </td> 35942 35943 <td class="entry_units"> 35944 </td> 35945 35946 <td class="entry_range"> 35947 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p> 35948 </td> 35949 35950 <td class="entry_hal_version"> 35951 <p>3.<wbr/>3</p> 35952 </td> 35953 35954 <td class="entry_tags"> 35955 </td> 35956 35957 </tr> 35958 <tr class="entries_header"> 35959 <th class="th_details" colspan="6">Details</th> 35960 </tr> 35961 <tr class="entry_cont"> 35962 <td class="entry_details" colspan="6"> 35963 <p>The lens distortion correction block attempts to improve image quality by fixing 35964radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If 35965available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p> 35966<p>OFF means no distortion correction is done.<wbr/></p> 35967<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be 35968applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality 35969correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device 35970will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if 35971any correction at all would slow down capture rate.<wbr/> Every output stream will have a 35972similar amount of enhancement applied.<wbr/></p> 35973<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is 35974not applied to any RAW output.<wbr/></p> 35975<p>This control will be on by default on devices that support this control.<wbr/> Applications 35976disabling distortion correction need to pay extra attention with the coordinate system of 35977metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/> 35978metadata coordinates follow the coordinate system of 35979<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 35980coordinates 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 35981camera device will map these metadata fields to match the corrected image produced by the 35982camera device,<wbr/> for both capture requests and results.<wbr/> However,<wbr/> this mapping is not very 35983precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/> Only linear 35984scaling between the active array and precorrection active array coordinates is 35985performed.<wbr/> Applications that require precise correction of metadata need to undo that 35986linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's 35987own requirements.<wbr/></p> 35988<p>The full list of metadata that is affected in this way by distortion correction is:</p> 35989<ul> 35990<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 35991<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 35992<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 35993<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 35994<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li> 35995</ul> 35996 </td> 35997 </tr> 35998 35999 36000 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36001 <!-- end of entry --> 36002 36003 36004 36005 <!-- end of kind --> 36006 </tbody> 36007 36008 <!-- end of section --> 36009 <tr><td colspan="7" id="section_heic" class="section">heic</td></tr> 36010 36011 36012 <tr><td colspan="7" class="kind">static</td></tr> 36013 36014 <thead class="entries_header"> 36015 <tr> 36016 <th class="th_name">Property Name</th> 36017 <th class="th_type">Type</th> 36018 <th class="th_description">Description</th> 36019 <th class="th_units">Units</th> 36020 <th class="th_range">Range</th> 36021 <th class="th_hal_version">Initial HIDL HAL version</th> 36022 <th class="th_tags">Tags</th> 36023 </tr> 36024 </thead> 36025 36026 <tbody> 36027 36028 36029 36030 36031 36032 36033 36034 36035 36036 36037 36038 36039 <tr class="entry" id="static_android.heic.info.supported"> 36040 <td class="entry_name 36041 " rowspan="3"> 36042 android.<wbr/>heic.<wbr/>info.<wbr/>supported 36043 </td> 36044 <td class="entry_type"> 36045 <span class="entry_type_name entry_type_name_enum">byte</span> 36046 36047 <span class="entry_type_visibility"> [system as boolean]</span> 36048 36049 36050 <span class="entry_type_hwlevel">[limited] </span> 36051 36052 36053 36054 <ul class="entry_type_enum"> 36055 <li> 36056 <span class="entry_type_enum_name">FALSE (v3.4)</span> 36057 </li> 36058 <li> 36059 <span class="entry_type_enum_name">TRUE (v3.4)</span> 36060 </li> 36061 </ul> 36062 36063 </td> <!-- entry_type --> 36064 36065 <td class="entry_description"> 36066 <p>Whether this camera device can support identical set of stream combinations 36067involving HEIC image format,<wbr/> compared to the 36068<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">table of combinations</a> 36069involving JPEG image format required for the device's hardware level and capabilities.<wbr/></p> 36070 </td> 36071 36072 <td class="entry_units"> 36073 </td> 36074 36075 <td class="entry_range"> 36076 </td> 36077 36078 <td class="entry_hal_version"> 36079 <p>3.<wbr/>4</p> 36080 </td> 36081 36082 <td class="entry_tags"> 36083 <ul class="entry_tags"> 36084 <li><a href="#tag_HEIC">HEIC</a></li> 36085 </ul> 36086 </td> 36087 36088 </tr> 36089 <tr class="entries_header"> 36090 <th class="th_details" colspan="6">Details</th> 36091 </tr> 36092 <tr class="entry_cont"> 36093 <td class="entry_details" colspan="6"> 36094 <p>All the static,<wbr/> control and dynamic metadata tags related to JPEG apply to HEIC formats 36095as 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 36096used to control the orientation and quality of the HEIC image.<wbr/> Configuring JPEG and 36097HEIC streams at the same time is not supported.<wbr/></p> 36098<p>If a camera device supports HEIC format (ISO/<wbr/>IEC 23008-12),<wbr/> not only does it 36099support the existing mandatory stream 36100<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">combinations</a> 36101required for the device's hardware level and capabilities,<wbr/> it also supports swapping 36102each JPEG stream with HEIC stream in all guaranteed combinations.<wbr/></p> 36103<p>For every HEIC stream configured by the application,<wbr/> the camera framework sets up 2 36104internal streams with camera HAL:</p> 36105<ul> 36106<li>A YUV_<wbr/>420_<wbr/>888 or IMPLEMENTATION_<wbr/>DEFINED HAL stream as input to HEIC or HEVC encoder.<wbr/></li> 36107<li>A BLOB stream with JPEG_<wbr/>APPS_<wbr/>SEGMENTS dataspace to extract application markers 36108including EXIF and thumbnail to be saved in HEIF container.<wbr/></li> 36109</ul> 36110<p>A camera device can output HEIC format to the application if and only if:</p> 36111<ul> 36112<li>The system contains a HEIC or HEVC encoder with constant quality mode,<wbr/> and</li> 36113<li>This tag is set to TRUE,<wbr/> meaning that camera HAL supports replacing JPEG streams in 36114all mandatory stream combinations with a [YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED stream + 36115JPEG_<wbr/>APPS_<wbr/>SEGMENT BLOB stream] combo.<wbr/></li> 36116</ul> 36117<p>As an example,<wbr/> if the camera device's hardware level is LIMITED,<wbr/> and it supports HEIC,<wbr/> 36118in addition to the required stream combinations,<wbr/> HAL must support below stream 36119combinations as well:</p> 36120<ul> 36121<li>IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li> 36122<li>PRIV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li> 36123<li>YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li> 36124<li>PRIV PREVIEW + YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + 36125JPEG_<wbr/>SEGMENTS_<wbr/>BLOB</li> 36126</ul> 36127<p>The selection logic between YUV_<wbr/>420_<wbr/>888 and IMPLEMENTATION_<wbr/>DEFINED for HAL internal 36128stream is as follows:</p> 36129<pre><code>if (HEIC encoder exists and supports the size) { 36130 use IMPLEMENTATION_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>IMAGE_<wbr/>ENCODER usage flag; 36131} else { 36132 //<wbr/> HVC encoder exists 36133 if (size is less than framework predefined tile size) { 36134 use IMPLEMENTATINO_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>VIDEO_<wbr/>ENCODER usage flag; 36135 } else { 36136 use YUV_<wbr/>420_<wbr/>888; 36137 } 36138} 36139</code></pre> 36140 </td> 36141 </tr> 36142 36143 36144 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36145 <!-- end of entry --> 36146 36147 36148 <tr class="entry" id="static_android.heic.info.maxJpegAppSegmentsCount"> 36149 <td class="entry_name 36150 " rowspan="3"> 36151 android.<wbr/>heic.<wbr/>info.<wbr/>max<wbr/>Jpeg<wbr/>App<wbr/>Segments<wbr/>Count 36152 </td> 36153 <td class="entry_type"> 36154 <span class="entry_type_name">byte</span> 36155 36156 <span class="entry_type_visibility"> [system]</span> 36157 36158 36159 <span class="entry_type_hwlevel">[limited] </span> 36160 36161 36162 36163 36164 </td> <!-- entry_type --> 36165 36166 <td class="entry_description"> 36167 <p>The maximum number of Jpeg APP segments supported by the camera HAL device.<wbr/></p> 36168 </td> 36169 36170 <td class="entry_units"> 36171 </td> 36172 36173 <td class="entry_range"> 36174 </td> 36175 36176 <td class="entry_hal_version"> 36177 <p>3.<wbr/>4</p> 36178 </td> 36179 36180 <td class="entry_tags"> 36181 <ul class="entry_tags"> 36182 <li><a href="#tag_HEIC">HEIC</a></li> 36183 </ul> 36184 </td> 36185 36186 </tr> 36187 <tr class="entries_header"> 36188 <th class="th_details" colspan="6">Details</th> 36189 </tr> 36190 <tr class="entry_cont"> 36191 <td class="entry_details" colspan="6"> 36192 <p>The camera framework will use this value to derive the size of the BLOB buffer with 36193JPEG_<wbr/>APP_<wbr/>SEGMENTS dataspace,<wbr/> with each APP segment occupying at most 64K bytes.<wbr/> If the 36194value of this tag is n,<wbr/> the size of the framework allocated buffer will be:</p> 36195<pre><code>n * (2 + 0xFFFF) + sizeof(struct CameraBlob) 36196</code></pre> 36197<p>where 2 is number of bytes for APP marker,<wbr/> 0xFFFF is the maximum size per APP segment 36198(including segment size).<wbr/></p> 36199<p>The value of this tag must be at least 1,<wbr/> and APP1 marker (0xFFE1) segment must be the 36200first segment stored in the JPEG_<wbr/>APPS_<wbr/>SEGMENTS BLOB buffer.<wbr/> APP1 segment stores EXIF and 36201thumbnail.<wbr/></p> 36202<p>Since media encoder embeds the orientation in the metadata of the output image,<wbr/> to be 36203consistent between main image and thumbnail,<wbr/> camera HAL must not rotate the thumbnail 36204image data based on <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a>.<wbr/> The framework will write the orientation 36205into EXIF and HEIC container.<wbr/></p> 36206<p>APP1 segment is followed immediately by one or multiple APP2 segments,<wbr/> and APPn 36207segments.<wbr/> After the HAL fills and returns the JPEG_<wbr/>APP_<wbr/>SEGMENTS buffer,<wbr/> the camera 36208framework modifies the APP1 segment by filling in the EXIF tags that are related to 36209main image bitstream and the tags that can be derived from capture result metadata,<wbr/> 36210before saving them into the HEIC container.<wbr/></p> 36211<p>The value of this tag must not be more than 16.<wbr/></p> 36212 </td> 36213 </tr> 36214 36215 36216 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36217 <!-- end of entry --> 36218 36219 36220 36221 36222 36223 <tr class="entry" id="static_android.heic.availableHeicStreamConfigurations"> 36224 <td class="entry_name 36225 " rowspan="5"> 36226 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations 36227 </td> 36228 <td class="entry_type"> 36229 <span class="entry_type_name entry_type_name_enum">int32</span> 36230 <span class="entry_type_container">x</span> 36231 36232 <span class="entry_type_array"> 36233 n x 4 36234 </span> 36235 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 36236 36237 36238 <span class="entry_type_hwlevel">[limited] </span> 36239 36240 36241 36242 <ul class="entry_type_enum"> 36243 <li> 36244 <span class="entry_type_enum_name">OUTPUT (v3.4)</span> 36245 </li> 36246 <li> 36247 <span class="entry_type_enum_name">INPUT (v3.4)</span> 36248 </li> 36249 </ul> 36250 36251 </td> <!-- entry_type --> 36252 36253 <td class="entry_description"> 36254 <p>The available HEIC (ISO/<wbr/>IEC 23008-12) stream 36255configurations that this camera device supports 36256(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 36257 </td> 36258 36259 <td class="entry_units"> 36260 </td> 36261 36262 <td class="entry_range"> 36263 </td> 36264 36265 <td class="entry_hal_version"> 36266 <p>3.<wbr/>4</p> 36267 </td> 36268 36269 <td class="entry_tags"> 36270 <ul class="entry_tags"> 36271 <li><a href="#tag_HEIC">HEIC</a></li> 36272 </ul> 36273 </td> 36274 36275 </tr> 36276 <tr class="entries_header"> 36277 <th class="th_details" colspan="6">Details</th> 36278 </tr> 36279 <tr class="entry_cont"> 36280 <td class="entry_details" colspan="6"> 36281 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 36282<p>If the camera device supports HEIC image format,<wbr/> it will support identical set of stream 36283combinations involving HEIC image format,<wbr/> compared to the combinations involving JPEG 36284image format as required by the device's hardware level and capabilities.<wbr/></p> 36285<p>All the static,<wbr/> control,<wbr/> and dynamic metadata tags related to JPEG apply to HEIC formats.<wbr/> 36286Configuring JPEG and HEIC streams at the same time is not supported.<wbr/></p> 36287 </td> 36288 </tr> 36289 36290 <tr class="entries_header"> 36291 <th class="th_details" colspan="6">HAL Implementation Details</th> 36292 </tr> 36293 <tr class="entry_cont"> 36294 <td class="entry_details" colspan="6"> 36295 <p>These are output stream configurations for use with dataSpace HAL_<wbr/>DATASPACE_<wbr/>HEIF.<wbr/></p> 36296<p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 36297set by the HAL layer.<wbr/></p> 36298 </td> 36299 </tr> 36300 36301 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36302 <!-- end of entry --> 36303 36304 36305 <tr class="entry" id="static_android.heic.availableHeicMinFrameDurations"> 36306 <td class="entry_name 36307 " rowspan="5"> 36308 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations 36309 </td> 36310 <td class="entry_type"> 36311 <span class="entry_type_name">int64</span> 36312 <span class="entry_type_container">x</span> 36313 36314 <span class="entry_type_array"> 36315 4 x n 36316 </span> 36317 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 36318 36319 36320 <span class="entry_type_hwlevel">[limited] </span> 36321 36322 36323 36324 36325 </td> <!-- entry_type --> 36326 36327 <td class="entry_description"> 36328 <p>This lists the minimum frame duration for each 36329format/<wbr/>size combination for HEIC output formats.<wbr/></p> 36330 </td> 36331 36332 <td class="entry_units"> 36333 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 36334 </td> 36335 36336 <td class="entry_range"> 36337 </td> 36338 36339 <td class="entry_hal_version"> 36340 <p>3.<wbr/>4</p> 36341 </td> 36342 36343 <td class="entry_tags"> 36344 <ul class="entry_tags"> 36345 <li><a href="#tag_HEIC">HEIC</a></li> 36346 </ul> 36347 </td> 36348 36349 </tr> 36350 <tr class="entries_header"> 36351 <th class="th_details" colspan="6">Details</th> 36352 </tr> 36353 <tr class="entry_cont"> 36354 <td class="entry_details" colspan="6"> 36355 <p>This should correspond to the frame duration when only that 36356stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 36357set to either OFF or FAST.<wbr/></p> 36358<p>When multiple streams are used in a request,<wbr/> the minimum frame 36359duration will be max(individual stream min durations).<wbr/></p> 36360<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 36361<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 36362calculating the max frame rate.<wbr/></p> 36363 </td> 36364 </tr> 36365 36366 <tr class="entries_header"> 36367 <th class="th_details" colspan="6">HAL Implementation Details</th> 36368 </tr> 36369 <tr class="entry_cont"> 36370 <td class="entry_details" colspan="6"> 36371 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 36372set by the HAL layer.<wbr/></p> 36373 </td> 36374 </tr> 36375 36376 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36377 <!-- end of entry --> 36378 36379 36380 <tr class="entry" id="static_android.heic.availableHeicStallDurations"> 36381 <td class="entry_name 36382 " rowspan="5"> 36383 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations 36384 </td> 36385 <td class="entry_type"> 36386 <span class="entry_type_name">int64</span> 36387 <span class="entry_type_container">x</span> 36388 36389 <span class="entry_type_array"> 36390 4 x n 36391 </span> 36392 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 36393 36394 36395 <span class="entry_type_hwlevel">[limited] </span> 36396 36397 36398 36399 36400 </td> <!-- entry_type --> 36401 36402 <td class="entry_description"> 36403 <p>This lists the maximum stall duration for each 36404output format/<wbr/>size combination for HEIC streams.<wbr/></p> 36405 </td> 36406 36407 <td class="entry_units"> 36408 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 36409 </td> 36410 36411 <td class="entry_range"> 36412 </td> 36413 36414 <td class="entry_hal_version"> 36415 <p>3.<wbr/>4</p> 36416 </td> 36417 36418 <td class="entry_tags"> 36419 <ul class="entry_tags"> 36420 <li><a href="#tag_HEIC">HEIC</a></li> 36421 </ul> 36422 </td> 36423 36424 </tr> 36425 <tr class="entries_header"> 36426 <th class="th_details" colspan="6">Details</th> 36427 </tr> 36428 <tr class="entry_cont"> 36429 <td class="entry_details" colspan="6"> 36430 <p>A stall duration is how much extra time would get added 36431to the normal minimum frame duration for a repeating request 36432that has streams with non-zero stall.<wbr/></p> 36433<p>This functions similarly to 36434<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for HEIC 36435streams.<wbr/></p> 36436<p>All HEIC output stream formats may have a nonzero stall 36437duration.<wbr/></p> 36438 </td> 36439 </tr> 36440 36441 <tr class="entries_header"> 36442 <th class="th_details" colspan="6">HAL Implementation Details</th> 36443 </tr> 36444 <tr class="entry_cont"> 36445 <td class="entry_details" colspan="6"> 36446 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 36447set by the HAL layer.<wbr/></p> 36448 </td> 36449 </tr> 36450 36451 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36452 <!-- end of entry --> 36453 36454 36455 <tr class="entry" id="static_android.heic.availableHeicStreamConfigurationsMaximumResolution"> 36456 <td class="entry_name 36457 " rowspan="5"> 36458 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution 36459 </td> 36460 <td class="entry_type"> 36461 <span class="entry_type_name entry_type_name_enum">int32</span> 36462 <span class="entry_type_container">x</span> 36463 36464 <span class="entry_type_array"> 36465 n x 4 36466 </span> 36467 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 36468 36469 36470 36471 36472 36473 <ul class="entry_type_enum"> 36474 <li> 36475 <span class="entry_type_enum_name">OUTPUT (v3.6)</span> 36476 </li> 36477 <li> 36478 <span class="entry_type_enum_name">INPUT (v3.6)</span> 36479 </li> 36480 </ul> 36481 36482 </td> <!-- entry_type --> 36483 36484 <td class="entry_description"> 36485 <p>The available HEIC (ISO/<wbr/>IEC 23008-12) stream 36486configurations that this camera device supports 36487(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 36488 </td> 36489 36490 <td class="entry_units"> 36491 </td> 36492 36493 <td class="entry_range"> 36494 </td> 36495 36496 <td class="entry_hal_version"> 36497 <p>3.<wbr/>6</p> 36498 </td> 36499 36500 <td class="entry_tags"> 36501 <ul class="entry_tags"> 36502 <li><a href="#tag_HEIC">HEIC</a></li> 36503 </ul> 36504 </td> 36505 36506 </tr> 36507 <tr class="entries_header"> 36508 <th class="th_details" colspan="6">Details</th> 36509 </tr> 36510 <tr class="entry_cont"> 36511 <td class="entry_details" colspan="6"> 36512 <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> 36513 </td> 36514 </tr> 36515 36516 <tr class="entries_header"> 36517 <th class="th_details" colspan="6">HAL Implementation Details</th> 36518 </tr> 36519 <tr class="entry_cont"> 36520 <td class="entry_details" colspan="6"> 36521 <p>These are output stream configurations for use with dataSpace HAL_<wbr/>DATASPACE_<wbr/>HEIF.<wbr/></p> 36522<p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 36523set by the HAL layer.<wbr/></p> 36524 </td> 36525 </tr> 36526 36527 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36528 <!-- end of entry --> 36529 36530 36531 <tr class="entry" id="static_android.heic.availableHeicMinFrameDurationsMaximumResolution"> 36532 <td class="entry_name 36533 " rowspan="5"> 36534 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 36535 </td> 36536 <td class="entry_type"> 36537 <span class="entry_type_name">int64</span> 36538 <span class="entry_type_container">x</span> 36539 36540 <span class="entry_type_array"> 36541 4 x n 36542 </span> 36543 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 36544 36545 36546 36547 36548 36549 36550 </td> <!-- entry_type --> 36551 36552 <td class="entry_description"> 36553 <p>This lists the minimum frame duration for each 36554format/<wbr/>size combination for HEIC output formats for CaptureRequests where 36555<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 36556<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> 36557 </td> 36558 36559 <td class="entry_units"> 36560 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 36561 </td> 36562 36563 <td class="entry_range"> 36564 </td> 36565 36566 <td class="entry_hal_version"> 36567 <p>3.<wbr/>6</p> 36568 </td> 36569 36570 <td class="entry_tags"> 36571 <ul class="entry_tags"> 36572 <li><a href="#tag_HEIC">HEIC</a></li> 36573 </ul> 36574 </td> 36575 36576 </tr> 36577 <tr class="entries_header"> 36578 <th class="th_details" colspan="6">Details</th> 36579 </tr> 36580 <tr class="entry_cont"> 36581 <td class="entry_details" colspan="6"> 36582 <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> 36583 </td> 36584 </tr> 36585 36586 <tr class="entries_header"> 36587 <th class="th_details" colspan="6">HAL Implementation Details</th> 36588 </tr> 36589 <tr class="entry_cont"> 36590 <td class="entry_details" colspan="6"> 36591 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 36592set by the HAL layer.<wbr/></p> 36593 </td> 36594 </tr> 36595 36596 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36597 <!-- end of entry --> 36598 36599 36600 <tr class="entry" id="static_android.heic.availableHeicStallDurationsMaximumResolution"> 36601 <td class="entry_name 36602 " rowspan="5"> 36603 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution 36604 </td> 36605 <td class="entry_type"> 36606 <span class="entry_type_name">int64</span> 36607 <span class="entry_type_container">x</span> 36608 36609 <span class="entry_type_array"> 36610 4 x n 36611 </span> 36612 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 36613 36614 36615 36616 36617 36618 36619 </td> <!-- entry_type --> 36620 36621 <td class="entry_description"> 36622 <p>This lists the maximum stall duration for each 36623output format/<wbr/>size combination for HEIC streams for CaptureRequests where 36624<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to 36625<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> 36626 </td> 36627 36628 <td class="entry_units"> 36629 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 36630 </td> 36631 36632 <td class="entry_range"> 36633 </td> 36634 36635 <td class="entry_hal_version"> 36636 <p>3.<wbr/>6</p> 36637 </td> 36638 36639 <td class="entry_tags"> 36640 <ul class="entry_tags"> 36641 <li><a href="#tag_HEIC">HEIC</a></li> 36642 </ul> 36643 </td> 36644 36645 </tr> 36646 <tr class="entries_header"> 36647 <th class="th_details" colspan="6">Details</th> 36648 </tr> 36649 <tr class="entry_cont"> 36650 <td class="entry_details" colspan="6"> 36651 <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> 36652 </td> 36653 </tr> 36654 36655 <tr class="entries_header"> 36656 <th class="th_details" colspan="6">HAL Implementation Details</th> 36657 </tr> 36658 <tr class="entry_cont"> 36659 <td class="entry_details" colspan="6"> 36660 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be 36661set by the HAL layer.<wbr/></p> 36662 </td> 36663 </tr> 36664 36665 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 36666 <!-- end of entry --> 36667 36668 36669 36670 <!-- end of kind --> 36671 </tbody> 36672 36673 <!-- end of section --> 36674<!-- </namespace> --> 36675 </table> 36676 36677 <div class="tags" id="tag_index"> 36678 <h2>Tags</h2> 36679 <ul> 36680 <li id="tag_BC">BC - 36681 Needed for backwards compatibility with old Java API 36682 36683 <ul class="tags_entries"> 36684 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 36685 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 36686 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 36687 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 36688 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 36689 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 36690 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 36691 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 36692 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 36693 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 36694 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 36695 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 36696 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 36697 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 36698 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 36699 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 36700 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 36701 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 36702 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> 36703 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 36704 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> 36705 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 36706 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 36707 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 36708 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 36709 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 36710 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 36711 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 36712 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 36713 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 36714 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li> 36715 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li> 36716 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 36717 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 36718 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 36719 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 36720 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 36721 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 36722 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 36723 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 36724 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 36725 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 36726 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 36727 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 36728 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 36729 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 36730 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 36731 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 36732 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 36733 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 36734 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 36735 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 36736 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 36737 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 36738 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 36739 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 36740 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 36741 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 36742 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 36743 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 36744 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> 36745 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 36746 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 36747 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 36748 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 36749 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 36750 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 36751 </ul> 36752 </li> <!-- tag_BC --> 36753 <li id="tag_V1">V1 - 36754 New features for first camera 2 release (API1) 36755 36756 <ul class="tags_entries"> 36757 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li> 36758 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li> 36759 <li><a href="#static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">android.control.availableHighSpeedVideoConfigurationsMaximumResolution</a> (static)</li> 36760 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 36761 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 36762 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 36763 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 36764 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 36765 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 36766 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 36767 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 36768 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 36769 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 36770 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 36771 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 36772 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 36773 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 36774 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 36775 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 36776 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 36777 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 36778 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 36779 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 36780 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 36781 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 36782 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 36783 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 36784 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 36785 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 36786 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 36787 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 36788 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 36789 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li> 36790 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 36791 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li> 36792 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 36793 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 36794 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 36795 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 36796 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 36797 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li> 36798 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 36799 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 36800 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 36801 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 36802 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 36803 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 36804 </ul> 36805 </li> <!-- tag_V1 --> 36806 <li id="tag_RAW">RAW - 36807 Needed for useful RAW image processing and DNG file support 36808 36809 <ul class="tags_entries"> 36810 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 36811 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 36812 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 36813 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 36814 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 36815 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 36816 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li> 36817 <li><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.sensor.info.activeArraySizeMaximumResolution</a> (static)</li> 36818 <li><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.sensor.info.pixelArraySizeMaximumResolution</a> (static)</li> 36819 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.sensor.info.preCorrectionActiveArraySizeMaximumResolution</a> (static)</li> 36820 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 36821 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> 36822 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 36823 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 36824 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 36825 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 36826 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 36827 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 36828 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 36829 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 36830 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 36831 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li> 36832 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 36833 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 36834 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 36835 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li> 36836 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li> 36837 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 36838 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 36839 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 36840 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li> 36841 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 36842 </ul> 36843 </li> <!-- tag_RAW --> 36844 <li id="tag_HAL2">HAL2 - 36845 Entry is only used by camera device legacy HAL 2.x 36846 36847 <ul class="tags_entries"> 36848 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 36849 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 36850 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 36851 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 36852 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 36853 </ul> 36854 </li> <!-- tag_HAL2 --> 36855 <li id="tag_FULL">FULL - 36856 Entry is required for full hardware level devices, and optional for other hardware levels 36857 36858 <ul class="tags_entries"> 36859 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 36860 </ul> 36861 </li> <!-- tag_FULL --> 36862 <li id="tag_DEPTH">DEPTH - 36863 Entry is required for the depth capability. 36864 36865 <ul class="tags_entries"> 36866 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li> 36867 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li> 36868 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li> 36869 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li> 36870 <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li> 36871 <li><a href="#static_android.lens.distortionMaximumResolution">android.lens.distortionMaximumResolution</a> (static)</li> 36872 <li><a href="#static_android.lens.intrinsicCalibrationMaximumResolution">android.lens.intrinsicCalibrationMaximumResolution</a> (static)</li> 36873 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li> 36874 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li> 36875 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li> 36876 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li> 36877 <li><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a> (static)</li> 36878 <li><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a> (static)</li> 36879 <li><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a> (static)</li> 36880 <li><a href="#static_android.depth.availableDepthStreamConfigurationsMaximumResolution">android.depth.availableDepthStreamConfigurationsMaximumResolution</a> (static)</li> 36881 <li><a href="#static_android.depth.availableDepthMinFrameDurationsMaximumResolution">android.depth.availableDepthMinFrameDurationsMaximumResolution</a> (static)</li> 36882 <li><a href="#static_android.depth.availableDepthStallDurationsMaximumResolution">android.depth.availableDepthStallDurationsMaximumResolution</a> (static)</li> 36883 <li><a href="#static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution</a> (static)</li> 36884 <li><a href="#static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution</a> (static)</li> 36885 <li><a href="#static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">android.depth.availableDynamicDepthStallDurationsMaximumResolution</a> (static)</li> 36886 </ul> 36887 </li> <!-- tag_DEPTH --> 36888 <li id="tag_REPROC">REPROC - 36889 Entry is required for the YUV or PRIVATE reprocessing capability. 36890 36891 <ul class="tags_entries"> 36892 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 36893 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 36894 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 36895 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 36896 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li> 36897 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li> 36898 <li><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a> (static)</li> 36899 <li><a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.scaler.availableInputOutputFormatsMapMaximumResolution</a> (static)</li> 36900 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li> 36901 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li> 36902 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li> 36903 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 36904 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 36905 </ul> 36906 </li> <!-- tag_REPROC --> 36907 <li id="tag_LOGICALCAMERA">LOGICALCAMERA - 36908 Entry is required for logical multi-camera capability. 36909 36910 <ul class="tags_entries"> 36911 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li> 36912 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li> 36913 <li><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a> (dynamic)</li> 36914 </ul> 36915 </li> <!-- tag_LOGICALCAMERA --> 36916 <li id="tag_HEIC">HEIC - 36917 Entry is required for devices with HEIC (High Efficiency Image Format) support. 36918 36919 <ul class="tags_entries"> 36920 <li><a href="#static_android.heic.info.supported">android.heic.info.supported</a> (static)</li> 36921 <li><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a> (static)</li> 36922 <li><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a> (static)</li> 36923 <li><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a> (static)</li> 36924 <li><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a> (static)</li> 36925 <li><a href="#static_android.heic.availableHeicStreamConfigurationsMaximumResolution">android.heic.availableHeicStreamConfigurationsMaximumResolution</a> (static)</li> 36926 <li><a href="#static_android.heic.availableHeicMinFrameDurationsMaximumResolution">android.heic.availableHeicMinFrameDurationsMaximumResolution</a> (static)</li> 36927 <li><a href="#static_android.heic.availableHeicStallDurationsMaximumResolution">android.heic.availableHeicStallDurationsMaximumResolution</a> (static)</li> 36928 </ul> 36929 </li> <!-- tag_HEIC --> 36930 <li id="tag_FUTURE">FUTURE - 36931 Entry is under-specified and is not required for now. This is for book-keeping purpose, 36932 do not implement or use it, it may be revised for future. 36933 36934 <ul class="tags_entries"> 36935 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 36936 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 36937 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 36938 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 36939 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 36940 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 36941 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 36942 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> 36943 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> 36944 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> 36945 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 36946 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 36947 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 36948 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 36949 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 36950 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> 36951 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> 36952 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> 36953 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> 36954 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 36955 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 36956 </ul> 36957 </li> <!-- tag_FUTURE --> 36958 </ul> 36959 </div> 36960 36961 [ <a href="#">top</a> ] 36962 36963</body> 36964</html> 36965