1<!DOCTYPE html> 2<html> 3<!-- Copyright (C) 2012 The Android Open Source Project 4 5 Licensed under the Apache License, Version 2.0 (the "License"); 6 you may not use this file except in compliance with the License. 7 You may obtain a copy of the License at 8 9 http://www.apache.org/licenses/LICENSE-2.0 10 11 Unless required by applicable law or agreed to in writing, software 12 distributed under the License is distributed on an "AS IS" BASIS, 13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 See the License for the specific language governing permissions and 15 limitations under the License. 16--> 17<head> 18 <!-- automatically generated from html.mako. do NOT edit directly --> 19 <meta charset="utf-8" /> 20 <title>Android Camera HAL3.4 Properties</title> 21 <style type="text/css"> 22 body { background-color: #f7f7f7; font-family: Roboto, sans-serif;} 23 h1 { color: #333333; } 24 h2 { color: #333333; } 25 a:link { color: #258aaf; text-decoration: none} 26 a:hover { color: #459aaf; text-decoration: underline } 27 a:visited { color: #154a5f; text-decoration: none} 28 .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777} 29 .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa } 30 .entry { background-color: #f0f0f0 } 31 .entry_cont { background-color: #f0f0f0 } 32 .entries_header { background-color: #dddddd; text-align: center} 33 34 /* toc style */ 35 .toc_section_header { font-size:1.3em; } 36 .toc_kind_header { font-size:1.2em; } 37 .toc_deprecated { text-decoration:line-through; } 38 39 /* table column sizes */ 40 table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word } 41 td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em } 42 .th_name { width: 20% } 43 .th_units { width: 10% } 44 .th_tags { width: 5% } 45 .th_details { width: 25% } 46 .th_type { width: 17% } 47 .th_description { width: 20% } 48 .th_range { width: 8% } 49 .th_hal_version { width: 5% } 50 td { font-size: 0.9em; } 51 52 /* hide the first thead, we need it there only to enforce column sizes */ 53 .thead_dummy { visibility: hidden; } 54 55 /* Entry flair */ 56 .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; } 57 .entry_name_deprecated { text-decoration:line-through; } 58 59 /* Entry type flair */ 60 .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;} 61 .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" } 62 .entry_type_visibility { font-weight: bolder; padding-left:1em} 63 .entry_type_synthetic { font-weight: bolder; color: #996600; } 64 .entry_type_hwlevel { font-weight: bolder; color: #000066; } 65 .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; } 66 .entry_type_enum_name { font-family: monospace; font-weight: bolder; } 67 .entry_type_enum_notes:before { content:" - " } 68 .entry_type_enum_notes>p:first-child { display:inline; } 69 .entry_type_enum_value:before { content:" = " } 70 .entry_type_enum_value { font-family: monospace; } 71 .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; } 72 .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;} 73 .entry_range_deprecated { font-weight: bolder; } 74 75 /* Entry tags flair */ 76 .entry_tags ul { list-style-type: none; } 77 78 /* Entry details (full docs) flair */ 79 .entry_details_header { font-weight: bold; background-color: #dddddd; 80 text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; } 81 82 /* Entry spacer flair */ 83 .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; } 84 85 /* TODO: generate abbr element for each tag link? */ 86 /* TODO for each x.y.z try to link it to the entry */ 87 88 </style> 89 90 <style> 91 92 { 93 /* broken... 94 supposedly there is a bug in chrome that it lays out tables before 95 it knows its being printed, so the page-break-* styles are ignored 96 */ 97 tr { page-break-after: always; page-break-inside: avoid; } 98 } 99 100 </style> 101</head> 102 103 104 105<body> 106 <h1>Android Camera HAL3.2 Properties</h1> 107 108 109 <h2>Table of Contents</h2> 110 <ul class="toc"> 111 <li><a href="#tag_index" class="toc_section_header">Tags</a></li> 112 <li> 113 <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span> 114 <ul class="toc_section"> 115 <li> 116 <span class="toc_kind_header">controls</span> 117 <ul class="toc_section"> 118 <li 119 ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 120 <li 121 ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 122 <li 123 ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 124 <li 125 ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li> 126 </ul> 127 </li> 128 <li> 129 <span class="toc_kind_header">dynamic</span> 130 <ul class="toc_section"> 131 <li 132 ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 133 <li 134 ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 135 <li 136 ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 137 <li 138 ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li> 139 </ul> 140 </li> 141 <li> 142 <span class="toc_kind_header">static</span> 143 <ul class="toc_section"> 144 <li 145 ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li> 146 </ul> 147 </li> 148 </ul> <!-- toc_section --> 149 </li> 150 <li> 151 <span class="toc_section_header"><a href="#section_control">control</a></span> 152 <ul class="toc_section"> 153 <li> 154 <span class="toc_kind_header">controls</span> 155 <ul class="toc_section"> 156 <li 157 ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 158 <li 159 ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 160 <li 161 ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li> 162 <li 163 ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li> 164 <li 165 ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li> 166 <li 167 ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 168 <li 169 ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 170 <li 171 ><a href="#controls_android.control.afMode">android.control.afMode</a></li> 172 <li 173 ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li> 174 <li 175 ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li> 176 <li 177 ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li> 178 <li 179 ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li> 180 <li 181 ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li> 182 <li 183 ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li> 184 <li 185 ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li> 186 <li 187 ><a href="#controls_android.control.mode">android.control.mode</a></li> 188 <li 189 ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li> 190 <li 191 ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 192 <li 193 ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li> 194 <li 195 ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li> 196 </ul> 197 </li> 198 <li> 199 <span class="toc_kind_header">static</span> 200 <ul class="toc_section"> 201 <li 202 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li> 203 <li 204 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li> 205 <li 206 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li> 207 <li 208 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li> 209 <li 210 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li> 211 <li 212 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li> 213 <li 214 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li> 215 <li 216 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li> 217 <li 218 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li> 219 <li 220 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li> 221 <li 222 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li> 223 <li 224 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li> 225 <li 226 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li> 227 <li 228 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li> 229 <li 230 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li> 231 <li 232 ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li> 233 <li 234 ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li> 235 <li 236 ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li> 237 <li 238 ><a href="#static_android.control.availableModes">android.control.availableModes</a></li> 239 <li 240 ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li> 241 </ul> 242 </li> 243 <li> 244 <span class="toc_kind_header">dynamic</span> 245 <ul class="toc_section"> 246 <li 247 class="toc_deprecated" 248 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li> 249 <li 250 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 251 <li 252 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 253 <li 254 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li> 255 <li 256 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li> 257 <li 258 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li> 259 <li 260 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 261 <li 262 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 263 <li 264 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li> 265 <li 266 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li> 267 <li 268 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li> 269 <li 270 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li> 271 <li 272 ><a href="#dynamic_android.control.afState">android.control.afState</a></li> 273 <li 274 class="toc_deprecated" 275 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li> 276 <li 277 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li> 278 <li 279 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li> 280 <li 281 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li> 282 <li 283 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li> 284 <li 285 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li> 286 <li 287 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li> 288 <li 289 ><a href="#dynamic_android.control.mode">android.control.mode</a></li> 290 <li 291 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li> 292 <li 293 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 294 <li 295 ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li> 296 <li 297 ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li> 298 <li 299 ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li> 300 </ul> 301 </li> 302 </ul> <!-- toc_section --> 303 </li> 304 <li> 305 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span> 306 <ul class="toc_section"> 307 <li> 308 <span class="toc_kind_header">controls</span> 309 <ul class="toc_section"> 310 <li 311 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li> 312 </ul> 313 </li> 314 </ul> <!-- toc_section --> 315 </li> 316 <li> 317 <span class="toc_section_header"><a href="#section_edge">edge</a></span> 318 <ul class="toc_section"> 319 <li> 320 <span class="toc_kind_header">controls</span> 321 <ul class="toc_section"> 322 <li 323 ><a href="#controls_android.edge.mode">android.edge.mode</a></li> 324 <li 325 ><a href="#controls_android.edge.strength">android.edge.strength</a></li> 326 </ul> 327 </li> 328 <li> 329 <span class="toc_kind_header">static</span> 330 <ul class="toc_section"> 331 <li 332 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li> 333 </ul> 334 </li> 335 <li> 336 <span class="toc_kind_header">dynamic</span> 337 <ul class="toc_section"> 338 <li 339 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> 340 </ul> 341 </li> 342 </ul> <!-- toc_section --> 343 </li> 344 <li> 345 <span class="toc_section_header"><a href="#section_flash">flash</a></span> 346 <ul class="toc_section"> 347 <li> 348 <span class="toc_kind_header">controls</span> 349 <ul class="toc_section"> 350 <li 351 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> 352 <li 353 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> 354 <li 355 ><a href="#controls_android.flash.mode">android.flash.mode</a></li> 356 </ul> 357 </li> 358 <li> 359 <span class="toc_kind_header">static</span> 360 <ul class="toc_section"> 361 362 <li 363 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li> 364 <li 365 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> 366 367 <li 368 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> 369 <li 370 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> 371 </ul> 372 </li> 373 <li> 374 <span class="toc_kind_header">dynamic</span> 375 <ul class="toc_section"> 376 <li 377 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> 378 <li 379 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> 380 <li 381 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> 382 <li 383 ><a href="#dynamic_android.flash.state">android.flash.state</a></li> 384 </ul> 385 </li> 386 </ul> <!-- toc_section --> 387 </li> 388 <li> 389 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span> 390 <ul class="toc_section"> 391 <li> 392 <span class="toc_kind_header">controls</span> 393 <ul class="toc_section"> 394 <li 395 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li> 396 </ul> 397 </li> 398 <li> 399 <span class="toc_kind_header">static</span> 400 <ul class="toc_section"> 401 <li 402 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li> 403 </ul> 404 </li> 405 <li> 406 <span class="toc_kind_header">dynamic</span> 407 <ul class="toc_section"> 408 <li 409 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li> 410 </ul> 411 </li> 412 </ul> <!-- toc_section --> 413 </li> 414 <li> 415 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span> 416 <ul class="toc_section"> 417 <li> 418 <span class="toc_kind_header">controls</span> 419 <ul class="toc_section"> 420 <li 421 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 422 <li 423 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 424 <li 425 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 426 <li 427 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 428 <li 429 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li> 430 <li 431 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li> 432 <li 433 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 434 <li 435 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 436 </ul> 437 </li> 438 <li> 439 <span class="toc_kind_header">static</span> 440 <ul class="toc_section"> 441 <li 442 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li> 443 <li 444 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li> 445 </ul> 446 </li> 447 <li> 448 <span class="toc_kind_header">dynamic</span> 449 <ul class="toc_section"> 450 <li 451 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 452 <li 453 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 454 <li 455 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 456 <li 457 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 458 <li 459 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li> 460 <li 461 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li> 462 <li 463 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li> 464 <li 465 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 466 <li 467 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 468 </ul> 469 </li> 470 </ul> <!-- toc_section --> 471 </li> 472 <li> 473 <span class="toc_section_header"><a href="#section_lens">lens</a></span> 474 <ul class="toc_section"> 475 <li> 476 <span class="toc_kind_header">controls</span> 477 <ul class="toc_section"> 478 <li 479 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li> 480 <li 481 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li> 482 <li 483 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li> 484 <li 485 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li> 486 <li 487 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 488 </ul> 489 </li> 490 <li> 491 <span class="toc_kind_header">static</span> 492 <ul class="toc_section"> 493 494 <li 495 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li> 496 <li 497 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li> 498 <li 499 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li> 500 <li 501 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li> 502 <li 503 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li> 504 <li 505 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li> 506 <li 507 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li> 508 <li 509 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li> 510 511 <li 512 ><a href="#static_android.lens.facing">android.lens.facing</a></li> 513 <li 514 ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li> 515 <li 516 ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 517 <li 518 ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 519 <li 520 class="toc_deprecated" 521 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 522 <li 523 ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li> 524 <li 525 ><a href="#static_android.lens.distortion">android.lens.distortion</a></li> 526 </ul> 527 </li> 528 <li> 529 <span class="toc_kind_header">dynamic</span> 530 <ul class="toc_section"> 531 <li 532 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li> 533 <li 534 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li> 535 <li 536 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li> 537 <li 538 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li> 539 <li 540 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li> 541 <li 542 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 543 <li 544 ><a href="#dynamic_android.lens.state">android.lens.state</a></li> 545 <li 546 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li> 547 <li 548 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 549 <li 550 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 551 <li 552 class="toc_deprecated" 553 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 554 <li 555 ><a href="#dynamic_android.lens.distortion">android.lens.distortion</a></li> 556 </ul> 557 </li> 558 </ul> <!-- toc_section --> 559 </li> 560 <li> 561 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span> 562 <ul class="toc_section"> 563 <li> 564 <span class="toc_kind_header">controls</span> 565 <ul class="toc_section"> 566 <li 567 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 568 <li 569 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li> 570 </ul> 571 </li> 572 <li> 573 <span class="toc_kind_header">static</span> 574 <ul class="toc_section"> 575 <li 576 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li> 577 </ul> 578 </li> 579 <li> 580 <span class="toc_kind_header">dynamic</span> 581 <ul class="toc_section"> 582 <li 583 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 584 </ul> 585 </li> 586 </ul> <!-- toc_section --> 587 </li> 588 <li> 589 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span> 590 <ul class="toc_section"> 591 <li> 592 <span class="toc_kind_header">static</span> 593 <ul class="toc_section"> 594 <li 595 class="toc_deprecated" 596 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> 597 <li 598 class="toc_deprecated" 599 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> 600 <li 601 class="toc_deprecated" 602 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> 603 <li 604 class="toc_deprecated" 605 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li> 606 </ul> 607 </li> 608 <li> 609 <span class="toc_kind_header">dynamic</span> 610 <ul class="toc_section"> 611 <li 612 class="toc_deprecated" 613 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li> 614 </ul> 615 </li> 616 </ul> <!-- toc_section --> 617 </li> 618 <li> 619 <span class="toc_section_header"><a href="#section_request">request</a></span> 620 <ul class="toc_section"> 621 <li> 622 <span class="toc_kind_header">controls</span> 623 <ul class="toc_section"> 624 <li 625 class="toc_deprecated" 626 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> 627 <li 628 ><a href="#controls_android.request.id">android.request.id</a></li> 629 <li 630 class="toc_deprecated" 631 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> 632 <li 633 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> 634 <li 635 class="toc_deprecated" 636 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> 637 <li 638 class="toc_deprecated" 639 ><a href="#controls_android.request.type">android.request.type</a></li> 640 </ul> 641 </li> 642 <li> 643 <span class="toc_kind_header">static</span> 644 <ul class="toc_section"> 645 <li 646 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li> 647 <li 648 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li> 649 <li 650 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li> 651 <li 652 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li> 653 <li 654 class="toc_deprecated" 655 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li> 656 <li 657 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li> 658 <li 659 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li> 660 <li 661 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li> 662 <li 663 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li> 664 <li 665 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li> 666 <li 667 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li> 668 <li 669 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li> 670 <li 671 ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li> 672 <li 673 ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li> 674 </ul> 675 </li> 676 <li> 677 <span class="toc_kind_header">dynamic</span> 678 <ul class="toc_section"> 679 <li 680 class="toc_deprecated" 681 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li> 682 <li 683 ><a href="#dynamic_android.request.id">android.request.id</a></li> 684 <li 685 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li> 686 <li 687 class="toc_deprecated" 688 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li> 689 <li 690 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li> 691 </ul> 692 </li> 693 </ul> <!-- toc_section --> 694 </li> 695 <li> 696 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span> 697 <ul class="toc_section"> 698 <li> 699 <span class="toc_kind_header">controls</span> 700 <ul class="toc_section"> 701 <li 702 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 703 </ul> 704 </li> 705 <li> 706 <span class="toc_kind_header">static</span> 707 <ul class="toc_section"> 708 <li 709 class="toc_deprecated" 710 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li> 711 <li 712 class="toc_deprecated" 713 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li> 714 <li 715 class="toc_deprecated" 716 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li> 717 <li 718 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li> 719 <li 720 class="toc_deprecated" 721 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li> 722 <li 723 class="toc_deprecated" 724 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li> 725 <li 726 class="toc_deprecated" 727 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li> 728 <li 729 class="toc_deprecated" 730 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li> 731 <li 732 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li> 733 <li 734 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li> 735 <li 736 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li> 737 <li 738 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li> 739 <li 740 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li> 741 <li 742 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li> 743 </ul> 744 </li> 745 <li> 746 <span class="toc_kind_header">dynamic</span> 747 <ul class="toc_section"> 748 <li 749 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 750 </ul> 751 </li> 752 </ul> <!-- toc_section --> 753 </li> 754 <li> 755 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> 756 <ul class="toc_section"> 757 <li> 758 <span class="toc_kind_header">controls</span> 759 <ul class="toc_section"> 760 <li 761 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 762 <li 763 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 764 <li 765 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 766 <li 767 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 768 <li 769 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 770 </ul> 771 </li> 772 <li> 773 <span class="toc_kind_header">static</span> 774 <ul class="toc_section"> 775 776 <li 777 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> 778 <li 779 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> 780 <li 781 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> 782 <li 783 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> 784 <li 785 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> 786 <li 787 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> 788 <li 789 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> 790 <li 791 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> 792 <li 793 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li> 794 <li 795 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li> 796 <li 797 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li> 798 799 <li 800 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li> 801 <li 802 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li> 803 <li 804 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li> 805 <li 806 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li> 807 <li 808 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li> 809 <li 810 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li> 811 <li 812 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li> 813 <li 814 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li> 815 <li 816 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> 817 <li 818 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> 819 <li 820 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> 821 <li 822 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> 823 <li 824 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li> 825 <li 826 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> 827 <li 828 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li> 829 <li 830 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li> 831 </ul> 832 </li> 833 <li> 834 <span class="toc_kind_header">dynamic</span> 835 <ul class="toc_section"> 836 <li 837 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 838 <li 839 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 840 <li 841 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 842 <li 843 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 844 <li 845 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 846 <li 847 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> 848 <li 849 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li> 850 <li 851 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> 852 <li 853 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> 854 <li 855 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> 856 <li 857 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 858 <li 859 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 860 <li 861 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li> 862 <li 863 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li> 864 <li 865 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li> 866 </ul> 867 </li> 868 </ul> <!-- toc_section --> 869 </li> 870 <li> 871 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 872 <ul class="toc_section"> 873 <li> 874 <span class="toc_kind_header">controls</span> 875 <ul class="toc_section"> 876 <li 877 ><a href="#controls_android.shading.mode">android.shading.mode</a></li> 878 <li 879 ><a href="#controls_android.shading.strength">android.shading.strength</a></li> 880 </ul> 881 </li> 882 <li> 883 <span class="toc_kind_header">dynamic</span> 884 <ul class="toc_section"> 885 <li 886 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 887 </ul> 888 </li> 889 <li> 890 <span class="toc_kind_header">static</span> 891 <ul class="toc_section"> 892 <li 893 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li> 894 </ul> 895 </li> 896 </ul> <!-- toc_section --> 897 </li> 898 <li> 899 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> 900 <ul class="toc_section"> 901 <li> 902 <span class="toc_kind_header">controls</span> 903 <ul class="toc_section"> 904 <li 905 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 906 <li 907 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 908 <li 909 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 910 <li 911 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 912 <li 913 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 914 <li 915 ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li> 916 </ul> 917 </li> 918 <li> 919 <span class="toc_kind_header">static</span> 920 <ul class="toc_section"> 921 922 <li 923 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 924 <li 925 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 926 <li 927 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 928 <li 929 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 930 <li 931 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 932 <li 933 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 934 <li 935 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> 936 <li 937 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li> 938 <li 939 ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li> 940 941 </ul> 942 </li> 943 <li> 944 <span class="toc_kind_header">dynamic</span> 945 <ul class="toc_section"> 946 <li 947 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 948 <li 949 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 950 <li 951 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 952 <li 953 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 954 <li 955 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 956 <li 957 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li> 958 <li 959 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 960 <li 961 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 962 <li 963 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 964 <li 965 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 966 <li 967 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li> 968 <li 969 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 970 <li 971 class="toc_deprecated" 972 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 973 <li 974 class="toc_deprecated" 975 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 976 <li 977 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 978 <li 979 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 980 <li 981 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> 982 <li 983 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 984 <li 985 ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li> 986 <li 987 ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li> 988 <li 989 ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li> 990 <li 991 ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li> 992 <li 993 ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li> 994 </ul> 995 </li> 996 </ul> <!-- toc_section --> 997 </li> 998 <li> 999 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 1000 <ul class="toc_section"> 1001 <li> 1002 <span class="toc_kind_header">controls</span> 1003 <ul class="toc_section"> 1004 <li 1005 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 1006 <li 1007 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 1008 <li 1009 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 1010 <li 1011 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li> 1012 <li 1013 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 1014 <li 1015 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li> 1016 <li 1017 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 1018 </ul> 1019 </li> 1020 <li> 1021 <span class="toc_kind_header">static</span> 1022 <ul class="toc_section"> 1023 <li 1024 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 1025 <li 1026 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> 1027 </ul> 1028 </li> 1029 <li> 1030 <span class="toc_kind_header">dynamic</span> 1031 <ul class="toc_section"> 1032 <li 1033 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 1034 <li 1035 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 1036 <li 1037 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 1038 <li 1039 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li> 1040 <li 1041 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 1042 <li 1043 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li> 1044 <li 1045 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 1046 </ul> 1047 </li> 1048 </ul> <!-- toc_section --> 1049 </li> 1050 <li> 1051 <span class="toc_section_header"><a href="#section_led">led</a></span> 1052 <ul class="toc_section"> 1053 <li> 1054 <span class="toc_kind_header">controls</span> 1055 <ul class="toc_section"> 1056 <li 1057 ><a href="#controls_android.led.transmit">android.led.transmit</a></li> 1058 </ul> 1059 </li> 1060 <li> 1061 <span class="toc_kind_header">dynamic</span> 1062 <ul class="toc_section"> 1063 <li 1064 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 1065 </ul> 1066 </li> 1067 <li> 1068 <span class="toc_kind_header">static</span> 1069 <ul class="toc_section"> 1070 <li 1071 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 1072 </ul> 1073 </li> 1074 </ul> <!-- toc_section --> 1075 </li> 1076 <li> 1077 <span class="toc_section_header"><a href="#section_info">info</a></span> 1078 <ul class="toc_section"> 1079 <li> 1080 <span class="toc_kind_header">static</span> 1081 <ul class="toc_section"> 1082 <li 1083 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 1084 <li 1085 ><a href="#static_android.info.version">android.info.version</a></li> 1086 </ul> 1087 </li> 1088 </ul> <!-- toc_section --> 1089 </li> 1090 <li> 1091 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 1092 <ul class="toc_section"> 1093 <li> 1094 <span class="toc_kind_header">controls</span> 1095 <ul class="toc_section"> 1096 <li 1097 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 1098 </ul> 1099 </li> 1100 <li> 1101 <span class="toc_kind_header">dynamic</span> 1102 <ul class="toc_section"> 1103 <li 1104 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 1105 </ul> 1106 </li> 1107 </ul> <!-- toc_section --> 1108 </li> 1109 <li> 1110 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 1111 <ul class="toc_section"> 1112 <li> 1113 <span class="toc_kind_header">dynamic</span> 1114 <ul class="toc_section"> 1115 <li 1116 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 1117 </ul> 1118 </li> 1119 <li> 1120 <span class="toc_kind_header">static</span> 1121 <ul class="toc_section"> 1122 <li 1123 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 1124 </ul> 1125 </li> 1126 </ul> <!-- toc_section --> 1127 </li> 1128 <li> 1129 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span> 1130 <ul class="toc_section"> 1131 <li> 1132 <span class="toc_kind_header">controls</span> 1133 <ul class="toc_section"> 1134 <li 1135 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1136 </ul> 1137 </li> 1138 <li> 1139 <span class="toc_kind_header">dynamic</span> 1140 <ul class="toc_section"> 1141 <li 1142 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1143 </ul> 1144 </li> 1145 <li> 1146 <span class="toc_kind_header">static</span> 1147 <ul class="toc_section"> 1148 <li 1149 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li> 1150 </ul> 1151 </li> 1152 </ul> <!-- toc_section --> 1153 </li> 1154 <li> 1155 <span class="toc_section_header"><a href="#section_depth">depth</a></span> 1156 <ul class="toc_section"> 1157 <li> 1158 <span class="toc_kind_header">static</span> 1159 <ul class="toc_section"> 1160 <li 1161 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li> 1162 <li 1163 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li> 1164 <li 1165 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li> 1166 <li 1167 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li> 1168 <li 1169 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li> 1170 </ul> 1171 </li> 1172 </ul> <!-- toc_section --> 1173 </li> 1174 <li> 1175 <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span> 1176 <ul class="toc_section"> 1177 <li> 1178 <span class="toc_kind_header">static</span> 1179 <ul class="toc_section"> 1180 <li 1181 ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li> 1182 <li 1183 ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li> 1184 </ul> 1185 </li> 1186 </ul> <!-- toc_section --> 1187 </li> 1188 <li> 1189 <span class="toc_section_header"><a href="#section_distortionCorrection">distortionCorrection</a></span> 1190 <ul class="toc_section"> 1191 <li> 1192 <span class="toc_kind_header">controls</span> 1193 <ul class="toc_section"> 1194 <li 1195 ><a href="#controls_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li> 1196 </ul> 1197 </li> 1198 <li> 1199 <span class="toc_kind_header">static</span> 1200 <ul class="toc_section"> 1201 <li 1202 ><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a></li> 1203 </ul> 1204 </li> 1205 <li> 1206 <span class="toc_kind_header">dynamic</span> 1207 <ul class="toc_section"> 1208 <li 1209 ><a href="#dynamic_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li> 1210 </ul> 1211 </li> 1212 </ul> <!-- toc_section --> 1213 </li> 1214 </ul> 1215 1216 1217 <h1>Properties</h1> 1218 <table class="properties"> 1219 1220 <thead class="thead_dummy"> 1221 <tr> 1222 <th class="th_name">Property Name</th> 1223 <th class="th_type">Type</th> 1224 <th class="th_description">Description</th> 1225 <th class="th_units">Units</th> 1226 <th class="th_range">Range</th> 1227 <th class="th_hal_version">HIDL HAL version</th> 1228 <th class="th_tags">Tags</th> 1229 </tr> 1230 </thead> <!-- so that the first occurrence of thead is not 1231 above the first occurrence of tr --> 1232<!-- <namespace name="android"> --> 1233 <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr> 1234 1235 1236 <tr><td colspan="7" class="kind">controls</td></tr> 1237 1238 <thead class="entries_header"> 1239 <tr> 1240 <th class="th_name">Property Name</th> 1241 <th class="th_type">Type</th> 1242 <th class="th_description">Description</th> 1243 <th class="th_units">Units</th> 1244 <th class="th_range">Range</th> 1245 <th class="th_hal_version">Initial HIDL HAL version</th> 1246 <th class="th_tags">Tags</th> 1247 </tr> 1248 </thead> 1249 1250 <tbody> 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 <tr class="entry" id="controls_android.colorCorrection.mode"> 1262 <td class="entry_name 1263 " rowspan="5"> 1264 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1265 </td> 1266 <td class="entry_type"> 1267 <span class="entry_type_name entry_type_name_enum">byte</span> 1268 1269 <span class="entry_type_visibility"> [public]</span> 1270 1271 1272 <span class="entry_type_hwlevel">[full] </span> 1273 1274 1275 1276 <ul class="entry_type_enum"> 1277 <li> 1278 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span> 1279 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1280and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1281<p>All advanced white balance adjustments (not specified 1282by our white balance pipeline) must be disabled.<wbr/></p> 1283<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 1284TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1285this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1286 </li> 1287 <li> 1288 <span class="entry_type_enum_name">FAST (v3.2)</span> 1289 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1290capture rate relative to sensor raw output.<wbr/></p> 1291<p>Advanced white balance adjustments above and beyond 1292the specified white balance pipeline may be applied.<wbr/></p> 1293<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 1294the camera device uses the last frame's AWB values 1295(or defaults if AWB has never been run).<wbr/></p></span> 1296 </li> 1297 <li> 1298 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 1299 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1300quality but the capture rate might be reduced (relative to sensor 1301raw output rate)</p> 1302<p>Advanced white balance adjustments above and beyond 1303the specified white balance pipeline may be applied.<wbr/></p> 1304<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 1305the camera device uses the last frame's AWB values 1306(or defaults if AWB has never been run).<wbr/></p></span> 1307 </li> 1308 </ul> 1309 1310 </td> <!-- entry_type --> 1311 1312 <td class="entry_description"> 1313 <p>The mode control selects how the image data is converted from the 1314sensor's native color into linear sRGB color.<wbr/></p> 1315 </td> 1316 1317 <td class="entry_units"> 1318 </td> 1319 1320 <td class="entry_range"> 1321 </td> 1322 1323 <td class="entry_hal_version"> 1324 <p>3.<wbr/>2</p> 1325 </td> 1326 1327 <td class="entry_tags"> 1328 </td> 1329 1330 </tr> 1331 <tr class="entries_header"> 1332 <th class="th_details" colspan="6">Details</th> 1333 </tr> 1334 <tr class="entry_cont"> 1335 <td class="entry_details" colspan="6"> 1336 <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 1337control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1338application controls how the color mapping is performed.<wbr/></p> 1339<p>We define the expected processing pipeline below.<wbr/> For consistency 1340across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1341<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1342do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1343<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1344camera device (in the results) and be roughly correct.<wbr/></p> 1345<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1346FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1347as what was produced by the camera device in the earlier frame.<wbr/></p> 1348<p>The expected processing pipeline is as follows:</p> 1349<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1350<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1351gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1352matrix (applied after demosaic).<wbr/></p> 1353<p>The 4-channel white-balance gains are defined as:</p> 1354<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1355</code></pre> 1356<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1357output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1358These may be identical for a given camera device implementation; if 1359the camera device does not support a separate gain for even/<wbr/>odd green 1360channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1361<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1362<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1363<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 ] 1364</code></pre> 1365<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1366to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1367<p>with colors as follows:</p> 1368<pre><code>r' = I0r + I1g + I2b 1369g' = I3r + I4g + I5b 1370b' = I6r + I7g + I8b 1371</code></pre> 1372<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1373values are clipped to fit within the range.<wbr/></p> 1374 </td> 1375 </tr> 1376 1377 <tr class="entries_header"> 1378 <th class="th_details" colspan="6">HAL Implementation Details</th> 1379 </tr> 1380 <tr class="entry_cont"> 1381 <td class="entry_details" colspan="6"> 1382 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1383on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1384That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1385capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1386 </td> 1387 </tr> 1388 1389 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1390 <!-- end of entry --> 1391 1392 1393 <tr class="entry" id="controls_android.colorCorrection.transform"> 1394 <td class="entry_name 1395 " rowspan="3"> 1396 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1397 </td> 1398 <td class="entry_type"> 1399 <span class="entry_type_name">rational</span> 1400 <span class="entry_type_container">x</span> 1401 1402 <span class="entry_type_array"> 1403 3 x 3 1404 </span> 1405 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1406 1407 1408 <span class="entry_type_hwlevel">[full] </span> 1409 1410 1411 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1412 1413 1414 </td> <!-- entry_type --> 1415 1416 <td class="entry_description"> 1417 <p>A color transform matrix to use to transform 1418from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1419 </td> 1420 1421 <td class="entry_units"> 1422 Unitless scale factors 1423 </td> 1424 1425 <td class="entry_range"> 1426 </td> 1427 1428 <td class="entry_hal_version"> 1429 <p>3.<wbr/>2</p> 1430 </td> 1431 1432 <td class="entry_tags"> 1433 </td> 1434 1435 </tr> 1436 <tr class="entries_header"> 1437 <th class="th_details" colspan="6">Details</th> 1438 </tr> 1439 <tr class="entry_cont"> 1440 <td class="entry_details" colspan="6"> 1441 <p>This matrix is either set by the camera device when the request 1442<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1443directly by the application in the request when the 1444<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1445<p>In the latter case,<wbr/> the camera device may round the matrix to account 1446for precision issues; the final rounded matrix should be reported back 1447in this matrix result metadata.<wbr/> The transform should keep the magnitude 1448of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1449values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1450<p>The valid range of each matrix element varies on different devices,<wbr/> but 1451values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1452 </td> 1453 </tr> 1454 1455 1456 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1457 <!-- end of entry --> 1458 1459 1460 <tr class="entry" id="controls_android.colorCorrection.gains"> 1461 <td class="entry_name 1462 " rowspan="5"> 1463 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1464 </td> 1465 <td class="entry_type"> 1466 <span class="entry_type_name">float</span> 1467 <span class="entry_type_container">x</span> 1468 1469 <span class="entry_type_array"> 1470 4 1471 </span> 1472 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1473 1474 1475 <span class="entry_type_hwlevel">[full] </span> 1476 1477 1478 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1479 1480 1481 </td> <!-- entry_type --> 1482 1483 <td class="entry_description"> 1484 <p>Gains applying to Bayer raw color channels for 1485white-balance.<wbr/></p> 1486 </td> 1487 1488 <td class="entry_units"> 1489 Unitless gain factors 1490 </td> 1491 1492 <td class="entry_range"> 1493 </td> 1494 1495 <td class="entry_hal_version"> 1496 <p>3.<wbr/>2</p> 1497 </td> 1498 1499 <td class="entry_tags"> 1500 </td> 1501 1502 </tr> 1503 <tr class="entries_header"> 1504 <th class="th_details" colspan="6">Details</th> 1505 </tr> 1506 <tr class="entry_cont"> 1507 <td class="entry_details" colspan="6"> 1508 <p>These per-channel gains are either set by the camera device 1509when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1510TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1511request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1512TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1513<p>The gains in the result metadata are the gains actually 1514applied by the camera device to the current frame.<wbr/></p> 1515<p>The valid range of gains varies on different devices,<wbr/> but gains 1516between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1517device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1518this can create color artifacts.<wbr/></p> 1519 </td> 1520 </tr> 1521 1522 <tr class="entries_header"> 1523 <th class="th_details" colspan="6">HAL Implementation Details</th> 1524 </tr> 1525 <tr class="entry_cont"> 1526 <td class="entry_details" colspan="6"> 1527 <p>The 4-channel white-balance gains are defined in 1528the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1529for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1530is the gain for green pixels on the odd rows.<wbr/></p> 1531<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1532channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1533<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1534 </td> 1535 </tr> 1536 1537 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1538 <!-- end of entry --> 1539 1540 1541 <tr class="entry" id="controls_android.colorCorrection.aberrationMode"> 1542 <td class="entry_name 1543 " rowspan="3"> 1544 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1545 </td> 1546 <td class="entry_type"> 1547 <span class="entry_type_name entry_type_name_enum">byte</span> 1548 1549 <span class="entry_type_visibility"> [public]</span> 1550 1551 1552 <span class="entry_type_hwlevel">[legacy] </span> 1553 1554 1555 1556 <ul class="entry_type_enum"> 1557 <li> 1558 <span class="entry_type_enum_name">OFF (v3.2)</span> 1559 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1560 </li> 1561 <li> 1562 <span class="entry_type_enum_name">FAST (v3.2)</span> 1563 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1564relative to sensor raw output.<wbr/></p></span> 1565 </li> 1566 <li> 1567 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 1568 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1569reduced (relative to sensor raw output rate)</p></span> 1570 </li> 1571 </ul> 1572 1573 </td> <!-- entry_type --> 1574 1575 <td class="entry_description"> 1576 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1577 </td> 1578 1579 <td class="entry_units"> 1580 </td> 1581 1582 <td class="entry_range"> 1583 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1584 </td> 1585 1586 <td class="entry_hal_version"> 1587 <p>3.<wbr/>2</p> 1588 </td> 1589 1590 <td class="entry_tags"> 1591 </td> 1592 1593 </tr> 1594 <tr class="entries_header"> 1595 <th class="th_details" colspan="6">Details</th> 1596 </tr> 1597 <tr class="entry_cont"> 1598 <td class="entry_details" colspan="6"> 1599 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1600can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1601the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1602minimize the chromatic artifacts that may occur along the object boundaries in an 1603image.<wbr/></p> 1604<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1605correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1606use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1607capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1608applying aberration correction.<wbr/></p> 1609<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1610 </td> 1611 </tr> 1612 1613 1614 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1615 <!-- end of entry --> 1616 1617 1618 1619 <!-- end of kind --> 1620 </tbody> 1621 <tr><td colspan="7" class="kind">dynamic</td></tr> 1622 1623 <thead class="entries_header"> 1624 <tr> 1625 <th class="th_name">Property Name</th> 1626 <th class="th_type">Type</th> 1627 <th class="th_description">Description</th> 1628 <th class="th_units">Units</th> 1629 <th class="th_range">Range</th> 1630 <th class="th_hal_version">Initial HIDL HAL version</th> 1631 <th class="th_tags">Tags</th> 1632 </tr> 1633 </thead> 1634 1635 <tbody> 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 <tr class="entry" id="dynamic_android.colorCorrection.mode"> 1647 <td class="entry_name 1648 " rowspan="5"> 1649 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1650 </td> 1651 <td class="entry_type"> 1652 <span class="entry_type_name entry_type_name_enum">byte</span> 1653 1654 <span class="entry_type_visibility"> [public]</span> 1655 1656 1657 <span class="entry_type_hwlevel">[full] </span> 1658 1659 1660 1661 <ul class="entry_type_enum"> 1662 <li> 1663 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span> 1664 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1665and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1666<p>All advanced white balance adjustments (not specified 1667by our white balance pipeline) must be disabled.<wbr/></p> 1668<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 1669TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1670this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1671 </li> 1672 <li> 1673 <span class="entry_type_enum_name">FAST (v3.2)</span> 1674 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1675capture rate relative to sensor raw output.<wbr/></p> 1676<p>Advanced white balance adjustments above and beyond 1677the specified white balance pipeline may be applied.<wbr/></p> 1678<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 1679the camera device uses the last frame's AWB values 1680(or defaults if AWB has never been run).<wbr/></p></span> 1681 </li> 1682 <li> 1683 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 1684 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1685quality but the capture rate might be reduced (relative to sensor 1686raw output rate)</p> 1687<p>Advanced white balance adjustments above and beyond 1688the specified white balance pipeline may be applied.<wbr/></p> 1689<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 1690the camera device uses the last frame's AWB values 1691(or defaults if AWB has never been run).<wbr/></p></span> 1692 </li> 1693 </ul> 1694 1695 </td> <!-- entry_type --> 1696 1697 <td class="entry_description"> 1698 <p>The mode control selects how the image data is converted from the 1699sensor's native color into linear sRGB color.<wbr/></p> 1700 </td> 1701 1702 <td class="entry_units"> 1703 </td> 1704 1705 <td class="entry_range"> 1706 </td> 1707 1708 <td class="entry_hal_version"> 1709 <p>3.<wbr/>2</p> 1710 </td> 1711 1712 <td class="entry_tags"> 1713 </td> 1714 1715 </tr> 1716 <tr class="entries_header"> 1717 <th class="th_details" colspan="6">Details</th> 1718 </tr> 1719 <tr class="entry_cont"> 1720 <td class="entry_details" colspan="6"> 1721 <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 1722control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1723application controls how the color mapping is performed.<wbr/></p> 1724<p>We define the expected processing pipeline below.<wbr/> For consistency 1725across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1726<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1727do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1728<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1729camera device (in the results) and be roughly correct.<wbr/></p> 1730<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1731FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1732as what was produced by the camera device in the earlier frame.<wbr/></p> 1733<p>The expected processing pipeline is as follows:</p> 1734<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1735<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1736gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1737matrix (applied after demosaic).<wbr/></p> 1738<p>The 4-channel white-balance gains are defined as:</p> 1739<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1740</code></pre> 1741<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1742output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1743These may be identical for a given camera device implementation; if 1744the camera device does not support a separate gain for even/<wbr/>odd green 1745channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1746<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1747<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1748<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 ] 1749</code></pre> 1750<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1751to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1752<p>with colors as follows:</p> 1753<pre><code>r' = I0r + I1g + I2b 1754g' = I3r + I4g + I5b 1755b' = I6r + I7g + I8b 1756</code></pre> 1757<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1758values are clipped to fit within the range.<wbr/></p> 1759 </td> 1760 </tr> 1761 1762 <tr class="entries_header"> 1763 <th class="th_details" colspan="6">HAL Implementation Details</th> 1764 </tr> 1765 <tr class="entry_cont"> 1766 <td class="entry_details" colspan="6"> 1767 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1768on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1769That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1770capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1771 </td> 1772 </tr> 1773 1774 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1775 <!-- end of entry --> 1776 1777 1778 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 1779 <td class="entry_name 1780 " rowspan="3"> 1781 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1782 </td> 1783 <td class="entry_type"> 1784 <span class="entry_type_name">rational</span> 1785 <span class="entry_type_container">x</span> 1786 1787 <span class="entry_type_array"> 1788 3 x 3 1789 </span> 1790 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1791 1792 1793 <span class="entry_type_hwlevel">[full] </span> 1794 1795 1796 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1797 1798 1799 </td> <!-- entry_type --> 1800 1801 <td class="entry_description"> 1802 <p>A color transform matrix to use to transform 1803from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1804 </td> 1805 1806 <td class="entry_units"> 1807 Unitless scale factors 1808 </td> 1809 1810 <td class="entry_range"> 1811 </td> 1812 1813 <td class="entry_hal_version"> 1814 <p>3.<wbr/>2</p> 1815 </td> 1816 1817 <td class="entry_tags"> 1818 </td> 1819 1820 </tr> 1821 <tr class="entries_header"> 1822 <th class="th_details" colspan="6">Details</th> 1823 </tr> 1824 <tr class="entry_cont"> 1825 <td class="entry_details" colspan="6"> 1826 <p>This matrix is either set by the camera device when the request 1827<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1828directly by the application in the request when the 1829<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1830<p>In the latter case,<wbr/> the camera device may round the matrix to account 1831for precision issues; the final rounded matrix should be reported back 1832in this matrix result metadata.<wbr/> The transform should keep the magnitude 1833of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1834values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1835<p>The valid range of each matrix element varies on different devices,<wbr/> but 1836values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1837 </td> 1838 </tr> 1839 1840 1841 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1842 <!-- end of entry --> 1843 1844 1845 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 1846 <td class="entry_name 1847 " rowspan="5"> 1848 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1849 </td> 1850 <td class="entry_type"> 1851 <span class="entry_type_name">float</span> 1852 <span class="entry_type_container">x</span> 1853 1854 <span class="entry_type_array"> 1855 4 1856 </span> 1857 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1858 1859 1860 <span class="entry_type_hwlevel">[full] </span> 1861 1862 1863 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1864 1865 1866 </td> <!-- entry_type --> 1867 1868 <td class="entry_description"> 1869 <p>Gains applying to Bayer raw color channels for 1870white-balance.<wbr/></p> 1871 </td> 1872 1873 <td class="entry_units"> 1874 Unitless gain factors 1875 </td> 1876 1877 <td class="entry_range"> 1878 </td> 1879 1880 <td class="entry_hal_version"> 1881 <p>3.<wbr/>2</p> 1882 </td> 1883 1884 <td class="entry_tags"> 1885 </td> 1886 1887 </tr> 1888 <tr class="entries_header"> 1889 <th class="th_details" colspan="6">Details</th> 1890 </tr> 1891 <tr class="entry_cont"> 1892 <td class="entry_details" colspan="6"> 1893 <p>These per-channel gains are either set by the camera device 1894when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1895TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1896request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1897TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1898<p>The gains in the result metadata are the gains actually 1899applied by the camera device to the current frame.<wbr/></p> 1900<p>The valid range of gains varies on different devices,<wbr/> but gains 1901between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1902device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1903this can create color artifacts.<wbr/></p> 1904 </td> 1905 </tr> 1906 1907 <tr class="entries_header"> 1908 <th class="th_details" colspan="6">HAL Implementation Details</th> 1909 </tr> 1910 <tr class="entry_cont"> 1911 <td class="entry_details" colspan="6"> 1912 <p>The 4-channel white-balance gains are defined in 1913the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1914for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1915is the gain for green pixels on the odd rows.<wbr/></p> 1916<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1917channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1918<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1919 </td> 1920 </tr> 1921 1922 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 1923 <!-- end of entry --> 1924 1925 1926 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode"> 1927 <td class="entry_name 1928 " rowspan="3"> 1929 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1930 </td> 1931 <td class="entry_type"> 1932 <span class="entry_type_name entry_type_name_enum">byte</span> 1933 1934 <span class="entry_type_visibility"> [public]</span> 1935 1936 1937 <span class="entry_type_hwlevel">[legacy] </span> 1938 1939 1940 1941 <ul class="entry_type_enum"> 1942 <li> 1943 <span class="entry_type_enum_name">OFF (v3.2)</span> 1944 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1945 </li> 1946 <li> 1947 <span class="entry_type_enum_name">FAST (v3.2)</span> 1948 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1949relative to sensor raw output.<wbr/></p></span> 1950 </li> 1951 <li> 1952 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 1953 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1954reduced (relative to sensor raw output rate)</p></span> 1955 </li> 1956 </ul> 1957 1958 </td> <!-- entry_type --> 1959 1960 <td class="entry_description"> 1961 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1962 </td> 1963 1964 <td class="entry_units"> 1965 </td> 1966 1967 <td class="entry_range"> 1968 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1969 </td> 1970 1971 <td class="entry_hal_version"> 1972 <p>3.<wbr/>2</p> 1973 </td> 1974 1975 <td class="entry_tags"> 1976 </td> 1977 1978 </tr> 1979 <tr class="entries_header"> 1980 <th class="th_details" colspan="6">Details</th> 1981 </tr> 1982 <tr class="entry_cont"> 1983 <td class="entry_details" colspan="6"> 1984 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1985can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1986the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1987minimize the chromatic artifacts that may occur along the object boundaries in an 1988image.<wbr/></p> 1989<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1990correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1991use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1992capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1993applying aberration correction.<wbr/></p> 1994<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1995 </td> 1996 </tr> 1997 1998 1999 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2000 <!-- end of entry --> 2001 2002 2003 2004 <!-- end of kind --> 2005 </tbody> 2006 <tr><td colspan="7" class="kind">static</td></tr> 2007 2008 <thead class="entries_header"> 2009 <tr> 2010 <th class="th_name">Property Name</th> 2011 <th class="th_type">Type</th> 2012 <th class="th_description">Description</th> 2013 <th class="th_units">Units</th> 2014 <th class="th_range">Range</th> 2015 <th class="th_hal_version">Initial HIDL HAL version</th> 2016 <th class="th_tags">Tags</th> 2017 </tr> 2018 </thead> 2019 2020 <tbody> 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes"> 2032 <td class="entry_name 2033 " rowspan="5"> 2034 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes 2035 </td> 2036 <td class="entry_type"> 2037 <span class="entry_type_name">byte</span> 2038 <span class="entry_type_container">x</span> 2039 2040 <span class="entry_type_array"> 2041 n 2042 </span> 2043 <span class="entry_type_visibility"> [public as enumList]</span> 2044 2045 2046 <span class="entry_type_hwlevel">[legacy] </span> 2047 2048 2049 <div class="entry_type_notes">list of enums</div> 2050 2051 2052 </td> <!-- entry_type --> 2053 2054 <td class="entry_description"> 2055 <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 2056supported by this camera device.<wbr/></p> 2057 </td> 2058 2059 <td class="entry_units"> 2060 </td> 2061 2062 <td class="entry_range"> 2063 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p> 2064 </td> 2065 2066 <td class="entry_hal_version"> 2067 <p>3.<wbr/>2</p> 2068 </td> 2069 2070 <td class="entry_tags"> 2071 <ul class="entry_tags"> 2072 <li><a href="#tag_V1">V1</a></li> 2073 </ul> 2074 </td> 2075 2076 </tr> 2077 <tr class="entries_header"> 2078 <th class="th_details" colspan="6">Details</th> 2079 </tr> 2080 <tr class="entry_cont"> 2081 <td class="entry_details" colspan="6"> 2082 <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 2083aberration correction modes are available for a device,<wbr/> this list will solely include 2084OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p> 2085<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list 2086OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p> 2087<p>LEGACY devices will always only support FAST mode.<wbr/></p> 2088 </td> 2089 </tr> 2090 2091 <tr class="entries_header"> 2092 <th class="th_details" colspan="6">HAL Implementation Details</th> 2093 </tr> 2094 <tr class="entry_cont"> 2095 <td class="entry_details" colspan="6"> 2096 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available 2097on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 2098That is,<wbr/> if the highest quality implementation on the camera device does not slow down 2099capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 2100 </td> 2101 </tr> 2102 2103 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2104 <!-- end of entry --> 2105 2106 2107 2108 <!-- end of kind --> 2109 </tbody> 2110 2111 <!-- end of section --> 2112 <tr><td colspan="7" id="section_control" class="section">control</td></tr> 2113 2114 2115 <tr><td colspan="7" class="kind">controls</td></tr> 2116 2117 <thead class="entries_header"> 2118 <tr> 2119 <th class="th_name">Property Name</th> 2120 <th class="th_type">Type</th> 2121 <th class="th_description">Description</th> 2122 <th class="th_units">Units</th> 2123 <th class="th_range">Range</th> 2124 <th class="th_hal_version">Initial HIDL HAL version</th> 2125 <th class="th_tags">Tags</th> 2126 </tr> 2127 </thead> 2128 2129 <tbody> 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 2141 <td class="entry_name 2142 " rowspan="5"> 2143 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 2144 </td> 2145 <td class="entry_type"> 2146 <span class="entry_type_name entry_type_name_enum">byte</span> 2147 2148 <span class="entry_type_visibility"> [public]</span> 2149 2150 2151 <span class="entry_type_hwlevel">[legacy] </span> 2152 2153 2154 2155 <ul class="entry_type_enum"> 2156 <li> 2157 <span class="entry_type_enum_name">OFF (v3.2)</span> 2158 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 2159avoid banding problems.<wbr/></p></span> 2160 </li> 2161 <li> 2162 <span class="entry_type_enum_name">50HZ (v3.2)</span> 2163 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2164avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 2165 </li> 2166 <li> 2167 <span class="entry_type_enum_name">60HZ (v3.2)</span> 2168 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2169avoid banding problems with 60Hz illumination 2170sources.<wbr/></p></span> 2171 </li> 2172 <li> 2173 <span class="entry_type_enum_name">AUTO (v3.2)</span> 2174 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 2175antibanding routine to the current illumination 2176condition.<wbr/> This is the default mode if AUTO is 2177available on given camera device.<wbr/></p></span> 2178 </li> 2179 </ul> 2180 2181 </td> <!-- entry_type --> 2182 2183 <td class="entry_description"> 2184 <p>The desired setting for the camera device's auto-exposure 2185algorithm's antibanding compensation.<wbr/></p> 2186 </td> 2187 2188 <td class="entry_units"> 2189 </td> 2190 2191 <td class="entry_range"> 2192 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 2193 </td> 2194 2195 <td class="entry_hal_version"> 2196 <p>3.<wbr/>2</p> 2197 </td> 2198 2199 <td class="entry_tags"> 2200 <ul class="entry_tags"> 2201 <li><a href="#tag_BC">BC</a></li> 2202 </ul> 2203 </td> 2204 2205 </tr> 2206 <tr class="entries_header"> 2207 <th class="th_details" colspan="6">Details</th> 2208 </tr> 2209 <tr class="entry_cont"> 2210 <td class="entry_details" colspan="6"> 2211 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 2212lights,<wbr/> flicker at the rate of the power supply frequency 2213(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 2214typically not noticeable to a person,<wbr/> it can be visible to 2215a camera device.<wbr/> If a camera sets its exposure time to the 2216wrong value,<wbr/> the flicker may become visible in the 2217viewfinder as flicker or in a final captured image,<wbr/> as a 2218set of variable-brightness bands across the image.<wbr/></p> 2219<p>Therefore,<wbr/> the auto-exposure routines of camera devices 2220include antibanding routines that ensure that the chosen 2221exposure value will not cause such banding.<wbr/> The choice of 2222exposure time depends on the rate of flicker,<wbr/> which the 2223camera device can detect automatically,<wbr/> or the expected 2224rate can be selected by the application using this 2225control.<wbr/></p> 2226<p>A given camera device may not support all of the possible 2227options for the antibanding mode.<wbr/> The 2228<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 2229the available modes for a given camera device.<wbr/></p> 2230<p>AUTO mode is the default if it is available on given 2231camera device.<wbr/> When AUTO mode is not available,<wbr/> the 2232default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 2233and 60HZ will be available.<wbr/></p> 2234<p>If manual exposure control is enabled (by setting 2235<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/> 2236then this setting has no effect,<wbr/> and the application must 2237ensure it selects exposure times that do not cause banding 2238issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 2239the application in this.<wbr/></p> 2240 </td> 2241 </tr> 2242 2243 <tr class="entries_header"> 2244 <th class="th_details" colspan="6">HAL Implementation Details</th> 2245 </tr> 2246 <tr class="entry_cont"> 2247 <td class="entry_details" colspan="6"> 2248 <p>For all capture request templates,<wbr/> this field must be set 2249to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 2250the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 225160HZ must be available.<wbr/></p> 2252<p>If manual exposure control is enabled (by setting 2253<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/> 2254then the exposure values provided by the application must not be 2255adjusted for antibanding.<wbr/></p> 2256 </td> 2257 </tr> 2258 2259 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2260 <!-- end of entry --> 2261 2262 2263 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 2264 <td class="entry_name 2265 " rowspan="3"> 2266 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 2267 </td> 2268 <td class="entry_type"> 2269 <span class="entry_type_name">int32</span> 2270 2271 <span class="entry_type_visibility"> [public]</span> 2272 2273 2274 <span class="entry_type_hwlevel">[legacy] </span> 2275 2276 2277 2278 2279 </td> <!-- entry_type --> 2280 2281 <td class="entry_description"> 2282 <p>Adjustment to auto-exposure (AE) target image 2283brightness.<wbr/></p> 2284 </td> 2285 2286 <td class="entry_units"> 2287 Compensation steps 2288 </td> 2289 2290 <td class="entry_range"> 2291 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 2292 </td> 2293 2294 <td class="entry_hal_version"> 2295 <p>3.<wbr/>2</p> 2296 </td> 2297 2298 <td class="entry_tags"> 2299 <ul class="entry_tags"> 2300 <li><a href="#tag_BC">BC</a></li> 2301 </ul> 2302 </td> 2303 2304 </tr> 2305 <tr class="entries_header"> 2306 <th class="th_details" colspan="6">Details</th> 2307 </tr> 2308 <tr class="entry_cont"> 2309 <td class="entry_details" colspan="6"> 2310 <p>The adjustment is measured as a count of steps,<wbr/> with the 2311step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 2312allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 2313<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 2314will mean an exposure compensation of +2 EV; -3 will mean an 2315exposure compensation of -1 EV.<wbr/> One EV represents a doubling 2316of image brightness.<wbr/> Note that this control will only be 2317effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 2318will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 2319<p>In the event of exposure compensation value being changed,<wbr/> camera device 2320may take several frames to reach the newly requested exposure target.<wbr/> 2321During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 2322state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 2323change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 2324FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 2325 </td> 2326 </tr> 2327 2328 2329 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2330 <!-- end of entry --> 2331 2332 2333 <tr class="entry" id="controls_android.control.aeLock"> 2334 <td class="entry_name 2335 " rowspan="3"> 2336 android.<wbr/>control.<wbr/>ae<wbr/>Lock 2337 </td> 2338 <td class="entry_type"> 2339 <span class="entry_type_name entry_type_name_enum">byte</span> 2340 2341 <span class="entry_type_visibility"> [public as boolean]</span> 2342 2343 2344 <span class="entry_type_hwlevel">[legacy] </span> 2345 2346 2347 2348 <ul class="entry_type_enum"> 2349 <li> 2350 <span class="entry_type_enum_name">OFF (v3.2)</span> 2351 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 2352is free to update its parameters.<wbr/></p></span> 2353 </li> 2354 <li> 2355 <span class="entry_type_enum_name">ON (v3.2)</span> 2356 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 2357must not update the exposure and sensitivity parameters 2358while the lock is active.<wbr/></p> 2359<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 2360will still take effect while auto-exposure is locked.<wbr/></p> 2361<p>Some rare LEGACY devices may not support 2362this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 2363 </li> 2364 </ul> 2365 2366 </td> <!-- entry_type --> 2367 2368 <td class="entry_description"> 2369 <p>Whether auto-exposure (AE) is currently locked to its latest 2370calculated values.<wbr/></p> 2371 </td> 2372 2373 <td class="entry_units"> 2374 </td> 2375 2376 <td class="entry_range"> 2377 </td> 2378 2379 <td class="entry_hal_version"> 2380 <p>3.<wbr/>2</p> 2381 </td> 2382 2383 <td class="entry_tags"> 2384 <ul class="entry_tags"> 2385 <li><a href="#tag_BC">BC</a></li> 2386 </ul> 2387 </td> 2388 2389 </tr> 2390 <tr class="entries_header"> 2391 <th class="th_details" colspan="6">Details</th> 2392 </tr> 2393 <tr class="entry_cont"> 2394 <td class="entry_details" colspan="6"> 2395 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 2396and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 2397<p>Note that even when AE is locked,<wbr/> the flash may be fired if 2398the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 2399ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 2400<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 2401is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 2402<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 2403when AE is already locked,<wbr/> the camera device will not change the exposure time 2404(<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>) 2405parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 2406is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 2407<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/> 2408Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 2409<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 2410the AE if AE is locked by the camera device internally during precapture metering 2411sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 2412ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 2413will never succeed in a sequence of preview requests where AE lock is always set 2414to <code>false</code>.<wbr/></p> 2415<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 2416get locked do not necessarily correspond to the settings that were present in the 2417latest capture result received from the camera device,<wbr/> since additional captures 2418and AE updates may have occurred even before the result was sent out.<wbr/> If an 2419application is switching between automatic and manual control and wishes to eliminate 2420any flicker during the switch,<wbr/> the following procedure is recommended:</p> 2421<ol> 2422<li>Starting in auto-AE mode:</li> 2423<li>Lock AE</li> 2424<li>Wait for the first result to be output that has the AE locked</li> 2425<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 2426<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 2427</ol> 2428<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> 2429 </td> 2430 </tr> 2431 2432 2433 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2434 <!-- end of entry --> 2435 2436 2437 <tr class="entry" id="controls_android.control.aeMode"> 2438 <td class="entry_name 2439 " rowspan="3"> 2440 android.<wbr/>control.<wbr/>ae<wbr/>Mode 2441 </td> 2442 <td class="entry_type"> 2443 <span class="entry_type_name entry_type_name_enum">byte</span> 2444 2445 <span class="entry_type_visibility"> [public]</span> 2446 2447 2448 <span class="entry_type_hwlevel">[legacy] </span> 2449 2450 2451 2452 <ul class="entry_type_enum"> 2453 <li> 2454 <span class="entry_type_enum_name">OFF (v3.2)</span> 2455 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 2456<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2457<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 2458<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 2459device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 2460a flash unit for this camera device.<wbr/></p> 2461<p>Note that auto-white balance (AWB) and auto-focus (AF) 2462behavior is device dependent when AE is in OFF mode.<wbr/> 2463To have consistent behavior across different devices,<wbr/> 2464it is recommended to either set AWB and AF to OFF mode 2465or lock AWB and AF before setting AE to OFF.<wbr/> 2466See <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/> 2467<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> 2468for more details.<wbr/></p> 2469<p>LEGACY devices do not support the OFF mode and will 2470override attempts to use this value to ON.<wbr/></p></span> 2471 </li> 2472 <li> 2473 <span class="entry_type_enum_name">ON (v3.2)</span> 2474 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 2475with no flash control.<wbr/></p> 2476<p>The application's values for 2477<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2478<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2479<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 2480application has control over the various 2481android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 2482 </li> 2483 <li> 2484 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span> 2485 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2486the camera's flash unit,<wbr/> firing it in low-light 2487conditions.<wbr/></p> 2488<p>The flash may be fired during a precapture sequence 2489(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2490may be fired for captures for which the 2491<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2492STILL_<wbr/>CAPTURE</p></span> 2493 </li> 2494 <li> 2495 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span> 2496 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2497the camera's flash unit,<wbr/> always firing it for still 2498captures.<wbr/></p> 2499<p>The flash may be fired during a precapture sequence 2500(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2501will always be fired for captures for which the 2502<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2503STILL_<wbr/>CAPTURE</p></span> 2504 </li> 2505 <li> 2506 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span> 2507 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 2508reduction.<wbr/></p> 2509<p>If deemed necessary by the camera device,<wbr/> a red eye 2510reduction flash will fire during the precapture 2511sequence.<wbr/></p></span> 2512 </li> 2513 <li> 2514 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span> 2515 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p> 2516<p>It informs the camera device that an external flash has been turned on,<wbr/> and that 2517metering (and continuous focus if active) should be quickly recaculated to account 2518for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p> 2519<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the 2520other available AE modes.<wbr/></p> 2521<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 2522be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without 2523flash.<wbr/></p></span> 2524 </li> 2525 </ul> 2526 2527 </td> <!-- entry_type --> 2528 2529 <td class="entry_description"> 2530 <p>The desired mode for the camera device's 2531auto-exposure routine.<wbr/></p> 2532 </td> 2533 2534 <td class="entry_units"> 2535 </td> 2536 2537 <td class="entry_range"> 2538 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 2539 </td> 2540 2541 <td class="entry_hal_version"> 2542 <p>3.<wbr/>2</p> 2543 </td> 2544 2545 <td class="entry_tags"> 2546 <ul class="entry_tags"> 2547 <li><a href="#tag_BC">BC</a></li> 2548 </ul> 2549 </td> 2550 2551 </tr> 2552 <tr class="entries_header"> 2553 <th class="th_details" colspan="6">Details</th> 2554 </tr> 2555 <tr class="entry_cont"> 2556 <td class="entry_details" colspan="6"> 2557 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 2558AUTO.<wbr/></p> 2559<p>When set to any of the ON modes,<wbr/> the camera device's 2560auto-exposure routine is enabled,<wbr/> overriding the 2561application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 2562and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2563<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2564<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 2565is selected,<wbr/> the camera device's flash unit controls are 2566also overridden.<wbr/></p> 2567<p>The FLASH modes are only available if the camera device 2568has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 2569<p>If flash TORCH mode is desired,<wbr/> this field must be set to 2570ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 2571<p>When set to any of the ON modes,<wbr/> the values chosen by the 2572camera device auto-exposure routine for the overridden 2573fields for a given capture will be available in its 2574CaptureResult.<wbr/></p> 2575 </td> 2576 </tr> 2577 2578 2579 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2580 <!-- end of entry --> 2581 2582 2583 <tr class="entry" id="controls_android.control.aeRegions"> 2584 <td class="entry_name 2585 " rowspan="5"> 2586 android.<wbr/>control.<wbr/>ae<wbr/>Regions 2587 </td> 2588 <td class="entry_type"> 2589 <span class="entry_type_name">int32</span> 2590 <span class="entry_type_container">x</span> 2591 2592 <span class="entry_type_array"> 2593 5 x area_count 2594 </span> 2595 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2596 2597 2598 2599 2600 2601 2602 </td> <!-- entry_type --> 2603 2604 <td class="entry_description"> 2605 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 2606 </td> 2607 2608 <td class="entry_units"> 2609 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2610 </td> 2611 2612 <td class="entry_range"> 2613 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2614<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2615 </td> 2616 2617 <td class="entry_hal_version"> 2618 <p>3.<wbr/>2</p> 2619 </td> 2620 2621 <td class="entry_tags"> 2622 <ul class="entry_tags"> 2623 <li><a href="#tag_BC">BC</a></li> 2624 </ul> 2625 </td> 2626 2627 </tr> 2628 <tr class="entries_header"> 2629 <th class="th_details" colspan="6">Details</th> 2630 </tr> 2631 <tr class="entry_cont"> 2632 <td class="entry_details" colspan="6"> 2633 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 2634Otherwise will always be present.<wbr/></p> 2635<p>The maximum number of regions supported by the device is determined by the value 2636of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 2637<p>The coordinate system is based on the active pixel array,<wbr/> 2638with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2639(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2640<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2641bottom-right pixel in the active pixel array.<wbr/></p> 2642<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2643for every pixel in the area.<wbr/> This means that a large metering area 2644with the same weight as a smaller area will have more effect in 2645the metering result.<wbr/> Metering areas can partially overlap and the 2646camera device will add the weights in the overlap region.<wbr/></p> 2647<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 2648region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 2649weight is ignored.<wbr/></p> 2650<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2651camera device.<wbr/></p> 2652<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 2653capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2654region and output only the intersection rectangle as the metering region in the result 2655metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2656not reported in the result metadata.<wbr/></p> 2657 </td> 2658 </tr> 2659 2660 <tr class="entries_header"> 2661 <th class="th_details" colspan="6">HAL Implementation Details</th> 2662 </tr> 2663 <tr class="entry_cont"> 2664 <td class="entry_details" colspan="6"> 2665 <p>The HAL level representation of MeteringRectangle[] is a 2666int[5 * area_<wbr/>count].<wbr/> 2667Every five elements represent a metering region of 2668(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2669The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2670exclusive on xmax and ymax.<wbr/></p> 2671 </td> 2672 </tr> 2673 2674 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2675 <!-- end of entry --> 2676 2677 2678 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 2679 <td class="entry_name 2680 " rowspan="3"> 2681 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 2682 </td> 2683 <td class="entry_type"> 2684 <span class="entry_type_name">int32</span> 2685 <span class="entry_type_container">x</span> 2686 2687 <span class="entry_type_array"> 2688 2 2689 </span> 2690 <span class="entry_type_visibility"> [public as rangeInt]</span> 2691 2692 2693 <span class="entry_type_hwlevel">[legacy] </span> 2694 2695 2696 2697 2698 </td> <!-- entry_type --> 2699 2700 <td class="entry_description"> 2701 <p>Range over which the auto-exposure routine can 2702adjust the capture frame rate to maintain good 2703exposure.<wbr/></p> 2704 </td> 2705 2706 <td class="entry_units"> 2707 Frames per second (FPS) 2708 </td> 2709 2710 <td class="entry_range"> 2711 <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> 2712 </td> 2713 2714 <td class="entry_hal_version"> 2715 <p>3.<wbr/>2</p> 2716 </td> 2717 2718 <td class="entry_tags"> 2719 <ul class="entry_tags"> 2720 <li><a href="#tag_BC">BC</a></li> 2721 </ul> 2722 </td> 2723 2724 </tr> 2725 <tr class="entries_header"> 2726 <th class="th_details" colspan="6">Details</th> 2727 </tr> 2728 <tr class="entry_cont"> 2729 <td class="entry_details" colspan="6"> 2730 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 2731manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 2732<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 2733 </td> 2734 </tr> 2735 2736 2737 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2738 <!-- end of entry --> 2739 2740 2741 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 2742 <td class="entry_name 2743 " rowspan="5"> 2744 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 2745 </td> 2746 <td class="entry_type"> 2747 <span class="entry_type_name entry_type_name_enum">byte</span> 2748 2749 <span class="entry_type_visibility"> [public]</span> 2750 2751 2752 <span class="entry_type_hwlevel">[limited] </span> 2753 2754 2755 2756 <ul class="entry_type_enum"> 2757 <li> 2758 <span class="entry_type_enum_name">IDLE (v3.2)</span> 2759 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2760 </li> 2761 <li> 2762 <span class="entry_type_enum_name">START (v3.2)</span> 2763 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 2764by the camera device.<wbr/></p> 2765<p>The exact effect of the precapture trigger depends on 2766the current AE mode and state.<wbr/></p></span> 2767 </li> 2768 <li> 2769 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 2770 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 2771precapture metering sequence,<wbr/> the auto-exposure routine will return to its 2772initial state.<wbr/></p></span> 2773 </li> 2774 </ul> 2775 2776 </td> <!-- entry_type --> 2777 2778 <td class="entry_description"> 2779 <p>Whether the camera device will trigger a precapture 2780metering sequence when it processes this request.<wbr/></p> 2781 </td> 2782 2783 <td class="entry_units"> 2784 </td> 2785 2786 <td class="entry_range"> 2787 </td> 2788 2789 <td class="entry_hal_version"> 2790 <p>3.<wbr/>2</p> 2791 </td> 2792 2793 <td class="entry_tags"> 2794 <ul class="entry_tags"> 2795 <li><a href="#tag_BC">BC</a></li> 2796 </ul> 2797 </td> 2798 2799 </tr> 2800 <tr class="entries_header"> 2801 <th class="th_details" colspan="6">Details</th> 2802 </tr> 2803 <tr class="entry_cont"> 2804 <td class="entry_details" colspan="6"> 2805 <p>This entry is normally set to IDLE,<wbr/> or is not 2806included at all in the request settings.<wbr/> When included and 2807set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 2808precapture metering sequence.<wbr/></p> 2809<p>When set to CANCEL,<wbr/> the camera device will cancel any active 2810precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 2811If a precapture metering sequence is already completed,<wbr/> and the camera 2812device has implicitly locked the AE for subsequent still capture,<wbr/> the 2813CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 2814<p>The precapture sequence should be triggered before starting a 2815high-quality still capture for final metering decisions to 2816be made,<wbr/> and for firing pre-capture flash pulses to estimate 2817scene brightness and required final capture flash power,<wbr/> when 2818the flash is enabled.<wbr/></p> 2819<p>Normally,<wbr/> this entry should be set to START for only a 2820single request,<wbr/> and the application should wait until the 2821sequence completes before starting a new one.<wbr/></p> 2822<p>When a precapture metering sequence is finished,<wbr/> the camera device 2823may lock the auto-exposure routine internally to be able to accurately expose the 2824subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 2825For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 2826submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 2827submit 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 2828with <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 2829still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 2830API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 2831internally locked AE if the application doesn't submit a still capture request after 2832the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 2833be used in devices that have earlier API levels.<wbr/></p> 2834<p>The exact effect of auto-exposure (AE) precapture trigger 2835depends on the current AE mode and state; see 2836<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 2837details.<wbr/></p> 2838<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 2839capturing a high-resolution JPEG image will automatically trigger a 2840precapture sequence before the high-resolution capture,<wbr/> including 2841potentially firing a pre-capture flash.<wbr/></p> 2842<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 2843simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 2844the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 2845focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 2846trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 2847changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 2848example.<wbr/></p> 2849<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 2850the camera device will complete them in the optimal order for that device.<wbr/></p> 2851 </td> 2852 </tr> 2853 2854 <tr class="entries_header"> 2855 <th class="th_details" colspan="6">HAL Implementation Details</th> 2856 </tr> 2857 <tr class="entry_cont"> 2858 <td class="entry_details" colspan="6"> 2859 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 2860(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 2861treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 2862AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 2863to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 2864 </td> 2865 </tr> 2866 2867 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 2868 <!-- end of entry --> 2869 2870 2871 <tr class="entry" id="controls_android.control.afMode"> 2872 <td class="entry_name 2873 " rowspan="5"> 2874 android.<wbr/>control.<wbr/>af<wbr/>Mode 2875 </td> 2876 <td class="entry_type"> 2877 <span class="entry_type_name entry_type_name_enum">byte</span> 2878 2879 <span class="entry_type_visibility"> [public]</span> 2880 2881 2882 <span class="entry_type_hwlevel">[legacy] </span> 2883 2884 2885 2886 <ul class="entry_type_enum"> 2887 <li> 2888 <span class="entry_type_enum_name">OFF (v3.2)</span> 2889 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 2890<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 2891application.<wbr/></p></span> 2892 </li> 2893 <li> 2894 <span class="entry_type_enum_name">AUTO (v3.2)</span> 2895 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 2896<p>In this mode,<wbr/> the lens does not move unless 2897the autofocus trigger action is called.<wbr/> When that trigger 2898is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2899the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 2900<p>Always supported if lens is not fixed focus.<wbr/></p> 2901<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 2902is fixed-focus.<wbr/></p> 2903<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 2904and sets the AF state to INACTIVE.<wbr/></p></span> 2905 </li> 2906 <li> 2907 <span class="entry_type_enum_name">MACRO (v3.2)</span> 2908 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 2909<p>In this mode,<wbr/> the lens does not move unless the 2910autofocus trigger action is called.<wbr/> When that trigger is 2911activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2912the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 2913mode is optimized for focusing on objects very close to 2914the camera.<wbr/></p> 2915<p>When that trigger is activated,<wbr/> AF will transition to 2916ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 2917NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 2918position to default,<wbr/> and sets the AF state to 2919INACTIVE.<wbr/></p></span> 2920 </li> 2921 <li> 2922 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span> 2923 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2924position continually to attempt to provide a 2925constantly-in-focus image stream.<wbr/></p> 2926<p>The focusing behavior should be suitable for good quality 2927video recording; typically this means slower focus 2928movement and no overshoots.<wbr/> When the AF trigger is not 2929involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 2930and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 2931states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 2932the algorithm should immediately transition into 2933AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2934lens position until a cancel AF trigger is received.<wbr/></p> 2935<p>Once cancel is received,<wbr/> the algorithm should transition 2936back to INACTIVE and resume passive scan.<wbr/> Note that this 2937behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 2938ongoing PASSIVE_<wbr/>SCAN must immediately be 2939canceled.<wbr/></p></span> 2940 </li> 2941 <li> 2942 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span> 2943 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2944position continually to attempt to provide a 2945constantly-in-focus image stream.<wbr/></p> 2946<p>The focusing behavior should be suitable for still image 2947capture; typically this means focusing as fast as 2948possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 2949algorithm should start in INACTIVE state,<wbr/> and then 2950transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 2951appropriate as it attempts to maintain focus.<wbr/> When the AF 2952trigger is activated,<wbr/> the algorithm should finish its 2953PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 2954AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2955lens position until a cancel AF trigger is received.<wbr/></p> 2956<p>When the AF cancel trigger is activated,<wbr/> the algorithm 2957should transition back to INACTIVE and then act as if it 2958has just been started.<wbr/></p></span> 2959 </li> 2960 <li> 2961 <span class="entry_type_enum_name">EDOF (v3.2)</span> 2962 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 2963<p>The camera device will produce images with an extended 2964depth of field automatically; no special focusing 2965operations need to be done before taking a picture.<wbr/></p> 2966<p>AF triggers are ignored,<wbr/> and the AF state will always be 2967INACTIVE.<wbr/></p></span> 2968 </li> 2969 </ul> 2970 2971 </td> <!-- entry_type --> 2972 2973 <td class="entry_description"> 2974 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 2975mode it is set to.<wbr/></p> 2976 </td> 2977 2978 <td class="entry_units"> 2979 </td> 2980 2981 <td class="entry_range"> 2982 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 2983 </td> 2984 2985 <td class="entry_hal_version"> 2986 <p>3.<wbr/>2</p> 2987 </td> 2988 2989 <td class="entry_tags"> 2990 <ul class="entry_tags"> 2991 <li><a href="#tag_BC">BC</a></li> 2992 </ul> 2993 </td> 2994 2995 </tr> 2996 <tr class="entries_header"> 2997 <th class="th_details" colspan="6">Details</th> 2998 </tr> 2999 <tr class="entry_cont"> 3000 <td class="entry_details" colspan="6"> 3001 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 3002(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 3003when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 3004dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 3005setting <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> 3006<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 3007the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 3008in result metadata.<wbr/></p> 3009 </td> 3010 </tr> 3011 3012 <tr class="entries_header"> 3013 <th class="th_details" colspan="6">HAL Implementation Details</th> 3014 </tr> 3015 <tr class="entry_cont"> 3016 <td class="entry_details" colspan="6"> 3017 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 3018request (<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 3019up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 3020<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 3021locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 3022after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 3023the same focal plane remains in focus.<wbr/></p> 3024<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 3025scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 3026(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 3027same lock behavior as above.<wbr/></p> 3028<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 3029focus 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/> 3030However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 3031manual control.<wbr/></p> 3032<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 3033camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 3034remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 3035by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 3036that will arise on camera modules with open-loop VCMs.<wbr/></p> 3037 </td> 3038 </tr> 3039 3040 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3041 <!-- end of entry --> 3042 3043 3044 <tr class="entry" id="controls_android.control.afRegions"> 3045 <td class="entry_name 3046 " rowspan="5"> 3047 android.<wbr/>control.<wbr/>af<wbr/>Regions 3048 </td> 3049 <td class="entry_type"> 3050 <span class="entry_type_name">int32</span> 3051 <span class="entry_type_container">x</span> 3052 3053 <span class="entry_type_array"> 3054 5 x area_count 3055 </span> 3056 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3057 3058 3059 3060 3061 3062 3063 </td> <!-- entry_type --> 3064 3065 <td class="entry_description"> 3066 <p>List of metering areas to use for auto-focus.<wbr/></p> 3067 </td> 3068 3069 <td class="entry_units"> 3070 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 3071 </td> 3072 3073 <td class="entry_range"> 3074 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3075<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 3076 </td> 3077 3078 <td class="entry_hal_version"> 3079 <p>3.<wbr/>2</p> 3080 </td> 3081 3082 <td class="entry_tags"> 3083 <ul class="entry_tags"> 3084 <li><a href="#tag_BC">BC</a></li> 3085 </ul> 3086 </td> 3087 3088 </tr> 3089 <tr class="entries_header"> 3090 <th class="th_details" colspan="6">Details</th> 3091 </tr> 3092 <tr class="entry_cont"> 3093 <td class="entry_details" colspan="6"> 3094 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 3095Otherwise will always be present.<wbr/></p> 3096<p>The maximum number of focus areas supported by the device is determined by the value 3097of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 3098<p>The coordinate system is based on the active pixel array,<wbr/> 3099with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 3100(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3101<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 3102bottom-right pixel in the active pixel array.<wbr/></p> 3103<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 3104for every pixel in the area.<wbr/> This means that a large metering area 3105with the same weight as a smaller area will have more effect in 3106the metering result.<wbr/> Metering areas can partially overlap and the 3107camera device will add the weights in the overlap region.<wbr/></p> 3108<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 3109is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 3110ignored.<wbr/></p> 3111<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3112camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or 3113the region selected by the camera device as the focus area of interest.<wbr/></p> 3114<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 3115capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3116region and output only the intersection rectangle as the metering region in the result 3117metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3118not reported in the result metadata.<wbr/></p> 3119 </td> 3120 </tr> 3121 3122 <tr class="entries_header"> 3123 <th class="th_details" colspan="6">HAL Implementation Details</th> 3124 </tr> 3125 <tr class="entry_cont"> 3126 <td class="entry_details" colspan="6"> 3127 <p>The HAL level representation of MeteringRectangle[] is a 3128int[5 * area_<wbr/>count].<wbr/> 3129Every five elements represent a metering region of 3130(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3131The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3132exclusive on xmax and ymax.<wbr/></p> 3133 </td> 3134 </tr> 3135 3136 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3137 <!-- end of entry --> 3138 3139 3140 <tr class="entry" id="controls_android.control.afTrigger"> 3141 <td class="entry_name 3142 " rowspan="5"> 3143 android.<wbr/>control.<wbr/>af<wbr/>Trigger 3144 </td> 3145 <td class="entry_type"> 3146 <span class="entry_type_name entry_type_name_enum">byte</span> 3147 3148 <span class="entry_type_visibility"> [public]</span> 3149 3150 3151 <span class="entry_type_hwlevel">[legacy] </span> 3152 3153 3154 3155 <ul class="entry_type_enum"> 3156 <li> 3157 <span class="entry_type_enum_name">IDLE (v3.2)</span> 3158 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 3159 </li> 3160 <li> 3161 <span class="entry_type_enum_name">START (v3.2)</span> 3162 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 3163 </li> 3164 <li> 3165 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 3166 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 3167state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 3168 </li> 3169 </ul> 3170 3171 </td> <!-- entry_type --> 3172 3173 <td class="entry_description"> 3174 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 3175 </td> 3176 3177 <td class="entry_units"> 3178 </td> 3179 3180 <td class="entry_range"> 3181 </td> 3182 3183 <td class="entry_hal_version"> 3184 <p>3.<wbr/>2</p> 3185 </td> 3186 3187 <td class="entry_tags"> 3188 <ul class="entry_tags"> 3189 <li><a href="#tag_BC">BC</a></li> 3190 </ul> 3191 </td> 3192 3193 </tr> 3194 <tr class="entries_header"> 3195 <th class="th_details" colspan="6">Details</th> 3196 </tr> 3197 <tr class="entry_cont"> 3198 <td class="entry_details" colspan="6"> 3199 <p>This entry is normally set to IDLE,<wbr/> or is not 3200included at all in the request settings.<wbr/></p> 3201<p>When included and set to START,<wbr/> the camera device will trigger the 3202autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 3203<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 3204and return to its initial AF state.<wbr/></p> 3205<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 3206single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 3207START for multiple captures in a row means restarting the AF operation over 3208and over again.<wbr/></p> 3209<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> 3210<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> 3211simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 3212the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 3213focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 3214trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 3215changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 3216 </td> 3217 </tr> 3218 3219 <tr class="entries_header"> 3220 <th class="th_details" colspan="6">HAL Implementation Details</th> 3221 </tr> 3222 <tr class="entry_cont"> 3223 <td class="entry_details" colspan="6"> 3224 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 3225(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 3226treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 3227AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 3228to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 3229 </td> 3230 </tr> 3231 3232 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3233 <!-- end of entry --> 3234 3235 3236 <tr class="entry" id="controls_android.control.awbLock"> 3237 <td class="entry_name 3238 " rowspan="3"> 3239 android.<wbr/>control.<wbr/>awb<wbr/>Lock 3240 </td> 3241 <td class="entry_type"> 3242 <span class="entry_type_name entry_type_name_enum">byte</span> 3243 3244 <span class="entry_type_visibility"> [public as boolean]</span> 3245 3246 3247 <span class="entry_type_hwlevel">[legacy] </span> 3248 3249 3250 3251 <ul class="entry_type_enum"> 3252 <li> 3253 <span class="entry_type_enum_name">OFF (v3.2)</span> 3254 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 3255algorithm is free to update its parameters if in AUTO 3256mode.<wbr/></p></span> 3257 </li> 3258 <li> 3259 <span class="entry_type_enum_name">ON (v3.2)</span> 3260 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 3261algorithm will not update its parameters while the lock 3262is active.<wbr/></p></span> 3263 </li> 3264 </ul> 3265 3266 </td> <!-- entry_type --> 3267 3268 <td class="entry_description"> 3269 <p>Whether auto-white balance (AWB) is currently locked to its 3270latest calculated values.<wbr/></p> 3271 </td> 3272 3273 <td class="entry_units"> 3274 </td> 3275 3276 <td class="entry_range"> 3277 </td> 3278 3279 <td class="entry_hal_version"> 3280 <p>3.<wbr/>2</p> 3281 </td> 3282 3283 <td class="entry_tags"> 3284 <ul class="entry_tags"> 3285 <li><a href="#tag_BC">BC</a></li> 3286 </ul> 3287 </td> 3288 3289 </tr> 3290 <tr class="entries_header"> 3291 <th class="th_details" colspan="6">Details</th> 3292 </tr> 3293 <tr class="entry_cont"> 3294 <td class="entry_details" colspan="6"> 3295 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 3296and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 3297<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 3298get locked do not necessarily correspond to the settings that were present in the 3299latest capture result received from the camera device,<wbr/> since additional captures 3300and AWB updates may have occurred even before the result was sent out.<wbr/> If an 3301application is switching between automatic and manual control and wishes to eliminate 3302any flicker during the switch,<wbr/> the following procedure is recommended:</p> 3303<ol> 3304<li>Starting in auto-AWB mode:</li> 3305<li>Lock AWB</li> 3306<li>Wait for the first result to be output that has the AWB locked</li> 3307<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 3308<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 3309</ol> 3310<p>Note that AWB lock is only meaningful when 3311<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 3312AWB is already fixed to a specific setting.<wbr/></p> 3313<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 3314 </td> 3315 </tr> 3316 3317 3318 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3319 <!-- end of entry --> 3320 3321 3322 <tr class="entry" id="controls_android.control.awbMode"> 3323 <td class="entry_name 3324 " rowspan="3"> 3325 android.<wbr/>control.<wbr/>awb<wbr/>Mode 3326 </td> 3327 <td class="entry_type"> 3328 <span class="entry_type_name entry_type_name_enum">byte</span> 3329 3330 <span class="entry_type_visibility"> [public]</span> 3331 3332 3333 <span class="entry_type_hwlevel">[legacy] </span> 3334 3335 3336 3337 <ul class="entry_type_enum"> 3338 <li> 3339 <span class="entry_type_enum_name">OFF (v3.2)</span> 3340 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 3341<p>The application-selected color transform matrix 3342(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 3343(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 3344device for manual white balance control.<wbr/></p></span> 3345 </li> 3346 <li> 3347 <span class="entry_type_enum_name">AUTO (v3.2)</span> 3348 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 3349<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3350and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3351For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3352values used by the camera device for the transform and gains 3353will be available in the capture result for this request.<wbr/></p></span> 3354 </li> 3355 <li> 3356 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span> 3357 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3358the camera device uses incandescent light as the assumed scene 3359illumination for white balance.<wbr/></p> 3360<p>While the exact white balance transforms are up to the 3361camera device,<wbr/> they will approximately match the CIE 3362standard illuminant A.<wbr/></p> 3363<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3364and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3365For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3366values used by the camera device for the transform and gains 3367will be available in the capture result for this request.<wbr/></p></span> 3368 </li> 3369 <li> 3370 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> 3371 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3372the camera device uses fluorescent light as the assumed scene 3373illumination for white balance.<wbr/></p> 3374<p>While the exact white balance transforms are up to the 3375camera device,<wbr/> they will approximately match the CIE 3376standard illuminant F2.<wbr/></p> 3377<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3378and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3379For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3380values used by the camera device for the transform and gains 3381will be available in the capture result for this request.<wbr/></p></span> 3382 </li> 3383 <li> 3384 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span> 3385 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3386the camera device uses warm fluorescent light as the assumed scene 3387illumination for white balance.<wbr/></p> 3388<p>While the exact white balance transforms are up to the 3389camera device,<wbr/> they will approximately match the CIE 3390standard illuminant F4.<wbr/></p> 3391<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3392and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3393For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3394values used by the camera device for the transform and gains 3395will be available in the capture result for this request.<wbr/></p></span> 3396 </li> 3397 <li> 3398 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> 3399 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3400the camera device uses daylight light as the assumed scene 3401illumination for white balance.<wbr/></p> 3402<p>While the exact white balance transforms are up to the 3403camera device,<wbr/> they will approximately match the CIE 3404standard illuminant D65.<wbr/></p> 3405<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3406and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3407For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3408values used by the camera device for the transform and gains 3409will be available in the capture result for this request.<wbr/></p></span> 3410 </li> 3411 <li> 3412 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span> 3413 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3414the camera device uses cloudy daylight light as the assumed scene 3415illumination for white balance.<wbr/></p> 3416<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3417and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3418For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3419values used by the camera device for the transform and gains 3420will be available in the capture result for this request.<wbr/></p></span> 3421 </li> 3422 <li> 3423 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span> 3424 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3425the camera device uses twilight light as the assumed scene 3426illumination for white balance.<wbr/></p> 3427<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3428and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3429For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3430values used by the camera device for the transform and gains 3431will be available in the capture result for this request.<wbr/></p></span> 3432 </li> 3433 <li> 3434 <span class="entry_type_enum_name">SHADE (v3.2)</span> 3435 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3436the camera device uses shade light as the assumed scene 3437illumination for white balance.<wbr/></p> 3438<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3439and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3440For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3441values used by the camera device for the transform and gains 3442will be available in the capture result for this request.<wbr/></p></span> 3443 </li> 3444 </ul> 3445 3446 </td> <!-- entry_type --> 3447 3448 <td class="entry_description"> 3449 <p>Whether auto-white balance (AWB) is currently setting the color 3450transform fields,<wbr/> and what its illumination target 3451is.<wbr/></p> 3452 </td> 3453 3454 <td class="entry_units"> 3455 </td> 3456 3457 <td class="entry_range"> 3458 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 3459 </td> 3460 3461 <td class="entry_hal_version"> 3462 <p>3.<wbr/>2</p> 3463 </td> 3464 3465 <td class="entry_tags"> 3466 <ul class="entry_tags"> 3467 <li><a href="#tag_BC">BC</a></li> 3468 </ul> 3469 </td> 3470 3471 </tr> 3472 <tr class="entries_header"> 3473 <th class="th_details" colspan="6">Details</th> 3474 </tr> 3475 <tr class="entry_cont"> 3476 <td class="entry_details" colspan="6"> 3477 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 3478<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 3479routine is enabled,<wbr/> overriding the application's selected 3480<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 3481<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> 3482is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 3483also 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 3484setting AE mode to OFF.<wbr/></p> 3485<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 3486routine is disabled.<wbr/> The application manually controls the white 3487balance 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> 3488and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 3489<p>When set to any other modes,<wbr/> the camera device's auto-white 3490balance routine is disabled.<wbr/> The camera device uses each 3491particular illumination target for white balance 3492adjustment.<wbr/> The application's values for 3493<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 3494<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 3495<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 3496 </td> 3497 </tr> 3498 3499 3500 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3501 <!-- end of entry --> 3502 3503 3504 <tr class="entry" id="controls_android.control.awbRegions"> 3505 <td class="entry_name 3506 " rowspan="5"> 3507 android.<wbr/>control.<wbr/>awb<wbr/>Regions 3508 </td> 3509 <td class="entry_type"> 3510 <span class="entry_type_name">int32</span> 3511 <span class="entry_type_container">x</span> 3512 3513 <span class="entry_type_array"> 3514 5 x area_count 3515 </span> 3516 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3517 3518 3519 3520 3521 3522 3523 </td> <!-- entry_type --> 3524 3525 <td class="entry_description"> 3526 <p>List of metering areas to use for auto-white-balance illuminant 3527estimation.<wbr/></p> 3528 </td> 3529 3530 <td class="entry_units"> 3531 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 3532 </td> 3533 3534 <td class="entry_range"> 3535 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3536<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 3537 </td> 3538 3539 <td class="entry_hal_version"> 3540 <p>3.<wbr/>2</p> 3541 </td> 3542 3543 <td class="entry_tags"> 3544 <ul class="entry_tags"> 3545 <li><a href="#tag_BC">BC</a></li> 3546 </ul> 3547 </td> 3548 3549 </tr> 3550 <tr class="entries_header"> 3551 <th class="th_details" colspan="6">Details</th> 3552 </tr> 3553 <tr class="entry_cont"> 3554 <td class="entry_details" colspan="6"> 3555 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 3556Otherwise will always be present.<wbr/></p> 3557<p>The maximum number of regions supported by the device is determined by the value 3558of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 3559<p>The coordinate system is based on the active pixel array,<wbr/> 3560with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 3561(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3562<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 3563bottom-right pixel in the active pixel array.<wbr/></p> 3564<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 3565for every pixel in the area.<wbr/> This means that a large metering area 3566with the same weight as a smaller area will have more effect in 3567the metering result.<wbr/> Metering areas can partially overlap and the 3568camera device will add the weights in the overlap region.<wbr/></p> 3569<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 3570only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 35710 weight is ignored.<wbr/></p> 3572<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3573camera device.<wbr/></p> 3574<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 3575capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3576region and output only the intersection rectangle as the metering region in the result 3577metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3578not reported in the result metadata.<wbr/></p> 3579 </td> 3580 </tr> 3581 3582 <tr class="entries_header"> 3583 <th class="th_details" colspan="6">HAL Implementation Details</th> 3584 </tr> 3585 <tr class="entry_cont"> 3586 <td class="entry_details" colspan="6"> 3587 <p>The HAL level representation of MeteringRectangle[] is a 3588int[5 * area_<wbr/>count].<wbr/> 3589Every five elements represent a metering region of 3590(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3591The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3592exclusive on xmax and ymax.<wbr/></p> 3593 </td> 3594 </tr> 3595 3596 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3597 <!-- end of entry --> 3598 3599 3600 <tr class="entry" id="controls_android.control.captureIntent"> 3601 <td class="entry_name 3602 " rowspan="3"> 3603 android.<wbr/>control.<wbr/>capture<wbr/>Intent 3604 </td> 3605 <td class="entry_type"> 3606 <span class="entry_type_name entry_type_name_enum">byte</span> 3607 3608 <span class="entry_type_visibility"> [public]</span> 3609 3610 3611 <span class="entry_type_hwlevel">[legacy] </span> 3612 3613 3614 3615 <ul class="entry_type_enum"> 3616 <li> 3617 <span class="entry_type_enum_name">CUSTOM (v3.2)</span> 3618 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 3619categories.<wbr/> The camera device will default to preview-like 3620behavior.<wbr/></p></span> 3621 </li> 3622 <li> 3623 <span class="entry_type_enum_name">PREVIEW (v3.2)</span> 3624 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 3625<p>The precapture trigger may be used to start off a metering 3626w/<wbr/>flash sequence.<wbr/></p></span> 3627 </li> 3628 <li> 3629 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span> 3630 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 3631use case.<wbr/></p> 3632<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 3633 </li> 3634 <li> 3635 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span> 3636 <span class="entry_type_enum_notes"><p>This request is for a video recording 3637use case.<wbr/></p></span> 3638 </li> 3639 <li> 3640 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span> 3641 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 3642image while recording video) use case.<wbr/></p> 3643<p>The camera device should take the highest-quality image 3644possible (given the other settings) without disrupting the 3645frame rate of video recording.<wbr/> </p></span> 3646 </li> 3647 <li> 3648 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 3649 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 3650application will stream full-resolution images and 3651reprocess one or several later for a final 3652capture.<wbr/></p></span> 3653 </li> 3654 <li> 3655 <span class="entry_type_enum_name">MANUAL (v3.2)</span> 3656 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 3657the applications want to directly control the capture parameters.<wbr/></p> 3658<p>For example,<wbr/> the application may wish to manually control 3659<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> 3660 </li> 3661 <li> 3662 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> 3663 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where 3664the application will use camera and inertial sensor data to 3665locate and track objects in the world.<wbr/></p> 3666<p>The camera device auto-exposure routine will limit the exposure time 3667of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span> 3668 </li> 3669 </ul> 3670 3671 </td> <!-- entry_type --> 3672 3673 <td class="entry_description"> 3674 <p>Information to the camera device 3A (auto-exposure,<wbr/> 3675auto-focus,<wbr/> auto-white balance) routines about the purpose 3676of this capture,<wbr/> to help the camera device to decide optimal 3A 3677strategy.<wbr/></p> 3678 </td> 3679 3680 <td class="entry_units"> 3681 </td> 3682 3683 <td class="entry_range"> 3684 </td> 3685 3686 <td class="entry_hal_version"> 3687 <p>3.<wbr/>2</p> 3688 </td> 3689 3690 <td class="entry_tags"> 3691 <ul class="entry_tags"> 3692 <li><a href="#tag_BC">BC</a></li> 3693 </ul> 3694 </td> 3695 3696 </tr> 3697 <tr class="entries_header"> 3698 <th class="th_details" colspan="6">Details</th> 3699 </tr> 3700 <tr class="entry_cont"> 3701 <td class="entry_details" colspan="6"> 3702 <p>This control (except for MANUAL) is only effective if 3703<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 3704<p>All intents are supported by all devices,<wbr/> except that: 3705 * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 3706PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> 3707 * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 3708MANUAL_<wbr/>SENSOR.<wbr/> 3709 * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 3710MOTION_<wbr/>TRACKING.<wbr/></p> 3711 </td> 3712 </tr> 3713 3714 3715 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3716 <!-- end of entry --> 3717 3718 3719 <tr class="entry" id="controls_android.control.effectMode"> 3720 <td class="entry_name 3721 " rowspan="3"> 3722 android.<wbr/>control.<wbr/>effect<wbr/>Mode 3723 </td> 3724 <td class="entry_type"> 3725 <span class="entry_type_name entry_type_name_enum">byte</span> 3726 3727 <span class="entry_type_visibility"> [public]</span> 3728 3729 3730 <span class="entry_type_hwlevel">[legacy] </span> 3731 3732 3733 3734 <ul class="entry_type_enum"> 3735 <li> 3736 <span class="entry_type_enum_name">OFF (v3.2)</span> 3737 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 3738 </li> 3739 <li> 3740 <span class="entry_type_enum_name">MONO (v3.2)</span> 3741 <span class="entry_type_enum_optional">[optional]</span> 3742 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 3743a single color.<wbr/></p> 3744<p>This will typically be grayscale.<wbr/></p></span> 3745 </li> 3746 <li> 3747 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span> 3748 <span class="entry_type_enum_optional">[optional]</span> 3749 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 3750are inverted.<wbr/></p></span> 3751 </li> 3752 <li> 3753 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span> 3754 <span class="entry_type_enum_optional">[optional]</span> 3755 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 3756image is wholly or partially reversed in 3757tone.<wbr/></p></span> 3758 </li> 3759 <li> 3760 <span class="entry_type_enum_name">SEPIA (v3.2)</span> 3761 <span class="entry_type_enum_optional">[optional]</span> 3762 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 3763gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 3764 </li> 3765 <li> 3766 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span> 3767 <span class="entry_type_enum_optional">[optional]</span> 3768 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 3769discrete regions of tone rather than a continuous 3770gradient of tones.<wbr/></p></span> 3771 </li> 3772 <li> 3773 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span> 3774 <span class="entry_type_enum_optional">[optional]</span> 3775 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 3776as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 3777 </li> 3778 <li> 3779 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span> 3780 <span class="entry_type_enum_optional">[optional]</span> 3781 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 3782as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 3783 </li> 3784 <li> 3785 <span class="entry_type_enum_name">AQUA (v3.2)</span> 3786 <span class="entry_type_enum_optional">[optional]</span> 3787 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 3788 </li> 3789 </ul> 3790 3791 </td> <!-- entry_type --> 3792 3793 <td class="entry_description"> 3794 <p>A special color effect to apply.<wbr/></p> 3795 </td> 3796 3797 <td class="entry_units"> 3798 </td> 3799 3800 <td class="entry_range"> 3801 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 3802 </td> 3803 3804 <td class="entry_hal_version"> 3805 <p>3.<wbr/>2</p> 3806 </td> 3807 3808 <td class="entry_tags"> 3809 <ul class="entry_tags"> 3810 <li><a href="#tag_BC">BC</a></li> 3811 </ul> 3812 </td> 3813 3814 </tr> 3815 <tr class="entries_header"> 3816 <th class="th_details" colspan="6">Details</th> 3817 </tr> 3818 <tr class="entry_cont"> 3819 <td class="entry_details" colspan="6"> 3820 <p>When this mode is set,<wbr/> a color effect will be applied 3821to images produced by the camera device.<wbr/> The interpretation 3822and implementation of these color effects is left to the 3823implementor of the camera device,<wbr/> and should not be 3824depended on to be consistent (or present) across all 3825devices.<wbr/></p> 3826 </td> 3827 </tr> 3828 3829 3830 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3831 <!-- end of entry --> 3832 3833 3834 <tr class="entry" id="controls_android.control.mode"> 3835 <td class="entry_name 3836 " rowspan="3"> 3837 android.<wbr/>control.<wbr/>mode 3838 </td> 3839 <td class="entry_type"> 3840 <span class="entry_type_name entry_type_name_enum">byte</span> 3841 3842 <span class="entry_type_visibility"> [public]</span> 3843 3844 3845 <span class="entry_type_hwlevel">[legacy] </span> 3846 3847 3848 3849 <ul class="entry_type_enum"> 3850 <li> 3851 <span class="entry_type_enum_name">OFF (v3.2)</span> 3852 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 3853<p>All control by the device's metering and focusing (3A) 3854routines is disabled,<wbr/> and no other settings in 3855android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 3856<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 3857device to select post-processing values for processing 3858blocks that do not allow for manual control,<wbr/> or are not 3859exposed by the camera API.<wbr/></p> 3860<p>However,<wbr/> the camera device's 3A routines may continue to 3861collect statistics and update their internal state so that 3862when control is switched to AUTO mode,<wbr/> good control values 3863can be immediately applied.<wbr/></p></span> 3864 </li> 3865 <li> 3866 <span class="entry_type_enum_name">AUTO (v3.2)</span> 3867 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 3868<p>Manual control of capture parameters is disabled.<wbr/> All 3869controls in android.<wbr/>control.<wbr/>* besides sceneMode take 3870effect.<wbr/></p></span> 3871 </li> 3872 <li> 3873 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span> 3874 <span class="entry_type_enum_optional">[optional]</span> 3875 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 3876<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 3877control.<wbr/>afMode controls; the camera device will ignore 3878those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 3879FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 3880This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 3881<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 3882contain some modes other than DISABLED).<wbr/></p></span> 3883 </li> 3884 <li> 3885 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span> 3886 <span class="entry_type_enum_optional">[optional]</span> 3887 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 3888used by camera device background auto-exposure,<wbr/> auto-white balance and 3889auto-focus algorithms (3A) to update their statistics.<wbr/></p> 3890<p>Specifically,<wbr/> the 3A routines are locked to the last 3891values set from a request with AUTO,<wbr/> OFF,<wbr/> or 3892USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 3893collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 3894discarded by the camera device.<wbr/></p></span> 3895 </li> 3896 </ul> 3897 3898 </td> <!-- entry_type --> 3899 3900 <td class="entry_description"> 3901 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 3902routines.<wbr/></p> 3903 </td> 3904 3905 <td class="entry_units"> 3906 </td> 3907 3908 <td class="entry_range"> 3909 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 3910 </td> 3911 3912 <td class="entry_hal_version"> 3913 <p>3.<wbr/>2</p> 3914 </td> 3915 3916 <td class="entry_tags"> 3917 <ul class="entry_tags"> 3918 <li><a href="#tag_BC">BC</a></li> 3919 </ul> 3920 </td> 3921 3922 </tr> 3923 <tr class="entries_header"> 3924 <th class="th_details" colspan="6">Details</th> 3925 </tr> 3926 <tr class="entry_cont"> 3927 <td class="entry_details" colspan="6"> 3928 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 3929by the camera device is disabled.<wbr/> The application must set the fields for 3930capture parameters itself.<wbr/></p> 3931<p>When set to AUTO,<wbr/> the individual algorithm controls in 3932android.<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> 3933<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 3934android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device 3935implements one of the scene mode settings (such as ACTION,<wbr/> 3936SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode 39373A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 3938<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 3939is that this frame will not be used by camera device background 3A statistics 3940update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 3941where the application doesn't want a 3A manual control capture to affect 3942the subsequent auto 3A capture results.<wbr/></p> 3943 </td> 3944 </tr> 3945 3946 3947 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 3948 <!-- end of entry --> 3949 3950 3951 <tr class="entry" id="controls_android.control.sceneMode"> 3952 <td class="entry_name 3953 " rowspan="5"> 3954 android.<wbr/>control.<wbr/>scene<wbr/>Mode 3955 </td> 3956 <td class="entry_type"> 3957 <span class="entry_type_name entry_type_name_enum">byte</span> 3958 3959 <span class="entry_type_visibility"> [public]</span> 3960 3961 3962 <span class="entry_type_hwlevel">[legacy] </span> 3963 3964 3965 3966 <ul class="entry_type_enum"> 3967 <li> 3968 <span class="entry_type_enum_name">DISABLED (v3.2)</span> 3969 <span class="entry_type_enum_value">0</span> 3970 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 3971 </li> 3972 <li> 3973 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span> 3974 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 3975detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 3976auto-exposure routines.<wbr/></p> 3977<p>If face detection statistics are disabled 3978(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/> 3979this should still operate correctly (but will not return 3980face detection statistics to the framework).<wbr/></p> 3981<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3982<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> 3983remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 3984 </li> 3985 <li> 3986 <span class="entry_type_enum_name">ACTION (v3.2)</span> 3987 <span class="entry_type_enum_optional">[optional]</span> 3988 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 3989<p>Similar to SPORTS.<wbr/></p></span> 3990 </li> 3991 <li> 3992 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span> 3993 <span class="entry_type_enum_optional">[optional]</span> 3994 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 3995 </li> 3996 <li> 3997 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span> 3998 <span class="entry_type_enum_optional">[optional]</span> 3999 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 4000 </li> 4001 <li> 4002 <span class="entry_type_enum_name">NIGHT (v3.2)</span> 4003 <span class="entry_type_enum_optional">[optional]</span> 4004 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 4005 </li> 4006 <li> 4007 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span> 4008 <span class="entry_type_enum_optional">[optional]</span> 4009 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 4010settings.<wbr/></p></span> 4011 </li> 4012 <li> 4013 <span class="entry_type_enum_name">THEATRE (v3.2)</span> 4014 <span class="entry_type_enum_optional">[optional]</span> 4015 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 4016remain off.<wbr/></p></span> 4017 </li> 4018 <li> 4019 <span class="entry_type_enum_name">BEACH (v3.2)</span> 4020 <span class="entry_type_enum_optional">[optional]</span> 4021 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 4022 </li> 4023 <li> 4024 <span class="entry_type_enum_name">SNOW (v3.2)</span> 4025 <span class="entry_type_enum_optional">[optional]</span> 4026 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 4027 </li> 4028 <li> 4029 <span class="entry_type_enum_name">SUNSET (v3.2)</span> 4030 <span class="entry_type_enum_optional">[optional]</span> 4031 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 4032 </li> 4033 <li> 4034 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span> 4035 <span class="entry_type_enum_optional">[optional]</span> 4036 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 4037device motion (for example: due to hand shake).<wbr/></p></span> 4038 </li> 4039 <li> 4040 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span> 4041 <span class="entry_type_enum_optional">[optional]</span> 4042 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 4043 </li> 4044 <li> 4045 <span class="entry_type_enum_name">SPORTS (v3.2)</span> 4046 <span class="entry_type_enum_optional">[optional]</span> 4047 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 4048<p>Similar to ACTION.<wbr/></p></span> 4049 </li> 4050 <li> 4051 <span class="entry_type_enum_name">PARTY (v3.2)</span> 4052 <span class="entry_type_enum_optional">[optional]</span> 4053 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 4054people.<wbr/></p></span> 4055 </li> 4056 <li> 4057 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span> 4058 <span class="entry_type_enum_optional">[optional]</span> 4059 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 4060is a flame.<wbr/></p></span> 4061 </li> 4062 <li> 4063 <span class="entry_type_enum_name">BARCODE (v3.2)</span> 4064 <span class="entry_type_enum_optional">[optional]</span> 4065 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 4066for use by camera applications that wish to read the 4067barcode value.<wbr/></p></span> 4068 </li> 4069 <li> 4070 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span> 4071 <span class="entry_type_enum_deprecated">[deprecated]</span> 4072 <span class="entry_type_enum_optional">[optional]</span> 4073 <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> 4074and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 4075for high speed video recording.<wbr/></p> 4076<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 4077<p>The supported high speed video sizes and fps ranges are specified in 4078<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 4079output frame rates,<wbr/> the application is only allowed to select video size 4080and fps range combinations listed in this static metadata.<wbr/> The fps range 4081can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 4082<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 4083ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 4084controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 4085and post-processing parameters is possible.<wbr/> All other controls operate the 4086same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 4087android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 4088<ul> 4089<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 4090<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 4091<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 4092<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 4093<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 4094<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 4095<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 4096<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 4097<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 4098<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 4099</ul> 4100<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 4101<ul> 4102<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> 4103<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 4104<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 4105<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 4106</ul> 4107<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 4108be lower than what camera can output,<wbr/> depending on the destination Surfaces for 4109the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 4110the application need check if the video encoder is capable of supporting the 4111high frame rate for a given video size,<wbr/> or it will end up with lower recording 4112frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 4113rate will be bounded by the screen refresh rate.<wbr/></p> 4114<p>The camera device will only support up to 2 output high speed streams 4115(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 4116in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 4117<ul> 4118<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 4119format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 4120min(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> 4121<li>The stream sizes are selected from the sizes reported by 4122<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 4123<li>No processed non-stalling or raw streams are configured.<wbr/></li> 4124</ul> 4125<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 4126<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/> 4127the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 4128and the returned capture result metadata will give the fps range choosen 4129by the camera device.<wbr/></p> 4130<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 4131reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 4132the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 4133 </li> 4134 <li> 4135 <span class="entry_type_enum_name">HDR (v3.2)</span> 4136 <span class="entry_type_enum_optional">[optional]</span> 4137 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 4138<p>In this scene mode,<wbr/> the camera device captures images 4139that keep a larger range of scene illumination levels 4140visible in the final image.<wbr/> For example,<wbr/> when taking a 4141picture of a object in front of a bright window,<wbr/> both 4142the object and the scene through the window may be 4143visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 4144one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 4145HDR mode generally takes much longer to capture a single 4146image,<wbr/> has no user control,<wbr/> and may have other artifacts 4147depending on the HDR method used.<wbr/></p> 4148<p>Therefore,<wbr/> HDR captures operate at a much slower rate 4149than regular captures.<wbr/></p> 4150<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 4151is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 4152STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 4153using a high dynamic range capture technique.<wbr/> On LEGACY 4154devices,<wbr/> captures that target a JPEG-format output will 4155be captured with HDR,<wbr/> and the capture intent is not 4156relevant.<wbr/></p> 4157<p>The HDR capture may involve the device capturing a burst 4158of images internally and combining them into one,<wbr/> or it 4159may involve the device using specialized high dynamic 4160range capture hardware.<wbr/> In all cases,<wbr/> a single image is 4161produced in response to a capture request submitted 4162while in HDR mode.<wbr/></p> 4163<p>Since substantial post-processing is generally needed to 4164produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG 4165outputs are supported for LIMITED/<wbr/>FULL device HDR 4166captures,<wbr/> and only JPEG outputs are supported for LEGACY 4167HDR captures.<wbr/> Using a RAW output for HDR capture is not 4168supported.<wbr/></p> 4169<p>Some devices may also support always-on HDR,<wbr/> which 4170applies HDR processing at full frame rate.<wbr/> For these 4171devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also 4172produce an HDR output with no frame rate impact compared 4173to normal operation,<wbr/> though the quality may be lower 4174than for STILL_<wbr/>CAPTURE intents.<wbr/></p> 4175<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types 4176or capture intents,<wbr/> the images captured will be as if 4177the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> 4178 </li> 4179 <li> 4180 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span> 4181 <span class="entry_type_enum_optional">[optional]</span> 4182 <span class="entry_type_enum_hidden">[hidden]</span> 4183 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 4184device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 4185under low light conditions.<wbr/></p> 4186<p>The camera device may be tuned to expose the images in a reduced 4187sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 4188if 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/> 4189the camera device auto-exposure routine tuning process may limit the actual 4190exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 4191exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 4192low light may be under-exposed when the sensor max exposure time (bounded by the 4193<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 4194ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 4195camera device auto-exposure routine to increase the sensitivity up to the max 4196sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 4197dark and the max exposure time is reached.<wbr/> The captured images may be noisier 4198compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 4199recommended that the application only use this scene mode when it is capable of 4200reducing the noise level of the captured images.<wbr/></p> 4201<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4202<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> 4203remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 4204 </li> 4205 <li> 4206 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span> 4207 <span class="entry_type_enum_optional">[optional]</span> 4208 <span class="entry_type_enum_hidden">[hidden]</span> 4209 <span class="entry_type_enum_value">100</span> 4210 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 4211<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 4212customized scene modes.<wbr/></p></span> 4213 </li> 4214 <li> 4215 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span> 4216 <span class="entry_type_enum_optional">[optional]</span> 4217 <span class="entry_type_enum_hidden">[hidden]</span> 4218 <span class="entry_type_enum_value">127</span> 4219 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 4220<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 4221customized scene modes.<wbr/></p></span> 4222 </li> 4223 </ul> 4224 4225 </td> <!-- entry_type --> 4226 4227 <td class="entry_description"> 4228 <p>Control for which scene mode is currently active.<wbr/></p> 4229 </td> 4230 4231 <td class="entry_units"> 4232 </td> 4233 4234 <td class="entry_range"> 4235 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 4236 </td> 4237 4238 <td class="entry_hal_version"> 4239 <p>3.<wbr/>2</p> 4240 </td> 4241 4242 <td class="entry_tags"> 4243 <ul class="entry_tags"> 4244 <li><a href="#tag_BC">BC</a></li> 4245 </ul> 4246 </td> 4247 4248 </tr> 4249 <tr class="entries_header"> 4250 <th class="th_details" colspan="6">Details</th> 4251 </tr> 4252 <tr class="entry_cont"> 4253 <td class="entry_details" colspan="6"> 4254 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 4255capture settings.<wbr/></p> 4256<p>This is the mode that that is active when 4257<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 4258disable <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> 4259while in use.<wbr/></p> 4260<p>The interpretation and implementation of these scene modes is left 4261to the implementor of the camera device.<wbr/> Their behavior will not be 4262consistent across all devices,<wbr/> and any given device may only implement 4263a subset of these modes.<wbr/></p> 4264 </td> 4265 </tr> 4266 4267 <tr class="entries_header"> 4268 <th class="th_details" colspan="6">HAL Implementation Details</th> 4269 </tr> 4270 <tr class="entry_cont"> 4271 <td class="entry_details" colspan="6"> 4272 <p>HAL implementations that include scene modes are expected to provide 4273the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4274<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 4275<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 4276<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 4277HAL must list supported video size and fps range in 4278<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/> 4279if the HAL has two different sensor configurations for normal streaming mode and high 4280speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the 4281HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy 4282HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 4283<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 4284capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 4285 </td> 4286 </tr> 4287 4288 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4289 <!-- end of entry --> 4290 4291 4292 <tr class="entry" id="controls_android.control.videoStabilizationMode"> 4293 <td class="entry_name 4294 " rowspan="3"> 4295 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 4296 </td> 4297 <td class="entry_type"> 4298 <span class="entry_type_name entry_type_name_enum">byte</span> 4299 4300 <span class="entry_type_visibility"> [public]</span> 4301 4302 4303 <span class="entry_type_hwlevel">[legacy] </span> 4304 4305 4306 4307 <ul class="entry_type_enum"> 4308 <li> 4309 <span class="entry_type_enum_name">OFF (v3.2)</span> 4310 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 4311 </li> 4312 <li> 4313 <span class="entry_type_enum_name">ON (v3.2)</span> 4314 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 4315 </li> 4316 </ul> 4317 4318 </td> <!-- entry_type --> 4319 4320 <td class="entry_description"> 4321 <p>Whether video stabilization is 4322active.<wbr/></p> 4323 </td> 4324 4325 <td class="entry_units"> 4326 </td> 4327 4328 <td class="entry_range"> 4329 </td> 4330 4331 <td class="entry_hal_version"> 4332 <p>3.<wbr/>2</p> 4333 </td> 4334 4335 <td class="entry_tags"> 4336 <ul class="entry_tags"> 4337 <li><a href="#tag_BC">BC</a></li> 4338 </ul> 4339 </td> 4340 4341 </tr> 4342 <tr class="entries_header"> 4343 <th class="th_details" colspan="6">Details</th> 4344 </tr> 4345 <tr class="entry_cont"> 4346 <td class="entry_details" colspan="6"> 4347 <p>Video stabilization automatically warps images from 4348the camera in order to stabilize motion between consecutive frames.<wbr/></p> 4349<p>If enabled,<wbr/> video stabilization can modify the 4350<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 4351<p>Switching between different video stabilization modes may take several 4352frames to initialize,<wbr/> the camera device will report the current mode 4353in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 4354the video stabilization modes in the first several capture results may 4355still be "OFF",<wbr/> and it will become "ON" when the initialization is 4356done.<wbr/></p> 4357<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 4358stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 4359that an output targeting a MediaRecorder or MediaCodec will be stabilized if 4360the recording resolution is less than or equal to 1920 x 1080 (width less than 4361or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 4362frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 4363<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 4364OFF if the recording output is not stabilized,<wbr/> or if there are no output 4365Surface types that can be stabilized.<wbr/></p> 4366<p>If a camera device supports both this mode and OIS 4367(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 4368produce undesirable interaction,<wbr/> so it is recommended not to enable 4369both at the same time.<wbr/></p> 4370 </td> 4371 </tr> 4372 4373 4374 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4375 <!-- end of entry --> 4376 4377 4378 <tr class="entry" id="controls_android.control.postRawSensitivityBoost"> 4379 <td class="entry_name 4380 " rowspan="3"> 4381 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost 4382 </td> 4383 <td class="entry_type"> 4384 <span class="entry_type_name">int32</span> 4385 4386 <span class="entry_type_visibility"> [public]</span> 4387 4388 4389 4390 4391 4392 4393 </td> <!-- entry_type --> 4394 4395 <td class="entry_description"> 4396 <p>The amount of additional sensitivity boost applied to output images 4397after RAW sensor data is captured.<wbr/></p> 4398 </td> 4399 4400 <td class="entry_units"> 4401 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 4402 </td> 4403 4404 <td class="entry_range"> 4405 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p> 4406 </td> 4407 4408 <td class="entry_hal_version"> 4409 <p>3.<wbr/>2</p> 4410 </td> 4411 4412 <td class="entry_tags"> 4413 </td> 4414 4415 </tr> 4416 <tr class="entries_header"> 4417 <th class="th_details" colspan="6">Details</th> 4418 </tr> 4419 <tr class="entry_cont"> 4420 <td class="entry_details" colspan="6"> 4421 <p>Some camera devices support additional digital sensitivity boosting in the 4422camera processing pipeline after sensor RAW image is captured.<wbr/> 4423Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not 4424have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> 4425<p>This key will be <code>null</code> for devices that do not support any RAW format 4426outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 4427present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 4428list <code>100</code> in this key.<wbr/></p> 4429<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the 4430boost to the nearest supported value.<wbr/> 4431The final boost value used will be available in the output capture result.<wbr/></p> 4432<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images 4433of such device will have the total sensitivity of 4434<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> 4435The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> 4436<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 4437OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 4438 </td> 4439 </tr> 4440 4441 4442 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4443 <!-- end of entry --> 4444 4445 4446 <tr class="entry" id="controls_android.control.enableZsl"> 4447 <td class="entry_name 4448 " rowspan="5"> 4449 android.<wbr/>control.<wbr/>enable<wbr/>Zsl 4450 </td> 4451 <td class="entry_type"> 4452 <span class="entry_type_name entry_type_name_enum">byte</span> 4453 4454 <span class="entry_type_visibility"> [public as boolean]</span> 4455 4456 4457 4458 4459 4460 <ul class="entry_type_enum"> 4461 <li> 4462 <span class="entry_type_enum_name">FALSE (v3.2)</span> 4463 <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 4464after previous requests.<wbr/></p></span> 4465 </li> 4466 <li> 4467 <span class="entry_type_enum_name">TRUE (v3.2)</span> 4468 <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 4469captured before previous requests.<wbr/></p></span> 4470 </li> 4471 </ul> 4472 4473 </td> <!-- entry_type --> 4474 4475 <td class="entry_description"> 4476 <p>Allow camera device to enable zero-shutter-lag mode for requests with 4477<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p> 4478 </td> 4479 4480 <td class="entry_units"> 4481 </td> 4482 4483 <td class="entry_range"> 4484 </td> 4485 4486 <td class="entry_hal_version"> 4487 <p>3.<wbr/>2</p> 4488 </td> 4489 4490 <td class="entry_tags"> 4491 </td> 4492 4493 </tr> 4494 <tr class="entries_header"> 4495 <th class="th_details" colspan="6">Details</th> 4496 </tr> 4497 <tr class="entry_cont"> 4498 <td class="entry_details" colspan="6"> 4499 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with 4500STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to 4501produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the 4502<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/> 4503Therefore,<wbr/> the contents of the output images and the result metadata may be out of order 4504compared to previous regular requests.<wbr/> enableZsl does not affect requests with other 4505capture intents.<wbr/></p> 4506<p>For example,<wbr/> when requests are submitted in the following order: 4507 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW 4508 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> 4509<p>The output images for request B may have contents captured before the output images for 4510request A,<wbr/> and the result metadata for request B may be older than the result metadata for 4511request A.<wbr/></p> 4512<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in 4513the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p> 4514<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in 4515TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always 4516<code>false</code> if present.<wbr/></p> 4517<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all 4518capture templates is always <code>false</code> if present.<wbr/></p> 4519<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p> 4520 </td> 4521 </tr> 4522 4523 <tr class="entries_header"> 4524 <th class="th_details" colspan="6">HAL Implementation Details</th> 4525 </tr> 4526 <tr class="entry_cont"> 4527 <td class="entry_details" colspan="6"> 4528 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE 4529capture intent.<wbr/></p> 4530 </td> 4531 </tr> 4532 4533 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4534 <!-- end of entry --> 4535 4536 4537 4538 <!-- end of kind --> 4539 </tbody> 4540 <tr><td colspan="7" class="kind">static</td></tr> 4541 4542 <thead class="entries_header"> 4543 <tr> 4544 <th class="th_name">Property Name</th> 4545 <th class="th_type">Type</th> 4546 <th class="th_description">Description</th> 4547 <th class="th_units">Units</th> 4548 <th class="th_range">Range</th> 4549 <th class="th_hal_version">Initial HIDL HAL version</th> 4550 <th class="th_tags">Tags</th> 4551 </tr> 4552 </thead> 4553 4554 <tbody> 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 4566 <td class="entry_name 4567 " rowspan="3"> 4568 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 4569 </td> 4570 <td class="entry_type"> 4571 <span class="entry_type_name">byte</span> 4572 <span class="entry_type_container">x</span> 4573 4574 <span class="entry_type_array"> 4575 n 4576 </span> 4577 <span class="entry_type_visibility"> [public as enumList]</span> 4578 4579 4580 <span class="entry_type_hwlevel">[legacy] </span> 4581 4582 4583 <div class="entry_type_notes">list of enums</div> 4584 4585 4586 </td> <!-- entry_type --> 4587 4588 <td class="entry_description"> 4589 <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 4590supported by this camera device.<wbr/></p> 4591 </td> 4592 4593 <td class="entry_units"> 4594 </td> 4595 4596 <td class="entry_range"> 4597 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p> 4598 </td> 4599 4600 <td class="entry_hal_version"> 4601 <p>3.<wbr/>2</p> 4602 </td> 4603 4604 <td class="entry_tags"> 4605 <ul class="entry_tags"> 4606 <li><a href="#tag_BC">BC</a></li> 4607 </ul> 4608 </td> 4609 4610 </tr> 4611 <tr class="entries_header"> 4612 <th class="th_details" colspan="6">Details</th> 4613 </tr> 4614 <tr class="entry_cont"> 4615 <td class="entry_details" colspan="6"> 4616 <p>Not all of the auto-exposure anti-banding modes may be 4617supported by a given camera device.<wbr/> This field lists the 4618valid anti-banding modes that the application may request 4619for this camera device with the 4620<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p> 4621 </td> 4622 </tr> 4623 4624 4625 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4626 <!-- end of entry --> 4627 4628 4629 <tr class="entry" id="static_android.control.aeAvailableModes"> 4630 <td class="entry_name 4631 " rowspan="3"> 4632 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 4633 </td> 4634 <td class="entry_type"> 4635 <span class="entry_type_name">byte</span> 4636 <span class="entry_type_container">x</span> 4637 4638 <span class="entry_type_array"> 4639 n 4640 </span> 4641 <span class="entry_type_visibility"> [public as enumList]</span> 4642 4643 4644 <span class="entry_type_hwlevel">[legacy] </span> 4645 4646 4647 <div class="entry_type_notes">list of enums</div> 4648 4649 4650 </td> <!-- entry_type --> 4651 4652 <td class="entry_description"> 4653 <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 4654device.<wbr/></p> 4655 </td> 4656 4657 <td class="entry_units"> 4658 </td> 4659 4660 <td class="entry_range"> 4661 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p> 4662 </td> 4663 4664 <td class="entry_hal_version"> 4665 <p>3.<wbr/>2</p> 4666 </td> 4667 4668 <td class="entry_tags"> 4669 <ul class="entry_tags"> 4670 <li><a href="#tag_BC">BC</a></li> 4671 </ul> 4672 </td> 4673 4674 </tr> 4675 <tr class="entries_header"> 4676 <th class="th_details" colspan="6">Details</th> 4677 </tr> 4678 <tr class="entry_cont"> 4679 <td class="entry_details" colspan="6"> 4680 <p>Not all the auto-exposure modes may be supported by a 4681given camera device,<wbr/> especially if no flash unit is 4682available.<wbr/> This entry lists the valid modes for 4683<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 4684<p>All camera devices support ON,<wbr/> and all camera devices with flash 4685units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 4686<p>FULL mode camera devices always support OFF mode,<wbr/> 4687which enables application control of camera exposure time,<wbr/> 4688sensitivity,<wbr/> and frame duration.<wbr/></p> 4689<p>LEGACY mode camera devices never support OFF mode.<wbr/> 4690LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR 4691capability.<wbr/></p> 4692 </td> 4693 </tr> 4694 4695 4696 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4697 <!-- end of entry --> 4698 4699 4700 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 4701 <td class="entry_name 4702 " rowspan="3"> 4703 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 4704 </td> 4705 <td class="entry_type"> 4706 <span class="entry_type_name">int32</span> 4707 <span class="entry_type_container">x</span> 4708 4709 <span class="entry_type_array"> 4710 2 x n 4711 </span> 4712 <span class="entry_type_visibility"> [public as rangeInt]</span> 4713 4714 4715 <span class="entry_type_hwlevel">[legacy] </span> 4716 4717 4718 <div class="entry_type_notes">list of pairs of frame rates</div> 4719 4720 4721 </td> <!-- entry_type --> 4722 4723 <td class="entry_description"> 4724 <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 4725this camera device.<wbr/></p> 4726 </td> 4727 4728 <td class="entry_units"> 4729 Frames per second (FPS) 4730 </td> 4731 4732 <td class="entry_range"> 4733 </td> 4734 4735 <td class="entry_hal_version"> 4736 <p>3.<wbr/>2</p> 4737 </td> 4738 4739 <td class="entry_tags"> 4740 <ul class="entry_tags"> 4741 <li><a href="#tag_BC">BC</a></li> 4742 </ul> 4743 </td> 4744 4745 </tr> 4746 <tr class="entries_header"> 4747 <th class="th_details" colspan="6">Details</th> 4748 </tr> 4749 <tr class="entry_cont"> 4750 <td class="entry_details" colspan="6"> 4751 <p>For devices at the LEGACY level or above:</p> 4752<ul> 4753<li> 4754<p>For constant-framerate recording,<wbr/> for each normal 4755<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a 4756<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 4757<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in 4758the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/> 4759<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is 4760supported by the device and has 4761<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will 4762always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p> 4763</li> 4764<li> 4765<p>Also,<wbr/> a camera device must either not support any 4766<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> 4767or support at least one 4768normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 4769<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p> 4770</li> 4771</ul> 4772<p>For devices at the LIMITED level or above:</p> 4773<ul> 4774<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) 4775and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the 4776maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li> 4777</ul> 4778 </td> 4779 </tr> 4780 4781 4782 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4783 <!-- end of entry --> 4784 4785 4786 <tr class="entry" id="static_android.control.aeCompensationRange"> 4787 <td class="entry_name 4788 " rowspan="1"> 4789 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 4790 </td> 4791 <td class="entry_type"> 4792 <span class="entry_type_name">int32</span> 4793 <span class="entry_type_container">x</span> 4794 4795 <span class="entry_type_array"> 4796 2 4797 </span> 4798 <span class="entry_type_visibility"> [public as rangeInt]</span> 4799 4800 4801 <span class="entry_type_hwlevel">[legacy] </span> 4802 4803 4804 4805 4806 </td> <!-- entry_type --> 4807 4808 <td class="entry_description"> 4809 <p>Maximum and minimum exposure compensation values for 4810<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/> 4811that are supported by this camera device.<wbr/></p> 4812 </td> 4813 4814 <td class="entry_units"> 4815 </td> 4816 4817 <td class="entry_range"> 4818 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> 4819<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure 4820compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> 4821<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> 4822<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> 4823<p>LEGACY devices may support a smaller range than this.<wbr/></p> 4824 </td> 4825 4826 <td class="entry_hal_version"> 4827 <p>3.<wbr/>2</p> 4828 </td> 4829 4830 <td class="entry_tags"> 4831 <ul class="entry_tags"> 4832 <li><a href="#tag_BC">BC</a></li> 4833 </ul> 4834 </td> 4835 4836 </tr> 4837 4838 4839 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4840 <!-- end of entry --> 4841 4842 4843 <tr class="entry" id="static_android.control.aeCompensationStep"> 4844 <td class="entry_name 4845 " rowspan="5"> 4846 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 4847 </td> 4848 <td class="entry_type"> 4849 <span class="entry_type_name">rational</span> 4850 4851 <span class="entry_type_visibility"> [public]</span> 4852 4853 4854 <span class="entry_type_hwlevel">[legacy] </span> 4855 4856 4857 4858 4859 </td> <!-- entry_type --> 4860 4861 <td class="entry_description"> 4862 <p>Smallest step by which the exposure compensation 4863can be changed.<wbr/></p> 4864 </td> 4865 4866 <td class="entry_units"> 4867 Exposure Value (EV) 4868 </td> 4869 4870 <td class="entry_range"> 4871 </td> 4872 4873 <td class="entry_hal_version"> 4874 <p>3.<wbr/>2</p> 4875 </td> 4876 4877 <td class="entry_tags"> 4878 <ul class="entry_tags"> 4879 <li><a href="#tag_BC">BC</a></li> 4880 </ul> 4881 </td> 4882 4883 </tr> 4884 <tr class="entries_header"> 4885 <th class="th_details" colspan="6">Details</th> 4886 </tr> 4887 <tr class="entry_cont"> 4888 <td class="entry_details" colspan="6"> 4889 <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 4890a 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 4891that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> 4892<p>One unit of EV compensation changes the brightness of the captured image by a factor 4893of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p> 4894 </td> 4895 </tr> 4896 4897 <tr class="entries_header"> 4898 <th class="th_details" colspan="6">HAL Implementation Details</th> 4899 </tr> 4900 <tr class="entry_cont"> 4901 <td class="entry_details" colspan="6"> 4902 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p> 4903 </td> 4904 </tr> 4905 4906 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4907 <!-- end of entry --> 4908 4909 4910 <tr class="entry" id="static_android.control.afAvailableModes"> 4911 <td class="entry_name 4912 " rowspan="3"> 4913 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 4914 </td> 4915 <td class="entry_type"> 4916 <span class="entry_type_name">byte</span> 4917 <span class="entry_type_container">x</span> 4918 4919 <span class="entry_type_array"> 4920 n 4921 </span> 4922 <span class="entry_type_visibility"> [public as enumList]</span> 4923 4924 4925 <span class="entry_type_hwlevel">[legacy] </span> 4926 4927 4928 <div class="entry_type_notes">List of enums</div> 4929 4930 4931 </td> <!-- entry_type --> 4932 4933 <td class="entry_description"> 4934 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are 4935supported by this camera device.<wbr/></p> 4936 </td> 4937 4938 <td class="entry_units"> 4939 </td> 4940 4941 <td class="entry_range"> 4942 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p> 4943 </td> 4944 4945 <td class="entry_hal_version"> 4946 <p>3.<wbr/>2</p> 4947 </td> 4948 4949 <td class="entry_tags"> 4950 <ul class="entry_tags"> 4951 <li><a href="#tag_BC">BC</a></li> 4952 </ul> 4953 </td> 4954 4955 </tr> 4956 <tr class="entries_header"> 4957 <th class="th_details" colspan="6">Details</th> 4958 </tr> 4959 <tr class="entry_cont"> 4960 <td class="entry_details" colspan="6"> 4961 <p>Not all the auto-focus modes may be supported by a 4962given camera device.<wbr/> This entry lists the valid modes for 4963<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 4964<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all 4965camera devices with adjustable focuser units 4966(<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> 4967<p>LEGACY devices will support OFF mode only if they support 4968focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to 4969<code>0.<wbr/>0f</code>).<wbr/></p> 4970 </td> 4971 </tr> 4972 4973 4974 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 4975 <!-- end of entry --> 4976 4977 4978 <tr class="entry" id="static_android.control.availableEffects"> 4979 <td class="entry_name 4980 " rowspan="3"> 4981 android.<wbr/>control.<wbr/>available<wbr/>Effects 4982 </td> 4983 <td class="entry_type"> 4984 <span class="entry_type_name">byte</span> 4985 <span class="entry_type_container">x</span> 4986 4987 <span class="entry_type_array"> 4988 n 4989 </span> 4990 <span class="entry_type_visibility"> [public as enumList]</span> 4991 4992 4993 <span class="entry_type_hwlevel">[legacy] </span> 4994 4995 4996 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 4997 4998 4999 </td> <!-- entry_type --> 5000 5001 <td class="entry_description"> 5002 <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 5003device.<wbr/></p> 5004 </td> 5005 5006 <td class="entry_units"> 5007 </td> 5008 5009 <td class="entry_range"> 5010 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p> 5011 </td> 5012 5013 <td class="entry_hal_version"> 5014 <p>3.<wbr/>2</p> 5015 </td> 5016 5017 <td class="entry_tags"> 5018 <ul class="entry_tags"> 5019 <li><a href="#tag_BC">BC</a></li> 5020 </ul> 5021 </td> 5022 5023 </tr> 5024 <tr class="entries_header"> 5025 <th class="th_details" colspan="6">Details</th> 5026 </tr> 5027 <tr class="entry_cont"> 5028 <td class="entry_details" colspan="6"> 5029 <p>This list contains the color effect modes that can be applied to 5030images produced by the camera device.<wbr/> 5031Implementations are not expected to be consistent across all devices.<wbr/> 5032If no color effect modes are available for a device,<wbr/> this will only list 5033OFF.<wbr/></p> 5034<p>A color effect will only be applied if 5035<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> 5036<p>This control has no effect on the operation of other control routines such 5037as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> 5038 </td> 5039 </tr> 5040 5041 5042 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5043 <!-- end of entry --> 5044 5045 5046 <tr class="entry" id="static_android.control.availableSceneModes"> 5047 <td class="entry_name 5048 " rowspan="3"> 5049 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 5050 </td> 5051 <td class="entry_type"> 5052 <span class="entry_type_name">byte</span> 5053 <span class="entry_type_container">x</span> 5054 5055 <span class="entry_type_array"> 5056 n 5057 </span> 5058 <span class="entry_type_visibility"> [public as enumList]</span> 5059 5060 5061 <span class="entry_type_hwlevel">[legacy] </span> 5062 5063 5064 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 5065 5066 5067 </td> <!-- entry_type --> 5068 5069 <td class="entry_description"> 5070 <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 5071device.<wbr/></p> 5072 </td> 5073 5074 <td class="entry_units"> 5075 </td> 5076 5077 <td class="entry_range"> 5078 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p> 5079 </td> 5080 5081 <td class="entry_hal_version"> 5082 <p>3.<wbr/>2</p> 5083 </td> 5084 5085 <td class="entry_tags"> 5086 <ul class="entry_tags"> 5087 <li><a href="#tag_BC">BC</a></li> 5088 </ul> 5089 </td> 5090 5091 </tr> 5092 <tr class="entries_header"> 5093 <th class="th_details" colspan="6">Details</th> 5094 </tr> 5095 <tr class="entry_cont"> 5096 <td class="entry_details" colspan="6"> 5097 <p>This list contains scene modes that can be set for the camera device.<wbr/> 5098Only scene modes that have been fully implemented for the 5099camera device may be included here.<wbr/> Implementations are not expected 5100to be consistent across all devices.<wbr/></p> 5101<p>If no scene modes are supported by the camera device,<wbr/> this 5102will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> 5103<p>FACE_<wbr/>PRIORITY is always listed if face detection is 5104supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> > 51050</code>).<wbr/></p> 5106 </td> 5107 </tr> 5108 5109 5110 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5111 <!-- end of entry --> 5112 5113 5114 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 5115 <td class="entry_name 5116 " rowspan="3"> 5117 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 5118 </td> 5119 <td class="entry_type"> 5120 <span class="entry_type_name">byte</span> 5121 <span class="entry_type_container">x</span> 5122 5123 <span class="entry_type_array"> 5124 n 5125 </span> 5126 <span class="entry_type_visibility"> [public as enumList]</span> 5127 5128 5129 <span class="entry_type_hwlevel">[legacy] </span> 5130 5131 5132 <div class="entry_type_notes">List of enums.<wbr/></div> 5133 5134 5135 </td> <!-- entry_type --> 5136 5137 <td class="entry_description"> 5138 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> 5139that are supported by this camera device.<wbr/></p> 5140 </td> 5141 5142 <td class="entry_units"> 5143 </td> 5144 5145 <td class="entry_range"> 5146 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p> 5147 </td> 5148 5149 <td class="entry_hal_version"> 5150 <p>3.<wbr/>2</p> 5151 </td> 5152 5153 <td class="entry_tags"> 5154 <ul class="entry_tags"> 5155 <li><a href="#tag_BC">BC</a></li> 5156 </ul> 5157 </td> 5158 5159 </tr> 5160 <tr class="entries_header"> 5161 <th class="th_details" colspan="6">Details</th> 5162 </tr> 5163 <tr class="entry_cont"> 5164 <td class="entry_details" colspan="6"> 5165 <p>OFF will always be listed.<wbr/></p> 5166 </td> 5167 </tr> 5168 5169 5170 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5171 <!-- end of entry --> 5172 5173 5174 <tr class="entry" id="static_android.control.awbAvailableModes"> 5175 <td class="entry_name 5176 " rowspan="3"> 5177 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 5178 </td> 5179 <td class="entry_type"> 5180 <span class="entry_type_name">byte</span> 5181 <span class="entry_type_container">x</span> 5182 5183 <span class="entry_type_array"> 5184 n 5185 </span> 5186 <span class="entry_type_visibility"> [public as enumList]</span> 5187 5188 5189 <span class="entry_type_hwlevel">[legacy] </span> 5190 5191 5192 <div class="entry_type_notes">List of enums</div> 5193 5194 5195 </td> <!-- entry_type --> 5196 5197 <td class="entry_description"> 5198 <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 5199camera device.<wbr/></p> 5200 </td> 5201 5202 <td class="entry_units"> 5203 </td> 5204 5205 <td class="entry_range"> 5206 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p> 5207 </td> 5208 5209 <td class="entry_hal_version"> 5210 <p>3.<wbr/>2</p> 5211 </td> 5212 5213 <td class="entry_tags"> 5214 <ul class="entry_tags"> 5215 <li><a href="#tag_BC">BC</a></li> 5216 </ul> 5217 </td> 5218 5219 </tr> 5220 <tr class="entries_header"> 5221 <th class="th_details" colspan="6">Details</th> 5222 </tr> 5223 <tr class="entry_cont"> 5224 <td class="entry_details" colspan="6"> 5225 <p>Not all the auto-white-balance modes may be supported by a 5226given camera device.<wbr/> This entry lists the valid modes for 5227<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 5228<p>All camera devices will support ON mode.<wbr/></p> 5229<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF 5230mode,<wbr/> which enables application control of white balance,<wbr/> by using 5231<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 5232mode camera devices.<wbr/></p> 5233 </td> 5234 </tr> 5235 5236 5237 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5238 <!-- end of entry --> 5239 5240 5241 <tr class="entry" id="static_android.control.maxRegions"> 5242 <td class="entry_name 5243 " rowspan="1"> 5244 android.<wbr/>control.<wbr/>max<wbr/>Regions 5245 </td> 5246 <td class="entry_type"> 5247 <span class="entry_type_name">int32</span> 5248 <span class="entry_type_container">x</span> 5249 5250 <span class="entry_type_array"> 5251 3 5252 </span> 5253 <span class="entry_type_visibility"> [ndk_public]</span> 5254 5255 5256 <span class="entry_type_hwlevel">[legacy] </span> 5257 5258 5259 5260 5261 </td> <!-- entry_type --> 5262 5263 <td class="entry_description"> 5264 <p>List of the maximum number of regions that can be used for metering in 5265auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 5266this corresponds to the the maximum number of elements in 5267<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/> 5268and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 5269 </td> 5270 5271 <td class="entry_units"> 5272 </td> 5273 5274 <td class="entry_range"> 5275 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 5276this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 5277<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 5278 </td> 5279 5280 <td class="entry_hal_version"> 5281 <p>3.<wbr/>2</p> 5282 </td> 5283 5284 <td class="entry_tags"> 5285 <ul class="entry_tags"> 5286 <li><a href="#tag_BC">BC</a></li> 5287 </ul> 5288 </td> 5289 5290 </tr> 5291 5292 5293 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5294 <!-- end of entry --> 5295 5296 5297 <tr class="entry" id="static_android.control.maxRegionsAe"> 5298 <td class="entry_name 5299 " rowspan="5"> 5300 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae 5301 </td> 5302 <td class="entry_type"> 5303 <span class="entry_type_name">int32</span> 5304 5305 <span class="entry_type_visibility"> [java_public]</span> 5306 5307 <span class="entry_type_synthetic">[synthetic] </span> 5308 5309 <span class="entry_type_hwlevel">[legacy] </span> 5310 5311 5312 5313 5314 </td> <!-- entry_type --> 5315 5316 <td class="entry_description"> 5317 <p>The maximum number of metering regions that can be used by the auto-exposure (AE) 5318routine.<wbr/></p> 5319 </td> 5320 5321 <td class="entry_units"> 5322 </td> 5323 5324 <td class="entry_range"> 5325 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 5326value will be >= 1.<wbr/></p> 5327 </td> 5328 5329 <td class="entry_hal_version"> 5330 <p>3.<wbr/>2</p> 5331 </td> 5332 5333 <td class="entry_tags"> 5334 </td> 5335 5336 </tr> 5337 <tr class="entries_header"> 5338 <th class="th_details" colspan="6">Details</th> 5339 </tr> 5340 <tr class="entry_cont"> 5341 <td class="entry_details" colspan="6"> 5342 <p>This corresponds to the the maximum allowed number of elements in 5343<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 5344 </td> 5345 </tr> 5346 5347 <tr class="entries_header"> 5348 <th class="th_details" colspan="6">HAL Implementation Details</th> 5349 </tr> 5350 <tr class="entry_cont"> 5351 <td class="entry_details" colspan="6"> 5352 <p>This entry is private to the framework.<wbr/> Fill in 5353maxRegions to have this entry be automatically populated.<wbr/></p> 5354 </td> 5355 </tr> 5356 5357 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5358 <!-- end of entry --> 5359 5360 5361 <tr class="entry" id="static_android.control.maxRegionsAwb"> 5362 <td class="entry_name 5363 " rowspan="5"> 5364 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb 5365 </td> 5366 <td class="entry_type"> 5367 <span class="entry_type_name">int32</span> 5368 5369 <span class="entry_type_visibility"> [java_public]</span> 5370 5371 <span class="entry_type_synthetic">[synthetic] </span> 5372 5373 <span class="entry_type_hwlevel">[legacy] </span> 5374 5375 5376 5377 5378 </td> <!-- entry_type --> 5379 5380 <td class="entry_description"> 5381 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) 5382routine.<wbr/></p> 5383 </td> 5384 5385 <td class="entry_units"> 5386 </td> 5387 5388 <td class="entry_range"> 5389 <p>Value will be >= 0.<wbr/></p> 5390 </td> 5391 5392 <td class="entry_hal_version"> 5393 <p>3.<wbr/>2</p> 5394 </td> 5395 5396 <td class="entry_tags"> 5397 </td> 5398 5399 </tr> 5400 <tr class="entries_header"> 5401 <th class="th_details" colspan="6">Details</th> 5402 </tr> 5403 <tr class="entry_cont"> 5404 <td class="entry_details" colspan="6"> 5405 <p>This corresponds to the the maximum allowed number of elements in 5406<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 5407 </td> 5408 </tr> 5409 5410 <tr class="entries_header"> 5411 <th class="th_details" colspan="6">HAL Implementation Details</th> 5412 </tr> 5413 <tr class="entry_cont"> 5414 <td class="entry_details" colspan="6"> 5415 <p>This entry is private to the framework.<wbr/> Fill in 5416maxRegions to have this entry be automatically populated.<wbr/></p> 5417 </td> 5418 </tr> 5419 5420 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5421 <!-- end of entry --> 5422 5423 5424 <tr class="entry" id="static_android.control.maxRegionsAf"> 5425 <td class="entry_name 5426 " rowspan="5"> 5427 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af 5428 </td> 5429 <td class="entry_type"> 5430 <span class="entry_type_name">int32</span> 5431 5432 <span class="entry_type_visibility"> [java_public]</span> 5433 5434 <span class="entry_type_synthetic">[synthetic] </span> 5435 5436 <span class="entry_type_hwlevel">[legacy] </span> 5437 5438 5439 5440 5441 </td> <!-- entry_type --> 5442 5443 <td class="entry_description"> 5444 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> 5445 </td> 5446 5447 <td class="entry_units"> 5448 </td> 5449 5450 <td class="entry_range"> 5451 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 5452value will be >= 1.<wbr/></p> 5453 </td> 5454 5455 <td class="entry_hal_version"> 5456 <p>3.<wbr/>2</p> 5457 </td> 5458 5459 <td class="entry_tags"> 5460 </td> 5461 5462 </tr> 5463 <tr class="entries_header"> 5464 <th class="th_details" colspan="6">Details</th> 5465 </tr> 5466 <tr class="entry_cont"> 5467 <td class="entry_details" colspan="6"> 5468 <p>This corresponds to the the maximum allowed number of elements in 5469<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 5470 </td> 5471 </tr> 5472 5473 <tr class="entries_header"> 5474 <th class="th_details" colspan="6">HAL Implementation Details</th> 5475 </tr> 5476 <tr class="entry_cont"> 5477 <td class="entry_details" colspan="6"> 5478 <p>This entry is private to the framework.<wbr/> Fill in 5479maxRegions to have this entry be automatically populated.<wbr/></p> 5480 </td> 5481 </tr> 5482 5483 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5484 <!-- end of entry --> 5485 5486 5487 <tr class="entry" id="static_android.control.sceneModeOverrides"> 5488 <td class="entry_name 5489 " rowspan="5"> 5490 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 5491 </td> 5492 <td class="entry_type"> 5493 <span class="entry_type_name">byte</span> 5494 <span class="entry_type_container">x</span> 5495 5496 <span class="entry_type_array"> 5497 3 x length(availableSceneModes) 5498 </span> 5499 <span class="entry_type_visibility"> [system]</span> 5500 5501 5502 <span class="entry_type_hwlevel">[limited] </span> 5503 5504 5505 5506 5507 </td> <!-- entry_type --> 5508 5509 <td class="entry_description"> 5510 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 5511settings to use with each available scene mode.<wbr/></p> 5512 </td> 5513 5514 <td class="entry_units"> 5515 </td> 5516 5517 <td class="entry_range"> 5518 <p>For each available scene mode,<wbr/> the list must contain three 5519entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5520<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 5521by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 5522where aeMode has the lowest index position.<wbr/></p> 5523 </td> 5524 5525 <td class="entry_hal_version"> 5526 <p>3.<wbr/>2</p> 5527 </td> 5528 5529 <td class="entry_tags"> 5530 <ul class="entry_tags"> 5531 <li><a href="#tag_BC">BC</a></li> 5532 </ul> 5533 </td> 5534 5535 </tr> 5536 <tr class="entries_header"> 5537 <th class="th_details" colspan="6">Details</th> 5538 </tr> 5539 <tr class="entry_cont"> 5540 <td class="entry_details" colspan="6"> 5541 <p>When a scene mode is enabled,<wbr/> the camera device is expected 5542to 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/> 5543and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 5544that scene mode.<wbr/></p> 5545<p>The order of this list matches that of availableSceneModes,<wbr/> 5546with 3 entries for each mode.<wbr/> The overrides listed 5547for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/> 5548since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5549<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 5550used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 5551is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and 5552FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p> 5553<p>For example,<wbr/> if availableSceneModes contains 5554<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 5555expects sceneModeOverrides to have 9 entries formatted like: 5556<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 5557ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 5558 </td> 5559 </tr> 5560 5561 <tr class="entries_header"> 5562 <th class="th_details" colspan="6">HAL Implementation Details</th> 5563 </tr> 5564 <tr class="entry_cont"> 5565 <td class="entry_details" colspan="6"> 5566 <p>To maintain backward compatibility,<wbr/> this list will be made available 5567in the static metadata of the camera service.<wbr/> The camera service will 5568use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5569<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 5570mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p> 5571 </td> 5572 </tr> 5573 5574 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5575 <!-- end of entry --> 5576 5577 5578 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> 5579 <td class="entry_name 5580 " rowspan="5"> 5581 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations 5582 </td> 5583 <td class="entry_type"> 5584 <span class="entry_type_name">int32</span> 5585 <span class="entry_type_container">x</span> 5586 5587 <span class="entry_type_array"> 5588 5 x n 5589 </span> 5590 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 5591 5592 5593 <span class="entry_type_hwlevel">[limited] </span> 5594 5595 5596 5597 5598 </td> <!-- entry_type --> 5599 5600 <td class="entry_description"> 5601 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations 5602supported 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> 5603 </td> 5604 5605 <td class="entry_units"> 5606 </td> 5607 5608 <td class="entry_range"> 5609 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> 5610 </td> 5611 5612 <td class="entry_hal_version"> 5613 <p>3.<wbr/>2</p> 5614 </td> 5615 5616 <td class="entry_tags"> 5617 <ul class="entry_tags"> 5618 <li><a href="#tag_V1">V1</a></li> 5619 </ul> 5620 </td> 5621 5622 </tr> 5623 <tr class="entries_header"> 5624 <th class="th_details" colspan="6">Details</th> 5625 </tr> 5626 <tr class="entry_cont"> 5627 <td class="entry_details" colspan="6"> 5628 <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/> 5629this metadata will list the supported high speed video size,<wbr/> fps range and max batch size 5630configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes 5631reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> 5632for processed non-stalling formats.<wbr/></p> 5633<p>For the high speed video use case,<wbr/> the application must 5634select the video size and fps range from this metadata to configure the recording and 5635preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends 5636to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to 5637configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata 5638by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the 5639recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application 5640must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams 5641must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p> 5642<p>The min and max fps will be multiple times of 30fps.<wbr/></p> 5643<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/> 5644to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate 5645multiple frames together and send to camera device for processing where the request 5646controls are same for all the frames in this batch.<wbr/> Max batch size indicates 5647the max possible number of frames the camera device will group together for this high 5648speed stream configuration.<wbr/> This max batch size will be used to generate a high speed 5649recording request list by 5650<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/> 5651The max batch size for each configuration will satisfy below conditions:</p> 5652<ul> 5653<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/> 5654if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li> 5655<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but 5656the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch 5657size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li> 5658<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li> 5659</ul> 5660<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/> 5661in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p> 5662<p>This fps ranges in this configuration list can only be used to create requests 5663that are submitted to a high speed camera capture session created by 5664<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 5665The fps ranges reported in this metadata must not be used to setup capture requests for 5666normal capture session,<wbr/> or it will cause request error.<wbr/></p> 5667 </td> 5668 </tr> 5669 5670 <tr class="entries_header"> 5671 <th class="th_details" colspan="6">HAL Implementation Details</th> 5672 </tr> 5673 <tr class="entry_cont"> 5674 <td class="entry_details" colspan="6"> 5675 <p>All the sizes listed in this configuration will be a subset of the sizes reported by 5676<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> 5677Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum 5678of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> 5679<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps 5680sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application 5681usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused 5682stutter when starting recording as much as possible,<wbr/> the application may want to ensure 5683the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise 5684the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/> 5685For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise 5686[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to 5687do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start 5688recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps 5689values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps 5690values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must 5691switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p> 5692 </td> 5693 </tr> 5694 5695 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5696 <!-- end of entry --> 5697 5698 5699 <tr class="entry" id="static_android.control.aeLockAvailable"> 5700 <td class="entry_name 5701 " rowspan="3"> 5702 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available 5703 </td> 5704 <td class="entry_type"> 5705 <span class="entry_type_name entry_type_name_enum">byte</span> 5706 5707 <span class="entry_type_visibility"> [public as boolean]</span> 5708 5709 5710 <span class="entry_type_hwlevel">[legacy] </span> 5711 5712 5713 5714 <ul class="entry_type_enum"> 5715 <li> 5716 <span class="entry_type_enum_name">FALSE (v3.2)</span> 5717 </li> 5718 <li> 5719 <span class="entry_type_enum_name">TRUE (v3.2)</span> 5720 </li> 5721 </ul> 5722 5723 </td> <!-- entry_type --> 5724 5725 <td class="entry_description"> 5726 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p> 5727 </td> 5728 5729 <td class="entry_units"> 5730 </td> 5731 5732 <td class="entry_range"> 5733 </td> 5734 5735 <td class="entry_hal_version"> 5736 <p>3.<wbr/>2</p> 5737 </td> 5738 5739 <td class="entry_tags"> 5740 <ul class="entry_tags"> 5741 <li><a href="#tag_BC">BC</a></li> 5742 </ul> 5743 </td> 5744 5745 </tr> 5746 <tr class="entries_header"> 5747 <th class="th_details" colspan="6">Details</th> 5748 </tr> 5749 <tr class="entry_cont"> 5750 <td class="entry_details" colspan="6"> 5751 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always 5752list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5753 </td> 5754 </tr> 5755 5756 5757 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5758 <!-- end of entry --> 5759 5760 5761 <tr class="entry" id="static_android.control.awbLockAvailable"> 5762 <td class="entry_name 5763 " rowspan="3"> 5764 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available 5765 </td> 5766 <td class="entry_type"> 5767 <span class="entry_type_name entry_type_name_enum">byte</span> 5768 5769 <span class="entry_type_visibility"> [public as boolean]</span> 5770 5771 5772 <span class="entry_type_hwlevel">[legacy] </span> 5773 5774 5775 5776 <ul class="entry_type_enum"> 5777 <li> 5778 <span class="entry_type_enum_name">FALSE (v3.2)</span> 5779 </li> 5780 <li> 5781 <span class="entry_type_enum_name">TRUE (v3.2)</span> 5782 </li> 5783 </ul> 5784 5785 </td> <!-- entry_type --> 5786 5787 <td class="entry_description"> 5788 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p> 5789 </td> 5790 5791 <td class="entry_units"> 5792 </td> 5793 5794 <td class="entry_range"> 5795 </td> 5796 5797 <td class="entry_hal_version"> 5798 <p>3.<wbr/>2</p> 5799 </td> 5800 5801 <td class="entry_tags"> 5802 <ul class="entry_tags"> 5803 <li><a href="#tag_BC">BC</a></li> 5804 </ul> 5805 </td> 5806 5807 </tr> 5808 <tr class="entries_header"> 5809 <th class="th_details" colspan="6">Details</th> 5810 </tr> 5811 <tr class="entry_cont"> 5812 <td class="entry_details" colspan="6"> 5813 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will 5814always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5815 </td> 5816 </tr> 5817 5818 5819 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5820 <!-- end of entry --> 5821 5822 5823 <tr class="entry" id="static_android.control.availableModes"> 5824 <td class="entry_name 5825 " rowspan="3"> 5826 android.<wbr/>control.<wbr/>available<wbr/>Modes 5827 </td> 5828 <td class="entry_type"> 5829 <span class="entry_type_name">byte</span> 5830 <span class="entry_type_container">x</span> 5831 5832 <span class="entry_type_array"> 5833 n 5834 </span> 5835 <span class="entry_type_visibility"> [public as enumList]</span> 5836 5837 5838 <span class="entry_type_hwlevel">[legacy] </span> 5839 5840 5841 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div> 5842 5843 5844 </td> <!-- entry_type --> 5845 5846 <td class="entry_description"> 5847 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera 5848device.<wbr/></p> 5849 </td> 5850 5851 <td class="entry_units"> 5852 </td> 5853 5854 <td class="entry_range"> 5855 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p> 5856 </td> 5857 5858 <td class="entry_hal_version"> 5859 <p>3.<wbr/>2</p> 5860 </td> 5861 5862 <td class="entry_tags"> 5863 </td> 5864 5865 </tr> 5866 <tr class="entries_header"> 5867 <th class="th_details" colspan="6">Details</th> 5868 </tr> 5869 <tr class="entry_cont"> 5870 <td class="entry_details" colspan="6"> 5871 <p>This list contains control modes that can be set for the camera device.<wbr/> 5872LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL 5873devices will always support OFF,<wbr/> AUTO modes.<wbr/></p> 5874 </td> 5875 </tr> 5876 5877 5878 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5879 <!-- end of entry --> 5880 5881 5882 <tr class="entry" id="static_android.control.postRawSensitivityBoostRange"> 5883 <td class="entry_name 5884 " rowspan="5"> 5885 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range 5886 </td> 5887 <td class="entry_type"> 5888 <span class="entry_type_name">int32</span> 5889 <span class="entry_type_container">x</span> 5890 5891 <span class="entry_type_array"> 5892 2 5893 </span> 5894 <span class="entry_type_visibility"> [public as rangeInt]</span> 5895 5896 5897 5898 5899 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div> 5900 5901 5902 </td> <!-- entry_type --> 5903 5904 <td class="entry_description"> 5905 <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported 5906by this camera device.<wbr/></p> 5907 </td> 5908 5909 <td class="entry_units"> 5910 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 5911 </td> 5912 5913 <td class="entry_range"> 5914 </td> 5915 5916 <td class="entry_hal_version"> 5917 <p>3.<wbr/>2</p> 5918 </td> 5919 5920 <td class="entry_tags"> 5921 </td> 5922 5923 </tr> 5924 <tr class="entries_header"> 5925 <th class="th_details" colspan="6">Details</th> 5926 </tr> 5927 <tr class="entry_cont"> 5928 <td class="entry_details" colspan="6"> 5929 <p>Devices support post RAW sensitivity boost will advertise 5930<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling 5931post RAW sensitivity boost.<wbr/></p> 5932<p>This key will be <code>null</code> for devices that do not support any RAW format 5933outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 5934present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 5935list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p> 5936 </td> 5937 </tr> 5938 5939 <tr class="entries_header"> 5940 <th class="th_details" colspan="6">HAL Implementation Details</th> 5941 </tr> 5942 <tr class="entry_cont"> 5943 <td class="entry_details" colspan="6"> 5944 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera 5945framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output 5946formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports 5947any of RAW output formats.<wbr/></p> 5948 </td> 5949 </tr> 5950 5951 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 5952 <!-- end of entry --> 5953 5954 5955 5956 <!-- end of kind --> 5957 </tbody> 5958 <tr><td colspan="7" class="kind">dynamic</td></tr> 5959 5960 <thead class="entries_header"> 5961 <tr> 5962 <th class="th_name">Property Name</th> 5963 <th class="th_type">Type</th> 5964 <th class="th_description">Description</th> 5965 <th class="th_units">Units</th> 5966 <th class="th_range">Range</th> 5967 <th class="th_hal_version">Initial HIDL HAL version</th> 5968 <th class="th_tags">Tags</th> 5969 </tr> 5970 </thead> 5971 5972 <tbody> 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 5984 <td class="entry_name 5985 entry_name_deprecated 5986 " rowspan="3"> 5987 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 5988 </td> 5989 <td class="entry_type"> 5990 <span class="entry_type_name">int32</span> 5991 5992 <span class="entry_type_visibility"> [system]</span> 5993 5994 5995 5996 <span class="entry_type_deprecated">[deprecated] </span> 5997 5998 5999 6000 </td> <!-- entry_type --> 6001 6002 <td class="entry_description"> 6003 <p>The ID sent with the latest 6004CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 6005 </td> 6006 6007 <td class="entry_units"> 6008 </td> 6009 6010 <td class="entry_range"> 6011 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 6012 </td> 6013 6014 <td class="entry_hal_version"> 6015 <p>3.<wbr/>2</p> 6016 </td> 6017 6018 <td class="entry_tags"> 6019 </td> 6020 6021 </tr> 6022 <tr class="entries_header"> 6023 <th class="th_details" colspan="6">Details</th> 6024 </tr> 6025 <tr class="entry_cont"> 6026 <td class="entry_details" colspan="6"> 6027 <p>Must be 0 if no 6028CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 6029by HAL.<wbr/> Always updated even if AE algorithm ignores the 6030trigger</p> 6031 </td> 6032 </tr> 6033 6034 6035 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6036 <!-- end of entry --> 6037 6038 6039 <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> 6040 <td class="entry_name 6041 " rowspan="5"> 6042 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 6043 </td> 6044 <td class="entry_type"> 6045 <span class="entry_type_name entry_type_name_enum">byte</span> 6046 6047 <span class="entry_type_visibility"> [public]</span> 6048 6049 6050 <span class="entry_type_hwlevel">[legacy] </span> 6051 6052 6053 6054 <ul class="entry_type_enum"> 6055 <li> 6056 <span class="entry_type_enum_name">OFF (v3.2)</span> 6057 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 6058avoid banding problems.<wbr/></p></span> 6059 </li> 6060 <li> 6061 <span class="entry_type_enum_name">50HZ (v3.2)</span> 6062 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 6063avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 6064 </li> 6065 <li> 6066 <span class="entry_type_enum_name">60HZ (v3.2)</span> 6067 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 6068avoid banding problems with 60Hz illumination 6069sources.<wbr/></p></span> 6070 </li> 6071 <li> 6072 <span class="entry_type_enum_name">AUTO (v3.2)</span> 6073 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 6074antibanding routine to the current illumination 6075condition.<wbr/> This is the default mode if AUTO is 6076available on given camera device.<wbr/></p></span> 6077 </li> 6078 </ul> 6079 6080 </td> <!-- entry_type --> 6081 6082 <td class="entry_description"> 6083 <p>The desired setting for the camera device's auto-exposure 6084algorithm's antibanding compensation.<wbr/></p> 6085 </td> 6086 6087 <td class="entry_units"> 6088 </td> 6089 6090 <td class="entry_range"> 6091 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 6092 </td> 6093 6094 <td class="entry_hal_version"> 6095 <p>3.<wbr/>2</p> 6096 </td> 6097 6098 <td class="entry_tags"> 6099 <ul class="entry_tags"> 6100 <li><a href="#tag_BC">BC</a></li> 6101 </ul> 6102 </td> 6103 6104 </tr> 6105 <tr class="entries_header"> 6106 <th class="th_details" colspan="6">Details</th> 6107 </tr> 6108 <tr class="entry_cont"> 6109 <td class="entry_details" colspan="6"> 6110 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 6111lights,<wbr/> flicker at the rate of the power supply frequency 6112(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 6113typically not noticeable to a person,<wbr/> it can be visible to 6114a camera device.<wbr/> If a camera sets its exposure time to the 6115wrong value,<wbr/> the flicker may become visible in the 6116viewfinder as flicker or in a final captured image,<wbr/> as a 6117set of variable-brightness bands across the image.<wbr/></p> 6118<p>Therefore,<wbr/> the auto-exposure routines of camera devices 6119include antibanding routines that ensure that the chosen 6120exposure value will not cause such banding.<wbr/> The choice of 6121exposure time depends on the rate of flicker,<wbr/> which the 6122camera device can detect automatically,<wbr/> or the expected 6123rate can be selected by the application using this 6124control.<wbr/></p> 6125<p>A given camera device may not support all of the possible 6126options for the antibanding mode.<wbr/> The 6127<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 6128the available modes for a given camera device.<wbr/></p> 6129<p>AUTO mode is the default if it is available on given 6130camera device.<wbr/> When AUTO mode is not available,<wbr/> the 6131default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 6132and 60HZ will be available.<wbr/></p> 6133<p>If manual exposure control is enabled (by setting 6134<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/> 6135then this setting has no effect,<wbr/> and the application must 6136ensure it selects exposure times that do not cause banding 6137issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 6138the application in this.<wbr/></p> 6139 </td> 6140 </tr> 6141 6142 <tr class="entries_header"> 6143 <th class="th_details" colspan="6">HAL Implementation Details</th> 6144 </tr> 6145 <tr class="entry_cont"> 6146 <td class="entry_details" colspan="6"> 6147 <p>For all capture request templates,<wbr/> this field must be set 6148to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 6149the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 615060HZ must be available.<wbr/></p> 6151<p>If manual exposure control is enabled (by setting 6152<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/> 6153then the exposure values provided by the application must not be 6154adjusted for antibanding.<wbr/></p> 6155 </td> 6156 </tr> 6157 6158 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6159 <!-- end of entry --> 6160 6161 6162 <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> 6163 <td class="entry_name 6164 " rowspan="3"> 6165 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 6166 </td> 6167 <td class="entry_type"> 6168 <span class="entry_type_name">int32</span> 6169 6170 <span class="entry_type_visibility"> [public]</span> 6171 6172 6173 <span class="entry_type_hwlevel">[legacy] </span> 6174 6175 6176 6177 6178 </td> <!-- entry_type --> 6179 6180 <td class="entry_description"> 6181 <p>Adjustment to auto-exposure (AE) target image 6182brightness.<wbr/></p> 6183 </td> 6184 6185 <td class="entry_units"> 6186 Compensation steps 6187 </td> 6188 6189 <td class="entry_range"> 6190 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 6191 </td> 6192 6193 <td class="entry_hal_version"> 6194 <p>3.<wbr/>2</p> 6195 </td> 6196 6197 <td class="entry_tags"> 6198 <ul class="entry_tags"> 6199 <li><a href="#tag_BC">BC</a></li> 6200 </ul> 6201 </td> 6202 6203 </tr> 6204 <tr class="entries_header"> 6205 <th class="th_details" colspan="6">Details</th> 6206 </tr> 6207 <tr class="entry_cont"> 6208 <td class="entry_details" colspan="6"> 6209 <p>The adjustment is measured as a count of steps,<wbr/> with the 6210step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 6211allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 6212<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 6213will mean an exposure compensation of +2 EV; -3 will mean an 6214exposure compensation of -1 EV.<wbr/> One EV represents a doubling 6215of image brightness.<wbr/> Note that this control will only be 6216effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 6217will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 6218<p>In the event of exposure compensation value being changed,<wbr/> camera device 6219may take several frames to reach the newly requested exposure target.<wbr/> 6220During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 6221state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 6222change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 6223FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 6224 </td> 6225 </tr> 6226 6227 6228 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6229 <!-- end of entry --> 6230 6231 6232 <tr class="entry" id="dynamic_android.control.aeLock"> 6233 <td class="entry_name 6234 " rowspan="3"> 6235 android.<wbr/>control.<wbr/>ae<wbr/>Lock 6236 </td> 6237 <td class="entry_type"> 6238 <span class="entry_type_name entry_type_name_enum">byte</span> 6239 6240 <span class="entry_type_visibility"> [public as boolean]</span> 6241 6242 6243 <span class="entry_type_hwlevel">[legacy] </span> 6244 6245 6246 6247 <ul class="entry_type_enum"> 6248 <li> 6249 <span class="entry_type_enum_name">OFF (v3.2)</span> 6250 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 6251is free to update its parameters.<wbr/></p></span> 6252 </li> 6253 <li> 6254 <span class="entry_type_enum_name">ON (v3.2)</span> 6255 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 6256must not update the exposure and sensitivity parameters 6257while the lock is active.<wbr/></p> 6258<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 6259will still take effect while auto-exposure is locked.<wbr/></p> 6260<p>Some rare LEGACY devices may not support 6261this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 6262 </li> 6263 </ul> 6264 6265 </td> <!-- entry_type --> 6266 6267 <td class="entry_description"> 6268 <p>Whether auto-exposure (AE) is currently locked to its latest 6269calculated values.<wbr/></p> 6270 </td> 6271 6272 <td class="entry_units"> 6273 </td> 6274 6275 <td class="entry_range"> 6276 </td> 6277 6278 <td class="entry_hal_version"> 6279 <p>3.<wbr/>2</p> 6280 </td> 6281 6282 <td class="entry_tags"> 6283 <ul class="entry_tags"> 6284 <li><a href="#tag_BC">BC</a></li> 6285 </ul> 6286 </td> 6287 6288 </tr> 6289 <tr class="entries_header"> 6290 <th class="th_details" colspan="6">Details</th> 6291 </tr> 6292 <tr class="entry_cont"> 6293 <td class="entry_details" colspan="6"> 6294 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 6295and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 6296<p>Note that even when AE is locked,<wbr/> the flash may be fired if 6297the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 6298ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 6299<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 6300is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 6301<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 6302when AE is already locked,<wbr/> the camera device will not change the exposure time 6303(<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>) 6304parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 6305is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 6306<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/> 6307Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 6308<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 6309the AE if AE is locked by the camera device internally during precapture metering 6310sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 6311ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 6312will never succeed in a sequence of preview requests where AE lock is always set 6313to <code>false</code>.<wbr/></p> 6314<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 6315get locked do not necessarily correspond to the settings that were present in the 6316latest capture result received from the camera device,<wbr/> since additional captures 6317and AE updates may have occurred even before the result was sent out.<wbr/> If an 6318application is switching between automatic and manual control and wishes to eliminate 6319any flicker during the switch,<wbr/> the following procedure is recommended:</p> 6320<ol> 6321<li>Starting in auto-AE mode:</li> 6322<li>Lock AE</li> 6323<li>Wait for the first result to be output that has the AE locked</li> 6324<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 6325<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 6326</ol> 6327<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> 6328 </td> 6329 </tr> 6330 6331 6332 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6333 <!-- end of entry --> 6334 6335 6336 <tr class="entry" id="dynamic_android.control.aeMode"> 6337 <td class="entry_name 6338 " rowspan="3"> 6339 android.<wbr/>control.<wbr/>ae<wbr/>Mode 6340 </td> 6341 <td class="entry_type"> 6342 <span class="entry_type_name entry_type_name_enum">byte</span> 6343 6344 <span class="entry_type_visibility"> [public]</span> 6345 6346 6347 <span class="entry_type_hwlevel">[legacy] </span> 6348 6349 6350 6351 <ul class="entry_type_enum"> 6352 <li> 6353 <span class="entry_type_enum_name">OFF (v3.2)</span> 6354 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 6355<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 6356<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 6357<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 6358device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 6359a flash unit for this camera device.<wbr/></p> 6360<p>Note that auto-white balance (AWB) and auto-focus (AF) 6361behavior is device dependent when AE is in OFF mode.<wbr/> 6362To have consistent behavior across different devices,<wbr/> 6363it is recommended to either set AWB and AF to OFF mode 6364or lock AWB and AF before setting AE to OFF.<wbr/> 6365See <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/> 6366<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> 6367for more details.<wbr/></p> 6368<p>LEGACY devices do not support the OFF mode and will 6369override attempts to use this value to ON.<wbr/></p></span> 6370 </li> 6371 <li> 6372 <span class="entry_type_enum_name">ON (v3.2)</span> 6373 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 6374with no flash control.<wbr/></p> 6375<p>The application's values for 6376<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 6377<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 6378<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 6379application has control over the various 6380android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 6381 </li> 6382 <li> 6383 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span> 6384 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 6385the camera's flash unit,<wbr/> firing it in low-light 6386conditions.<wbr/></p> 6387<p>The flash may be fired during a precapture sequence 6388(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 6389may be fired for captures for which the 6390<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 6391STILL_<wbr/>CAPTURE</p></span> 6392 </li> 6393 <li> 6394 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span> 6395 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 6396the camera's flash unit,<wbr/> always firing it for still 6397captures.<wbr/></p> 6398<p>The flash may be fired during a precapture sequence 6399(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 6400will always be fired for captures for which the 6401<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 6402STILL_<wbr/>CAPTURE</p></span> 6403 </li> 6404 <li> 6405 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span> 6406 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 6407reduction.<wbr/></p> 6408<p>If deemed necessary by the camera device,<wbr/> a red eye 6409reduction flash will fire during the precapture 6410sequence.<wbr/></p></span> 6411 </li> 6412 <li> 6413 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span> 6414 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p> 6415<p>It informs the camera device that an external flash has been turned on,<wbr/> and that 6416metering (and continuous focus if active) should be quickly recaculated to account 6417for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p> 6418<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the 6419other available AE modes.<wbr/></p> 6420<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 6421be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without 6422flash.<wbr/></p></span> 6423 </li> 6424 </ul> 6425 6426 </td> <!-- entry_type --> 6427 6428 <td class="entry_description"> 6429 <p>The desired mode for the camera device's 6430auto-exposure routine.<wbr/></p> 6431 </td> 6432 6433 <td class="entry_units"> 6434 </td> 6435 6436 <td class="entry_range"> 6437 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 6438 </td> 6439 6440 <td class="entry_hal_version"> 6441 <p>3.<wbr/>2</p> 6442 </td> 6443 6444 <td class="entry_tags"> 6445 <ul class="entry_tags"> 6446 <li><a href="#tag_BC">BC</a></li> 6447 </ul> 6448 </td> 6449 6450 </tr> 6451 <tr class="entries_header"> 6452 <th class="th_details" colspan="6">Details</th> 6453 </tr> 6454 <tr class="entry_cont"> 6455 <td class="entry_details" colspan="6"> 6456 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 6457AUTO.<wbr/></p> 6458<p>When set to any of the ON modes,<wbr/> the camera device's 6459auto-exposure routine is enabled,<wbr/> overriding the 6460application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 6461and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 6462<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 6463<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 6464is selected,<wbr/> the camera device's flash unit controls are 6465also overridden.<wbr/></p> 6466<p>The FLASH modes are only available if the camera device 6467has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 6468<p>If flash TORCH mode is desired,<wbr/> this field must be set to 6469ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 6470<p>When set to any of the ON modes,<wbr/> the values chosen by the 6471camera device auto-exposure routine for the overridden 6472fields for a given capture will be available in its 6473CaptureResult.<wbr/></p> 6474 </td> 6475 </tr> 6476 6477 6478 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6479 <!-- end of entry --> 6480 6481 6482 <tr class="entry" id="dynamic_android.control.aeRegions"> 6483 <td class="entry_name 6484 " rowspan="5"> 6485 android.<wbr/>control.<wbr/>ae<wbr/>Regions 6486 </td> 6487 <td class="entry_type"> 6488 <span class="entry_type_name">int32</span> 6489 <span class="entry_type_container">x</span> 6490 6491 <span class="entry_type_array"> 6492 5 x area_count 6493 </span> 6494 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 6495 6496 6497 6498 6499 6500 6501 </td> <!-- entry_type --> 6502 6503 <td class="entry_description"> 6504 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 6505 </td> 6506 6507 <td class="entry_units"> 6508 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 6509 </td> 6510 6511 <td class="entry_range"> 6512 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 6513<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 6514 </td> 6515 6516 <td class="entry_hal_version"> 6517 <p>3.<wbr/>2</p> 6518 </td> 6519 6520 <td class="entry_tags"> 6521 <ul class="entry_tags"> 6522 <li><a href="#tag_BC">BC</a></li> 6523 </ul> 6524 </td> 6525 6526 </tr> 6527 <tr class="entries_header"> 6528 <th class="th_details" colspan="6">Details</th> 6529 </tr> 6530 <tr class="entry_cont"> 6531 <td class="entry_details" colspan="6"> 6532 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 6533Otherwise will always be present.<wbr/></p> 6534<p>The maximum number of regions supported by the device is determined by the value 6535of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 6536<p>The coordinate system is based on the active pixel array,<wbr/> 6537with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 6538(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6539<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 6540bottom-right pixel in the active pixel array.<wbr/></p> 6541<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 6542for every pixel in the area.<wbr/> This means that a large metering area 6543with the same weight as a smaller area will have more effect in 6544the metering result.<wbr/> Metering areas can partially overlap and the 6545camera device will add the weights in the overlap region.<wbr/></p> 6546<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 6547region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 6548weight is ignored.<wbr/></p> 6549<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 6550camera device.<wbr/></p> 6551<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 6552capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 6553region and output only the intersection rectangle as the metering region in the result 6554metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 6555not reported in the result metadata.<wbr/></p> 6556 </td> 6557 </tr> 6558 6559 <tr class="entries_header"> 6560 <th class="th_details" colspan="6">HAL Implementation Details</th> 6561 </tr> 6562 <tr class="entry_cont"> 6563 <td class="entry_details" colspan="6"> 6564 <p>The HAL level representation of MeteringRectangle[] is a 6565int[5 * area_<wbr/>count].<wbr/> 6566Every five elements represent a metering region of 6567(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 6568The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 6569exclusive on xmax and ymax.<wbr/></p> 6570 </td> 6571 </tr> 6572 6573 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6574 <!-- end of entry --> 6575 6576 6577 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> 6578 <td class="entry_name 6579 " rowspan="3"> 6580 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 6581 </td> 6582 <td class="entry_type"> 6583 <span class="entry_type_name">int32</span> 6584 <span class="entry_type_container">x</span> 6585 6586 <span class="entry_type_array"> 6587 2 6588 </span> 6589 <span class="entry_type_visibility"> [public as rangeInt]</span> 6590 6591 6592 <span class="entry_type_hwlevel">[legacy] </span> 6593 6594 6595 6596 6597 </td> <!-- entry_type --> 6598 6599 <td class="entry_description"> 6600 <p>Range over which the auto-exposure routine can 6601adjust the capture frame rate to maintain good 6602exposure.<wbr/></p> 6603 </td> 6604 6605 <td class="entry_units"> 6606 Frames per second (FPS) 6607 </td> 6608 6609 <td class="entry_range"> 6610 <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> 6611 </td> 6612 6613 <td class="entry_hal_version"> 6614 <p>3.<wbr/>2</p> 6615 </td> 6616 6617 <td class="entry_tags"> 6618 <ul class="entry_tags"> 6619 <li><a href="#tag_BC">BC</a></li> 6620 </ul> 6621 </td> 6622 6623 </tr> 6624 <tr class="entries_header"> 6625 <th class="th_details" colspan="6">Details</th> 6626 </tr> 6627 <tr class="entry_cont"> 6628 <td class="entry_details" colspan="6"> 6629 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 6630manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 6631<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 6632 </td> 6633 </tr> 6634 6635 6636 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6637 <!-- end of entry --> 6638 6639 6640 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> 6641 <td class="entry_name 6642 " rowspan="5"> 6643 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 6644 </td> 6645 <td class="entry_type"> 6646 <span class="entry_type_name entry_type_name_enum">byte</span> 6647 6648 <span class="entry_type_visibility"> [public]</span> 6649 6650 6651 <span class="entry_type_hwlevel">[limited] </span> 6652 6653 6654 6655 <ul class="entry_type_enum"> 6656 <li> 6657 <span class="entry_type_enum_name">IDLE (v3.2)</span> 6658 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6659 </li> 6660 <li> 6661 <span class="entry_type_enum_name">START (v3.2)</span> 6662 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 6663by the camera device.<wbr/></p> 6664<p>The exact effect of the precapture trigger depends on 6665the current AE mode and state.<wbr/></p></span> 6666 </li> 6667 <li> 6668 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 6669 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 6670precapture metering sequence,<wbr/> the auto-exposure routine will return to its 6671initial state.<wbr/></p></span> 6672 </li> 6673 </ul> 6674 6675 </td> <!-- entry_type --> 6676 6677 <td class="entry_description"> 6678 <p>Whether the camera device will trigger a precapture 6679metering sequence when it processes this request.<wbr/></p> 6680 </td> 6681 6682 <td class="entry_units"> 6683 </td> 6684 6685 <td class="entry_range"> 6686 </td> 6687 6688 <td class="entry_hal_version"> 6689 <p>3.<wbr/>2</p> 6690 </td> 6691 6692 <td class="entry_tags"> 6693 <ul class="entry_tags"> 6694 <li><a href="#tag_BC">BC</a></li> 6695 </ul> 6696 </td> 6697 6698 </tr> 6699 <tr class="entries_header"> 6700 <th class="th_details" colspan="6">Details</th> 6701 </tr> 6702 <tr class="entry_cont"> 6703 <td class="entry_details" colspan="6"> 6704 <p>This entry is normally set to IDLE,<wbr/> or is not 6705included at all in the request settings.<wbr/> When included and 6706set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 6707precapture metering sequence.<wbr/></p> 6708<p>When set to CANCEL,<wbr/> the camera device will cancel any active 6709precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 6710If a precapture metering sequence is already completed,<wbr/> and the camera 6711device has implicitly locked the AE for subsequent still capture,<wbr/> the 6712CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 6713<p>The precapture sequence should be triggered before starting a 6714high-quality still capture for final metering decisions to 6715be made,<wbr/> and for firing pre-capture flash pulses to estimate 6716scene brightness and required final capture flash power,<wbr/> when 6717the flash is enabled.<wbr/></p> 6718<p>Normally,<wbr/> this entry should be set to START for only a 6719single request,<wbr/> and the application should wait until the 6720sequence completes before starting a new one.<wbr/></p> 6721<p>When a precapture metering sequence is finished,<wbr/> the camera device 6722may lock the auto-exposure routine internally to be able to accurately expose the 6723subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 6724For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 6725submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 6726submit 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 6727with <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 6728still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 6729API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 6730internally locked AE if the application doesn't submit a still capture request after 6731the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 6732be used in devices that have earlier API levels.<wbr/></p> 6733<p>The exact effect of auto-exposure (AE) precapture trigger 6734depends on the current AE mode and state; see 6735<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 6736details.<wbr/></p> 6737<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 6738capturing a high-resolution JPEG image will automatically trigger a 6739precapture sequence before the high-resolution capture,<wbr/> including 6740potentially firing a pre-capture flash.<wbr/></p> 6741<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 6742simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 6743the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 6744focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 6745trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 6746changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 6747example.<wbr/></p> 6748<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 6749the camera device will complete them in the optimal order for that device.<wbr/></p> 6750 </td> 6751 </tr> 6752 6753 <tr class="entries_header"> 6754 <th class="th_details" colspan="6">HAL Implementation Details</th> 6755 </tr> 6756 <tr class="entry_cont"> 6757 <td class="entry_details" colspan="6"> 6758 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 6759(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 6760treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 6761AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 6762to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 6763 </td> 6764 </tr> 6765 6766 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 6767 <!-- end of entry --> 6768 6769 6770 <tr class="entry" id="dynamic_android.control.aeState"> 6771 <td class="entry_name 6772 " rowspan="3"> 6773 android.<wbr/>control.<wbr/>ae<wbr/>State 6774 </td> 6775 <td class="entry_type"> 6776 <span class="entry_type_name entry_type_name_enum">byte</span> 6777 6778 <span class="entry_type_visibility"> [public]</span> 6779 6780 6781 <span class="entry_type_hwlevel">[limited] </span> 6782 6783 6784 6785 <ul class="entry_type_enum"> 6786 <li> 6787 <span class="entry_type_enum_name">INACTIVE (v3.2)</span> 6788 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> 6789<p>When a camera device is opened,<wbr/> it starts in 6790this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 6791this state in capture result.<wbr/></p></span> 6792 </li> 6793 <li> 6794 <span class="entry_type_enum_name">SEARCHING (v3.2)</span> 6795 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 6796for the current scene.<wbr/></p> 6797<p>This is a transient state,<wbr/> the camera device may skip 6798reporting this state in capture result.<wbr/></p></span> 6799 </li> 6800 <li> 6801 <span class="entry_type_enum_name">CONVERGED (v3.2)</span> 6802 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 6803current scene.<wbr/></p></span> 6804 </li> 6805 <li> 6806 <span class="entry_type_enum_name">LOCKED (v3.2)</span> 6807 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 6808 </li> 6809 <li> 6810 <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span> 6811 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 6812needs to be fired for good quality still 6813capture.<wbr/></p></span> 6814 </li> 6815 <li> 6816 <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span> 6817 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 6818and is currently executing it.<wbr/></p> 6819<p>Precapture can be triggered through setting 6820<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently 6821active and completed (if it causes camera device internal AE lock) precapture 6822metering sequence can be canceled through setting 6823<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p> 6824<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED 6825or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient 6826state,<wbr/> the camera device may skip reporting this state in 6827capture result.<wbr/></p></span> 6828 </li> 6829 </ul> 6830 6831 </td> <!-- entry_type --> 6832 6833 <td class="entry_description"> 6834 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p> 6835 </td> 6836 6837 <td class="entry_units"> 6838 </td> 6839 6840 <td class="entry_range"> 6841 </td> 6842 6843 <td class="entry_hal_version"> 6844 <p>3.<wbr/>2</p> 6845 </td> 6846 6847 <td class="entry_tags"> 6848 </td> 6849 6850 </tr> 6851 <tr class="entries_header"> 6852 <th class="th_details" colspan="6">Details</th> 6853 </tr> 6854 <tr class="entry_cont"> 6855 <td class="entry_details" colspan="6"> 6856 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 6857resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6858or <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 6859the algorithm states to INACTIVE.<wbr/></p> 6860<p>The camera device can do several state transitions between two results,<wbr/> if it is 6861allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6862seen in a result.<wbr/></p> 6863<p>The state in the result is the state for this image (in sync with this image): if 6864AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 6865be good to use.<wbr/></p> 6866<p>Below are state transition tables for different AE modes.<wbr/></p> 6867<table> 6868<thead> 6869<tr> 6870<th align="center">State</th> 6871<th align="center">Transition Cause</th> 6872<th align="center">New State</th> 6873<th align="center">Notes</th> 6874</tr> 6875</thead> 6876<tbody> 6877<tr> 6878<td align="center">INACTIVE</td> 6879<td align="center"></td> 6880<td align="center">INACTIVE</td> 6881<td align="center">Camera device auto exposure algorithm is disabled</td> 6882</tr> 6883</tbody> 6884</table> 6885<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p> 6886<table> 6887<thead> 6888<tr> 6889<th align="center">State</th> 6890<th align="center">Transition Cause</th> 6891<th align="center">New State</th> 6892<th align="center">Notes</th> 6893</tr> 6894</thead> 6895<tbody> 6896<tr> 6897<td align="center">INACTIVE</td> 6898<td align="center">Camera device initiates AE scan</td> 6899<td align="center">SEARCHING</td> 6900<td align="center">Values changing</td> 6901</tr> 6902<tr> 6903<td align="center">INACTIVE</td> 6904<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6905<td align="center">LOCKED</td> 6906<td align="center">Values locked</td> 6907</tr> 6908<tr> 6909<td align="center">SEARCHING</td> 6910<td align="center">Camera device finishes AE scan</td> 6911<td align="center">CONVERGED</td> 6912<td align="center">Good values,<wbr/> not changing</td> 6913</tr> 6914<tr> 6915<td align="center">SEARCHING</td> 6916<td align="center">Camera device finishes AE scan</td> 6917<td align="center">FLASH_<wbr/>REQUIRED</td> 6918<td align="center">Converged but too dark w/<wbr/>o flash</td> 6919</tr> 6920<tr> 6921<td align="center">SEARCHING</td> 6922<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6923<td align="center">LOCKED</td> 6924<td align="center">Values locked</td> 6925</tr> 6926<tr> 6927<td align="center">CONVERGED</td> 6928<td align="center">Camera device initiates AE scan</td> 6929<td align="center">SEARCHING</td> 6930<td align="center">Values changing</td> 6931</tr> 6932<tr> 6933<td align="center">CONVERGED</td> 6934<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6935<td align="center">LOCKED</td> 6936<td align="center">Values locked</td> 6937</tr> 6938<tr> 6939<td align="center">FLASH_<wbr/>REQUIRED</td> 6940<td align="center">Camera device initiates AE scan</td> 6941<td align="center">SEARCHING</td> 6942<td align="center">Values changing</td> 6943</tr> 6944<tr> 6945<td align="center">FLASH_<wbr/>REQUIRED</td> 6946<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6947<td align="center">LOCKED</td> 6948<td align="center">Values locked</td> 6949</tr> 6950<tr> 6951<td align="center">LOCKED</td> 6952<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6953<td align="center">SEARCHING</td> 6954<td align="center">Values not good after unlock</td> 6955</tr> 6956<tr> 6957<td align="center">LOCKED</td> 6958<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6959<td align="center">CONVERGED</td> 6960<td align="center">Values good after unlock</td> 6961</tr> 6962<tr> 6963<td align="center">LOCKED</td> 6964<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6965<td align="center">FLASH_<wbr/>REQUIRED</td> 6966<td align="center">Exposure good,<wbr/> but too dark</td> 6967</tr> 6968<tr> 6969<td align="center">PRECAPTURE</td> 6970<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6971<td align="center">CONVERGED</td> 6972<td align="center">Ready for high-quality capture</td> 6973</tr> 6974<tr> 6975<td align="center">PRECAPTURE</td> 6976<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6977<td align="center">LOCKED</td> 6978<td align="center">Ready for high-quality capture</td> 6979</tr> 6980<tr> 6981<td align="center">LOCKED</td> 6982<td align="center">aeLock is ON and aePrecaptureTrigger is START</td> 6983<td align="center">LOCKED</td> 6984<td align="center">Precapture trigger is ignored when AE is already locked</td> 6985</tr> 6986<tr> 6987<td align="center">LOCKED</td> 6988<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td> 6989<td align="center">LOCKED</td> 6990<td align="center">Precapture trigger is ignored when AE is already locked</td> 6991</tr> 6992<tr> 6993<td align="center">Any state (excluding LOCKED)</td> 6994<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 6995<td align="center">PRECAPTURE</td> 6996<td align="center">Start AE precapture metering sequence</td> 6997</tr> 6998<tr> 6999<td align="center">Any state (excluding LOCKED)</td> 7000<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td> 7001<td align="center">INACTIVE</td> 7002<td align="center">Currently active precapture metering sequence is canceled</td> 7003</tr> 7004</tbody> 7005</table> 7006<p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in 7007<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 7008the camera device finishes AE scan and it's too dark without flash.<wbr/></p> 7009<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7010without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7011can be skipped in that manner is called a transient state.<wbr/></p> 7012<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions 7013listed in above table,<wbr/> it is also legal for the camera device to skip one or more 7014transient states between two results.<wbr/> See below table for examples:</p> 7015<table> 7016<thead> 7017<tr> 7018<th align="center">State</th> 7019<th align="center">Transition Cause</th> 7020<th align="center">New State</th> 7021<th align="center">Notes</th> 7022</tr> 7023</thead> 7024<tbody> 7025<tr> 7026<td align="center">INACTIVE</td> 7027<td align="center">Camera device finished AE scan</td> 7028<td align="center">CONVERGED</td> 7029<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 7030</tr> 7031<tr> 7032<td align="center">Any state (excluding LOCKED)</td> 7033<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> 7034<td align="center">FLASH_<wbr/>REQUIRED</td> 7035<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> 7036</tr> 7037<tr> 7038<td align="center">Any state (excluding LOCKED)</td> 7039<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> 7040<td align="center">CONVERGED</td> 7041<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 7042</tr> 7043<tr> 7044<td align="center">Any state (excluding LOCKED)</td> 7045<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 7046<td align="center">FLASH_<wbr/>REQUIRED</td> 7047<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> 7048</tr> 7049<tr> 7050<td align="center">Any state (excluding LOCKED)</td> 7051<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 7052<td align="center">CONVERGED</td> 7053<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> 7054</tr> 7055<tr> 7056<td align="center">CONVERGED</td> 7057<td align="center">Camera device finished AE scan</td> 7058<td align="center">FLASH_<wbr/>REQUIRED</td> 7059<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> 7060</tr> 7061<tr> 7062<td align="center">FLASH_<wbr/>REQUIRED</td> 7063<td align="center">Camera device finished AE scan</td> 7064<td align="center">CONVERGED</td> 7065<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 7066</tr> 7067</tbody> 7068</table> 7069 </td> 7070 </tr> 7071 7072 7073 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7074 <!-- end of entry --> 7075 7076 7077 <tr class="entry" id="dynamic_android.control.afMode"> 7078 <td class="entry_name 7079 " rowspan="5"> 7080 android.<wbr/>control.<wbr/>af<wbr/>Mode 7081 </td> 7082 <td class="entry_type"> 7083 <span class="entry_type_name entry_type_name_enum">byte</span> 7084 7085 <span class="entry_type_visibility"> [public]</span> 7086 7087 7088 <span class="entry_type_hwlevel">[legacy] </span> 7089 7090 7091 7092 <ul class="entry_type_enum"> 7093 <li> 7094 <span class="entry_type_enum_name">OFF (v3.2)</span> 7095 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 7096<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 7097application.<wbr/></p></span> 7098 </li> 7099 <li> 7100 <span class="entry_type_enum_name">AUTO (v3.2)</span> 7101 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 7102<p>In this mode,<wbr/> the lens does not move unless 7103the autofocus trigger action is called.<wbr/> When that trigger 7104is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 7105the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 7106<p>Always supported if lens is not fixed focus.<wbr/></p> 7107<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 7108is fixed-focus.<wbr/></p> 7109<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 7110and sets the AF state to INACTIVE.<wbr/></p></span> 7111 </li> 7112 <li> 7113 <span class="entry_type_enum_name">MACRO (v3.2)</span> 7114 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 7115<p>In this mode,<wbr/> the lens does not move unless the 7116autofocus trigger action is called.<wbr/> When that trigger is 7117activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 7118the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 7119mode is optimized for focusing on objects very close to 7120the camera.<wbr/></p> 7121<p>When that trigger is activated,<wbr/> AF will transition to 7122ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 7123NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 7124position to default,<wbr/> and sets the AF state to 7125INACTIVE.<wbr/></p></span> 7126 </li> 7127 <li> 7128 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span> 7129 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 7130position continually to attempt to provide a 7131constantly-in-focus image stream.<wbr/></p> 7132<p>The focusing behavior should be suitable for good quality 7133video recording; typically this means slower focus 7134movement and no overshoots.<wbr/> When the AF trigger is not 7135involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 7136and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 7137states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 7138the algorithm should immediately transition into 7139AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 7140lens position until a cancel AF trigger is received.<wbr/></p> 7141<p>Once cancel is received,<wbr/> the algorithm should transition 7142back to INACTIVE and resume passive scan.<wbr/> Note that this 7143behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 7144ongoing PASSIVE_<wbr/>SCAN must immediately be 7145canceled.<wbr/></p></span> 7146 </li> 7147 <li> 7148 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span> 7149 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 7150position continually to attempt to provide a 7151constantly-in-focus image stream.<wbr/></p> 7152<p>The focusing behavior should be suitable for still image 7153capture; typically this means focusing as fast as 7154possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 7155algorithm should start in INACTIVE state,<wbr/> and then 7156transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 7157appropriate as it attempts to maintain focus.<wbr/> When the AF 7158trigger is activated,<wbr/> the algorithm should finish its 7159PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 7160AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 7161lens position until a cancel AF trigger is received.<wbr/></p> 7162<p>When the AF cancel trigger is activated,<wbr/> the algorithm 7163should transition back to INACTIVE and then act as if it 7164has just been started.<wbr/></p></span> 7165 </li> 7166 <li> 7167 <span class="entry_type_enum_name">EDOF (v3.2)</span> 7168 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 7169<p>The camera device will produce images with an extended 7170depth of field automatically; no special focusing 7171operations need to be done before taking a picture.<wbr/></p> 7172<p>AF triggers are ignored,<wbr/> and the AF state will always be 7173INACTIVE.<wbr/></p></span> 7174 </li> 7175 </ul> 7176 7177 </td> <!-- entry_type --> 7178 7179 <td class="entry_description"> 7180 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 7181mode it is set to.<wbr/></p> 7182 </td> 7183 7184 <td class="entry_units"> 7185 </td> 7186 7187 <td class="entry_range"> 7188 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 7189 </td> 7190 7191 <td class="entry_hal_version"> 7192 <p>3.<wbr/>2</p> 7193 </td> 7194 7195 <td class="entry_tags"> 7196 <ul class="entry_tags"> 7197 <li><a href="#tag_BC">BC</a></li> 7198 </ul> 7199 </td> 7200 7201 </tr> 7202 <tr class="entries_header"> 7203 <th class="th_details" colspan="6">Details</th> 7204 </tr> 7205 <tr class="entry_cont"> 7206 <td class="entry_details" colspan="6"> 7207 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 7208(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 7209when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 7210dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 7211setting <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> 7212<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 7213the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 7214in result metadata.<wbr/></p> 7215 </td> 7216 </tr> 7217 7218 <tr class="entries_header"> 7219 <th class="th_details" colspan="6">HAL Implementation Details</th> 7220 </tr> 7221 <tr class="entry_cont"> 7222 <td class="entry_details" colspan="6"> 7223 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 7224request (<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 7225up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 7226<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 7227locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 7228after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 7229the same focal plane remains in focus.<wbr/></p> 7230<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 7231scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 7232(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 7233same lock behavior as above.<wbr/></p> 7234<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 7235focus 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/> 7236However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 7237manual control.<wbr/></p> 7238<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 7239camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 7240remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 7241by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 7242that will arise on camera modules with open-loop VCMs.<wbr/></p> 7243 </td> 7244 </tr> 7245 7246 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7247 <!-- end of entry --> 7248 7249 7250 <tr class="entry" id="dynamic_android.control.afRegions"> 7251 <td class="entry_name 7252 " rowspan="5"> 7253 android.<wbr/>control.<wbr/>af<wbr/>Regions 7254 </td> 7255 <td class="entry_type"> 7256 <span class="entry_type_name">int32</span> 7257 <span class="entry_type_container">x</span> 7258 7259 <span class="entry_type_array"> 7260 5 x area_count 7261 </span> 7262 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 7263 7264 7265 7266 7267 7268 7269 </td> <!-- entry_type --> 7270 7271 <td class="entry_description"> 7272 <p>List of metering areas to use for auto-focus.<wbr/></p> 7273 </td> 7274 7275 <td class="entry_units"> 7276 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 7277 </td> 7278 7279 <td class="entry_range"> 7280 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 7281<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 7282 </td> 7283 7284 <td class="entry_hal_version"> 7285 <p>3.<wbr/>2</p> 7286 </td> 7287 7288 <td class="entry_tags"> 7289 <ul class="entry_tags"> 7290 <li><a href="#tag_BC">BC</a></li> 7291 </ul> 7292 </td> 7293 7294 </tr> 7295 <tr class="entries_header"> 7296 <th class="th_details" colspan="6">Details</th> 7297 </tr> 7298 <tr class="entry_cont"> 7299 <td class="entry_details" colspan="6"> 7300 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 7301Otherwise will always be present.<wbr/></p> 7302<p>The maximum number of focus areas supported by the device is determined by the value 7303of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 7304<p>The coordinate system is based on the active pixel array,<wbr/> 7305with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 7306(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7307<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 7308bottom-right pixel in the active pixel array.<wbr/></p> 7309<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 7310for every pixel in the area.<wbr/> This means that a large metering area 7311with the same weight as a smaller area will have more effect in 7312the metering result.<wbr/> Metering areas can partially overlap and the 7313camera device will add the weights in the overlap region.<wbr/></p> 7314<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 7315is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 7316ignored.<wbr/></p> 7317<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 7318camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or 7319the region selected by the camera device as the focus area of interest.<wbr/></p> 7320<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 7321capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 7322region and output only the intersection rectangle as the metering region in the result 7323metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 7324not reported in the result metadata.<wbr/></p> 7325 </td> 7326 </tr> 7327 7328 <tr class="entries_header"> 7329 <th class="th_details" colspan="6">HAL Implementation Details</th> 7330 </tr> 7331 <tr class="entry_cont"> 7332 <td class="entry_details" colspan="6"> 7333 <p>The HAL level representation of MeteringRectangle[] is a 7334int[5 * area_<wbr/>count].<wbr/> 7335Every five elements represent a metering region of 7336(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 7337The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 7338exclusive on xmax and ymax.<wbr/></p> 7339 </td> 7340 </tr> 7341 7342 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7343 <!-- end of entry --> 7344 7345 7346 <tr class="entry" id="dynamic_android.control.afTrigger"> 7347 <td class="entry_name 7348 " rowspan="5"> 7349 android.<wbr/>control.<wbr/>af<wbr/>Trigger 7350 </td> 7351 <td class="entry_type"> 7352 <span class="entry_type_name entry_type_name_enum">byte</span> 7353 7354 <span class="entry_type_visibility"> [public]</span> 7355 7356 7357 <span class="entry_type_hwlevel">[legacy] </span> 7358 7359 7360 7361 <ul class="entry_type_enum"> 7362 <li> 7363 <span class="entry_type_enum_name">IDLE (v3.2)</span> 7364 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 7365 </li> 7366 <li> 7367 <span class="entry_type_enum_name">START (v3.2)</span> 7368 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 7369 </li> 7370 <li> 7371 <span class="entry_type_enum_name">CANCEL (v3.2)</span> 7372 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 7373state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 7374 </li> 7375 </ul> 7376 7377 </td> <!-- entry_type --> 7378 7379 <td class="entry_description"> 7380 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 7381 </td> 7382 7383 <td class="entry_units"> 7384 </td> 7385 7386 <td class="entry_range"> 7387 </td> 7388 7389 <td class="entry_hal_version"> 7390 <p>3.<wbr/>2</p> 7391 </td> 7392 7393 <td class="entry_tags"> 7394 <ul class="entry_tags"> 7395 <li><a href="#tag_BC">BC</a></li> 7396 </ul> 7397 </td> 7398 7399 </tr> 7400 <tr class="entries_header"> 7401 <th class="th_details" colspan="6">Details</th> 7402 </tr> 7403 <tr class="entry_cont"> 7404 <td class="entry_details" colspan="6"> 7405 <p>This entry is normally set to IDLE,<wbr/> or is not 7406included at all in the request settings.<wbr/></p> 7407<p>When included and set to START,<wbr/> the camera device will trigger the 7408autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 7409<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 7410and return to its initial AF state.<wbr/></p> 7411<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 7412single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 7413START for multiple captures in a row means restarting the AF operation over 7414and over again.<wbr/></p> 7415<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> 7416<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> 7417simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 7418the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 7419focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 7420trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 7421changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 7422 </td> 7423 </tr> 7424 7425 <tr class="entries_header"> 7426 <th class="th_details" colspan="6">HAL Implementation Details</th> 7427 </tr> 7428 <tr class="entry_cont"> 7429 <td class="entry_details" colspan="6"> 7430 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 7431(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 7432treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 7433AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 7434to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 7435 </td> 7436 </tr> 7437 7438 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7439 <!-- end of entry --> 7440 7441 7442 <tr class="entry" id="dynamic_android.control.afState"> 7443 <td class="entry_name 7444 " rowspan="3"> 7445 android.<wbr/>control.<wbr/>af<wbr/>State 7446 </td> 7447 <td class="entry_type"> 7448 <span class="entry_type_name entry_type_name_enum">byte</span> 7449 7450 <span class="entry_type_visibility"> [public]</span> 7451 7452 7453 <span class="entry_type_hwlevel">[legacy] </span> 7454 7455 7456 7457 <ul class="entry_type_enum"> 7458 <li> 7459 <span class="entry_type_enum_name">INACTIVE (v3.2)</span> 7460 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked 7461to scan.<wbr/></p> 7462<p>When a camera device is opened,<wbr/> it starts in this 7463state.<wbr/> This is a transient state,<wbr/> the camera device may 7464skip reporting this state in capture 7465result.<wbr/></p></span> 7466 </li> 7467 <li> 7468 <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span> 7469 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the 7470camera device in a continuous autofocus mode.<wbr/></p> 7471<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 7472state,<wbr/> the camera device may skip reporting this state in 7473capture result.<wbr/></p></span> 7474 </li> 7475 <li> 7476 <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span> 7477 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may 7478restart scanning at any time.<wbr/></p> 7479<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 7480state,<wbr/> the camera device may skip reporting this state in 7481capture result.<wbr/></p></span> 7482 </li> 7483 <li> 7484 <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span> 7485 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was 7486triggered by AF trigger.<wbr/></p> 7487<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient 7488state,<wbr/> the camera device may skip reporting this state in 7489capture result.<wbr/></p></span> 7490 </li> 7491 <li> 7492 <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span> 7493 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked 7494focus.<wbr/></p> 7495<p>This state is reached only after an explicit START AF trigger has been 7496sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> 7497<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 7498a 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> 7499 </li> 7500 <li> 7501 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span> 7502 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked 7503focus.<wbr/></p> 7504<p>This state is reached only after an explicit START AF trigger has been 7505sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> 7506<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 7507a 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> 7508 </li> 7509 <li> 7510 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span> 7511 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> 7512and may restart scanning at any time.<wbr/></p> 7513<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera 7514device may skip reporting this state in capture result.<wbr/></p> 7515<p>LEGACY camera devices do not support this state.<wbr/> When a passive 7516scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> 7517 </li> 7518 </ul> 7519 7520 </td> <!-- entry_type --> 7521 7522 <td class="entry_description"> 7523 <p>Current state of auto-focus (AF) algorithm.<wbr/></p> 7524 </td> 7525 7526 <td class="entry_units"> 7527 </td> 7528 7529 <td class="entry_range"> 7530 </td> 7531 7532 <td class="entry_hal_version"> 7533 <p>3.<wbr/>2</p> 7534 </td> 7535 7536 <td class="entry_tags"> 7537 </td> 7538 7539 </tr> 7540 <tr class="entries_header"> 7541 <th class="th_details" colspan="6">Details</th> 7542 </tr> 7543 <tr class="entry_cont"> 7544 <td class="entry_details" colspan="6"> 7545 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 7546resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 7547or <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 7548the algorithm states to INACTIVE.<wbr/></p> 7549<p>The camera device can do several state transitions between two results,<wbr/> if it is 7550allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 7551seen in a result.<wbr/></p> 7552<p>The state in the result is the state for this image (in sync with this image): if 7553AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 7554be sharp.<wbr/></p> 7555<p>Below are state transition tables for different AF modes.<wbr/></p> 7556<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> 7557<table> 7558<thead> 7559<tr> 7560<th align="center">State</th> 7561<th align="center">Transition Cause</th> 7562<th align="center">New State</th> 7563<th align="center">Notes</th> 7564</tr> 7565</thead> 7566<tbody> 7567<tr> 7568<td align="center">INACTIVE</td> 7569<td align="center"></td> 7570<td align="center">INACTIVE</td> 7571<td align="center">Never changes</td> 7572</tr> 7573</tbody> 7574</table> 7575<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> 7576<table> 7577<thead> 7578<tr> 7579<th align="center">State</th> 7580<th align="center">Transition Cause</th> 7581<th align="center">New State</th> 7582<th align="center">Notes</th> 7583</tr> 7584</thead> 7585<tbody> 7586<tr> 7587<td align="center">INACTIVE</td> 7588<td align="center">AF_<wbr/>TRIGGER</td> 7589<td align="center">ACTIVE_<wbr/>SCAN</td> 7590<td align="center">Start AF sweep,<wbr/> Lens now moving</td> 7591</tr> 7592<tr> 7593<td align="center">ACTIVE_<wbr/>SCAN</td> 7594<td align="center">AF sweep done</td> 7595<td align="center">FOCUSED_<wbr/>LOCKED</td> 7596<td align="center">Focused,<wbr/> Lens now locked</td> 7597</tr> 7598<tr> 7599<td align="center">ACTIVE_<wbr/>SCAN</td> 7600<td align="center">AF sweep done</td> 7601<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7602<td align="center">Not focused,<wbr/> Lens now locked</td> 7603</tr> 7604<tr> 7605<td align="center">ACTIVE_<wbr/>SCAN</td> 7606<td align="center">AF_<wbr/>CANCEL</td> 7607<td align="center">INACTIVE</td> 7608<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 7609</tr> 7610<tr> 7611<td align="center">FOCUSED_<wbr/>LOCKED</td> 7612<td align="center">AF_<wbr/>CANCEL</td> 7613<td align="center">INACTIVE</td> 7614<td align="center">Cancel/<wbr/>reset AF</td> 7615</tr> 7616<tr> 7617<td align="center">FOCUSED_<wbr/>LOCKED</td> 7618<td align="center">AF_<wbr/>TRIGGER</td> 7619<td align="center">ACTIVE_<wbr/>SCAN</td> 7620<td align="center">Start new sweep,<wbr/> Lens now moving</td> 7621</tr> 7622<tr> 7623<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7624<td align="center">AF_<wbr/>CANCEL</td> 7625<td align="center">INACTIVE</td> 7626<td align="center">Cancel/<wbr/>reset AF</td> 7627</tr> 7628<tr> 7629<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7630<td align="center">AF_<wbr/>TRIGGER</td> 7631<td align="center">ACTIVE_<wbr/>SCAN</td> 7632<td align="center">Start new sweep,<wbr/> Lens now moving</td> 7633</tr> 7634<tr> 7635<td align="center">Any state</td> 7636<td align="center">Mode change</td> 7637<td align="center">INACTIVE</td> 7638<td align="center"></td> 7639</tr> 7640</tbody> 7641</table> 7642<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7643without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7644can be skipped in that manner is called a transient state.<wbr/></p> 7645<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 7646state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 7647one or more transient states between two results.<wbr/> See below table for examples:</p> 7648<table> 7649<thead> 7650<tr> 7651<th align="center">State</th> 7652<th align="center">Transition Cause</th> 7653<th align="center">New State</th> 7654<th align="center">Notes</th> 7655</tr> 7656</thead> 7657<tbody> 7658<tr> 7659<td align="center">INACTIVE</td> 7660<td align="center">AF_<wbr/>TRIGGER</td> 7661<td align="center">FOCUSED_<wbr/>LOCKED</td> 7662<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7663</tr> 7664<tr> 7665<td align="center">INACTIVE</td> 7666<td align="center">AF_<wbr/>TRIGGER</td> 7667<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7668<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 7669</tr> 7670<tr> 7671<td align="center">FOCUSED_<wbr/>LOCKED</td> 7672<td align="center">AF_<wbr/>TRIGGER</td> 7673<td align="center">FOCUSED_<wbr/>LOCKED</td> 7674<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7675</tr> 7676<tr> 7677<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7678<td align="center">AF_<wbr/>TRIGGER</td> 7679<td align="center">FOCUSED_<wbr/>LOCKED</td> 7680<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 7681</tr> 7682</tbody> 7683</table> 7684<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> 7685<table> 7686<thead> 7687<tr> 7688<th align="center">State</th> 7689<th align="center">Transition Cause</th> 7690<th align="center">New State</th> 7691<th align="center">Notes</th> 7692</tr> 7693</thead> 7694<tbody> 7695<tr> 7696<td align="center">INACTIVE</td> 7697<td align="center">Camera device initiates new scan</td> 7698<td align="center">PASSIVE_<wbr/>SCAN</td> 7699<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7700</tr> 7701<tr> 7702<td align="center">INACTIVE</td> 7703<td align="center">AF_<wbr/>TRIGGER</td> 7704<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7705<td align="center">AF state query,<wbr/> Lens now locked</td> 7706</tr> 7707<tr> 7708<td align="center">PASSIVE_<wbr/>SCAN</td> 7709<td align="center">Camera device completes current scan</td> 7710<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7711<td align="center">End AF scan,<wbr/> Lens now locked</td> 7712</tr> 7713<tr> 7714<td align="center">PASSIVE_<wbr/>SCAN</td> 7715<td align="center">Camera device fails current scan</td> 7716<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7717<td align="center">End AF scan,<wbr/> Lens now locked</td> 7718</tr> 7719<tr> 7720<td align="center">PASSIVE_<wbr/>SCAN</td> 7721<td align="center">AF_<wbr/>TRIGGER</td> 7722<td align="center">FOCUSED_<wbr/>LOCKED</td> 7723<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> 7724</tr> 7725<tr> 7726<td align="center">PASSIVE_<wbr/>SCAN</td> 7727<td align="center">AF_<wbr/>TRIGGER</td> 7728<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7729<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> 7730</tr> 7731<tr> 7732<td align="center">PASSIVE_<wbr/>SCAN</td> 7733<td align="center">AF_<wbr/>CANCEL</td> 7734<td align="center">INACTIVE</td> 7735<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7736</tr> 7737<tr> 7738<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7739<td align="center">Camera device initiates new scan</td> 7740<td align="center">PASSIVE_<wbr/>SCAN</td> 7741<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7742</tr> 7743<tr> 7744<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7745<td align="center">Camera device initiates new scan</td> 7746<td align="center">PASSIVE_<wbr/>SCAN</td> 7747<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7748</tr> 7749<tr> 7750<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7751<td align="center">AF_<wbr/>TRIGGER</td> 7752<td align="center">FOCUSED_<wbr/>LOCKED</td> 7753<td align="center">Immediate transition,<wbr/> lens now locked</td> 7754</tr> 7755<tr> 7756<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7757<td align="center">AF_<wbr/>TRIGGER</td> 7758<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7759<td align="center">Immediate transition,<wbr/> lens now locked</td> 7760</tr> 7761<tr> 7762<td align="center">FOCUSED_<wbr/>LOCKED</td> 7763<td align="center">AF_<wbr/>TRIGGER</td> 7764<td align="center">FOCUSED_<wbr/>LOCKED</td> 7765<td align="center">No effect</td> 7766</tr> 7767<tr> 7768<td align="center">FOCUSED_<wbr/>LOCKED</td> 7769<td align="center">AF_<wbr/>CANCEL</td> 7770<td align="center">INACTIVE</td> 7771<td align="center">Restart AF scan</td> 7772</tr> 7773<tr> 7774<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7775<td align="center">AF_<wbr/>TRIGGER</td> 7776<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7777<td align="center">No effect</td> 7778</tr> 7779<tr> 7780<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7781<td align="center">AF_<wbr/>CANCEL</td> 7782<td align="center">INACTIVE</td> 7783<td align="center">Restart AF scan</td> 7784</tr> 7785</tbody> 7786</table> 7787<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> 7788<table> 7789<thead> 7790<tr> 7791<th align="center">State</th> 7792<th align="center">Transition Cause</th> 7793<th align="center">New State</th> 7794<th align="center">Notes</th> 7795</tr> 7796</thead> 7797<tbody> 7798<tr> 7799<td align="center">INACTIVE</td> 7800<td align="center">Camera device initiates new scan</td> 7801<td align="center">PASSIVE_<wbr/>SCAN</td> 7802<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7803</tr> 7804<tr> 7805<td align="center">INACTIVE</td> 7806<td align="center">AF_<wbr/>TRIGGER</td> 7807<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7808<td align="center">AF state query,<wbr/> Lens now locked</td> 7809</tr> 7810<tr> 7811<td align="center">PASSIVE_<wbr/>SCAN</td> 7812<td align="center">Camera device completes current scan</td> 7813<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7814<td align="center">End AF scan,<wbr/> Lens now locked</td> 7815</tr> 7816<tr> 7817<td align="center">PASSIVE_<wbr/>SCAN</td> 7818<td align="center">Camera device fails current scan</td> 7819<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7820<td align="center">End AF scan,<wbr/> Lens now locked</td> 7821</tr> 7822<tr> 7823<td align="center">PASSIVE_<wbr/>SCAN</td> 7824<td align="center">AF_<wbr/>TRIGGER</td> 7825<td align="center">FOCUSED_<wbr/>LOCKED</td> 7826<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td> 7827</tr> 7828<tr> 7829<td align="center">PASSIVE_<wbr/>SCAN</td> 7830<td align="center">AF_<wbr/>TRIGGER</td> 7831<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7832<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> 7833</tr> 7834<tr> 7835<td align="center">PASSIVE_<wbr/>SCAN</td> 7836<td align="center">AF_<wbr/>CANCEL</td> 7837<td align="center">INACTIVE</td> 7838<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7839</tr> 7840<tr> 7841<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7842<td align="center">Camera device initiates new scan</td> 7843<td align="center">PASSIVE_<wbr/>SCAN</td> 7844<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7845</tr> 7846<tr> 7847<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7848<td align="center">Camera device initiates new scan</td> 7849<td align="center">PASSIVE_<wbr/>SCAN</td> 7850<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7851</tr> 7852<tr> 7853<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7854<td align="center">AF_<wbr/>TRIGGER</td> 7855<td align="center">FOCUSED_<wbr/>LOCKED</td> 7856<td align="center">Immediate trans.<wbr/> Lens now locked</td> 7857</tr> 7858<tr> 7859<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7860<td align="center">AF_<wbr/>TRIGGER</td> 7861<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7862<td align="center">Immediate trans.<wbr/> Lens now locked</td> 7863</tr> 7864<tr> 7865<td align="center">FOCUSED_<wbr/>LOCKED</td> 7866<td align="center">AF_<wbr/>TRIGGER</td> 7867<td align="center">FOCUSED_<wbr/>LOCKED</td> 7868<td align="center">No effect</td> 7869</tr> 7870<tr> 7871<td align="center">FOCUSED_<wbr/>LOCKED</td> 7872<td align="center">AF_<wbr/>CANCEL</td> 7873<td align="center">INACTIVE</td> 7874<td align="center">Restart AF scan</td> 7875</tr> 7876<tr> 7877<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7878<td align="center">AF_<wbr/>TRIGGER</td> 7879<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7880<td align="center">No effect</td> 7881</tr> 7882<tr> 7883<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7884<td align="center">AF_<wbr/>CANCEL</td> 7885<td align="center">INACTIVE</td> 7886<td align="center">Restart AF scan</td> 7887</tr> 7888</tbody> 7889</table> 7890<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 7891(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 7892camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 7893will be evaluated in the context of the new mode in the request.<wbr/> 7894See below table for examples:</p> 7895<table> 7896<thead> 7897<tr> 7898<th align="center">State</th> 7899<th align="center">Transition Cause</th> 7900<th align="center">New State</th> 7901<th align="center">Notes</th> 7902</tr> 7903</thead> 7904<tbody> 7905<tr> 7906<td align="center">any state</td> 7907<td align="center">CAF-->AUTO mode switch</td> 7908<td align="center">INACTIVE</td> 7909<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 7910</tr> 7911<tr> 7912<td align="center">any state</td> 7913<td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 7914<td align="center">trigger-reachable states from INACTIVE</td> 7915<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 7916</tr> 7917<tr> 7918<td align="center">any state</td> 7919<td align="center">AUTO-->CAF mode switch</td> 7920<td align="center">passively reachable states from INACTIVE</td> 7921<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 7922</tr> 7923</tbody> 7924</table> 7925 </td> 7926 </tr> 7927 7928 7929 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7930 <!-- end of entry --> 7931 7932 7933 <tr class="entry" id="dynamic_android.control.afTriggerId"> 7934 <td class="entry_name 7935 entry_name_deprecated 7936 " rowspan="3"> 7937 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 7938 </td> 7939 <td class="entry_type"> 7940 <span class="entry_type_name">int32</span> 7941 7942 <span class="entry_type_visibility"> [system]</span> 7943 7944 7945 7946 <span class="entry_type_deprecated">[deprecated] </span> 7947 7948 7949 7950 </td> <!-- entry_type --> 7951 7952 <td class="entry_description"> 7953 <p>The ID sent with the latest 7954CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 7955 </td> 7956 7957 <td class="entry_units"> 7958 </td> 7959 7960 <td class="entry_range"> 7961 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 7962 </td> 7963 7964 <td class="entry_hal_version"> 7965 <p>3.<wbr/>2</p> 7966 </td> 7967 7968 <td class="entry_tags"> 7969 </td> 7970 7971 </tr> 7972 <tr class="entries_header"> 7973 <th class="th_details" colspan="6">Details</th> 7974 </tr> 7975 <tr class="entry_cont"> 7976 <td class="entry_details" colspan="6"> 7977 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 7978received yet by HAL.<wbr/> Always updated even if AF algorithm 7979ignores the trigger</p> 7980 </td> 7981 </tr> 7982 7983 7984 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 7985 <!-- end of entry --> 7986 7987 7988 <tr class="entry" id="dynamic_android.control.awbLock"> 7989 <td class="entry_name 7990 " rowspan="3"> 7991 android.<wbr/>control.<wbr/>awb<wbr/>Lock 7992 </td> 7993 <td class="entry_type"> 7994 <span class="entry_type_name entry_type_name_enum">byte</span> 7995 7996 <span class="entry_type_visibility"> [public as boolean]</span> 7997 7998 7999 <span class="entry_type_hwlevel">[legacy] </span> 8000 8001 8002 8003 <ul class="entry_type_enum"> 8004 <li> 8005 <span class="entry_type_enum_name">OFF (v3.2)</span> 8006 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 8007algorithm is free to update its parameters if in AUTO 8008mode.<wbr/></p></span> 8009 </li> 8010 <li> 8011 <span class="entry_type_enum_name">ON (v3.2)</span> 8012 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 8013algorithm will not update its parameters while the lock 8014is active.<wbr/></p></span> 8015 </li> 8016 </ul> 8017 8018 </td> <!-- entry_type --> 8019 8020 <td class="entry_description"> 8021 <p>Whether auto-white balance (AWB) is currently locked to its 8022latest calculated values.<wbr/></p> 8023 </td> 8024 8025 <td class="entry_units"> 8026 </td> 8027 8028 <td class="entry_range"> 8029 </td> 8030 8031 <td class="entry_hal_version"> 8032 <p>3.<wbr/>2</p> 8033 </td> 8034 8035 <td class="entry_tags"> 8036 <ul class="entry_tags"> 8037 <li><a href="#tag_BC">BC</a></li> 8038 </ul> 8039 </td> 8040 8041 </tr> 8042 <tr class="entries_header"> 8043 <th class="th_details" colspan="6">Details</th> 8044 </tr> 8045 <tr class="entry_cont"> 8046 <td class="entry_details" colspan="6"> 8047 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 8048and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 8049<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 8050get locked do not necessarily correspond to the settings that were present in the 8051latest capture result received from the camera device,<wbr/> since additional captures 8052and AWB updates may have occurred even before the result was sent out.<wbr/> If an 8053application is switching between automatic and manual control and wishes to eliminate 8054any flicker during the switch,<wbr/> the following procedure is recommended:</p> 8055<ol> 8056<li>Starting in auto-AWB mode:</li> 8057<li>Lock AWB</li> 8058<li>Wait for the first result to be output that has the AWB locked</li> 8059<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 8060<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 8061</ol> 8062<p>Note that AWB lock is only meaningful when 8063<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 8064AWB is already fixed to a specific setting.<wbr/></p> 8065<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 8066 </td> 8067 </tr> 8068 8069 8070 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8071 <!-- end of entry --> 8072 8073 8074 <tr class="entry" id="dynamic_android.control.awbMode"> 8075 <td class="entry_name 8076 " rowspan="3"> 8077 android.<wbr/>control.<wbr/>awb<wbr/>Mode 8078 </td> 8079 <td class="entry_type"> 8080 <span class="entry_type_name entry_type_name_enum">byte</span> 8081 8082 <span class="entry_type_visibility"> [public]</span> 8083 8084 8085 <span class="entry_type_hwlevel">[legacy] </span> 8086 8087 8088 8089 <ul class="entry_type_enum"> 8090 <li> 8091 <span class="entry_type_enum_name">OFF (v3.2)</span> 8092 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 8093<p>The application-selected color transform matrix 8094(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 8095(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 8096device for manual white balance control.<wbr/></p></span> 8097 </li> 8098 <li> 8099 <span class="entry_type_enum_name">AUTO (v3.2)</span> 8100 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 8101<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8102and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8103For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8104values used by the camera device for the transform and gains 8105will be available in the capture result for this request.<wbr/></p></span> 8106 </li> 8107 <li> 8108 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span> 8109 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8110the camera device uses incandescent light as the assumed scene 8111illumination for white balance.<wbr/></p> 8112<p>While the exact white balance transforms are up to the 8113camera device,<wbr/> they will approximately match the CIE 8114standard illuminant A.<wbr/></p> 8115<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8116and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8117For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8118values used by the camera device for the transform and gains 8119will be available in the capture result for this request.<wbr/></p></span> 8120 </li> 8121 <li> 8122 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> 8123 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8124the camera device uses fluorescent light as the assumed scene 8125illumination for white balance.<wbr/></p> 8126<p>While the exact white balance transforms are up to the 8127camera device,<wbr/> they will approximately match the CIE 8128standard illuminant F2.<wbr/></p> 8129<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8130and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8131For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8132values used by the camera device for the transform and gains 8133will be available in the capture result for this request.<wbr/></p></span> 8134 </li> 8135 <li> 8136 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span> 8137 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8138the camera device uses warm fluorescent light as the assumed scene 8139illumination for white balance.<wbr/></p> 8140<p>While the exact white balance transforms are up to the 8141camera device,<wbr/> they will approximately match the CIE 8142standard illuminant F4.<wbr/></p> 8143<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8144and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8145For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8146values used by the camera device for the transform and gains 8147will be available in the capture result for this request.<wbr/></p></span> 8148 </li> 8149 <li> 8150 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> 8151 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8152the camera device uses daylight light as the assumed scene 8153illumination for white balance.<wbr/></p> 8154<p>While the exact white balance transforms are up to the 8155camera device,<wbr/> they will approximately match the CIE 8156standard illuminant D65.<wbr/></p> 8157<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8158and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8159For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8160values used by the camera device for the transform and gains 8161will be available in the capture result for this request.<wbr/></p></span> 8162 </li> 8163 <li> 8164 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span> 8165 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8166the camera device uses cloudy daylight light as the assumed scene 8167illumination for white balance.<wbr/></p> 8168<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8169and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8170For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8171values used by the camera device for the transform and gains 8172will be available in the capture result for this request.<wbr/></p></span> 8173 </li> 8174 <li> 8175 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span> 8176 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8177the camera device uses twilight light as the assumed scene 8178illumination for white balance.<wbr/></p> 8179<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8180and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8181For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8182values used by the camera device for the transform and gains 8183will be available in the capture result for this request.<wbr/></p></span> 8184 </li> 8185 <li> 8186 <span class="entry_type_enum_name">SHADE (v3.2)</span> 8187 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 8188the camera device uses shade light as the assumed scene 8189illumination for white balance.<wbr/></p> 8190<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 8191and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8192For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8193values used by the camera device for the transform and gains 8194will be available in the capture result for this request.<wbr/></p></span> 8195 </li> 8196 </ul> 8197 8198 </td> <!-- entry_type --> 8199 8200 <td class="entry_description"> 8201 <p>Whether auto-white balance (AWB) is currently setting the color 8202transform fields,<wbr/> and what its illumination target 8203is.<wbr/></p> 8204 </td> 8205 8206 <td class="entry_units"> 8207 </td> 8208 8209 <td class="entry_range"> 8210 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 8211 </td> 8212 8213 <td class="entry_hal_version"> 8214 <p>3.<wbr/>2</p> 8215 </td> 8216 8217 <td class="entry_tags"> 8218 <ul class="entry_tags"> 8219 <li><a href="#tag_BC">BC</a></li> 8220 </ul> 8221 </td> 8222 8223 </tr> 8224 <tr class="entries_header"> 8225 <th class="th_details" colspan="6">Details</th> 8226 </tr> 8227 <tr class="entry_cont"> 8228 <td class="entry_details" colspan="6"> 8229 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 8230<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 8231routine is enabled,<wbr/> overriding the application's selected 8232<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 8233<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> 8234is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 8235also 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 8236setting AE mode to OFF.<wbr/></p> 8237<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 8238routine is disabled.<wbr/> The application manually controls the white 8239balance 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> 8240and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 8241<p>When set to any other modes,<wbr/> the camera device's auto-white 8242balance routine is disabled.<wbr/> The camera device uses each 8243particular illumination target for white balance 8244adjustment.<wbr/> The application's values for 8245<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 8246<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 8247<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 8248 </td> 8249 </tr> 8250 8251 8252 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8253 <!-- end of entry --> 8254 8255 8256 <tr class="entry" id="dynamic_android.control.awbRegions"> 8257 <td class="entry_name 8258 " rowspan="5"> 8259 android.<wbr/>control.<wbr/>awb<wbr/>Regions 8260 </td> 8261 <td class="entry_type"> 8262 <span class="entry_type_name">int32</span> 8263 <span class="entry_type_container">x</span> 8264 8265 <span class="entry_type_array"> 8266 5 x area_count 8267 </span> 8268 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 8269 8270 8271 8272 8273 8274 8275 </td> <!-- entry_type --> 8276 8277 <td class="entry_description"> 8278 <p>List of metering areas to use for auto-white-balance illuminant 8279estimation.<wbr/></p> 8280 </td> 8281 8282 <td class="entry_units"> 8283 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 8284 </td> 8285 8286 <td class="entry_range"> 8287 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 8288<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 8289 </td> 8290 8291 <td class="entry_hal_version"> 8292 <p>3.<wbr/>2</p> 8293 </td> 8294 8295 <td class="entry_tags"> 8296 <ul class="entry_tags"> 8297 <li><a href="#tag_BC">BC</a></li> 8298 </ul> 8299 </td> 8300 8301 </tr> 8302 <tr class="entries_header"> 8303 <th class="th_details" colspan="6">Details</th> 8304 </tr> 8305 <tr class="entry_cont"> 8306 <td class="entry_details" colspan="6"> 8307 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 8308Otherwise will always be present.<wbr/></p> 8309<p>The maximum number of regions supported by the device is determined by the value 8310of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 8311<p>The coordinate system is based on the active pixel array,<wbr/> 8312with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 8313(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 8314<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 8315bottom-right pixel in the active pixel array.<wbr/></p> 8316<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 8317for every pixel in the area.<wbr/> This means that a large metering area 8318with the same weight as a smaller area will have more effect in 8319the metering result.<wbr/> Metering areas can partially overlap and the 8320camera device will add the weights in the overlap region.<wbr/></p> 8321<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 8322only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 83230 weight is ignored.<wbr/></p> 8324<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 8325camera device.<wbr/></p> 8326<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 8327capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 8328region and output only the intersection rectangle as the metering region in the result 8329metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 8330not reported in the result metadata.<wbr/></p> 8331 </td> 8332 </tr> 8333 8334 <tr class="entries_header"> 8335 <th class="th_details" colspan="6">HAL Implementation Details</th> 8336 </tr> 8337 <tr class="entry_cont"> 8338 <td class="entry_details" colspan="6"> 8339 <p>The HAL level representation of MeteringRectangle[] is a 8340int[5 * area_<wbr/>count].<wbr/> 8341Every five elements represent a metering region of 8342(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 8343The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 8344exclusive on xmax and ymax.<wbr/></p> 8345 </td> 8346 </tr> 8347 8348 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8349 <!-- end of entry --> 8350 8351 8352 <tr class="entry" id="dynamic_android.control.captureIntent"> 8353 <td class="entry_name 8354 " rowspan="3"> 8355 android.<wbr/>control.<wbr/>capture<wbr/>Intent 8356 </td> 8357 <td class="entry_type"> 8358 <span class="entry_type_name entry_type_name_enum">byte</span> 8359 8360 <span class="entry_type_visibility"> [public]</span> 8361 8362 8363 <span class="entry_type_hwlevel">[legacy] </span> 8364 8365 8366 8367 <ul class="entry_type_enum"> 8368 <li> 8369 <span class="entry_type_enum_name">CUSTOM (v3.2)</span> 8370 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 8371categories.<wbr/> The camera device will default to preview-like 8372behavior.<wbr/></p></span> 8373 </li> 8374 <li> 8375 <span class="entry_type_enum_name">PREVIEW (v3.2)</span> 8376 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 8377<p>The precapture trigger may be used to start off a metering 8378w/<wbr/>flash sequence.<wbr/></p></span> 8379 </li> 8380 <li> 8381 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span> 8382 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 8383use case.<wbr/></p> 8384<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 8385 </li> 8386 <li> 8387 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span> 8388 <span class="entry_type_enum_notes"><p>This request is for a video recording 8389use case.<wbr/></p></span> 8390 </li> 8391 <li> 8392 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span> 8393 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 8394image while recording video) use case.<wbr/></p> 8395<p>The camera device should take the highest-quality image 8396possible (given the other settings) without disrupting the 8397frame rate of video recording.<wbr/> </p></span> 8398 </li> 8399 <li> 8400 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 8401 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 8402application will stream full-resolution images and 8403reprocess one or several later for a final 8404capture.<wbr/></p></span> 8405 </li> 8406 <li> 8407 <span class="entry_type_enum_name">MANUAL (v3.2)</span> 8408 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 8409the applications want to directly control the capture parameters.<wbr/></p> 8410<p>For example,<wbr/> the application may wish to manually control 8411<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> 8412 </li> 8413 <li> 8414 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> 8415 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where 8416the application will use camera and inertial sensor data to 8417locate and track objects in the world.<wbr/></p> 8418<p>The camera device auto-exposure routine will limit the exposure time 8419of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span> 8420 </li> 8421 </ul> 8422 8423 </td> <!-- entry_type --> 8424 8425 <td class="entry_description"> 8426 <p>Information to the camera device 3A (auto-exposure,<wbr/> 8427auto-focus,<wbr/> auto-white balance) routines about the purpose 8428of this capture,<wbr/> to help the camera device to decide optimal 3A 8429strategy.<wbr/></p> 8430 </td> 8431 8432 <td class="entry_units"> 8433 </td> 8434 8435 <td class="entry_range"> 8436 </td> 8437 8438 <td class="entry_hal_version"> 8439 <p>3.<wbr/>2</p> 8440 </td> 8441 8442 <td class="entry_tags"> 8443 <ul class="entry_tags"> 8444 <li><a href="#tag_BC">BC</a></li> 8445 </ul> 8446 </td> 8447 8448 </tr> 8449 <tr class="entries_header"> 8450 <th class="th_details" colspan="6">Details</th> 8451 </tr> 8452 <tr class="entry_cont"> 8453 <td class="entry_details" colspan="6"> 8454 <p>This control (except for MANUAL) is only effective if 8455<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 8456<p>All intents are supported by all devices,<wbr/> except that: 8457 * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 8458PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> 8459 * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 8460MANUAL_<wbr/>SENSOR.<wbr/> 8461 * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 8462MOTION_<wbr/>TRACKING.<wbr/></p> 8463 </td> 8464 </tr> 8465 8466 8467 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8468 <!-- end of entry --> 8469 8470 8471 <tr class="entry" id="dynamic_android.control.awbState"> 8472 <td class="entry_name 8473 " rowspan="3"> 8474 android.<wbr/>control.<wbr/>awb<wbr/>State 8475 </td> 8476 <td class="entry_type"> 8477 <span class="entry_type_name entry_type_name_enum">byte</span> 8478 8479 <span class="entry_type_visibility"> [public]</span> 8480 8481 8482 <span class="entry_type_hwlevel">[limited] </span> 8483 8484 8485 8486 <ul class="entry_type_enum"> 8487 <li> 8488 <span class="entry_type_enum_name">INACTIVE (v3.2)</span> 8489 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> 8490<p>When a camera device is opened,<wbr/> it starts in this 8491state.<wbr/> This is a transient state,<wbr/> the camera device may 8492skip reporting this state in capture 8493result.<wbr/></p></span> 8494 </li> 8495 <li> 8496 <span class="entry_type_enum_name">SEARCHING (v3.2)</span> 8497 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 8498values for the current scene.<wbr/></p> 8499<p>This is a transient state,<wbr/> the camera device 8500may skip reporting this state in capture result.<wbr/></p></span> 8501 </li> 8502 <li> 8503 <span class="entry_type_enum_name">CONVERGED (v3.2)</span> 8504 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 8505current scene.<wbr/></p></span> 8506 </li> 8507 <li> 8508 <span class="entry_type_enum_name">LOCKED (v3.2)</span> 8509 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 8510 </li> 8511 </ul> 8512 8513 </td> <!-- entry_type --> 8514 8515 <td class="entry_description"> 8516 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p> 8517 </td> 8518 8519 <td class="entry_units"> 8520 </td> 8521 8522 <td class="entry_range"> 8523 </td> 8524 8525 <td class="entry_hal_version"> 8526 <p>3.<wbr/>2</p> 8527 </td> 8528 8529 <td class="entry_tags"> 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>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 8539resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 8540or <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 8541the algorithm states to INACTIVE.<wbr/></p> 8542<p>The camera device can do several state transitions between two results,<wbr/> if it is 8543allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 8544a result.<wbr/></p> 8545<p>The state in the result is the state for this image (in sync with this image): if 8546AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 8547be good to use.<wbr/></p> 8548<p>Below are state transition tables for different AWB modes.<wbr/></p> 8549<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 8550<table> 8551<thead> 8552<tr> 8553<th align="center">State</th> 8554<th align="center">Transition Cause</th> 8555<th align="center">New State</th> 8556<th align="center">Notes</th> 8557</tr> 8558</thead> 8559<tbody> 8560<tr> 8561<td align="center">INACTIVE</td> 8562<td align="center"></td> 8563<td align="center">INACTIVE</td> 8564<td align="center">Camera device auto white balance algorithm is disabled</td> 8565</tr> 8566</tbody> 8567</table> 8568<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 8569<table> 8570<thead> 8571<tr> 8572<th align="center">State</th> 8573<th align="center">Transition Cause</th> 8574<th align="center">New State</th> 8575<th align="center">Notes</th> 8576</tr> 8577</thead> 8578<tbody> 8579<tr> 8580<td align="center">INACTIVE</td> 8581<td align="center">Camera device initiates AWB scan</td> 8582<td align="center">SEARCHING</td> 8583<td align="center">Values changing</td> 8584</tr> 8585<tr> 8586<td align="center">INACTIVE</td> 8587<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 8588<td align="center">LOCKED</td> 8589<td align="center">Values locked</td> 8590</tr> 8591<tr> 8592<td align="center">SEARCHING</td> 8593<td align="center">Camera device finishes AWB scan</td> 8594<td align="center">CONVERGED</td> 8595<td align="center">Good values,<wbr/> not changing</td> 8596</tr> 8597<tr> 8598<td align="center">SEARCHING</td> 8599<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 8600<td align="center">LOCKED</td> 8601<td align="center">Values locked</td> 8602</tr> 8603<tr> 8604<td align="center">CONVERGED</td> 8605<td align="center">Camera device initiates AWB scan</td> 8606<td align="center">SEARCHING</td> 8607<td align="center">Values changing</td> 8608</tr> 8609<tr> 8610<td align="center">CONVERGED</td> 8611<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 8612<td align="center">LOCKED</td> 8613<td align="center">Values locked</td> 8614</tr> 8615<tr> 8616<td align="center">LOCKED</td> 8617<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 8618<td align="center">SEARCHING</td> 8619<td align="center">Values not good after unlock</td> 8620</tr> 8621</tbody> 8622</table> 8623<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 8624without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 8625can be skipped in that manner is called a transient state.<wbr/></p> 8626<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 8627listed in above table,<wbr/> it is also legal for the camera device to skip one or more 8628transient states between two results.<wbr/> See below table for examples:</p> 8629<table> 8630<thead> 8631<tr> 8632<th align="center">State</th> 8633<th align="center">Transition Cause</th> 8634<th align="center">New State</th> 8635<th align="center">Notes</th> 8636</tr> 8637</thead> 8638<tbody> 8639<tr> 8640<td align="center">INACTIVE</td> 8641<td align="center">Camera device finished AWB scan</td> 8642<td align="center">CONVERGED</td> 8643<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 8644</tr> 8645<tr> 8646<td align="center">LOCKED</td> 8647<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 8648<td align="center">CONVERGED</td> 8649<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 8650</tr> 8651</tbody> 8652</table> 8653 </td> 8654 </tr> 8655 8656 8657 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8658 <!-- end of entry --> 8659 8660 8661 <tr class="entry" id="dynamic_android.control.effectMode"> 8662 <td class="entry_name 8663 " rowspan="3"> 8664 android.<wbr/>control.<wbr/>effect<wbr/>Mode 8665 </td> 8666 <td class="entry_type"> 8667 <span class="entry_type_name entry_type_name_enum">byte</span> 8668 8669 <span class="entry_type_visibility"> [public]</span> 8670 8671 8672 <span class="entry_type_hwlevel">[legacy] </span> 8673 8674 8675 8676 <ul class="entry_type_enum"> 8677 <li> 8678 <span class="entry_type_enum_name">OFF (v3.2)</span> 8679 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 8680 </li> 8681 <li> 8682 <span class="entry_type_enum_name">MONO (v3.2)</span> 8683 <span class="entry_type_enum_optional">[optional]</span> 8684 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 8685a single color.<wbr/></p> 8686<p>This will typically be grayscale.<wbr/></p></span> 8687 </li> 8688 <li> 8689 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span> 8690 <span class="entry_type_enum_optional">[optional]</span> 8691 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 8692are inverted.<wbr/></p></span> 8693 </li> 8694 <li> 8695 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span> 8696 <span class="entry_type_enum_optional">[optional]</span> 8697 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 8698image is wholly or partially reversed in 8699tone.<wbr/></p></span> 8700 </li> 8701 <li> 8702 <span class="entry_type_enum_name">SEPIA (v3.2)</span> 8703 <span class="entry_type_enum_optional">[optional]</span> 8704 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 8705gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 8706 </li> 8707 <li> 8708 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span> 8709 <span class="entry_type_enum_optional">[optional]</span> 8710 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 8711discrete regions of tone rather than a continuous 8712gradient of tones.<wbr/></p></span> 8713 </li> 8714 <li> 8715 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span> 8716 <span class="entry_type_enum_optional">[optional]</span> 8717 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 8718as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 8719 </li> 8720 <li> 8721 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span> 8722 <span class="entry_type_enum_optional">[optional]</span> 8723 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 8724as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 8725 </li> 8726 <li> 8727 <span class="entry_type_enum_name">AQUA (v3.2)</span> 8728 <span class="entry_type_enum_optional">[optional]</span> 8729 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 8730 </li> 8731 </ul> 8732 8733 </td> <!-- entry_type --> 8734 8735 <td class="entry_description"> 8736 <p>A special color effect to apply.<wbr/></p> 8737 </td> 8738 8739 <td class="entry_units"> 8740 </td> 8741 8742 <td class="entry_range"> 8743 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 8744 </td> 8745 8746 <td class="entry_hal_version"> 8747 <p>3.<wbr/>2</p> 8748 </td> 8749 8750 <td class="entry_tags"> 8751 <ul class="entry_tags"> 8752 <li><a href="#tag_BC">BC</a></li> 8753 </ul> 8754 </td> 8755 8756 </tr> 8757 <tr class="entries_header"> 8758 <th class="th_details" colspan="6">Details</th> 8759 </tr> 8760 <tr class="entry_cont"> 8761 <td class="entry_details" colspan="6"> 8762 <p>When this mode is set,<wbr/> a color effect will be applied 8763to images produced by the camera device.<wbr/> The interpretation 8764and implementation of these color effects is left to the 8765implementor of the camera device,<wbr/> and should not be 8766depended on to be consistent (or present) across all 8767devices.<wbr/></p> 8768 </td> 8769 </tr> 8770 8771 8772 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8773 <!-- end of entry --> 8774 8775 8776 <tr class="entry" id="dynamic_android.control.mode"> 8777 <td class="entry_name 8778 " rowspan="3"> 8779 android.<wbr/>control.<wbr/>mode 8780 </td> 8781 <td class="entry_type"> 8782 <span class="entry_type_name entry_type_name_enum">byte</span> 8783 8784 <span class="entry_type_visibility"> [public]</span> 8785 8786 8787 <span class="entry_type_hwlevel">[legacy] </span> 8788 8789 8790 8791 <ul class="entry_type_enum"> 8792 <li> 8793 <span class="entry_type_enum_name">OFF (v3.2)</span> 8794 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 8795<p>All control by the device's metering and focusing (3A) 8796routines is disabled,<wbr/> and no other settings in 8797android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 8798<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 8799device to select post-processing values for processing 8800blocks that do not allow for manual control,<wbr/> or are not 8801exposed by the camera API.<wbr/></p> 8802<p>However,<wbr/> the camera device's 3A routines may continue to 8803collect statistics and update their internal state so that 8804when control is switched to AUTO mode,<wbr/> good control values 8805can be immediately applied.<wbr/></p></span> 8806 </li> 8807 <li> 8808 <span class="entry_type_enum_name">AUTO (v3.2)</span> 8809 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 8810<p>Manual control of capture parameters is disabled.<wbr/> All 8811controls in android.<wbr/>control.<wbr/>* besides sceneMode take 8812effect.<wbr/></p></span> 8813 </li> 8814 <li> 8815 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span> 8816 <span class="entry_type_enum_optional">[optional]</span> 8817 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 8818<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 8819control.<wbr/>afMode controls; the camera device will ignore 8820those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 8821FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 8822This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 8823<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 8824contain some modes other than DISABLED).<wbr/></p></span> 8825 </li> 8826 <li> 8827 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span> 8828 <span class="entry_type_enum_optional">[optional]</span> 8829 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 8830used by camera device background auto-exposure,<wbr/> auto-white balance and 8831auto-focus algorithms (3A) to update their statistics.<wbr/></p> 8832<p>Specifically,<wbr/> the 3A routines are locked to the last 8833values set from a request with AUTO,<wbr/> OFF,<wbr/> or 8834USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 8835collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 8836discarded by the camera device.<wbr/></p></span> 8837 </li> 8838 </ul> 8839 8840 </td> <!-- entry_type --> 8841 8842 <td class="entry_description"> 8843 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 8844routines.<wbr/></p> 8845 </td> 8846 8847 <td class="entry_units"> 8848 </td> 8849 8850 <td class="entry_range"> 8851 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 8852 </td> 8853 8854 <td class="entry_hal_version"> 8855 <p>3.<wbr/>2</p> 8856 </td> 8857 8858 <td class="entry_tags"> 8859 <ul class="entry_tags"> 8860 <li><a href="#tag_BC">BC</a></li> 8861 </ul> 8862 </td> 8863 8864 </tr> 8865 <tr class="entries_header"> 8866 <th class="th_details" colspan="6">Details</th> 8867 </tr> 8868 <tr class="entry_cont"> 8869 <td class="entry_details" colspan="6"> 8870 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 8871by the camera device is disabled.<wbr/> The application must set the fields for 8872capture parameters itself.<wbr/></p> 8873<p>When set to AUTO,<wbr/> the individual algorithm controls in 8874android.<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> 8875<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 8876android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device 8877implements one of the scene mode settings (such as ACTION,<wbr/> 8878SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode 88793A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 8880<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 8881is that this frame will not be used by camera device background 3A statistics 8882update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 8883where the application doesn't want a 3A manual control capture to affect 8884the subsequent auto 3A capture results.<wbr/></p> 8885 </td> 8886 </tr> 8887 8888 8889 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 8890 <!-- end of entry --> 8891 8892 8893 <tr class="entry" id="dynamic_android.control.sceneMode"> 8894 <td class="entry_name 8895 " rowspan="5"> 8896 android.<wbr/>control.<wbr/>scene<wbr/>Mode 8897 </td> 8898 <td class="entry_type"> 8899 <span class="entry_type_name entry_type_name_enum">byte</span> 8900 8901 <span class="entry_type_visibility"> [public]</span> 8902 8903 8904 <span class="entry_type_hwlevel">[legacy] </span> 8905 8906 8907 8908 <ul class="entry_type_enum"> 8909 <li> 8910 <span class="entry_type_enum_name">DISABLED (v3.2)</span> 8911 <span class="entry_type_enum_value">0</span> 8912 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 8913 </li> 8914 <li> 8915 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span> 8916 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 8917detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 8918auto-exposure routines.<wbr/></p> 8919<p>If face detection statistics are disabled 8920(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/> 8921this should still operate correctly (but will not return 8922face detection statistics to the framework).<wbr/></p> 8923<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8924<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> 8925remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 8926 </li> 8927 <li> 8928 <span class="entry_type_enum_name">ACTION (v3.2)</span> 8929 <span class="entry_type_enum_optional">[optional]</span> 8930 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 8931<p>Similar to SPORTS.<wbr/></p></span> 8932 </li> 8933 <li> 8934 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span> 8935 <span class="entry_type_enum_optional">[optional]</span> 8936 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 8937 </li> 8938 <li> 8939 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span> 8940 <span class="entry_type_enum_optional">[optional]</span> 8941 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 8942 </li> 8943 <li> 8944 <span class="entry_type_enum_name">NIGHT (v3.2)</span> 8945 <span class="entry_type_enum_optional">[optional]</span> 8946 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 8947 </li> 8948 <li> 8949 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span> 8950 <span class="entry_type_enum_optional">[optional]</span> 8951 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 8952settings.<wbr/></p></span> 8953 </li> 8954 <li> 8955 <span class="entry_type_enum_name">THEATRE (v3.2)</span> 8956 <span class="entry_type_enum_optional">[optional]</span> 8957 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 8958remain off.<wbr/></p></span> 8959 </li> 8960 <li> 8961 <span class="entry_type_enum_name">BEACH (v3.2)</span> 8962 <span class="entry_type_enum_optional">[optional]</span> 8963 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 8964 </li> 8965 <li> 8966 <span class="entry_type_enum_name">SNOW (v3.2)</span> 8967 <span class="entry_type_enum_optional">[optional]</span> 8968 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 8969 </li> 8970 <li> 8971 <span class="entry_type_enum_name">SUNSET (v3.2)</span> 8972 <span class="entry_type_enum_optional">[optional]</span> 8973 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 8974 </li> 8975 <li> 8976 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span> 8977 <span class="entry_type_enum_optional">[optional]</span> 8978 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 8979device motion (for example: due to hand shake).<wbr/></p></span> 8980 </li> 8981 <li> 8982 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span> 8983 <span class="entry_type_enum_optional">[optional]</span> 8984 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 8985 </li> 8986 <li> 8987 <span class="entry_type_enum_name">SPORTS (v3.2)</span> 8988 <span class="entry_type_enum_optional">[optional]</span> 8989 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 8990<p>Similar to ACTION.<wbr/></p></span> 8991 </li> 8992 <li> 8993 <span class="entry_type_enum_name">PARTY (v3.2)</span> 8994 <span class="entry_type_enum_optional">[optional]</span> 8995 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 8996people.<wbr/></p></span> 8997 </li> 8998 <li> 8999 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span> 9000 <span class="entry_type_enum_optional">[optional]</span> 9001 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 9002is a flame.<wbr/></p></span> 9003 </li> 9004 <li> 9005 <span class="entry_type_enum_name">BARCODE (v3.2)</span> 9006 <span class="entry_type_enum_optional">[optional]</span> 9007 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 9008for use by camera applications that wish to read the 9009barcode value.<wbr/></p></span> 9010 </li> 9011 <li> 9012 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span> 9013 <span class="entry_type_enum_deprecated">[deprecated]</span> 9014 <span class="entry_type_enum_optional">[optional]</span> 9015 <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> 9016and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 9017for high speed video recording.<wbr/></p> 9018<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 9019<p>The supported high speed video sizes and fps ranges are specified in 9020<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 9021output frame rates,<wbr/> the application is only allowed to select video size 9022and fps range combinations listed in this static metadata.<wbr/> The fps range 9023can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 9024<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 9025ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 9026controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 9027and post-processing parameters is possible.<wbr/> All other controls operate the 9028same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 9029android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 9030<ul> 9031<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 9032<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 9033<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 9034<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 9035<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 9036<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 9037<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 9038<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 9039<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 9040<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 9041</ul> 9042<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 9043<ul> 9044<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> 9045<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 9046<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 9047<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 9048</ul> 9049<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 9050be lower than what camera can output,<wbr/> depending on the destination Surfaces for 9051the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 9052the application need check if the video encoder is capable of supporting the 9053high frame rate for a given video size,<wbr/> or it will end up with lower recording 9054frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 9055rate will be bounded by the screen refresh rate.<wbr/></p> 9056<p>The camera device will only support up to 2 output high speed streams 9057(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 9058in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 9059<ul> 9060<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 9061format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 9062min(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> 9063<li>The stream sizes are selected from the sizes reported by 9064<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 9065<li>No processed non-stalling or raw streams are configured.<wbr/></li> 9066</ul> 9067<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 9068<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/> 9069the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 9070and the returned capture result metadata will give the fps range choosen 9071by the camera device.<wbr/></p> 9072<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 9073reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 9074the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 9075 </li> 9076 <li> 9077 <span class="entry_type_enum_name">HDR (v3.2)</span> 9078 <span class="entry_type_enum_optional">[optional]</span> 9079 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 9080<p>In this scene mode,<wbr/> the camera device captures images 9081that keep a larger range of scene illumination levels 9082visible in the final image.<wbr/> For example,<wbr/> when taking a 9083picture of a object in front of a bright window,<wbr/> both 9084the object and the scene through the window may be 9085visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 9086one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 9087HDR mode generally takes much longer to capture a single 9088image,<wbr/> has no user control,<wbr/> and may have other artifacts 9089depending on the HDR method used.<wbr/></p> 9090<p>Therefore,<wbr/> HDR captures operate at a much slower rate 9091than regular captures.<wbr/></p> 9092<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 9093is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 9094STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 9095using a high dynamic range capture technique.<wbr/> On LEGACY 9096devices,<wbr/> captures that target a JPEG-format output will 9097be captured with HDR,<wbr/> and the capture intent is not 9098relevant.<wbr/></p> 9099<p>The HDR capture may involve the device capturing a burst 9100of images internally and combining them into one,<wbr/> or it 9101may involve the device using specialized high dynamic 9102range capture hardware.<wbr/> In all cases,<wbr/> a single image is 9103produced in response to a capture request submitted 9104while in HDR mode.<wbr/></p> 9105<p>Since substantial post-processing is generally needed to 9106produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG 9107outputs are supported for LIMITED/<wbr/>FULL device HDR 9108captures,<wbr/> and only JPEG outputs are supported for LEGACY 9109HDR captures.<wbr/> Using a RAW output for HDR capture is not 9110supported.<wbr/></p> 9111<p>Some devices may also support always-on HDR,<wbr/> which 9112applies HDR processing at full frame rate.<wbr/> For these 9113devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also 9114produce an HDR output with no frame rate impact compared 9115to normal operation,<wbr/> though the quality may be lower 9116than for STILL_<wbr/>CAPTURE intents.<wbr/></p> 9117<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types 9118or capture intents,<wbr/> the images captured will be as if 9119the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> 9120 </li> 9121 <li> 9122 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span> 9123 <span class="entry_type_enum_optional">[optional]</span> 9124 <span class="entry_type_enum_hidden">[hidden]</span> 9125 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 9126device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 9127under low light conditions.<wbr/></p> 9128<p>The camera device may be tuned to expose the images in a reduced 9129sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 9130if 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/> 9131the camera device auto-exposure routine tuning process may limit the actual 9132exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 9133exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 9134low light may be under-exposed when the sensor max exposure time (bounded by the 9135<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 9136ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 9137camera device auto-exposure routine to increase the sensitivity up to the max 9138sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 9139dark and the max exposure time is reached.<wbr/> The captured images may be noisier 9140compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 9141recommended that the application only use this scene mode when it is capable of 9142reducing the noise level of the captured images.<wbr/></p> 9143<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 9144<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> 9145remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 9146 </li> 9147 <li> 9148 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span> 9149 <span class="entry_type_enum_optional">[optional]</span> 9150 <span class="entry_type_enum_hidden">[hidden]</span> 9151 <span class="entry_type_enum_value">100</span> 9152 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 9153<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 9154customized scene modes.<wbr/></p></span> 9155 </li> 9156 <li> 9157 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span> 9158 <span class="entry_type_enum_optional">[optional]</span> 9159 <span class="entry_type_enum_hidden">[hidden]</span> 9160 <span class="entry_type_enum_value">127</span> 9161 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 9162<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 9163customized scene modes.<wbr/></p></span> 9164 </li> 9165 </ul> 9166 9167 </td> <!-- entry_type --> 9168 9169 <td class="entry_description"> 9170 <p>Control for which scene mode is currently active.<wbr/></p> 9171 </td> 9172 9173 <td class="entry_units"> 9174 </td> 9175 9176 <td class="entry_range"> 9177 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 9178 </td> 9179 9180 <td class="entry_hal_version"> 9181 <p>3.<wbr/>2</p> 9182 </td> 9183 9184 <td class="entry_tags"> 9185 <ul class="entry_tags"> 9186 <li><a href="#tag_BC">BC</a></li> 9187 </ul> 9188 </td> 9189 9190 </tr> 9191 <tr class="entries_header"> 9192 <th class="th_details" colspan="6">Details</th> 9193 </tr> 9194 <tr class="entry_cont"> 9195 <td class="entry_details" colspan="6"> 9196 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 9197capture settings.<wbr/></p> 9198<p>This is the mode that that is active when 9199<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 9200disable <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> 9201while in use.<wbr/></p> 9202<p>The interpretation and implementation of these scene modes is left 9203to the implementor of the camera device.<wbr/> Their behavior will not be 9204consistent across all devices,<wbr/> and any given device may only implement 9205a subset of these modes.<wbr/></p> 9206 </td> 9207 </tr> 9208 9209 <tr class="entries_header"> 9210 <th class="th_details" colspan="6">HAL Implementation Details</th> 9211 </tr> 9212 <tr class="entry_cont"> 9213 <td class="entry_details" colspan="6"> 9214 <p>HAL implementations that include scene modes are expected to provide 9215the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 9216<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 9217<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 9218<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 9219HAL must list supported video size and fps range in 9220<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/> 9221if the HAL has two different sensor configurations for normal streaming mode and high 9222speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the 9223HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy 9224HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 9225<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 9226capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 9227 </td> 9228 </tr> 9229 9230 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9231 <!-- end of entry --> 9232 9233 9234 <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> 9235 <td class="entry_name 9236 " rowspan="3"> 9237 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 9238 </td> 9239 <td class="entry_type"> 9240 <span class="entry_type_name entry_type_name_enum">byte</span> 9241 9242 <span class="entry_type_visibility"> [public]</span> 9243 9244 9245 <span class="entry_type_hwlevel">[legacy] </span> 9246 9247 9248 9249 <ul class="entry_type_enum"> 9250 <li> 9251 <span class="entry_type_enum_name">OFF (v3.2)</span> 9252 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 9253 </li> 9254 <li> 9255 <span class="entry_type_enum_name">ON (v3.2)</span> 9256 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 9257 </li> 9258 </ul> 9259 9260 </td> <!-- entry_type --> 9261 9262 <td class="entry_description"> 9263 <p>Whether video stabilization is 9264active.<wbr/></p> 9265 </td> 9266 9267 <td class="entry_units"> 9268 </td> 9269 9270 <td class="entry_range"> 9271 </td> 9272 9273 <td class="entry_hal_version"> 9274 <p>3.<wbr/>2</p> 9275 </td> 9276 9277 <td class="entry_tags"> 9278 <ul class="entry_tags"> 9279 <li><a href="#tag_BC">BC</a></li> 9280 </ul> 9281 </td> 9282 9283 </tr> 9284 <tr class="entries_header"> 9285 <th class="th_details" colspan="6">Details</th> 9286 </tr> 9287 <tr class="entry_cont"> 9288 <td class="entry_details" colspan="6"> 9289 <p>Video stabilization automatically warps images from 9290the camera in order to stabilize motion between consecutive frames.<wbr/></p> 9291<p>If enabled,<wbr/> video stabilization can modify the 9292<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 9293<p>Switching between different video stabilization modes may take several 9294frames to initialize,<wbr/> the camera device will report the current mode 9295in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 9296the video stabilization modes in the first several capture results may 9297still be "OFF",<wbr/> and it will become "ON" when the initialization is 9298done.<wbr/></p> 9299<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 9300stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 9301that an output targeting a MediaRecorder or MediaCodec will be stabilized if 9302the recording resolution is less than or equal to 1920 x 1080 (width less than 9303or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 9304frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 9305<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 9306OFF if the recording output is not stabilized,<wbr/> or if there are no output 9307Surface types that can be stabilized.<wbr/></p> 9308<p>If a camera device supports both this mode and OIS 9309(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 9310produce undesirable interaction,<wbr/> so it is recommended not to enable 9311both at the same time.<wbr/></p> 9312 </td> 9313 </tr> 9314 9315 9316 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9317 <!-- end of entry --> 9318 9319 9320 <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost"> 9321 <td class="entry_name 9322 " rowspan="3"> 9323 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost 9324 </td> 9325 <td class="entry_type"> 9326 <span class="entry_type_name">int32</span> 9327 9328 <span class="entry_type_visibility"> [public]</span> 9329 9330 9331 9332 9333 9334 9335 </td> <!-- entry_type --> 9336 9337 <td class="entry_description"> 9338 <p>The amount of additional sensitivity boost applied to output images 9339after RAW sensor data is captured.<wbr/></p> 9340 </td> 9341 9342 <td class="entry_units"> 9343 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 9344 </td> 9345 9346 <td class="entry_range"> 9347 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p> 9348 </td> 9349 9350 <td class="entry_hal_version"> 9351 <p>3.<wbr/>2</p> 9352 </td> 9353 9354 <td class="entry_tags"> 9355 </td> 9356 9357 </tr> 9358 <tr class="entries_header"> 9359 <th class="th_details" colspan="6">Details</th> 9360 </tr> 9361 <tr class="entry_cont"> 9362 <td class="entry_details" colspan="6"> 9363 <p>Some camera devices support additional digital sensitivity boosting in the 9364camera processing pipeline after sensor RAW image is captured.<wbr/> 9365Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not 9366have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> 9367<p>This key will be <code>null</code> for devices that do not support any RAW format 9368outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 9369present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 9370list <code>100</code> in this key.<wbr/></p> 9371<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the 9372boost to the nearest supported value.<wbr/> 9373The final boost value used will be available in the output capture result.<wbr/></p> 9374<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images 9375of such device will have the total sensitivity of 9376<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> 9377The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> 9378<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 9379OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 9380 </td> 9381 </tr> 9382 9383 9384 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9385 <!-- end of entry --> 9386 9387 9388 <tr class="entry" id="dynamic_android.control.enableZsl"> 9389 <td class="entry_name 9390 " rowspan="5"> 9391 android.<wbr/>control.<wbr/>enable<wbr/>Zsl 9392 </td> 9393 <td class="entry_type"> 9394 <span class="entry_type_name entry_type_name_enum">byte</span> 9395 9396 <span class="entry_type_visibility"> [public as boolean]</span> 9397 9398 9399 9400 9401 9402 <ul class="entry_type_enum"> 9403 <li> 9404 <span class="entry_type_enum_name">FALSE (v3.2)</span> 9405 <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 9406after previous requests.<wbr/></p></span> 9407 </li> 9408 <li> 9409 <span class="entry_type_enum_name">TRUE (v3.2)</span> 9410 <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 9411captured before previous requests.<wbr/></p></span> 9412 </li> 9413 </ul> 9414 9415 </td> <!-- entry_type --> 9416 9417 <td class="entry_description"> 9418 <p>Allow camera device to enable zero-shutter-lag mode for requests with 9419<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p> 9420 </td> 9421 9422 <td class="entry_units"> 9423 </td> 9424 9425 <td class="entry_range"> 9426 </td> 9427 9428 <td class="entry_hal_version"> 9429 <p>3.<wbr/>2</p> 9430 </td> 9431 9432 <td class="entry_tags"> 9433 </td> 9434 9435 </tr> 9436 <tr class="entries_header"> 9437 <th class="th_details" colspan="6">Details</th> 9438 </tr> 9439 <tr class="entry_cont"> 9440 <td class="entry_details" colspan="6"> 9441 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with 9442STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to 9443produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the 9444<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/> 9445Therefore,<wbr/> the contents of the output images and the result metadata may be out of order 9446compared to previous regular requests.<wbr/> enableZsl does not affect requests with other 9447capture intents.<wbr/></p> 9448<p>For example,<wbr/> when requests are submitted in the following order: 9449 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW 9450 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> 9451<p>The output images for request B may have contents captured before the output images for 9452request A,<wbr/> and the result metadata for request B may be older than the result metadata for 9453request A.<wbr/></p> 9454<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in 9455the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p> 9456<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in 9457TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always 9458<code>false</code> if present.<wbr/></p> 9459<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all 9460capture templates is always <code>false</code> if present.<wbr/></p> 9461<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p> 9462 </td> 9463 </tr> 9464 9465 <tr class="entries_header"> 9466 <th class="th_details" colspan="6">HAL Implementation Details</th> 9467 </tr> 9468 <tr class="entry_cont"> 9469 <td class="entry_details" colspan="6"> 9470 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE 9471capture intent.<wbr/></p> 9472 </td> 9473 </tr> 9474 9475 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9476 <!-- end of entry --> 9477 9478 9479 <tr class="entry" id="dynamic_android.control.afSceneChange"> 9480 <td class="entry_name 9481 " rowspan="3"> 9482 android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change 9483 </td> 9484 <td class="entry_type"> 9485 <span class="entry_type_name entry_type_name_enum">byte</span> 9486 9487 <span class="entry_type_visibility"> [public]</span> 9488 9489 9490 9491 9492 9493 <ul class="entry_type_enum"> 9494 <li> 9495 <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span> 9496 <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span> 9497 </li> 9498 <li> 9499 <span class="entry_type_enum_name">DETECTED (v3.3)</span> 9500 <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span> 9501 </li> 9502 </ul> 9503 9504 </td> <!-- entry_type --> 9505 9506 <td class="entry_description"> 9507 <p>Whether a significant scene change is detected within the currently-set AF 9508region(s).<wbr/></p> 9509 </td> 9510 9511 <td class="entry_units"> 9512 </td> 9513 9514 <td class="entry_range"> 9515 </td> 9516 9517 <td class="entry_hal_version"> 9518 <p>3.<wbr/>3</p> 9519 </td> 9520 9521 <td class="entry_tags"> 9522 </td> 9523 9524 </tr> 9525 <tr class="entries_header"> 9526 <th class="th_details" colspan="6">Details</th> 9527 </tr> 9528 <tr class="entry_cont"> 9529 <td class="entry_details" colspan="6"> 9530 <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/> 9531such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a 9532significant illumination change,<wbr/> this value will be set to DETECTED for a single capture 9533result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar 9534to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p> 9535<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> 9536 </td> 9537 </tr> 9538 9539 9540 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9541 <!-- end of entry --> 9542 9543 9544 9545 <!-- end of kind --> 9546 </tbody> 9547 9548 <!-- end of section --> 9549 <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr> 9550 9551 9552 <tr><td colspan="7" class="kind">controls</td></tr> 9553 9554 <thead class="entries_header"> 9555 <tr> 9556 <th class="th_name">Property Name</th> 9557 <th class="th_type">Type</th> 9558 <th class="th_description">Description</th> 9559 <th class="th_units">Units</th> 9560 <th class="th_range">Range</th> 9561 <th class="th_hal_version">Initial HIDL HAL version</th> 9562 <th class="th_tags">Tags</th> 9563 </tr> 9564 </thead> 9565 9566 <tbody> 9567 9568 9569 9570 9571 9572 9573 9574 9575 9576 9577 <tr class="entry" id="controls_android.demosaic.mode"> 9578 <td class="entry_name 9579 " rowspan="1"> 9580 android.<wbr/>demosaic.<wbr/>mode 9581 </td> 9582 <td class="entry_type"> 9583 <span class="entry_type_name entry_type_name_enum">byte</span> 9584 9585 <span class="entry_type_visibility"> [system]</span> 9586 9587 9588 9589 9590 9591 <ul class="entry_type_enum"> 9592 <li> 9593 <span class="entry_type_enum_name">FAST (v3.2)</span> 9594 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 9595Bayer RAW output.<wbr/></p></span> 9596 </li> 9597 <li> 9598 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 9599 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down 9600relative to raw output.<wbr/></p></span> 9601 </li> 9602 </ul> 9603 9604 </td> <!-- entry_type --> 9605 9606 <td class="entry_description"> 9607 <p>Controls the quality of the demosaicing 9608processing.<wbr/></p> 9609 </td> 9610 9611 <td class="entry_units"> 9612 </td> 9613 9614 <td class="entry_range"> 9615 </td> 9616 9617 <td class="entry_hal_version"> 9618 <p>3.<wbr/>2</p> 9619 </td> 9620 9621 <td class="entry_tags"> 9622 <ul class="entry_tags"> 9623 <li><a href="#tag_FUTURE">FUTURE</a></li> 9624 </ul> 9625 </td> 9626 9627 </tr> 9628 9629 9630 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9631 <!-- end of entry --> 9632 9633 9634 9635 <!-- end of kind --> 9636 </tbody> 9637 9638 <!-- end of section --> 9639 <tr><td colspan="7" id="section_edge" class="section">edge</td></tr> 9640 9641 9642 <tr><td colspan="7" class="kind">controls</td></tr> 9643 9644 <thead class="entries_header"> 9645 <tr> 9646 <th class="th_name">Property Name</th> 9647 <th class="th_type">Type</th> 9648 <th class="th_description">Description</th> 9649 <th class="th_units">Units</th> 9650 <th class="th_range">Range</th> 9651 <th class="th_hal_version">Initial HIDL HAL version</th> 9652 <th class="th_tags">Tags</th> 9653 </tr> 9654 </thead> 9655 9656 <tbody> 9657 9658 9659 9660 9661 9662 9663 9664 9665 9666 9667 <tr class="entry" id="controls_android.edge.mode"> 9668 <td class="entry_name 9669 " rowspan="5"> 9670 android.<wbr/>edge.<wbr/>mode 9671 </td> 9672 <td class="entry_type"> 9673 <span class="entry_type_name entry_type_name_enum">byte</span> 9674 9675 <span class="entry_type_visibility"> [public]</span> 9676 9677 9678 <span class="entry_type_hwlevel">[full] </span> 9679 9680 9681 9682 <ul class="entry_type_enum"> 9683 <li> 9684 <span class="entry_type_enum_name">OFF (v3.2)</span> 9685 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 9686 </li> 9687 <li> 9688 <span class="entry_type_enum_name">FAST (v3.2)</span> 9689 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 9690relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 9691slow down frame rate relative to sensor.<wbr/></p></span> 9692 </li> 9693 <li> 9694 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 9695 <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> 9696 </li> 9697 <li> 9698 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 9699 <span class="entry_type_enum_optional">[optional]</span> 9700 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different 9701levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording 9702resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) 9703or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge 9704enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned 9705so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST 9706(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 9707<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 9708with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 9709high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 9710produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 9711high-resolution buffers must not have edge enhancement applied to maximize efficiency of 9712preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 9713buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 9714reasonable preview quality.<wbr/></p> 9715<p>This mode is guaranteed to be supported by devices that support either the 9716YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 9717(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 9718be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 9719 </li> 9720 </ul> 9721 9722 </td> <!-- entry_type --> 9723 9724 <td class="entry_description"> 9725 <p>Operation mode for edge 9726enhancement.<wbr/></p> 9727 </td> 9728 9729 <td class="entry_units"> 9730 </td> 9731 9732 <td class="entry_range"> 9733 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 9734 </td> 9735 9736 <td class="entry_hal_version"> 9737 <p>3.<wbr/>2</p> 9738 </td> 9739 9740 <td class="entry_tags"> 9741 <ul class="entry_tags"> 9742 <li><a href="#tag_V1">V1</a></li> 9743 <li><a href="#tag_REPROC">REPROC</a></li> 9744 </ul> 9745 </td> 9746 9747 </tr> 9748 <tr class="entries_header"> 9749 <th class="th_details" colspan="6">Details</th> 9750 </tr> 9751 <tr class="entry_cont"> 9752 <td class="entry_details" colspan="6"> 9753 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 9754no enhancement will be applied by the camera device.<wbr/></p> 9755<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 9756will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 9757camera device will use the highest-quality enhancement algorithms,<wbr/> 9758even if it slows down capture rate.<wbr/> FAST means the camera device will 9759not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 9760edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 9761amount of enhancement applied.<wbr/></p> 9762<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 9763buffer of high-resolution images during preview and reprocess image(s) from that buffer 9764into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 9765edge enhancement to low-resolution streams (below maximum recording resolution) to 9766maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 9767since those will be reprocessed later if necessary.<wbr/></p> 9768<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 9769device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 9770The camera device may adjust its internal edge enhancement parameters for best 9771image 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> 9772 </td> 9773 </tr> 9774 9775 <tr class="entries_header"> 9776 <th class="th_details" colspan="6">HAL Implementation Details</th> 9777 </tr> 9778 <tr class="entry_cont"> 9779 <td class="entry_details" colspan="6"> 9780 <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 9781adjust the internal edge enhancement reduction parameters appropriately to get the best 9782quality images.<wbr/></p> 9783 </td> 9784 </tr> 9785 9786 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9787 <!-- end of entry --> 9788 9789 9790 <tr class="entry" id="controls_android.edge.strength"> 9791 <td class="entry_name 9792 " rowspan="1"> 9793 android.<wbr/>edge.<wbr/>strength 9794 </td> 9795 <td class="entry_type"> 9796 <span class="entry_type_name">byte</span> 9797 9798 <span class="entry_type_visibility"> [system]</span> 9799 9800 9801 9802 9803 9804 9805 </td> <!-- entry_type --> 9806 9807 <td class="entry_description"> 9808 <p>Control the amount of edge enhancement 9809applied to the images</p> 9810 </td> 9811 9812 <td class="entry_units"> 9813 1-10; 10 is maximum sharpening 9814 </td> 9815 9816 <td class="entry_range"> 9817 </td> 9818 9819 <td class="entry_hal_version"> 9820 <p>3.<wbr/>2</p> 9821 </td> 9822 9823 <td class="entry_tags"> 9824 <ul class="entry_tags"> 9825 <li><a href="#tag_FUTURE">FUTURE</a></li> 9826 </ul> 9827 </td> 9828 9829 </tr> 9830 9831 9832 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9833 <!-- end of entry --> 9834 9835 9836 9837 <!-- end of kind --> 9838 </tbody> 9839 <tr><td colspan="7" class="kind">static</td></tr> 9840 9841 <thead class="entries_header"> 9842 <tr> 9843 <th class="th_name">Property Name</th> 9844 <th class="th_type">Type</th> 9845 <th class="th_description">Description</th> 9846 <th class="th_units">Units</th> 9847 <th class="th_range">Range</th> 9848 <th class="th_hal_version">Initial HIDL HAL version</th> 9849 <th class="th_tags">Tags</th> 9850 </tr> 9851 </thead> 9852 9853 <tbody> 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 <tr class="entry" id="static_android.edge.availableEdgeModes"> 9865 <td class="entry_name 9866 " rowspan="5"> 9867 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 9868 </td> 9869 <td class="entry_type"> 9870 <span class="entry_type_name">byte</span> 9871 <span class="entry_type_container">x</span> 9872 9873 <span class="entry_type_array"> 9874 n 9875 </span> 9876 <span class="entry_type_visibility"> [public as enumList]</span> 9877 9878 9879 <span class="entry_type_hwlevel">[full] </span> 9880 9881 9882 <div class="entry_type_notes">list of enums</div> 9883 9884 9885 </td> <!-- entry_type --> 9886 9887 <td class="entry_description"> 9888 <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 9889device.<wbr/></p> 9890 </td> 9891 9892 <td class="entry_units"> 9893 </td> 9894 9895 <td class="entry_range"> 9896 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p> 9897 </td> 9898 9899 <td class="entry_hal_version"> 9900 <p>3.<wbr/>2</p> 9901 </td> 9902 9903 <td class="entry_tags"> 9904 <ul class="entry_tags"> 9905 <li><a href="#tag_V1">V1</a></li> 9906 <li><a href="#tag_REPROC">REPROC</a></li> 9907 </ul> 9908 </td> 9909 9910 </tr> 9911 <tr class="entries_header"> 9912 <th class="th_details" colspan="6">Details</th> 9913 </tr> 9914 <tr class="entry_cont"> 9915 <td class="entry_details" colspan="6"> 9916 <p>Full-capability camera devices must always support OFF; camera devices that support 9917YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will 9918list FAST.<wbr/></p> 9919 </td> 9920 </tr> 9921 9922 <tr class="entries_header"> 9923 <th class="th_details" colspan="6">HAL Implementation Details</th> 9924 </tr> 9925 <tr class="entry_cont"> 9926 <td class="entry_details" colspan="6"> 9927 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available 9928on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 9929That is,<wbr/> if the highest quality implementation on the camera device does not slow down 9930capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 9931 </td> 9932 </tr> 9933 9934 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 9935 <!-- end of entry --> 9936 9937 9938 9939 <!-- end of kind --> 9940 </tbody> 9941 <tr><td colspan="7" class="kind">dynamic</td></tr> 9942 9943 <thead class="entries_header"> 9944 <tr> 9945 <th class="th_name">Property Name</th> 9946 <th class="th_type">Type</th> 9947 <th class="th_description">Description</th> 9948 <th class="th_units">Units</th> 9949 <th class="th_range">Range</th> 9950 <th class="th_hal_version">Initial HIDL HAL version</th> 9951 <th class="th_tags">Tags</th> 9952 </tr> 9953 </thead> 9954 9955 <tbody> 9956 9957 9958 9959 9960 9961 9962 9963 9964 9965 9966 <tr class="entry" id="dynamic_android.edge.mode"> 9967 <td class="entry_name 9968 " rowspan="5"> 9969 android.<wbr/>edge.<wbr/>mode 9970 </td> 9971 <td class="entry_type"> 9972 <span class="entry_type_name entry_type_name_enum">byte</span> 9973 9974 <span class="entry_type_visibility"> [public]</span> 9975 9976 9977 <span class="entry_type_hwlevel">[full] </span> 9978 9979 9980 9981 <ul class="entry_type_enum"> 9982 <li> 9983 <span class="entry_type_enum_name">OFF (v3.2)</span> 9984 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 9985 </li> 9986 <li> 9987 <span class="entry_type_enum_name">FAST (v3.2)</span> 9988 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 9989relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 9990slow down frame rate relative to sensor.<wbr/></p></span> 9991 </li> 9992 <li> 9993 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 9994 <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> 9995 </li> 9996 <li> 9997 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 9998 <span class="entry_type_enum_optional">[optional]</span> 9999 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different 10000levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording 10001resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) 10002or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge 10003enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned 10004so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST 10005(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 10006<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 10007with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 10008high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 10009produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 10010high-resolution buffers must not have edge enhancement applied to maximize efficiency of 10011preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 10012buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 10013reasonable preview quality.<wbr/></p> 10014<p>This mode is guaranteed to be supported by devices that support either the 10015YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 10016(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 10017be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 10018 </li> 10019 </ul> 10020 10021 </td> <!-- entry_type --> 10022 10023 <td class="entry_description"> 10024 <p>Operation mode for edge 10025enhancement.<wbr/></p> 10026 </td> 10027 10028 <td class="entry_units"> 10029 </td> 10030 10031 <td class="entry_range"> 10032 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 10033 </td> 10034 10035 <td class="entry_hal_version"> 10036 <p>3.<wbr/>2</p> 10037 </td> 10038 10039 <td class="entry_tags"> 10040 <ul class="entry_tags"> 10041 <li><a href="#tag_V1">V1</a></li> 10042 <li><a href="#tag_REPROC">REPROC</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>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 10053no enhancement will be applied by the camera device.<wbr/></p> 10054<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 10055will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 10056camera device will use the highest-quality enhancement algorithms,<wbr/> 10057even if it slows down capture rate.<wbr/> FAST means the camera device will 10058not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 10059edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 10060amount of enhancement applied.<wbr/></p> 10061<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 10062buffer of high-resolution images during preview and reprocess image(s) from that buffer 10063into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 10064edge enhancement to low-resolution streams (below maximum recording resolution) to 10065maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 10066since those will be reprocessed later if necessary.<wbr/></p> 10067<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 10068device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 10069The camera device may adjust its internal edge enhancement parameters for best 10070image 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> 10071 </td> 10072 </tr> 10073 10074 <tr class="entries_header"> 10075 <th class="th_details" colspan="6">HAL Implementation Details</th> 10076 </tr> 10077 <tr class="entry_cont"> 10078 <td class="entry_details" colspan="6"> 10079 <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 10080adjust the internal edge enhancement reduction parameters appropriately to get the best 10081quality images.<wbr/></p> 10082 </td> 10083 </tr> 10084 10085 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10086 <!-- end of entry --> 10087 10088 10089 10090 <!-- end of kind --> 10091 </tbody> 10092 10093 <!-- end of section --> 10094 <tr><td colspan="7" id="section_flash" class="section">flash</td></tr> 10095 10096 10097 <tr><td colspan="7" class="kind">controls</td></tr> 10098 10099 <thead class="entries_header"> 10100 <tr> 10101 <th class="th_name">Property Name</th> 10102 <th class="th_type">Type</th> 10103 <th class="th_description">Description</th> 10104 <th class="th_units">Units</th> 10105 <th class="th_range">Range</th> 10106 <th class="th_hal_version">Initial HIDL HAL version</th> 10107 <th class="th_tags">Tags</th> 10108 </tr> 10109 </thead> 10110 10111 <tbody> 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 <tr class="entry" id="controls_android.flash.firingPower"> 10123 <td class="entry_name 10124 " rowspan="3"> 10125 android.<wbr/>flash.<wbr/>firing<wbr/>Power 10126 </td> 10127 <td class="entry_type"> 10128 <span class="entry_type_name">byte</span> 10129 10130 <span class="entry_type_visibility"> [system]</span> 10131 10132 10133 10134 10135 10136 10137 </td> <!-- entry_type --> 10138 10139 <td class="entry_description"> 10140 <p>Power for flash firing/<wbr/>torch</p> 10141 </td> 10142 10143 <td class="entry_units"> 10144 10 is max power; 0 is no flash.<wbr/> Linear 10145 </td> 10146 10147 <td class="entry_range"> 10148 <p>0 - 10</p> 10149 </td> 10150 10151 <td class="entry_hal_version"> 10152 <p>3.<wbr/>2</p> 10153 </td> 10154 10155 <td class="entry_tags"> 10156 <ul class="entry_tags"> 10157 <li><a href="#tag_FUTURE">FUTURE</a></li> 10158 </ul> 10159 </td> 10160 10161 </tr> 10162 <tr class="entries_header"> 10163 <th class="th_details" colspan="6">Details</th> 10164 </tr> 10165 <tr class="entry_cont"> 10166 <td class="entry_details" colspan="6"> 10167 <p>Power for snapshot may use a different scale than 10168for torch mode.<wbr/> Only one entry for torch mode will be 10169used</p> 10170 </td> 10171 </tr> 10172 10173 10174 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10175 <!-- end of entry --> 10176 10177 10178 <tr class="entry" id="controls_android.flash.firingTime"> 10179 <td class="entry_name 10180 " rowspan="3"> 10181 android.<wbr/>flash.<wbr/>firing<wbr/>Time 10182 </td> 10183 <td class="entry_type"> 10184 <span class="entry_type_name">int64</span> 10185 10186 <span class="entry_type_visibility"> [system]</span> 10187 10188 10189 10190 10191 10192 10193 </td> <!-- entry_type --> 10194 10195 <td class="entry_description"> 10196 <p>Firing time of flash relative to start of 10197exposure</p> 10198 </td> 10199 10200 <td class="entry_units"> 10201 nanoseconds 10202 </td> 10203 10204 <td class="entry_range"> 10205 <p>0-(exposure time-flash duration)</p> 10206 </td> 10207 10208 <td class="entry_hal_version"> 10209 <p>3.<wbr/>2</p> 10210 </td> 10211 10212 <td class="entry_tags"> 10213 <ul class="entry_tags"> 10214 <li><a href="#tag_FUTURE">FUTURE</a></li> 10215 </ul> 10216 </td> 10217 10218 </tr> 10219 <tr class="entries_header"> 10220 <th class="th_details" colspan="6">Details</th> 10221 </tr> 10222 <tr class="entry_cont"> 10223 <td class="entry_details" colspan="6"> 10224 <p>Clamped to (0,<wbr/> exposure time - flash 10225duration).<wbr/></p> 10226 </td> 10227 </tr> 10228 10229 10230 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10231 <!-- end of entry --> 10232 10233 10234 <tr class="entry" id="controls_android.flash.mode"> 10235 <td class="entry_name 10236 " rowspan="3"> 10237 android.<wbr/>flash.<wbr/>mode 10238 </td> 10239 <td class="entry_type"> 10240 <span class="entry_type_name entry_type_name_enum">byte</span> 10241 10242 <span class="entry_type_visibility"> [public]</span> 10243 10244 10245 <span class="entry_type_hwlevel">[legacy] </span> 10246 10247 10248 10249 <ul class="entry_type_enum"> 10250 <li> 10251 <span class="entry_type_enum_name">OFF (v3.2)</span> 10252 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 10253 </li> 10254 <li> 10255 <span class="entry_type_enum_name">SINGLE (v3.2)</span> 10256 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 10257for this capture.<wbr/></p></span> 10258 </li> 10259 <li> 10260 <span class="entry_type_enum_name">TORCH (v3.2)</span> 10261 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 10262 </li> 10263 </ul> 10264 10265 </td> <!-- entry_type --> 10266 10267 <td class="entry_description"> 10268 <p>The desired mode for for the camera device's flash control.<wbr/></p> 10269 </td> 10270 10271 <td class="entry_units"> 10272 </td> 10273 10274 <td class="entry_range"> 10275 </td> 10276 10277 <td class="entry_hal_version"> 10278 <p>3.<wbr/>2</p> 10279 </td> 10280 10281 <td class="entry_tags"> 10282 <ul class="entry_tags"> 10283 <li><a href="#tag_BC">BC</a></li> 10284 </ul> 10285 </td> 10286 10287 </tr> 10288 <tr class="entries_header"> 10289 <th class="th_details" colspan="6">Details</th> 10290 </tr> 10291 <tr class="entry_cont"> 10292 <td class="entry_details" colspan="6"> 10293 <p>This control is only effective when flash unit is available 10294(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 10295<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/> 10296Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 10297ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 10298<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 10299<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 10300device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 10301control should be used along with auto-exposure (AE) precapture metering sequence 10302(<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> 10303<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 10304for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 10305<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> 10306 </td> 10307 </tr> 10308 10309 10310 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10311 <!-- end of entry --> 10312 10313 10314 10315 <!-- end of kind --> 10316 </tbody> 10317 <tr><td colspan="7" class="kind">static</td></tr> 10318 10319 <thead class="entries_header"> 10320 <tr> 10321 <th class="th_name">Property Name</th> 10322 <th class="th_type">Type</th> 10323 <th class="th_description">Description</th> 10324 <th class="th_units">Units</th> 10325 <th class="th_range">Range</th> 10326 <th class="th_hal_version">Initial HIDL HAL version</th> 10327 <th class="th_tags">Tags</th> 10328 </tr> 10329 </thead> 10330 10331 <tbody> 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 <tr class="entry" id="static_android.flash.info.available"> 10345 <td class="entry_name 10346 " rowspan="3"> 10347 android.<wbr/>flash.<wbr/>info.<wbr/>available 10348 </td> 10349 <td class="entry_type"> 10350 <span class="entry_type_name entry_type_name_enum">byte</span> 10351 10352 <span class="entry_type_visibility"> [public as boolean]</span> 10353 10354 10355 <span class="entry_type_hwlevel">[legacy] </span> 10356 10357 10358 10359 <ul class="entry_type_enum"> 10360 <li> 10361 <span class="entry_type_enum_name">FALSE (v3.2)</span> 10362 </li> 10363 <li> 10364 <span class="entry_type_enum_name">TRUE (v3.2)</span> 10365 </li> 10366 </ul> 10367 10368 </td> <!-- entry_type --> 10369 10370 <td class="entry_description"> 10371 <p>Whether this camera device has a 10372flash unit.<wbr/></p> 10373 </td> 10374 10375 <td class="entry_units"> 10376 </td> 10377 10378 <td class="entry_range"> 10379 </td> 10380 10381 <td class="entry_hal_version"> 10382 <p>3.<wbr/>2</p> 10383 </td> 10384 10385 <td class="entry_tags"> 10386 <ul class="entry_tags"> 10387 <li><a href="#tag_BC">BC</a></li> 10388 </ul> 10389 </td> 10390 10391 </tr> 10392 <tr class="entries_header"> 10393 <th class="th_details" colspan="6">Details</th> 10394 </tr> 10395 <tr class="entry_cont"> 10396 <td class="entry_details" colspan="6"> 10397 <p>Will be <code>false</code> if no flash is available.<wbr/></p> 10398<p>If there is no flash unit,<wbr/> none of the flash controls do 10399anything.<wbr/></p> 10400 </td> 10401 </tr> 10402 10403 10404 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10405 <!-- end of entry --> 10406 10407 10408 <tr class="entry" id="static_android.flash.info.chargeDuration"> 10409 <td class="entry_name 10410 " rowspan="3"> 10411 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 10412 </td> 10413 <td class="entry_type"> 10414 <span class="entry_type_name">int64</span> 10415 10416 <span class="entry_type_visibility"> [system]</span> 10417 10418 10419 10420 10421 10422 10423 </td> <!-- entry_type --> 10424 10425 <td class="entry_description"> 10426 <p>Time taken before flash can fire 10427again</p> 10428 </td> 10429 10430 <td class="entry_units"> 10431 nanoseconds 10432 </td> 10433 10434 <td class="entry_range"> 10435 <p>0-1e9</p> 10436 </td> 10437 10438 <td class="entry_hal_version"> 10439 <p>3.<wbr/>2</p> 10440 </td> 10441 10442 <td class="entry_tags"> 10443 <ul class="entry_tags"> 10444 <li><a href="#tag_FUTURE">FUTURE</a></li> 10445 </ul> 10446 </td> 10447 10448 </tr> 10449 <tr class="entries_header"> 10450 <th class="th_details" colspan="6">Details</th> 10451 </tr> 10452 <tr class="entry_cont"> 10453 <td class="entry_details" colspan="6"> 10454 <p>1 second too long/<wbr/>too short for recharge? Should 10455this be power-dependent?</p> 10456 </td> 10457 </tr> 10458 10459 10460 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10461 <!-- end of entry --> 10462 10463 10464 10465 10466 10467 <tr class="entry" id="static_android.flash.colorTemperature"> 10468 <td class="entry_name 10469 " rowspan="1"> 10470 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 10471 </td> 10472 <td class="entry_type"> 10473 <span class="entry_type_name">byte</span> 10474 10475 <span class="entry_type_visibility"> [system]</span> 10476 10477 10478 10479 10480 10481 10482 </td> <!-- entry_type --> 10483 10484 <td class="entry_description"> 10485 <p>The x,<wbr/>y whitepoint of the 10486flash</p> 10487 </td> 10488 10489 <td class="entry_units"> 10490 pair of floats 10491 </td> 10492 10493 <td class="entry_range"> 10494 <p>0-1 for both</p> 10495 </td> 10496 10497 <td class="entry_hal_version"> 10498 <p>3.<wbr/>2</p> 10499 </td> 10500 10501 <td class="entry_tags"> 10502 <ul class="entry_tags"> 10503 <li><a href="#tag_FUTURE">FUTURE</a></li> 10504 </ul> 10505 </td> 10506 10507 </tr> 10508 10509 10510 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10511 <!-- end of entry --> 10512 10513 10514 <tr class="entry" id="static_android.flash.maxEnergy"> 10515 <td class="entry_name 10516 " rowspan="1"> 10517 android.<wbr/>flash.<wbr/>max<wbr/>Energy 10518 </td> 10519 <td class="entry_type"> 10520 <span class="entry_type_name">byte</span> 10521 10522 <span class="entry_type_visibility"> [system]</span> 10523 10524 10525 10526 10527 10528 10529 </td> <!-- entry_type --> 10530 10531 <td class="entry_description"> 10532 <p>Max energy output of the flash for a full 10533power single flash</p> 10534 </td> 10535 10536 <td class="entry_units"> 10537 lumen-seconds 10538 </td> 10539 10540 <td class="entry_range"> 10541 <p>>= 0</p> 10542 </td> 10543 10544 <td class="entry_hal_version"> 10545 <p>3.<wbr/>2</p> 10546 </td> 10547 10548 <td class="entry_tags"> 10549 <ul class="entry_tags"> 10550 <li><a href="#tag_FUTURE">FUTURE</a></li> 10551 </ul> 10552 </td> 10553 10554 </tr> 10555 10556 10557 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10558 <!-- end of entry --> 10559 10560 10561 10562 <!-- end of kind --> 10563 </tbody> 10564 <tr><td colspan="7" class="kind">dynamic</td></tr> 10565 10566 <thead class="entries_header"> 10567 <tr> 10568 <th class="th_name">Property Name</th> 10569 <th class="th_type">Type</th> 10570 <th class="th_description">Description</th> 10571 <th class="th_units">Units</th> 10572 <th class="th_range">Range</th> 10573 <th class="th_hal_version">Initial HIDL HAL version</th> 10574 <th class="th_tags">Tags</th> 10575 </tr> 10576 </thead> 10577 10578 <tbody> 10579 10580 10581 10582 10583 10584 10585 10586 10587 10588 10589 <tr class="entry" id="dynamic_android.flash.firingPower"> 10590 <td class="entry_name 10591 " rowspan="3"> 10592 android.<wbr/>flash.<wbr/>firing<wbr/>Power 10593 </td> 10594 <td class="entry_type"> 10595 <span class="entry_type_name">byte</span> 10596 10597 <span class="entry_type_visibility"> [system]</span> 10598 10599 10600 10601 10602 10603 10604 </td> <!-- entry_type --> 10605 10606 <td class="entry_description"> 10607 <p>Power for flash firing/<wbr/>torch</p> 10608 </td> 10609 10610 <td class="entry_units"> 10611 10 is max power; 0 is no flash.<wbr/> Linear 10612 </td> 10613 10614 <td class="entry_range"> 10615 <p>0 - 10</p> 10616 </td> 10617 10618 <td class="entry_hal_version"> 10619 <p>3.<wbr/>2</p> 10620 </td> 10621 10622 <td class="entry_tags"> 10623 <ul class="entry_tags"> 10624 <li><a href="#tag_FUTURE">FUTURE</a></li> 10625 </ul> 10626 </td> 10627 10628 </tr> 10629 <tr class="entries_header"> 10630 <th class="th_details" colspan="6">Details</th> 10631 </tr> 10632 <tr class="entry_cont"> 10633 <td class="entry_details" colspan="6"> 10634 <p>Power for snapshot may use a different scale than 10635for torch mode.<wbr/> Only one entry for torch mode will be 10636used</p> 10637 </td> 10638 </tr> 10639 10640 10641 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10642 <!-- end of entry --> 10643 10644 10645 <tr class="entry" id="dynamic_android.flash.firingTime"> 10646 <td class="entry_name 10647 " rowspan="3"> 10648 android.<wbr/>flash.<wbr/>firing<wbr/>Time 10649 </td> 10650 <td class="entry_type"> 10651 <span class="entry_type_name">int64</span> 10652 10653 <span class="entry_type_visibility"> [system]</span> 10654 10655 10656 10657 10658 10659 10660 </td> <!-- entry_type --> 10661 10662 <td class="entry_description"> 10663 <p>Firing time of flash relative to start of 10664exposure</p> 10665 </td> 10666 10667 <td class="entry_units"> 10668 nanoseconds 10669 </td> 10670 10671 <td class="entry_range"> 10672 <p>0-(exposure time-flash duration)</p> 10673 </td> 10674 10675 <td class="entry_hal_version"> 10676 <p>3.<wbr/>2</p> 10677 </td> 10678 10679 <td class="entry_tags"> 10680 <ul class="entry_tags"> 10681 <li><a href="#tag_FUTURE">FUTURE</a></li> 10682 </ul> 10683 </td> 10684 10685 </tr> 10686 <tr class="entries_header"> 10687 <th class="th_details" colspan="6">Details</th> 10688 </tr> 10689 <tr class="entry_cont"> 10690 <td class="entry_details" colspan="6"> 10691 <p>Clamped to (0,<wbr/> exposure time - flash 10692duration).<wbr/></p> 10693 </td> 10694 </tr> 10695 10696 10697 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10698 <!-- end of entry --> 10699 10700 10701 <tr class="entry" id="dynamic_android.flash.mode"> 10702 <td class="entry_name 10703 " rowspan="3"> 10704 android.<wbr/>flash.<wbr/>mode 10705 </td> 10706 <td class="entry_type"> 10707 <span class="entry_type_name entry_type_name_enum">byte</span> 10708 10709 <span class="entry_type_visibility"> [public]</span> 10710 10711 10712 <span class="entry_type_hwlevel">[legacy] </span> 10713 10714 10715 10716 <ul class="entry_type_enum"> 10717 <li> 10718 <span class="entry_type_enum_name">OFF (v3.2)</span> 10719 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 10720 </li> 10721 <li> 10722 <span class="entry_type_enum_name">SINGLE (v3.2)</span> 10723 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 10724for this capture.<wbr/></p></span> 10725 </li> 10726 <li> 10727 <span class="entry_type_enum_name">TORCH (v3.2)</span> 10728 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 10729 </li> 10730 </ul> 10731 10732 </td> <!-- entry_type --> 10733 10734 <td class="entry_description"> 10735 <p>The desired mode for for the camera device's flash control.<wbr/></p> 10736 </td> 10737 10738 <td class="entry_units"> 10739 </td> 10740 10741 <td class="entry_range"> 10742 </td> 10743 10744 <td class="entry_hal_version"> 10745 <p>3.<wbr/>2</p> 10746 </td> 10747 10748 <td class="entry_tags"> 10749 <ul class="entry_tags"> 10750 <li><a href="#tag_BC">BC</a></li> 10751 </ul> 10752 </td> 10753 10754 </tr> 10755 <tr class="entries_header"> 10756 <th class="th_details" colspan="6">Details</th> 10757 </tr> 10758 <tr class="entry_cont"> 10759 <td class="entry_details" colspan="6"> 10760 <p>This control is only effective when flash unit is available 10761(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 10762<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/> 10763Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 10764ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 10765<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 10766<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 10767device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 10768control should be used along with auto-exposure (AE) precapture metering sequence 10769(<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> 10770<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 10771for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 10772<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> 10773 </td> 10774 </tr> 10775 10776 10777 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10778 <!-- end of entry --> 10779 10780 10781 <tr class="entry" id="dynamic_android.flash.state"> 10782 <td class="entry_name 10783 " rowspan="3"> 10784 android.<wbr/>flash.<wbr/>state 10785 </td> 10786 <td class="entry_type"> 10787 <span class="entry_type_name entry_type_name_enum">byte</span> 10788 10789 <span class="entry_type_visibility"> [public]</span> 10790 10791 10792 <span class="entry_type_hwlevel">[limited] </span> 10793 10794 10795 10796 <ul class="entry_type_enum"> 10797 <li> 10798 <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span> 10799 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 10800 </li> 10801 <li> 10802 <span class="entry_type_enum_name">CHARGING (v3.2)</span> 10803 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 10804 </li> 10805 <li> 10806 <span class="entry_type_enum_name">READY (v3.2)</span> 10807 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 10808 </li> 10809 <li> 10810 <span class="entry_type_enum_name">FIRED (v3.2)</span> 10811 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 10812 </li> 10813 <li> 10814 <span class="entry_type_enum_name">PARTIAL (v3.2)</span> 10815 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p> 10816<p>This is usually due to the next or previous frame having 10817the flash fire,<wbr/> and the flash spilling into this capture 10818due to hardware limitations.<wbr/></p></span> 10819 </li> 10820 </ul> 10821 10822 </td> <!-- entry_type --> 10823 10824 <td class="entry_description"> 10825 <p>Current state of the flash 10826unit.<wbr/></p> 10827 </td> 10828 10829 <td class="entry_units"> 10830 </td> 10831 10832 <td class="entry_range"> 10833 </td> 10834 10835 <td class="entry_hal_version"> 10836 <p>3.<wbr/>2</p> 10837 </td> 10838 10839 <td class="entry_tags"> 10840 </td> 10841 10842 </tr> 10843 <tr class="entries_header"> 10844 <th class="th_details" colspan="6">Details</th> 10845 </tr> 10846 <tr class="entry_cont"> 10847 <td class="entry_details" colspan="6"> 10848 <p>When the camera device doesn't have flash unit 10849(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/> 10850Other states indicate the current flash status.<wbr/></p> 10851<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p> 10852<ul> 10853<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li> 10854<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH 10855 will always return FIRED.<wbr/></li> 10856<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH 10857 will always return FIRED.<wbr/></li> 10858</ul> 10859<p>In all other conditions the state will not be available on 10860LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p> 10861 </td> 10862 </tr> 10863 10864 10865 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10866 <!-- end of entry --> 10867 10868 10869 10870 <!-- end of kind --> 10871 </tbody> 10872 10873 <!-- end of section --> 10874 <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr> 10875 10876 10877 <tr><td colspan="7" class="kind">controls</td></tr> 10878 10879 <thead class="entries_header"> 10880 <tr> 10881 <th class="th_name">Property Name</th> 10882 <th class="th_type">Type</th> 10883 <th class="th_description">Description</th> 10884 <th class="th_units">Units</th> 10885 <th class="th_range">Range</th> 10886 <th class="th_hal_version">Initial HIDL HAL version</th> 10887 <th class="th_tags">Tags</th> 10888 </tr> 10889 </thead> 10890 10891 <tbody> 10892 10893 10894 10895 10896 10897 10898 10899 10900 10901 10902 <tr class="entry" id="controls_android.hotPixel.mode"> 10903 <td class="entry_name 10904 " rowspan="3"> 10905 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 10906 </td> 10907 <td class="entry_type"> 10908 <span class="entry_type_name entry_type_name_enum">byte</span> 10909 10910 <span class="entry_type_visibility"> [public]</span> 10911 10912 10913 10914 10915 10916 <ul class="entry_type_enum"> 10917 <li> 10918 <span class="entry_type_enum_name">OFF (v3.2)</span> 10919 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 10920<p>The frame rate must not be reduced relative to sensor raw output 10921for this option.<wbr/></p> 10922<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> 10923 </li> 10924 <li> 10925 <span class="entry_type_enum_name">FAST (v3.2)</span> 10926 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 10927rate relative to sensor raw output.<wbr/></p> 10928<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> 10929 </li> 10930 <li> 10931 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 10932 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 10933of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 10934<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> 10935 </li> 10936 </ul> 10937 10938 </td> <!-- entry_type --> 10939 10940 <td class="entry_description"> 10941 <p>Operational mode for hot pixel correction.<wbr/></p> 10942 </td> 10943 10944 <td class="entry_units"> 10945 </td> 10946 10947 <td class="entry_range"> 10948 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 10949 </td> 10950 10951 <td class="entry_hal_version"> 10952 <p>3.<wbr/>2</p> 10953 </td> 10954 10955 <td class="entry_tags"> 10956 <ul class="entry_tags"> 10957 <li><a href="#tag_V1">V1</a></li> 10958 <li><a href="#tag_RAW">RAW</a></li> 10959 </ul> 10960 </td> 10961 10962 </tr> 10963 <tr class="entries_header"> 10964 <th class="th_details" colspan="6">Details</th> 10965 </tr> 10966 <tr class="entry_cont"> 10967 <td class="entry_details" colspan="6"> 10968 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 10969that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 10970are stuck at an arbitrary value or are oversensitive).<wbr/></p> 10971 </td> 10972 </tr> 10973 10974 10975 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 10976 <!-- end of entry --> 10977 10978 10979 10980 <!-- end of kind --> 10981 </tbody> 10982 <tr><td colspan="7" class="kind">static</td></tr> 10983 10984 <thead class="entries_header"> 10985 <tr> 10986 <th class="th_name">Property Name</th> 10987 <th class="th_type">Type</th> 10988 <th class="th_description">Description</th> 10989 <th class="th_units">Units</th> 10990 <th class="th_range">Range</th> 10991 <th class="th_hal_version">Initial HIDL HAL version</th> 10992 <th class="th_tags">Tags</th> 10993 </tr> 10994 </thead> 10995 10996 <tbody> 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 11008 <td class="entry_name 11009 " rowspan="5"> 11010 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 11011 </td> 11012 <td class="entry_type"> 11013 <span class="entry_type_name">byte</span> 11014 <span class="entry_type_container">x</span> 11015 11016 <span class="entry_type_array"> 11017 n 11018 </span> 11019 <span class="entry_type_visibility"> [public as enumList]</span> 11020 11021 11022 11023 11024 <div class="entry_type_notes">list of enums</div> 11025 11026 11027 </td> <!-- entry_type --> 11028 11029 <td class="entry_description"> 11030 <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 11031camera device.<wbr/></p> 11032 </td> 11033 11034 <td class="entry_units"> 11035 </td> 11036 11037 <td class="entry_range"> 11038 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p> 11039 </td> 11040 11041 <td class="entry_hal_version"> 11042 <p>3.<wbr/>2</p> 11043 </td> 11044 11045 <td class="entry_tags"> 11046 <ul class="entry_tags"> 11047 <li><a href="#tag_V1">V1</a></li> 11048 <li><a href="#tag_RAW">RAW</a></li> 11049 </ul> 11050 </td> 11051 11052 </tr> 11053 <tr class="entries_header"> 11054 <th class="th_details" colspan="6">Details</th> 11055 </tr> 11056 <tr class="entry_cont"> 11057 <td class="entry_details" colspan="6"> 11058 <p>FULL mode camera devices will always support FAST.<wbr/></p> 11059 </td> 11060 </tr> 11061 11062 <tr class="entries_header"> 11063 <th class="th_details" colspan="6">HAL Implementation Details</th> 11064 </tr> 11065 <tr class="entry_cont"> 11066 <td class="entry_details" colspan="6"> 11067 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 11068pixels than actual pixels on the camera sensor.<wbr/> 11069HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available 11070on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 11071That is,<wbr/> if the highest quality implementation on the camera device does not slow down 11072capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 11073 </td> 11074 </tr> 11075 11076 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11077 <!-- end of entry --> 11078 11079 11080 11081 <!-- end of kind --> 11082 </tbody> 11083 <tr><td colspan="7" class="kind">dynamic</td></tr> 11084 11085 <thead class="entries_header"> 11086 <tr> 11087 <th class="th_name">Property Name</th> 11088 <th class="th_type">Type</th> 11089 <th class="th_description">Description</th> 11090 <th class="th_units">Units</th> 11091 <th class="th_range">Range</th> 11092 <th class="th_hal_version">Initial HIDL HAL version</th> 11093 <th class="th_tags">Tags</th> 11094 </tr> 11095 </thead> 11096 11097 <tbody> 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11108 <tr class="entry" id="dynamic_android.hotPixel.mode"> 11109 <td class="entry_name 11110 " rowspan="3"> 11111 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 11112 </td> 11113 <td class="entry_type"> 11114 <span class="entry_type_name entry_type_name_enum">byte</span> 11115 11116 <span class="entry_type_visibility"> [public]</span> 11117 11118 11119 11120 11121 11122 <ul class="entry_type_enum"> 11123 <li> 11124 <span class="entry_type_enum_name">OFF (v3.2)</span> 11125 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 11126<p>The frame rate must not be reduced relative to sensor raw output 11127for this option.<wbr/></p> 11128<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> 11129 </li> 11130 <li> 11131 <span class="entry_type_enum_name">FAST (v3.2)</span> 11132 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 11133rate relative to sensor raw output.<wbr/></p> 11134<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> 11135 </li> 11136 <li> 11137 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 11138 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 11139of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 11140<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> 11141 </li> 11142 </ul> 11143 11144 </td> <!-- entry_type --> 11145 11146 <td class="entry_description"> 11147 <p>Operational mode for hot pixel correction.<wbr/></p> 11148 </td> 11149 11150 <td class="entry_units"> 11151 </td> 11152 11153 <td class="entry_range"> 11154 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 11155 </td> 11156 11157 <td class="entry_hal_version"> 11158 <p>3.<wbr/>2</p> 11159 </td> 11160 11161 <td class="entry_tags"> 11162 <ul class="entry_tags"> 11163 <li><a href="#tag_V1">V1</a></li> 11164 <li><a href="#tag_RAW">RAW</a></li> 11165 </ul> 11166 </td> 11167 11168 </tr> 11169 <tr class="entries_header"> 11170 <th class="th_details" colspan="6">Details</th> 11171 </tr> 11172 <tr class="entry_cont"> 11173 <td class="entry_details" colspan="6"> 11174 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 11175that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 11176are stuck at an arbitrary value or are oversensitive).<wbr/></p> 11177 </td> 11178 </tr> 11179 11180 11181 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11182 <!-- end of entry --> 11183 11184 11185 11186 <!-- end of kind --> 11187 </tbody> 11188 11189 <!-- end of section --> 11190 <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr> 11191 11192 11193 <tr><td colspan="7" class="kind">controls</td></tr> 11194 11195 <thead class="entries_header"> 11196 <tr> 11197 <th class="th_name">Property Name</th> 11198 <th class="th_type">Type</th> 11199 <th class="th_description">Description</th> 11200 <th class="th_units">Units</th> 11201 <th class="th_range">Range</th> 11202 <th class="th_hal_version">Initial HIDL HAL version</th> 11203 <th class="th_tags">Tags</th> 11204 </tr> 11205 </thead> 11206 11207 <tbody> 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 <tr class="entry" id="controls_android.jpeg.gpsLocation"> 11219 <td class="entry_name 11220 " rowspan="3"> 11221 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 11222 </td> 11223 <td class="entry_type"> 11224 <span class="entry_type_name">byte</span> 11225 11226 <span class="entry_type_visibility"> [java_public as location]</span> 11227 11228 <span class="entry_type_synthetic">[synthetic] </span> 11229 11230 <span class="entry_type_hwlevel">[legacy] </span> 11231 11232 11233 11234 11235 </td> <!-- entry_type --> 11236 11237 <td class="entry_description"> 11238 <p>A location object to use when generating image GPS metadata.<wbr/></p> 11239 </td> 11240 11241 <td class="entry_units"> 11242 </td> 11243 11244 <td class="entry_range"> 11245 </td> 11246 11247 <td class="entry_hal_version"> 11248 <p>3.<wbr/>2</p> 11249 </td> 11250 11251 <td class="entry_tags"> 11252 </td> 11253 11254 </tr> 11255 <tr class="entries_header"> 11256 <th class="th_details" colspan="6">Details</th> 11257 </tr> 11258 <tr class="entry_cont"> 11259 <td class="entry_details" colspan="6"> 11260 <p>Setting a location object in a request will include the GPS coordinates of the location 11261into any JPEG images captured based on the request.<wbr/> These coordinates can then be 11262viewed by anyone who receives the JPEG image.<wbr/></p> 11263 </td> 11264 </tr> 11265 11266 11267 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11268 <!-- end of entry --> 11269 11270 11271 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 11272 <td class="entry_name 11273 " rowspan="1"> 11274 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 11275 </td> 11276 <td class="entry_type"> 11277 <span class="entry_type_name">double</span> 11278 <span class="entry_type_container">x</span> 11279 11280 <span class="entry_type_array"> 11281 3 11282 </span> 11283 <span class="entry_type_visibility"> [ndk_public]</span> 11284 11285 11286 <span class="entry_type_hwlevel">[legacy] </span> 11287 11288 11289 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 11290 11291 11292 </td> <!-- entry_type --> 11293 11294 <td class="entry_description"> 11295 <p>GPS coordinates to include in output JPEG 11296EXIF.<wbr/></p> 11297 </td> 11298 11299 <td class="entry_units"> 11300 </td> 11301 11302 <td class="entry_range"> 11303 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 11304 </td> 11305 11306 <td class="entry_hal_version"> 11307 <p>3.<wbr/>2</p> 11308 </td> 11309 11310 <td class="entry_tags"> 11311 <ul class="entry_tags"> 11312 <li><a href="#tag_BC">BC</a></li> 11313 </ul> 11314 </td> 11315 11316 </tr> 11317 11318 11319 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11320 <!-- end of entry --> 11321 11322 11323 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 11324 <td class="entry_name 11325 " rowspan="1"> 11326 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 11327 </td> 11328 <td class="entry_type"> 11329 <span class="entry_type_name">byte</span> 11330 11331 <span class="entry_type_visibility"> [ndk_public as string]</span> 11332 11333 11334 <span class="entry_type_hwlevel">[legacy] </span> 11335 11336 11337 11338 11339 </td> <!-- entry_type --> 11340 11341 <td class="entry_description"> 11342 <p>32 characters describing GPS algorithm to 11343include in EXIF.<wbr/></p> 11344 </td> 11345 11346 <td class="entry_units"> 11347 UTF-8 null-terminated string 11348 </td> 11349 11350 <td class="entry_range"> 11351 </td> 11352 11353 <td class="entry_hal_version"> 11354 <p>3.<wbr/>2</p> 11355 </td> 11356 11357 <td class="entry_tags"> 11358 <ul class="entry_tags"> 11359 <li><a href="#tag_BC">BC</a></li> 11360 </ul> 11361 </td> 11362 11363 </tr> 11364 11365 11366 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11367 <!-- end of entry --> 11368 11369 11370 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 11371 <td class="entry_name 11372 " rowspan="1"> 11373 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 11374 </td> 11375 <td class="entry_type"> 11376 <span class="entry_type_name">int64</span> 11377 11378 <span class="entry_type_visibility"> [ndk_public]</span> 11379 11380 11381 <span class="entry_type_hwlevel">[legacy] </span> 11382 11383 11384 11385 11386 </td> <!-- entry_type --> 11387 11388 <td class="entry_description"> 11389 <p>Time GPS fix was made to include in 11390EXIF.<wbr/></p> 11391 </td> 11392 11393 <td class="entry_units"> 11394 UTC in seconds since January 1,<wbr/> 1970 11395 </td> 11396 11397 <td class="entry_range"> 11398 </td> 11399 11400 <td class="entry_hal_version"> 11401 <p>3.<wbr/>2</p> 11402 </td> 11403 11404 <td class="entry_tags"> 11405 <ul class="entry_tags"> 11406 <li><a href="#tag_BC">BC</a></li> 11407 </ul> 11408 </td> 11409 11410 </tr> 11411 11412 11413 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11414 <!-- end of entry --> 11415 11416 11417 <tr class="entry" id="controls_android.jpeg.orientation"> 11418 <td class="entry_name 11419 " rowspan="3"> 11420 android.<wbr/>jpeg.<wbr/>orientation 11421 </td> 11422 <td class="entry_type"> 11423 <span class="entry_type_name">int32</span> 11424 11425 <span class="entry_type_visibility"> [public]</span> 11426 11427 11428 <span class="entry_type_hwlevel">[legacy] </span> 11429 11430 11431 11432 11433 </td> <!-- entry_type --> 11434 11435 <td class="entry_description"> 11436 <p>The orientation for a JPEG image.<wbr/></p> 11437 </td> 11438 11439 <td class="entry_units"> 11440 Degrees in multiples of 90 11441 </td> 11442 11443 <td class="entry_range"> 11444 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 11445 </td> 11446 11447 <td class="entry_hal_version"> 11448 <p>3.<wbr/>2</p> 11449 </td> 11450 11451 <td class="entry_tags"> 11452 <ul class="entry_tags"> 11453 <li><a href="#tag_BC">BC</a></li> 11454 </ul> 11455 </td> 11456 11457 </tr> 11458 <tr class="entries_header"> 11459 <th class="th_details" colspan="6">Details</th> 11460 </tr> 11461 <tr class="entry_cont"> 11462 <td class="entry_details" colspan="6"> 11463 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 11464to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 11465upright.<wbr/></p> 11466<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 11467rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 11468the thumbnail data will also be rotated.<wbr/></p> 11469<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 11470by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 11471<p>To translate from the device orientation given by the Android sensor APIs for camera 11472sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p> 11473<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 11474 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 11475 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 11476 11477 //<wbr/> Round device orientation to a multiple of 90 11478 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 11479 11480 //<wbr/> Reverse device orientation for front-facing cameras 11481 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 11482 if (facingFront) deviceOrientation = -deviceOrientation; 11483 11484 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 11485 //<wbr/> the image upright relative to the device orientation 11486 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 11487 11488 return jpegOrientation; 11489} 11490</code></pre> 11491<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will 11492also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p> 11493 </td> 11494 </tr> 11495 11496 11497 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11498 <!-- end of entry --> 11499 11500 11501 <tr class="entry" id="controls_android.jpeg.quality"> 11502 <td class="entry_name 11503 " rowspan="3"> 11504 android.<wbr/>jpeg.<wbr/>quality 11505 </td> 11506 <td class="entry_type"> 11507 <span class="entry_type_name">byte</span> 11508 11509 <span class="entry_type_visibility"> [public]</span> 11510 11511 11512 <span class="entry_type_hwlevel">[legacy] </span> 11513 11514 11515 11516 11517 </td> <!-- entry_type --> 11518 11519 <td class="entry_description"> 11520 <p>Compression quality of the final JPEG 11521image.<wbr/></p> 11522 </td> 11523 11524 <td class="entry_units"> 11525 </td> 11526 11527 <td class="entry_range"> 11528 <p>1-100; larger is higher quality</p> 11529 </td> 11530 11531 <td class="entry_hal_version"> 11532 <p>3.<wbr/>2</p> 11533 </td> 11534 11535 <td class="entry_tags"> 11536 <ul class="entry_tags"> 11537 <li><a href="#tag_BC">BC</a></li> 11538 </ul> 11539 </td> 11540 11541 </tr> 11542 <tr class="entries_header"> 11543 <th class="th_details" colspan="6">Details</th> 11544 </tr> 11545 <tr class="entry_cont"> 11546 <td class="entry_details" colspan="6"> 11547 <p>85-95 is typical usage range.<wbr/></p> 11548 </td> 11549 </tr> 11550 11551 11552 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11553 <!-- end of entry --> 11554 11555 11556 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 11557 <td class="entry_name 11558 " rowspan="1"> 11559 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 11560 </td> 11561 <td class="entry_type"> 11562 <span class="entry_type_name">byte</span> 11563 11564 <span class="entry_type_visibility"> [public]</span> 11565 11566 11567 <span class="entry_type_hwlevel">[legacy] </span> 11568 11569 11570 11571 11572 </td> <!-- entry_type --> 11573 11574 <td class="entry_description"> 11575 <p>Compression quality of JPEG 11576thumbnail.<wbr/></p> 11577 </td> 11578 11579 <td class="entry_units"> 11580 </td> 11581 11582 <td class="entry_range"> 11583 <p>1-100; larger is higher quality</p> 11584 </td> 11585 11586 <td class="entry_hal_version"> 11587 <p>3.<wbr/>2</p> 11588 </td> 11589 11590 <td class="entry_tags"> 11591 <ul class="entry_tags"> 11592 <li><a href="#tag_BC">BC</a></li> 11593 </ul> 11594 </td> 11595 11596 </tr> 11597 11598 11599 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11600 <!-- end of entry --> 11601 11602 11603 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 11604 <td class="entry_name 11605 " rowspan="5"> 11606 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 11607 </td> 11608 <td class="entry_type"> 11609 <span class="entry_type_name">int32</span> 11610 <span class="entry_type_container">x</span> 11611 11612 <span class="entry_type_array"> 11613 2 11614 </span> 11615 <span class="entry_type_visibility"> [public as size]</span> 11616 11617 11618 <span class="entry_type_hwlevel">[legacy] </span> 11619 11620 11621 11622 11623 </td> <!-- entry_type --> 11624 11625 <td class="entry_description"> 11626 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 11627 </td> 11628 11629 <td class="entry_units"> 11630 </td> 11631 11632 <td class="entry_range"> 11633 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 11634 </td> 11635 11636 <td class="entry_hal_version"> 11637 <p>3.<wbr/>2</p> 11638 </td> 11639 11640 <td class="entry_tags"> 11641 <ul class="entry_tags"> 11642 <li><a href="#tag_BC">BC</a></li> 11643 </ul> 11644 </td> 11645 11646 </tr> 11647 <tr class="entries_header"> 11648 <th class="th_details" colspan="6">Details</th> 11649 </tr> 11650 <tr class="entry_cont"> 11651 <td class="entry_details" colspan="6"> 11652 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 11653but the captured JPEG will still be a valid image.<wbr/></p> 11654<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 11655should have the same aspect ratio as the main JPEG output.<wbr/></p> 11656<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 11657ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 11658For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1165916:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 11660generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 11661Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 11662<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 11663the camera device will handle thumbnail rotation in one of the following ways:</p> 11664<ul> 11665<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 11666 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 11667<li>Rotate the jpeg and thumbnail image data and not set 11668 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 11669 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 11670 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 11671 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 11672 size.<wbr/></li> 11673</ul> 11674 </td> 11675 </tr> 11676 11677 <tr class="entries_header"> 11678 <th class="th_details" colspan="6">HAL Implementation Details</th> 11679 </tr> 11680 <tr class="entry_cont"> 11681 <td class="entry_details" colspan="6"> 11682 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 11683The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 11684The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 11685thumbnail image cropping.<wbr/></p> 11686 </td> 11687 </tr> 11688 11689 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11690 <!-- end of entry --> 11691 11692 11693 11694 <!-- end of kind --> 11695 </tbody> 11696 <tr><td colspan="7" class="kind">static</td></tr> 11697 11698 <thead class="entries_header"> 11699 <tr> 11700 <th class="th_name">Property Name</th> 11701 <th class="th_type">Type</th> 11702 <th class="th_description">Description</th> 11703 <th class="th_units">Units</th> 11704 <th class="th_range">Range</th> 11705 <th class="th_hal_version">Initial HIDL HAL version</th> 11706 <th class="th_tags">Tags</th> 11707 </tr> 11708 </thead> 11709 11710 <tbody> 11711 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 11722 <td class="entry_name 11723 " rowspan="3"> 11724 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 11725 </td> 11726 <td class="entry_type"> 11727 <span class="entry_type_name">int32</span> 11728 <span class="entry_type_container">x</span> 11729 11730 <span class="entry_type_array"> 11731 2 x n 11732 </span> 11733 <span class="entry_type_visibility"> [public as size]</span> 11734 11735 11736 <span class="entry_type_hwlevel">[legacy] </span> 11737 11738 11739 11740 11741 </td> <!-- entry_type --> 11742 11743 <td class="entry_description"> 11744 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this 11745camera device.<wbr/></p> 11746 </td> 11747 11748 <td class="entry_units"> 11749 </td> 11750 11751 <td class="entry_range"> 11752 </td> 11753 11754 <td class="entry_hal_version"> 11755 <p>3.<wbr/>2</p> 11756 </td> 11757 11758 <td class="entry_tags"> 11759 <ul class="entry_tags"> 11760 <li><a href="#tag_BC">BC</a></li> 11761 </ul> 11762 </td> 11763 11764 </tr> 11765 <tr class="entries_header"> 11766 <th class="th_details" colspan="6">Details</th> 11767 </tr> 11768 <tr class="entry_cont"> 11769 <td class="entry_details" colspan="6"> 11770 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no 11771thumbnail should be generated.<wbr/></p> 11772<p>Below condiditions will be satisfied for this size list:</p> 11773<ul> 11774<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 11775If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 11776<li>The aspect ratio of the largest thumbnail size will be same as the 11777aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 11778The largest size is defined as the size that has the largest pixel area 11779in a given size list.<wbr/></li> 11780<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 11781one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 11782and vice versa.<wbr/></li> 11783<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li> 11784</ul> 11785 </td> 11786 </tr> 11787 11788 11789 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11790 <!-- end of entry --> 11791 11792 11793 <tr class="entry" id="static_android.jpeg.maxSize"> 11794 <td class="entry_name 11795 " rowspan="3"> 11796 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 11797 </td> 11798 <td class="entry_type"> 11799 <span class="entry_type_name">int32</span> 11800 11801 <span class="entry_type_visibility"> [system]</span> 11802 11803 11804 11805 11806 11807 11808 </td> <!-- entry_type --> 11809 11810 <td class="entry_description"> 11811 <p>Maximum size in bytes for the compressed 11812JPEG buffer</p> 11813 </td> 11814 11815 <td class="entry_units"> 11816 </td> 11817 11818 <td class="entry_range"> 11819 <p>Must be large enough to fit any JPEG produced by 11820the camera</p> 11821 </td> 11822 11823 <td class="entry_hal_version"> 11824 <p>3.<wbr/>2</p> 11825 </td> 11826 11827 <td class="entry_tags"> 11828 </td> 11829 11830 </tr> 11831 <tr class="entries_header"> 11832 <th class="th_details" colspan="6">Details</th> 11833 </tr> 11834 <tr class="entry_cont"> 11835 <td class="entry_details" colspan="6"> 11836 <p>This is used for sizing the gralloc buffers for 11837JPEG</p> 11838 </td> 11839 </tr> 11840 11841 11842 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11843 <!-- end of entry --> 11844 11845 11846 11847 <!-- end of kind --> 11848 </tbody> 11849 <tr><td colspan="7" class="kind">dynamic</td></tr> 11850 11851 <thead class="entries_header"> 11852 <tr> 11853 <th class="th_name">Property Name</th> 11854 <th class="th_type">Type</th> 11855 <th class="th_description">Description</th> 11856 <th class="th_units">Units</th> 11857 <th class="th_range">Range</th> 11858 <th class="th_hal_version">Initial HIDL HAL version</th> 11859 <th class="th_tags">Tags</th> 11860 </tr> 11861 </thead> 11862 11863 <tbody> 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> 11875 <td class="entry_name 11876 " rowspan="3"> 11877 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 11878 </td> 11879 <td class="entry_type"> 11880 <span class="entry_type_name">byte</span> 11881 11882 <span class="entry_type_visibility"> [java_public as location]</span> 11883 11884 <span class="entry_type_synthetic">[synthetic] </span> 11885 11886 <span class="entry_type_hwlevel">[legacy] </span> 11887 11888 11889 11890 11891 </td> <!-- entry_type --> 11892 11893 <td class="entry_description"> 11894 <p>A location object to use when generating image GPS metadata.<wbr/></p> 11895 </td> 11896 11897 <td class="entry_units"> 11898 </td> 11899 11900 <td class="entry_range"> 11901 </td> 11902 11903 <td class="entry_hal_version"> 11904 <p>3.<wbr/>2</p> 11905 </td> 11906 11907 <td class="entry_tags"> 11908 </td> 11909 11910 </tr> 11911 <tr class="entries_header"> 11912 <th class="th_details" colspan="6">Details</th> 11913 </tr> 11914 <tr class="entry_cont"> 11915 <td class="entry_details" colspan="6"> 11916 <p>Setting a location object in a request will include the GPS coordinates of the location 11917into any JPEG images captured based on the request.<wbr/> These coordinates can then be 11918viewed by anyone who receives the JPEG image.<wbr/></p> 11919 </td> 11920 </tr> 11921 11922 11923 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11924 <!-- end of entry --> 11925 11926 11927 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 11928 <td class="entry_name 11929 " rowspan="1"> 11930 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 11931 </td> 11932 <td class="entry_type"> 11933 <span class="entry_type_name">double</span> 11934 <span class="entry_type_container">x</span> 11935 11936 <span class="entry_type_array"> 11937 3 11938 </span> 11939 <span class="entry_type_visibility"> [ndk_public]</span> 11940 11941 11942 <span class="entry_type_hwlevel">[legacy] </span> 11943 11944 11945 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 11946 11947 11948 </td> <!-- entry_type --> 11949 11950 <td class="entry_description"> 11951 <p>GPS coordinates to include in output JPEG 11952EXIF.<wbr/></p> 11953 </td> 11954 11955 <td class="entry_units"> 11956 </td> 11957 11958 <td class="entry_range"> 11959 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 11960 </td> 11961 11962 <td class="entry_hal_version"> 11963 <p>3.<wbr/>2</p> 11964 </td> 11965 11966 <td class="entry_tags"> 11967 <ul class="entry_tags"> 11968 <li><a href="#tag_BC">BC</a></li> 11969 </ul> 11970 </td> 11971 11972 </tr> 11973 11974 11975 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 11976 <!-- end of entry --> 11977 11978 11979 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 11980 <td class="entry_name 11981 " rowspan="1"> 11982 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 11983 </td> 11984 <td class="entry_type"> 11985 <span class="entry_type_name">byte</span> 11986 11987 <span class="entry_type_visibility"> [ndk_public as string]</span> 11988 11989 11990 <span class="entry_type_hwlevel">[legacy] </span> 11991 11992 11993 11994 11995 </td> <!-- entry_type --> 11996 11997 <td class="entry_description"> 11998 <p>32 characters describing GPS algorithm to 11999include in EXIF.<wbr/></p> 12000 </td> 12001 12002 <td class="entry_units"> 12003 UTF-8 null-terminated string 12004 </td> 12005 12006 <td class="entry_range"> 12007 </td> 12008 12009 <td class="entry_hal_version"> 12010 <p>3.<wbr/>2</p> 12011 </td> 12012 12013 <td class="entry_tags"> 12014 <ul class="entry_tags"> 12015 <li><a href="#tag_BC">BC</a></li> 12016 </ul> 12017 </td> 12018 12019 </tr> 12020 12021 12022 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12023 <!-- end of entry --> 12024 12025 12026 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 12027 <td class="entry_name 12028 " rowspan="1"> 12029 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 12030 </td> 12031 <td class="entry_type"> 12032 <span class="entry_type_name">int64</span> 12033 12034 <span class="entry_type_visibility"> [ndk_public]</span> 12035 12036 12037 <span class="entry_type_hwlevel">[legacy] </span> 12038 12039 12040 12041 12042 </td> <!-- entry_type --> 12043 12044 <td class="entry_description"> 12045 <p>Time GPS fix was made to include in 12046EXIF.<wbr/></p> 12047 </td> 12048 12049 <td class="entry_units"> 12050 UTC in seconds since January 1,<wbr/> 1970 12051 </td> 12052 12053 <td class="entry_range"> 12054 </td> 12055 12056 <td class="entry_hal_version"> 12057 <p>3.<wbr/>2</p> 12058 </td> 12059 12060 <td class="entry_tags"> 12061 <ul class="entry_tags"> 12062 <li><a href="#tag_BC">BC</a></li> 12063 </ul> 12064 </td> 12065 12066 </tr> 12067 12068 12069 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12070 <!-- end of entry --> 12071 12072 12073 <tr class="entry" id="dynamic_android.jpeg.orientation"> 12074 <td class="entry_name 12075 " rowspan="3"> 12076 android.<wbr/>jpeg.<wbr/>orientation 12077 </td> 12078 <td class="entry_type"> 12079 <span class="entry_type_name">int32</span> 12080 12081 <span class="entry_type_visibility"> [public]</span> 12082 12083 12084 <span class="entry_type_hwlevel">[legacy] </span> 12085 12086 12087 12088 12089 </td> <!-- entry_type --> 12090 12091 <td class="entry_description"> 12092 <p>The orientation for a JPEG image.<wbr/></p> 12093 </td> 12094 12095 <td class="entry_units"> 12096 Degrees in multiples of 90 12097 </td> 12098 12099 <td class="entry_range"> 12100 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 12101 </td> 12102 12103 <td class="entry_hal_version"> 12104 <p>3.<wbr/>2</p> 12105 </td> 12106 12107 <td class="entry_tags"> 12108 <ul class="entry_tags"> 12109 <li><a href="#tag_BC">BC</a></li> 12110 </ul> 12111 </td> 12112 12113 </tr> 12114 <tr class="entries_header"> 12115 <th class="th_details" colspan="6">Details</th> 12116 </tr> 12117 <tr class="entry_cont"> 12118 <td class="entry_details" colspan="6"> 12119 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 12120to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 12121upright.<wbr/></p> 12122<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 12123rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 12124the thumbnail data will also be rotated.<wbr/></p> 12125<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 12126by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 12127<p>To translate from the device orientation given by the Android sensor APIs for camera 12128sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p> 12129<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 12130 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 12131 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 12132 12133 //<wbr/> Round device orientation to a multiple of 90 12134 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 12135 12136 //<wbr/> Reverse device orientation for front-facing cameras 12137 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 12138 if (facingFront) deviceOrientation = -deviceOrientation; 12139 12140 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 12141 //<wbr/> the image upright relative to the device orientation 12142 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 12143 12144 return jpegOrientation; 12145} 12146</code></pre> 12147<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will 12148also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p> 12149 </td> 12150 </tr> 12151 12152 12153 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12154 <!-- end of entry --> 12155 12156 12157 <tr class="entry" id="dynamic_android.jpeg.quality"> 12158 <td class="entry_name 12159 " rowspan="3"> 12160 android.<wbr/>jpeg.<wbr/>quality 12161 </td> 12162 <td class="entry_type"> 12163 <span class="entry_type_name">byte</span> 12164 12165 <span class="entry_type_visibility"> [public]</span> 12166 12167 12168 <span class="entry_type_hwlevel">[legacy] </span> 12169 12170 12171 12172 12173 </td> <!-- entry_type --> 12174 12175 <td class="entry_description"> 12176 <p>Compression quality of the final JPEG 12177image.<wbr/></p> 12178 </td> 12179 12180 <td class="entry_units"> 12181 </td> 12182 12183 <td class="entry_range"> 12184 <p>1-100; larger is higher quality</p> 12185 </td> 12186 12187 <td class="entry_hal_version"> 12188 <p>3.<wbr/>2</p> 12189 </td> 12190 12191 <td class="entry_tags"> 12192 <ul class="entry_tags"> 12193 <li><a href="#tag_BC">BC</a></li> 12194 </ul> 12195 </td> 12196 12197 </tr> 12198 <tr class="entries_header"> 12199 <th class="th_details" colspan="6">Details</th> 12200 </tr> 12201 <tr class="entry_cont"> 12202 <td class="entry_details" colspan="6"> 12203 <p>85-95 is typical usage range.<wbr/></p> 12204 </td> 12205 </tr> 12206 12207 12208 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12209 <!-- end of entry --> 12210 12211 12212 <tr class="entry" id="dynamic_android.jpeg.size"> 12213 <td class="entry_name 12214 " rowspan="3"> 12215 android.<wbr/>jpeg.<wbr/>size 12216 </td> 12217 <td class="entry_type"> 12218 <span class="entry_type_name">int32</span> 12219 12220 <span class="entry_type_visibility"> [system]</span> 12221 12222 12223 12224 12225 12226 12227 </td> <!-- entry_type --> 12228 12229 <td class="entry_description"> 12230 <p>The size of the compressed JPEG image,<wbr/> in 12231bytes</p> 12232 </td> 12233 12234 <td class="entry_units"> 12235 </td> 12236 12237 <td class="entry_range"> 12238 <p>>= 0</p> 12239 </td> 12240 12241 <td class="entry_hal_version"> 12242 <p>3.<wbr/>2</p> 12243 </td> 12244 12245 <td class="entry_tags"> 12246 <ul class="entry_tags"> 12247 <li><a href="#tag_FUTURE">FUTURE</a></li> 12248 </ul> 12249 </td> 12250 12251 </tr> 12252 <tr class="entries_header"> 12253 <th class="th_details" colspan="6">Details</th> 12254 </tr> 12255 <tr class="entry_cont"> 12256 <td class="entry_details" colspan="6"> 12257 <p>If no JPEG output is produced for the request,<wbr/> 12258this must be 0.<wbr/></p> 12259<p>Otherwise,<wbr/> this describes the real size of the compressed 12260JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 12261if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 12262has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 12263the JPEG stream will be 1000000 bytes,<wbr/> of which the first 12264500000 make up the real data.<wbr/></p> 12265 </td> 12266 </tr> 12267 12268 12269 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12270 <!-- end of entry --> 12271 12272 12273 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 12274 <td class="entry_name 12275 " rowspan="1"> 12276 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 12277 </td> 12278 <td class="entry_type"> 12279 <span class="entry_type_name">byte</span> 12280 12281 <span class="entry_type_visibility"> [public]</span> 12282 12283 12284 <span class="entry_type_hwlevel">[legacy] </span> 12285 12286 12287 12288 12289 </td> <!-- entry_type --> 12290 12291 <td class="entry_description"> 12292 <p>Compression quality of JPEG 12293thumbnail.<wbr/></p> 12294 </td> 12295 12296 <td class="entry_units"> 12297 </td> 12298 12299 <td class="entry_range"> 12300 <p>1-100; larger is higher quality</p> 12301 </td> 12302 12303 <td class="entry_hal_version"> 12304 <p>3.<wbr/>2</p> 12305 </td> 12306 12307 <td class="entry_tags"> 12308 <ul class="entry_tags"> 12309 <li><a href="#tag_BC">BC</a></li> 12310 </ul> 12311 </td> 12312 12313 </tr> 12314 12315 12316 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12317 <!-- end of entry --> 12318 12319 12320 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 12321 <td class="entry_name 12322 " rowspan="5"> 12323 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 12324 </td> 12325 <td class="entry_type"> 12326 <span class="entry_type_name">int32</span> 12327 <span class="entry_type_container">x</span> 12328 12329 <span class="entry_type_array"> 12330 2 12331 </span> 12332 <span class="entry_type_visibility"> [public as size]</span> 12333 12334 12335 <span class="entry_type_hwlevel">[legacy] </span> 12336 12337 12338 12339 12340 </td> <!-- entry_type --> 12341 12342 <td class="entry_description"> 12343 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 12344 </td> 12345 12346 <td class="entry_units"> 12347 </td> 12348 12349 <td class="entry_range"> 12350 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 12351 </td> 12352 12353 <td class="entry_hal_version"> 12354 <p>3.<wbr/>2</p> 12355 </td> 12356 12357 <td class="entry_tags"> 12358 <ul class="entry_tags"> 12359 <li><a href="#tag_BC">BC</a></li> 12360 </ul> 12361 </td> 12362 12363 </tr> 12364 <tr class="entries_header"> 12365 <th class="th_details" colspan="6">Details</th> 12366 </tr> 12367 <tr class="entry_cont"> 12368 <td class="entry_details" colspan="6"> 12369 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 12370but the captured JPEG will still be a valid image.<wbr/></p> 12371<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 12372should have the same aspect ratio as the main JPEG output.<wbr/></p> 12373<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 12374ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 12375For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1237616:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 12377generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 12378Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 12379<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 12380the camera device will handle thumbnail rotation in one of the following ways:</p> 12381<ul> 12382<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 12383 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 12384<li>Rotate the jpeg and thumbnail image data and not set 12385 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 12386 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 12387 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 12388 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 12389 size.<wbr/></li> 12390</ul> 12391 </td> 12392 </tr> 12393 12394 <tr class="entries_header"> 12395 <th class="th_details" colspan="6">HAL Implementation Details</th> 12396 </tr> 12397 <tr class="entry_cont"> 12398 <td class="entry_details" colspan="6"> 12399 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 12400The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 12401The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 12402thumbnail image cropping.<wbr/></p> 12403 </td> 12404 </tr> 12405 12406 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12407 <!-- end of entry --> 12408 12409 12410 12411 <!-- end of kind --> 12412 </tbody> 12413 12414 <!-- end of section --> 12415 <tr><td colspan="7" id="section_lens" class="section">lens</td></tr> 12416 12417 12418 <tr><td colspan="7" class="kind">controls</td></tr> 12419 12420 <thead class="entries_header"> 12421 <tr> 12422 <th class="th_name">Property Name</th> 12423 <th class="th_type">Type</th> 12424 <th class="th_description">Description</th> 12425 <th class="th_units">Units</th> 12426 <th class="th_range">Range</th> 12427 <th class="th_hal_version">Initial HIDL HAL version</th> 12428 <th class="th_tags">Tags</th> 12429 </tr> 12430 </thead> 12431 12432 <tbody> 12433 12434 12435 12436 12437 12438 12439 12440 12441 12442 12443 <tr class="entry" id="controls_android.lens.aperture"> 12444 <td class="entry_name 12445 " rowspan="3"> 12446 android.<wbr/>lens.<wbr/>aperture 12447 </td> 12448 <td class="entry_type"> 12449 <span class="entry_type_name">float</span> 12450 12451 <span class="entry_type_visibility"> [public]</span> 12452 12453 12454 <span class="entry_type_hwlevel">[full] </span> 12455 12456 12457 12458 12459 </td> <!-- entry_type --> 12460 12461 <td class="entry_description"> 12462 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 12463effective aperture diameter.<wbr/></p> 12464 </td> 12465 12466 <td class="entry_units"> 12467 The f-number (f/<wbr/>N) 12468 </td> 12469 12470 <td class="entry_range"> 12471 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 12472 </td> 12473 12474 <td class="entry_hal_version"> 12475 <p>3.<wbr/>2</p> 12476 </td> 12477 12478 <td class="entry_tags"> 12479 <ul class="entry_tags"> 12480 <li><a href="#tag_V1">V1</a></li> 12481 </ul> 12482 </td> 12483 12484 </tr> 12485 <tr class="entries_header"> 12486 <th class="th_details" colspan="6">Details</th> 12487 </tr> 12488 <tr class="entry_cont"> 12489 <td class="entry_details" colspan="6"> 12490 <p>Setting this value is only supported on the camera devices that have a variable 12491aperture lens.<wbr/></p> 12492<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 12493this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 12494<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> 12495to achieve manual exposure control.<wbr/></p> 12496<p>The requested aperture value may take several frames to reach the 12497requested value; the camera device will report the current (intermediate) 12498aperture size in capture result metadata while the aperture is changing.<wbr/> 12499While 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> 12500<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 12501the ON modes,<wbr/> this will be overridden by the camera device 12502auto-exposure algorithm,<wbr/> the overridden values are then provided 12503back to the user in the corresponding result.<wbr/></p> 12504 </td> 12505 </tr> 12506 12507 12508 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12509 <!-- end of entry --> 12510 12511 12512 <tr class="entry" id="controls_android.lens.filterDensity"> 12513 <td class="entry_name 12514 " rowspan="3"> 12515 android.<wbr/>lens.<wbr/>filter<wbr/>Density 12516 </td> 12517 <td class="entry_type"> 12518 <span class="entry_type_name">float</span> 12519 12520 <span class="entry_type_visibility"> [public]</span> 12521 12522 12523 <span class="entry_type_hwlevel">[full] </span> 12524 12525 12526 12527 12528 </td> <!-- entry_type --> 12529 12530 <td class="entry_description"> 12531 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 12532 </td> 12533 12534 <td class="entry_units"> 12535 Exposure Value (EV) 12536 </td> 12537 12538 <td class="entry_range"> 12539 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 12540 </td> 12541 12542 <td class="entry_hal_version"> 12543 <p>3.<wbr/>2</p> 12544 </td> 12545 12546 <td class="entry_tags"> 12547 <ul class="entry_tags"> 12548 <li><a href="#tag_V1">V1</a></li> 12549 </ul> 12550 </td> 12551 12552 </tr> 12553 <tr class="entries_header"> 12554 <th class="th_details" colspan="6">Details</th> 12555 </tr> 12556 <tr class="entry_cont"> 12557 <td class="entry_details" colspan="6"> 12558 <p>This control will not be supported on most camera devices.<wbr/></p> 12559<p>Lens filters are typically used to lower the amount of light the 12560sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 12561step is the standard logarithmic representation,<wbr/> which are 12562non-negative,<wbr/> and inversely proportional to the amount of light 12563hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 12564in no reduction of the incoming light,<wbr/> and setting this to 2 would 12565mean that the filter is set to reduce incoming light by two stops 12566(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 12567<p>It may take several frames before the lens filter density changes 12568to the requested value.<wbr/> While the filter density is still changing,<wbr/> 12569<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 12570 </td> 12571 </tr> 12572 12573 12574 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12575 <!-- end of entry --> 12576 12577 12578 <tr class="entry" id="controls_android.lens.focalLength"> 12579 <td class="entry_name 12580 " rowspan="3"> 12581 android.<wbr/>lens.<wbr/>focal<wbr/>Length 12582 </td> 12583 <td class="entry_type"> 12584 <span class="entry_type_name">float</span> 12585 12586 <span class="entry_type_visibility"> [public]</span> 12587 12588 12589 <span class="entry_type_hwlevel">[legacy] </span> 12590 12591 12592 12593 12594 </td> <!-- entry_type --> 12595 12596 <td class="entry_description"> 12597 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 12598 </td> 12599 12600 <td class="entry_units"> 12601 Millimeters 12602 </td> 12603 12604 <td class="entry_range"> 12605 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 12606 </td> 12607 12608 <td class="entry_hal_version"> 12609 <p>3.<wbr/>2</p> 12610 </td> 12611 12612 <td class="entry_tags"> 12613 <ul class="entry_tags"> 12614 <li><a href="#tag_V1">V1</a></li> 12615 </ul> 12616 </td> 12617 12618 </tr> 12619 <tr class="entries_header"> 12620 <th class="th_details" colspan="6">Details</th> 12621 </tr> 12622 <tr class="entry_cont"> 12623 <td class="entry_details" colspan="6"> 12624 <p>This setting controls the physical focal length of the camera 12625device's lens.<wbr/> Changing the focal length changes the field of 12626view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 12627<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 12628setting won't be applied instantaneously,<wbr/> and it may take several 12629frames before the lens can change to the requested focal length.<wbr/> 12630While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 12631be set to MOVING.<wbr/></p> 12632<p>Optical zoom will not be supported on most devices.<wbr/></p> 12633 </td> 12634 </tr> 12635 12636 12637 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12638 <!-- end of entry --> 12639 12640 12641 <tr class="entry" id="controls_android.lens.focusDistance"> 12642 <td class="entry_name 12643 " rowspan="3"> 12644 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 12645 </td> 12646 <td class="entry_type"> 12647 <span class="entry_type_name">float</span> 12648 12649 <span class="entry_type_visibility"> [public]</span> 12650 12651 12652 <span class="entry_type_hwlevel">[full] </span> 12653 12654 12655 12656 12657 </td> <!-- entry_type --> 12658 12659 <td class="entry_description"> 12660 <p>Desired distance to plane of sharpest focus,<wbr/> 12661measured from frontmost surface of the lens.<wbr/></p> 12662 </td> 12663 12664 <td class="entry_units"> 12665 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 12666 </td> 12667 12668 <td class="entry_range"> 12669 <p>>= 0</p> 12670 </td> 12671 12672 <td class="entry_hal_version"> 12673 <p>3.<wbr/>2</p> 12674 </td> 12675 12676 <td class="entry_tags"> 12677 <ul class="entry_tags"> 12678 <li><a href="#tag_BC">BC</a></li> 12679 <li><a href="#tag_V1">V1</a></li> 12680 </ul> 12681 </td> 12682 12683 </tr> 12684 <tr class="entries_header"> 12685 <th class="th_details" colspan="6">Details</th> 12686 </tr> 12687 <tr class="entry_cont"> 12688 <td class="entry_details" colspan="6"> 12689 <p>This control can be used for setting manual focus,<wbr/> on devices that support 12690the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see 12691<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p> 12692<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to 12693<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> 12694<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 12695instantaneously,<wbr/> and it may take several frames before the lens 12696can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 12697<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 12698<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code> 12699for infinity focus.<wbr/></p> 12700 </td> 12701 </tr> 12702 12703 12704 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12705 <!-- end of entry --> 12706 12707 12708 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 12709 <td class="entry_name 12710 " rowspan="3"> 12711 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 12712 </td> 12713 <td class="entry_type"> 12714 <span class="entry_type_name entry_type_name_enum">byte</span> 12715 12716 <span class="entry_type_visibility"> [public]</span> 12717 12718 12719 <span class="entry_type_hwlevel">[limited] </span> 12720 12721 12722 12723 <ul class="entry_type_enum"> 12724 <li> 12725 <span class="entry_type_enum_name">OFF (v3.2)</span> 12726 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 12727 </li> 12728 <li> 12729 <span class="entry_type_enum_name">ON (v3.2)</span> 12730 <span class="entry_type_enum_optional">[optional]</span> 12731 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 12732 </li> 12733 </ul> 12734 12735 </td> <!-- entry_type --> 12736 12737 <td class="entry_description"> 12738 <p>Sets whether the camera device uses optical image stabilization (OIS) 12739when capturing images.<wbr/></p> 12740 </td> 12741 12742 <td class="entry_units"> 12743 </td> 12744 12745 <td class="entry_range"> 12746 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 12747 </td> 12748 12749 <td class="entry_hal_version"> 12750 <p>3.<wbr/>2</p> 12751 </td> 12752 12753 <td class="entry_tags"> 12754 <ul class="entry_tags"> 12755 <li><a href="#tag_V1">V1</a></li> 12756 </ul> 12757 </td> 12758 12759 </tr> 12760 <tr class="entries_header"> 12761 <th class="th_details" colspan="6">Details</th> 12762 </tr> 12763 <tr class="entry_cont"> 12764 <td class="entry_details" colspan="6"> 12765 <p>OIS is used to compensate for motion blur due to small 12766movements of the camera during capture.<wbr/> Unlike digital image 12767stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 12768makes use of mechanical elements to stabilize the camera 12769sensor,<wbr/> and thus allows for longer exposure times before 12770camera shake becomes apparent.<wbr/></p> 12771<p>Switching between different optical stabilization modes may take several 12772frames to initialize,<wbr/> the camera device will report the current mode in 12773capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 12774optical stabilization modes in the first several capture results may still 12775be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 12776<p>If a camera device supports both OIS and digital image stabilization 12777(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 12778interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 12779<p>Not all devices will support OIS; see 12780<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 12781available controls.<wbr/></p> 12782 </td> 12783 </tr> 12784 12785 12786 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12787 <!-- end of entry --> 12788 12789 12790 12791 <!-- end of kind --> 12792 </tbody> 12793 <tr><td colspan="7" class="kind">static</td></tr> 12794 12795 <thead class="entries_header"> 12796 <tr> 12797 <th class="th_name">Property Name</th> 12798 <th class="th_type">Type</th> 12799 <th class="th_description">Description</th> 12800 <th class="th_units">Units</th> 12801 <th class="th_range">Range</th> 12802 <th class="th_hal_version">Initial HIDL HAL version</th> 12803 <th class="th_tags">Tags</th> 12804 </tr> 12805 </thead> 12806 12807 <tbody> 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 12818 12819 12820 <tr class="entry" id="static_android.lens.info.availableApertures"> 12821 <td class="entry_name 12822 " rowspan="3"> 12823 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 12824 </td> 12825 <td class="entry_type"> 12826 <span class="entry_type_name">float</span> 12827 <span class="entry_type_container">x</span> 12828 12829 <span class="entry_type_array"> 12830 n 12831 </span> 12832 <span class="entry_type_visibility"> [public]</span> 12833 12834 12835 <span class="entry_type_hwlevel">[full] </span> 12836 12837 12838 12839 12840 </td> <!-- entry_type --> 12841 12842 <td class="entry_description"> 12843 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are 12844supported by this camera device.<wbr/></p> 12845 </td> 12846 12847 <td class="entry_units"> 12848 The aperture f-number 12849 </td> 12850 12851 <td class="entry_range"> 12852 </td> 12853 12854 <td class="entry_hal_version"> 12855 <p>3.<wbr/>2</p> 12856 </td> 12857 12858 <td class="entry_tags"> 12859 <ul class="entry_tags"> 12860 <li><a href="#tag_V1">V1</a></li> 12861 </ul> 12862 </td> 12863 12864 </tr> 12865 <tr class="entries_header"> 12866 <th class="th_details" colspan="6">Details</th> 12867 </tr> 12868 <tr class="entry_cont"> 12869 <td class="entry_details" colspan="6"> 12870 <p>If the camera device doesn't support a variable lens aperture,<wbr/> 12871this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p> 12872<p>If the camera device supports a variable aperture,<wbr/> the aperture values 12873in this list will be sorted in ascending order.<wbr/></p> 12874 </td> 12875 </tr> 12876 12877 12878 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12879 <!-- end of entry --> 12880 12881 12882 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 12883 <td class="entry_name 12884 " rowspan="3"> 12885 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 12886 </td> 12887 <td class="entry_type"> 12888 <span class="entry_type_name">float</span> 12889 <span class="entry_type_container">x</span> 12890 12891 <span class="entry_type_array"> 12892 n 12893 </span> 12894 <span class="entry_type_visibility"> [public]</span> 12895 12896 12897 <span class="entry_type_hwlevel">[full] </span> 12898 12899 12900 12901 12902 </td> <!-- entry_type --> 12903 12904 <td class="entry_description"> 12905 <p>List of neutral density filter values for 12906<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p> 12907 </td> 12908 12909 <td class="entry_units"> 12910 Exposure value (EV) 12911 </td> 12912 12913 <td class="entry_range"> 12914 <p>Values are >= 0</p> 12915 </td> 12916 12917 <td class="entry_hal_version"> 12918 <p>3.<wbr/>2</p> 12919 </td> 12920 12921 <td class="entry_tags"> 12922 <ul class="entry_tags"> 12923 <li><a href="#tag_V1">V1</a></li> 12924 </ul> 12925 </td> 12926 12927 </tr> 12928 <tr class="entries_header"> 12929 <th class="th_details" colspan="6">Details</th> 12930 </tr> 12931 <tr class="entry_cont"> 12932 <td class="entry_details" colspan="6"> 12933 <p>If a neutral density filter is not supported by this camera device,<wbr/> 12934this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every 12935filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p> 12936 </td> 12937 </tr> 12938 12939 12940 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 12941 <!-- end of entry --> 12942 12943 12944 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 12945 <td class="entry_name 12946 " rowspan="3"> 12947 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 12948 </td> 12949 <td class="entry_type"> 12950 <span class="entry_type_name">float</span> 12951 <span class="entry_type_container">x</span> 12952 12953 <span class="entry_type_array"> 12954 n 12955 </span> 12956 <span class="entry_type_visibility"> [public]</span> 12957 12958 12959 <span class="entry_type_hwlevel">[legacy] </span> 12960 12961 12962 <div class="entry_type_notes">The list of available focal lengths</div> 12963 12964 12965 </td> <!-- entry_type --> 12966 12967 <td class="entry_description"> 12968 <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 12969device.<wbr/></p> 12970 </td> 12971 12972 <td class="entry_units"> 12973 Millimeters 12974 </td> 12975 12976 <td class="entry_range"> 12977 <p>Values are > 0</p> 12978 </td> 12979 12980 <td class="entry_hal_version"> 12981 <p>3.<wbr/>2</p> 12982 </td> 12983 12984 <td class="entry_tags"> 12985 <ul class="entry_tags"> 12986 <li><a href="#tag_BC">BC</a></li> 12987 <li><a href="#tag_V1">V1</a></li> 12988 </ul> 12989 </td> 12990 12991 </tr> 12992 <tr class="entries_header"> 12993 <th class="th_details" colspan="6">Details</th> 12994 </tr> 12995 <tr class="entry_cont"> 12996 <td class="entry_details" colspan="6"> 12997 <p>If optical zoom is not supported,<wbr/> this list will only contain 12998a single value corresponding to the fixed focal length of the 12999device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported 13000by the camera device,<wbr/> in ascending order.<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="static_android.lens.info.availableOpticalStabilization"> 13010 <td class="entry_name 13011 " rowspan="3"> 13012 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 13013 </td> 13014 <td class="entry_type"> 13015 <span class="entry_type_name">byte</span> 13016 <span class="entry_type_container">x</span> 13017 13018 <span class="entry_type_array"> 13019 n 13020 </span> 13021 <span class="entry_type_visibility"> [public as enumList]</span> 13022 13023 13024 <span class="entry_type_hwlevel">[limited] </span> 13025 13026 13027 <div class="entry_type_notes">list of enums</div> 13028 13029 13030 </td> <!-- entry_type --> 13031 13032 <td class="entry_description"> 13033 <p>List of optical image stabilization (OIS) modes for 13034<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> 13035 </td> 13036 13037 <td class="entry_units"> 13038 </td> 13039 13040 <td class="entry_range"> 13041 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p> 13042 </td> 13043 13044 <td class="entry_hal_version"> 13045 <p>3.<wbr/>2</p> 13046 </td> 13047 13048 <td class="entry_tags"> 13049 <ul class="entry_tags"> 13050 <li><a href="#tag_V1">V1</a></li> 13051 </ul> 13052 </td> 13053 13054 </tr> 13055 <tr class="entries_header"> 13056 <th class="th_details" colspan="6">Details</th> 13057 </tr> 13058 <tr class="entry_cont"> 13059 <td class="entry_details" colspan="6"> 13060 <p>If OIS is not supported by a given camera device,<wbr/> this list will 13061contain only OFF.<wbr/></p> 13062 </td> 13063 </tr> 13064 13065 13066 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13067 <!-- end of entry --> 13068 13069 13070 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 13071 <td class="entry_name 13072 " rowspan="3"> 13073 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 13074 </td> 13075 <td class="entry_type"> 13076 <span class="entry_type_name">float</span> 13077 13078 <span class="entry_type_visibility"> [public]</span> 13079 13080 13081 <span class="entry_type_hwlevel">[limited] </span> 13082 13083 13084 13085 13086 </td> <!-- entry_type --> 13087 13088 <td class="entry_description"> 13089 <p>Hyperfocal distance for this lens.<wbr/></p> 13090 </td> 13091 13092 <td class="entry_units"> 13093 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 13094 </td> 13095 13096 <td class="entry_range"> 13097 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is 13098within <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> 13099 </td> 13100 13101 <td class="entry_hal_version"> 13102 <p>3.<wbr/>2</p> 13103 </td> 13104 13105 <td class="entry_tags"> 13106 </td> 13107 13108 </tr> 13109 <tr class="entries_header"> 13110 <th class="th_details" colspan="6">Details</th> 13111 </tr> 13112 <tr class="entry_cont"> 13113 <td class="entry_details" colspan="6"> 13114 <p>If the lens is not fixed focus,<wbr/> the camera device will report this 13115field 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> 13116 </td> 13117 </tr> 13118 13119 13120 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13121 <!-- end of entry --> 13122 13123 13124 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 13125 <td class="entry_name 13126 " rowspan="5"> 13127 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 13128 </td> 13129 <td class="entry_type"> 13130 <span class="entry_type_name">float</span> 13131 13132 <span class="entry_type_visibility"> [public]</span> 13133 13134 13135 <span class="entry_type_hwlevel">[limited] </span> 13136 13137 13138 13139 13140 </td> <!-- entry_type --> 13141 13142 <td class="entry_description"> 13143 <p>Shortest distance from frontmost surface 13144of the lens that can be brought into sharp focus.<wbr/></p> 13145 </td> 13146 13147 <td class="entry_units"> 13148 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 13149 </td> 13150 13151 <td class="entry_range"> 13152 <p>>= 0</p> 13153 </td> 13154 13155 <td class="entry_hal_version"> 13156 <p>3.<wbr/>2</p> 13157 </td> 13158 13159 <td class="entry_tags"> 13160 <ul class="entry_tags"> 13161 <li><a href="#tag_V1">V1</a></li> 13162 </ul> 13163 </td> 13164 13165 </tr> 13166 <tr class="entries_header"> 13167 <th class="th_details" colspan="6">Details</th> 13168 </tr> 13169 <tr class="entry_cont"> 13170 <td class="entry_details" colspan="6"> 13171 <p>If the lens is fixed-focus,<wbr/> this will be 131720.<wbr/></p> 13173 </td> 13174 </tr> 13175 13176 <tr class="entries_header"> 13177 <th class="th_details" colspan="6">HAL Implementation Details</th> 13178 </tr> 13179 <tr class="entry_cont"> 13180 <td class="entry_details" colspan="6"> 13181 <p>Mandatory for FULL devices; LIMITED devices 13182must always set this value to 0 for fixed-focus; and may omit 13183the minimum focus distance otherwise.<wbr/></p> 13184<p>This field is also mandatory for all devices advertising 13185the MANUAL_<wbr/>SENSOR capability.<wbr/></p> 13186 </td> 13187 </tr> 13188 13189 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13190 <!-- end of entry --> 13191 13192 13193 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 13194 <td class="entry_name 13195 " rowspan="3"> 13196 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 13197 </td> 13198 <td class="entry_type"> 13199 <span class="entry_type_name">int32</span> 13200 <span class="entry_type_container">x</span> 13201 13202 <span class="entry_type_array"> 13203 2 13204 </span> 13205 <span class="entry_type_visibility"> [ndk_public as size]</span> 13206 13207 13208 <span class="entry_type_hwlevel">[full] </span> 13209 13210 13211 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 13212 13213 13214 </td> <!-- entry_type --> 13215 13216 <td class="entry_description"> 13217 <p>Dimensions of lens shading map.<wbr/></p> 13218 </td> 13219 13220 <td class="entry_units"> 13221 </td> 13222 13223 <td class="entry_range"> 13224 <p>Both values >= 1</p> 13225 </td> 13226 13227 <td class="entry_hal_version"> 13228 <p>3.<wbr/>2</p> 13229 </td> 13230 13231 <td class="entry_tags"> 13232 <ul class="entry_tags"> 13233 <li><a href="#tag_V1">V1</a></li> 13234 </ul> 13235 </td> 13236 13237 </tr> 13238 <tr class="entries_header"> 13239 <th class="th_details" colspan="6">Details</th> 13240 </tr> 13241 <tr class="entry_cont"> 13242 <td class="entry_details" colspan="6"> 13243 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 13244must be smaller than 64x64.<wbr/></p> 13245 </td> 13246 </tr> 13247 13248 13249 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13250 <!-- end of entry --> 13251 13252 13253 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 13254 <td class="entry_name 13255 " rowspan="5"> 13256 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 13257 </td> 13258 <td class="entry_type"> 13259 <span class="entry_type_name entry_type_name_enum">byte</span> 13260 13261 <span class="entry_type_visibility"> [public]</span> 13262 13263 13264 <span class="entry_type_hwlevel">[limited] </span> 13265 13266 13267 13268 <ul class="entry_type_enum"> 13269 <li> 13270 <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span> 13271 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 13272<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p> 13273<p>Setting the lens to the same focus distance on separate occasions may 13274result in a different real focus distance,<wbr/> depending on factors such 13275as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 13276and the device temperature.<wbr/> The focus distance value will still be 13277in 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 13278represents the farthest focus.<wbr/></p></span> 13279 </li> 13280 <li> 13281 <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span> 13282 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p> 13283<p>However,<wbr/> setting the lens to the same focus distance 13284on separate occasions may result in a different real 13285focus distance,<wbr/> depending on factors such as the 13286orientation of the device,<wbr/> the age of the focusing 13287mechanism,<wbr/> and the device temperature.<wbr/></p></span> 13288 </li> 13289 <li> 13290 <span class="entry_type_enum_name">CALIBRATED (v3.2)</span> 13291 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and 13292is calibrated.<wbr/></p> 13293<p>The lens mechanism is calibrated so that setting the 13294same focus distance is repeatable on multiple 13295occasions with good accuracy,<wbr/> and the focus distance 13296corresponds to the real physical distance to the plane 13297of best focus.<wbr/></p></span> 13298 </li> 13299 </ul> 13300 13301 </td> <!-- entry_type --> 13302 13303 <td class="entry_description"> 13304 <p>The lens focus distance calibration quality.<wbr/></p> 13305 </td> 13306 13307 <td class="entry_units"> 13308 </td> 13309 13310 <td class="entry_range"> 13311 </td> 13312 13313 <td class="entry_hal_version"> 13314 <p>3.<wbr/>2</p> 13315 </td> 13316 13317 <td class="entry_tags"> 13318 <ul class="entry_tags"> 13319 <li><a href="#tag_V1">V1</a></li> 13320 </ul> 13321 </td> 13322 13323 </tr> 13324 <tr class="entries_header"> 13325 <th class="th_details" colspan="6">Details</th> 13326 </tr> 13327 <tr class="entry_cont"> 13328 <td class="entry_details" colspan="6"> 13329 <p>The lens focus distance calibration quality determines the reliability of 13330focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 13331<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 13332<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 13333<p>APPROXIMATE and CALIBRATED devices report the focus metadata in 13334units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> 13335and increasing positive numbers represent focusing closer and closer 13336to the camera device.<wbr/> The focus distance control also uses diopters 13337on these devices.<wbr/></p> 13338<p>UNCALIBRATED devices do not use units that are directly comparable 13339to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest 13340focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the 13341nearest focus the device can achieve.<wbr/></p> 13342 </td> 13343 </tr> 13344 13345 <tr class="entries_header"> 13346 <th class="th_details" colspan="6">HAL Implementation Details</th> 13347 </tr> 13348 <tr class="entry_cont"> 13349 <td class="entry_details" colspan="6"> 13350 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity 13351focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) 13352and the lens focus distance is set to 0 diopters 13353(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity 13354and is stably focused at infinity even if the device tilts.<wbr/> It may take the 13355lens some time to move; during the move the lens state should be MOVING and 13356the output diopter value should be changing toward 0.<wbr/></p> 13357 </td> 13358 </tr> 13359 13360 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13361 <!-- end of entry --> 13362 13363 13364 13365 13366 13367 <tr class="entry" id="static_android.lens.facing"> 13368 <td class="entry_name 13369 " rowspan="1"> 13370 android.<wbr/>lens.<wbr/>facing 13371 </td> 13372 <td class="entry_type"> 13373 <span class="entry_type_name entry_type_name_enum">byte</span> 13374 13375 <span class="entry_type_visibility"> [public]</span> 13376 13377 13378 <span class="entry_type_hwlevel">[legacy] </span> 13379 13380 13381 13382 <ul class="entry_type_enum"> 13383 <li> 13384 <span class="entry_type_enum_name">FRONT (v3.2)</span> 13385 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span> 13386 </li> 13387 <li> 13388 <span class="entry_type_enum_name">BACK (v3.2)</span> 13389 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span> 13390 </li> 13391 <li> 13392 <span class="entry_type_enum_name">EXTERNAL (v3.2)</span> 13393 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the 13394device's screen.<wbr/></p></span> 13395 </li> 13396 </ul> 13397 13398 </td> <!-- entry_type --> 13399 13400 <td class="entry_description"> 13401 <p>Direction the camera faces relative to 13402device screen.<wbr/></p> 13403 </td> 13404 13405 <td class="entry_units"> 13406 </td> 13407 13408 <td class="entry_range"> 13409 </td> 13410 13411 <td class="entry_hal_version"> 13412 <p>3.<wbr/>2</p> 13413 </td> 13414 13415 <td class="entry_tags"> 13416 </td> 13417 13418 </tr> 13419 13420 13421 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13422 <!-- end of entry --> 13423 13424 13425 <tr class="entry" id="static_android.lens.poseRotation"> 13426 <td class="entry_name 13427 " rowspan="3"> 13428 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 13429 </td> 13430 <td class="entry_type"> 13431 <span class="entry_type_name">float</span> 13432 <span class="entry_type_container">x</span> 13433 13434 <span class="entry_type_array"> 13435 4 13436 </span> 13437 <span class="entry_type_visibility"> [public]</span> 13438 13439 13440 13441 13442 13443 13444 </td> <!-- entry_type --> 13445 13446 <td class="entry_description"> 13447 <p>The orientation of the camera relative to the sensor 13448coordinate system.<wbr/></p> 13449 </td> 13450 13451 <td class="entry_units"> 13452 13453 Quaternion coefficients 13454 13455 </td> 13456 13457 <td class="entry_range"> 13458 </td> 13459 13460 <td class="entry_hal_version"> 13461 <p>3.<wbr/>2</p> 13462 </td> 13463 13464 <td class="entry_tags"> 13465 <ul class="entry_tags"> 13466 <li><a href="#tag_DEPTH">DEPTH</a></li> 13467 </ul> 13468 </td> 13469 13470 </tr> 13471 <tr class="entries_header"> 13472 <th class="th_details" colspan="6">Details</th> 13473 </tr> 13474 <tr class="entry_cont"> 13475 <td class="entry_details" colspan="6"> 13476 <p>The four coefficients that describe the quaternion 13477rotation from the Android sensor coordinate system to a 13478camera-aligned coordinate system where the X-axis is 13479aligned with the long side of the image sensor,<wbr/> the Y-axis 13480is aligned with the short side of the image sensor,<wbr/> and 13481the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 13482<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 13483to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 13484amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 13485<pre><code> theta = 2 * acos(w) 13486a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 13487a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 13488a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 13489</code></pre> 13490<p>To create a 3x3 rotation matrix that applies the rotation 13491defined by this quaternion,<wbr/> the following matrix can be 13492used:</p> 13493<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 13494 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 13495 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 13496</code></pre> 13497<p>This matrix can then be used to apply the rotation to a 13498 column vector point with</p> 13499<p><code>p' = Rp</code></p> 13500<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 13501 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 13502 </td> 13503 </tr> 13504 13505 13506 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13507 <!-- end of entry --> 13508 13509 13510 <tr class="entry" id="static_android.lens.poseTranslation"> 13511 <td class="entry_name 13512 " rowspan="3"> 13513 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 13514 </td> 13515 <td class="entry_type"> 13516 <span class="entry_type_name">float</span> 13517 <span class="entry_type_container">x</span> 13518 13519 <span class="entry_type_array"> 13520 3 13521 </span> 13522 <span class="entry_type_visibility"> [public]</span> 13523 13524 13525 13526 13527 13528 13529 </td> <!-- entry_type --> 13530 13531 <td class="entry_description"> 13532 <p>Position of the camera optical center.<wbr/></p> 13533 </td> 13534 13535 <td class="entry_units"> 13536 Meters 13537 </td> 13538 13539 <td class="entry_range"> 13540 </td> 13541 13542 <td class="entry_hal_version"> 13543 <p>3.<wbr/>2</p> 13544 </td> 13545 13546 <td class="entry_tags"> 13547 <ul class="entry_tags"> 13548 <li><a href="#tag_DEPTH">DEPTH</a></li> 13549 </ul> 13550 </td> 13551 13552 </tr> 13553 <tr class="entries_header"> 13554 <th class="th_details" colspan="6">Details</th> 13555 </tr> 13556 <tr class="entry_cont"> 13557 <td class="entry_details" colspan="6"> 13558 <p>The position of the camera device's lens optical center,<wbr/> 13559as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p> 13560<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 13561is relative to the optical center of the largest camera device facing in the same 13562direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor 13563coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor 13564coordinate system,<wbr/> but not the origin.<wbr/></p> 13565<p>If this device is the largest or only camera device with a given facing,<wbr/> then this 13566position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm 13567from the main sensor along the +X axis (to the right from the user's perspective) will 13568report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 13569<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first 13570the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source 13571camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the 13572<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 13573relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination 13574camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination 13575camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel 13576coordinates.<wbr/></p> 13577<p>To compare this against a real image from the destination camera,<wbr/> the destination camera 13578image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p> 13579<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 13580the center of the primary gyroscope on the device.<wbr/></p> 13581 </td> 13582 </tr> 13583 13584 13585 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13586 <!-- end of entry --> 13587 13588 13589 <tr class="entry" id="static_android.lens.intrinsicCalibration"> 13590 <td class="entry_name 13591 " rowspan="3"> 13592 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 13593 </td> 13594 <td class="entry_type"> 13595 <span class="entry_type_name">float</span> 13596 <span class="entry_type_container">x</span> 13597 13598 <span class="entry_type_array"> 13599 5 13600 </span> 13601 <span class="entry_type_visibility"> [public]</span> 13602 13603 13604 13605 13606 13607 13608 </td> <!-- entry_type --> 13609 13610 <td class="entry_description"> 13611 <p>The parameters for this camera device's intrinsic 13612calibration.<wbr/></p> 13613 </td> 13614 13615 <td class="entry_units"> 13616 13617 Pixels in the 13618 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 13619 coordinate system.<wbr/> 13620 13621 </td> 13622 13623 <td class="entry_range"> 13624 </td> 13625 13626 <td class="entry_hal_version"> 13627 <p>3.<wbr/>2</p> 13628 </td> 13629 13630 <td class="entry_tags"> 13631 <ul class="entry_tags"> 13632 <li><a href="#tag_DEPTH">DEPTH</a></li> 13633 </ul> 13634 </td> 13635 13636 </tr> 13637 <tr class="entries_header"> 13638 <th class="th_details" colspan="6">Details</th> 13639 </tr> 13640 <tr class="entry_cont"> 13641 <td class="entry_details" colspan="6"> 13642 <p>The five calibration parameters that describe the 13643transform from camera-centric 3D coordinates to sensor 13644pixel coordinates:</p> 13645<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 13646</code></pre> 13647<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 13648focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 13649axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 13650being aligned with the lens plane.<wbr/></p> 13651<p>These are typically used within a transformation matrix K:</p> 13652<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 13653 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 13654 0 0,<wbr/> 1 ] 13655</code></pre> 13656<p>which can then be combined with the camera pose rotation 13657<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 13658<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 13659complete transform from world coordinates to pixel 13660coordinates:</p> 13661<pre><code>P = [ K 0 * [ R t 13662 0 1 ] 0 1 ] 13663</code></pre> 13664<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 13665and <code>p_<wbr/>s</code> being a point in the camera active pixel array 13666coordinate system,<wbr/> and with the mapping including the 13667homogeneous division by z:</p> 13668<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 13669p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 13670</code></pre> 13671<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 13672point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 13673(depth) in pixel coordinates.<wbr/></p> 13674<p>Note that the coordinate system for this transform is the 13675<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/> 13676where <code>(0,<wbr/>0)</code> is the top-left of the 13677preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 13678intrinsic calibration transforms have been applied to a 13679world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> 13680transform needs to be applied,<wbr/> and the result adjusted to 13681be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 13682system (where <code>(0,<wbr/> 0)</code> is the top-left of the 13683activeArraySize rectangle),<wbr/> to determine the final pixel 13684coordinate of the world point for processed (non-RAW) 13685output buffers.<wbr/></p> 13686 </td> 13687 </tr> 13688 13689 13690 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13691 <!-- end of entry --> 13692 13693 13694 <tr class="entry" id="static_android.lens.radialDistortion"> 13695 <td class="entry_name 13696 entry_name_deprecated 13697 " rowspan="3"> 13698 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 13699 </td> 13700 <td class="entry_type"> 13701 <span class="entry_type_name">float</span> 13702 <span class="entry_type_container">x</span> 13703 13704 <span class="entry_type_array"> 13705 6 13706 </span> 13707 <span class="entry_type_visibility"> [public]</span> 13708 13709 13710 13711 <span class="entry_type_deprecated">[deprecated] </span> 13712 13713 13714 13715 </td> <!-- entry_type --> 13716 13717 <td class="entry_description"> 13718 <p>The correction coefficients to correct for this camera device's 13719radial and tangential lens distortion.<wbr/></p> 13720 </td> 13721 13722 <td class="entry_units"> 13723 13724 Unitless coefficients.<wbr/> 13725 13726 </td> 13727 13728 <td class="entry_range"> 13729 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13730 </td> 13731 13732 <td class="entry_hal_version"> 13733 <p>3.<wbr/>2</p> 13734 </td> 13735 13736 <td class="entry_tags"> 13737 <ul class="entry_tags"> 13738 <li><a href="#tag_DEPTH">DEPTH</a></li> 13739 </ul> 13740 </td> 13741 13742 </tr> 13743 <tr class="entries_header"> 13744 <th class="th_details" colspan="6">Details</th> 13745 </tr> 13746 <tr class="entry_cont"> 13747 <td class="entry_details" colspan="6"> 13748 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 13749kappa_<wbr/>3]</code> and two tangential distortion coefficients 13750<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 13751lens's geometric distortion with the mapping equations:</p> 13752<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 ) + 13753 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 13754 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 13755 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 13756</code></pre> 13757<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 13758input image that correspond to the pixel values in the 13759corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 13760<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 13761</code></pre> 13762<p>The pixel coordinates are defined in a normalized 13763coordinate system related to the 13764<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 13765Both <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 13766lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 13767of both x and y coordinates are normalized to be 1 at the 13768edge further from the optical center,<wbr/> so the range 13769for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 13770<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 13771optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 13772is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 13773<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 13774 </td> 13775 </tr> 13776 13777 13778 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13779 <!-- end of entry --> 13780 13781 13782 <tr class="entry" id="static_android.lens.poseReference"> 13783 <td class="entry_name 13784 " rowspan="3"> 13785 android.<wbr/>lens.<wbr/>pose<wbr/>Reference 13786 </td> 13787 <td class="entry_type"> 13788 <span class="entry_type_name entry_type_name_enum">byte</span> 13789 13790 <span class="entry_type_visibility"> [public]</span> 13791 13792 13793 13794 13795 13796 <ul class="entry_type_enum"> 13797 <li> 13798 <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span> 13799 <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 13800the largest camera device facing the same direction as this camera.<wbr/></p> 13801<p>This is the default value for API levels before Android P.<wbr/></p></span> 13802 </li> 13803 <li> 13804 <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span> 13805 <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 13806primary gyroscope of this Android device.<wbr/></p></span> 13807 </li> 13808 </ul> 13809 13810 </td> <!-- entry_type --> 13811 13812 <td class="entry_description"> 13813 <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p> 13814 </td> 13815 13816 <td class="entry_units"> 13817 </td> 13818 13819 <td class="entry_range"> 13820 </td> 13821 13822 <td class="entry_hal_version"> 13823 <p>3.<wbr/>3</p> 13824 </td> 13825 13826 <td class="entry_tags"> 13827 </td> 13828 13829 </tr> 13830 <tr class="entries_header"> 13831 <th class="th_details" colspan="6">Details</th> 13832 </tr> 13833 <tr class="entry_cont"> 13834 <td class="entry_details" colspan="6"> 13835 <p>Different calibration methods and use cases can produce better or worse results 13836depending on the selected coordinate origin.<wbr/></p> 13837 </td> 13838 </tr> 13839 13840 13841 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13842 <!-- end of entry --> 13843 13844 13845 <tr class="entry" id="static_android.lens.distortion"> 13846 <td class="entry_name 13847 " rowspan="3"> 13848 android.<wbr/>lens.<wbr/>distortion 13849 </td> 13850 <td class="entry_type"> 13851 <span class="entry_type_name">float</span> 13852 <span class="entry_type_container">x</span> 13853 13854 <span class="entry_type_array"> 13855 5 13856 </span> 13857 <span class="entry_type_visibility"> [public]</span> 13858 13859 13860 13861 13862 13863 13864 </td> <!-- entry_type --> 13865 13866 <td class="entry_description"> 13867 <p>The correction coefficients to correct for this camera device's 13868radial and tangential lens distortion.<wbr/></p> 13869<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was 13870inconsistently defined.<wbr/></p> 13871 </td> 13872 13873 <td class="entry_units"> 13874 13875 Unitless coefficients.<wbr/> 13876 13877 </td> 13878 13879 <td class="entry_range"> 13880 </td> 13881 13882 <td class="entry_hal_version"> 13883 <p>3.<wbr/>3</p> 13884 </td> 13885 13886 <td class="entry_tags"> 13887 <ul class="entry_tags"> 13888 <li><a href="#tag_DEPTH">DEPTH</a></li> 13889 </ul> 13890 </td> 13891 13892 </tr> 13893 <tr class="entries_header"> 13894 <th class="th_details" colspan="6">Details</th> 13895 </tr> 13896 <tr class="entry_cont"> 13897 <td class="entry_details" colspan="6"> 13898 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 13899kappa_<wbr/>3]</code> and two tangential distortion coefficients 13900<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 13901lens's geometric distortion with the mapping equations:</p> 13902<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 13903 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 13904 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 13905 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 13906</code></pre> 13907<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 13908input image that correspond to the pixel values in the 13909corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 13910<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 13911</code></pre> 13912<p>The pixel coordinates are defined in a coordinate system 13913related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 13914calibration fields; see that entry for details of the mapping stages.<wbr/> 13915Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> 13916have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and 13917the range of the coordinates depends on the focal length 13918terms of the intrinsic calibration.<wbr/></p> 13919<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 13920optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p> 13921<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 13922 </td> 13923 </tr> 13924 13925 13926 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 13927 <!-- end of entry --> 13928 13929 13930 13931 <!-- end of kind --> 13932 </tbody> 13933 <tr><td colspan="7" class="kind">dynamic</td></tr> 13934 13935 <thead class="entries_header"> 13936 <tr> 13937 <th class="th_name">Property Name</th> 13938 <th class="th_type">Type</th> 13939 <th class="th_description">Description</th> 13940 <th class="th_units">Units</th> 13941 <th class="th_range">Range</th> 13942 <th class="th_hal_version">Initial HIDL HAL version</th> 13943 <th class="th_tags">Tags</th> 13944 </tr> 13945 </thead> 13946 13947 <tbody> 13948 13949 13950 13951 13952 13953 13954 13955 13956 13957 13958 <tr class="entry" id="dynamic_android.lens.aperture"> 13959 <td class="entry_name 13960 " rowspan="3"> 13961 android.<wbr/>lens.<wbr/>aperture 13962 </td> 13963 <td class="entry_type"> 13964 <span class="entry_type_name">float</span> 13965 13966 <span class="entry_type_visibility"> [public]</span> 13967 13968 13969 <span class="entry_type_hwlevel">[full] </span> 13970 13971 13972 13973 13974 </td> <!-- entry_type --> 13975 13976 <td class="entry_description"> 13977 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 13978effective aperture diameter.<wbr/></p> 13979 </td> 13980 13981 <td class="entry_units"> 13982 The f-number (f/<wbr/>N) 13983 </td> 13984 13985 <td class="entry_range"> 13986 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 13987 </td> 13988 13989 <td class="entry_hal_version"> 13990 <p>3.<wbr/>2</p> 13991 </td> 13992 13993 <td class="entry_tags"> 13994 <ul class="entry_tags"> 13995 <li><a href="#tag_V1">V1</a></li> 13996 </ul> 13997 </td> 13998 13999 </tr> 14000 <tr class="entries_header"> 14001 <th class="th_details" colspan="6">Details</th> 14002 </tr> 14003 <tr class="entry_cont"> 14004 <td class="entry_details" colspan="6"> 14005 <p>Setting this value is only supported on the camera devices that have a variable 14006aperture lens.<wbr/></p> 14007<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 14008this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 14009<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> 14010to achieve manual exposure control.<wbr/></p> 14011<p>The requested aperture value may take several frames to reach the 14012requested value; the camera device will report the current (intermediate) 14013aperture size in capture result metadata while the aperture is changing.<wbr/> 14014While 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> 14015<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 14016the ON modes,<wbr/> this will be overridden by the camera device 14017auto-exposure algorithm,<wbr/> the overridden values are then provided 14018back to the user in the corresponding result.<wbr/></p> 14019 </td> 14020 </tr> 14021 14022 14023 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14024 <!-- end of entry --> 14025 14026 14027 <tr class="entry" id="dynamic_android.lens.filterDensity"> 14028 <td class="entry_name 14029 " rowspan="3"> 14030 android.<wbr/>lens.<wbr/>filter<wbr/>Density 14031 </td> 14032 <td class="entry_type"> 14033 <span class="entry_type_name">float</span> 14034 14035 <span class="entry_type_visibility"> [public]</span> 14036 14037 14038 <span class="entry_type_hwlevel">[full] </span> 14039 14040 14041 14042 14043 </td> <!-- entry_type --> 14044 14045 <td class="entry_description"> 14046 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 14047 </td> 14048 14049 <td class="entry_units"> 14050 Exposure Value (EV) 14051 </td> 14052 14053 <td class="entry_range"> 14054 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 14055 </td> 14056 14057 <td class="entry_hal_version"> 14058 <p>3.<wbr/>2</p> 14059 </td> 14060 14061 <td class="entry_tags"> 14062 <ul class="entry_tags"> 14063 <li><a href="#tag_V1">V1</a></li> 14064 </ul> 14065 </td> 14066 14067 </tr> 14068 <tr class="entries_header"> 14069 <th class="th_details" colspan="6">Details</th> 14070 </tr> 14071 <tr class="entry_cont"> 14072 <td class="entry_details" colspan="6"> 14073 <p>This control will not be supported on most camera devices.<wbr/></p> 14074<p>Lens filters are typically used to lower the amount of light the 14075sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 14076step is the standard logarithmic representation,<wbr/> which are 14077non-negative,<wbr/> and inversely proportional to the amount of light 14078hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 14079in no reduction of the incoming light,<wbr/> and setting this to 2 would 14080mean that the filter is set to reduce incoming light by two stops 14081(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 14082<p>It may take several frames before the lens filter density changes 14083to the requested value.<wbr/> While the filter density is still changing,<wbr/> 14084<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 14085 </td> 14086 </tr> 14087 14088 14089 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14090 <!-- end of entry --> 14091 14092 14093 <tr class="entry" id="dynamic_android.lens.focalLength"> 14094 <td class="entry_name 14095 " rowspan="3"> 14096 android.<wbr/>lens.<wbr/>focal<wbr/>Length 14097 </td> 14098 <td class="entry_type"> 14099 <span class="entry_type_name">float</span> 14100 14101 <span class="entry_type_visibility"> [public]</span> 14102 14103 14104 <span class="entry_type_hwlevel">[legacy] </span> 14105 14106 14107 14108 14109 </td> <!-- entry_type --> 14110 14111 <td class="entry_description"> 14112 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 14113 </td> 14114 14115 <td class="entry_units"> 14116 Millimeters 14117 </td> 14118 14119 <td class="entry_range"> 14120 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 14121 </td> 14122 14123 <td class="entry_hal_version"> 14124 <p>3.<wbr/>2</p> 14125 </td> 14126 14127 <td class="entry_tags"> 14128 <ul class="entry_tags"> 14129 <li><a href="#tag_BC">BC</a></li> 14130 </ul> 14131 </td> 14132 14133 </tr> 14134 <tr class="entries_header"> 14135 <th class="th_details" colspan="6">Details</th> 14136 </tr> 14137 <tr class="entry_cont"> 14138 <td class="entry_details" colspan="6"> 14139 <p>This setting controls the physical focal length of the camera 14140device's lens.<wbr/> Changing the focal length changes the field of 14141view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 14142<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 14143setting won't be applied instantaneously,<wbr/> and it may take several 14144frames before the lens can change to the requested focal length.<wbr/> 14145While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 14146be set to MOVING.<wbr/></p> 14147<p>Optical zoom will not be supported on most devices.<wbr/></p> 14148 </td> 14149 </tr> 14150 14151 14152 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14153 <!-- end of entry --> 14154 14155 14156 <tr class="entry" id="dynamic_android.lens.focusDistance"> 14157 <td class="entry_name 14158 " rowspan="3"> 14159 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 14160 </td> 14161 <td class="entry_type"> 14162 <span class="entry_type_name">float</span> 14163 14164 <span class="entry_type_visibility"> [public]</span> 14165 14166 14167 <span class="entry_type_hwlevel">[full] </span> 14168 14169 14170 14171 14172 </td> <!-- entry_type --> 14173 14174 <td class="entry_description"> 14175 <p>Desired distance to plane of sharpest focus,<wbr/> 14176measured from frontmost surface of the lens.<wbr/></p> 14177 </td> 14178 14179 <td class="entry_units"> 14180 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 14181 </td> 14182 14183 <td class="entry_range"> 14184 <p>>= 0</p> 14185 </td> 14186 14187 <td class="entry_hal_version"> 14188 <p>3.<wbr/>2</p> 14189 </td> 14190 14191 <td class="entry_tags"> 14192 <ul class="entry_tags"> 14193 <li><a href="#tag_BC">BC</a></li> 14194 </ul> 14195 </td> 14196 14197 </tr> 14198 <tr class="entries_header"> 14199 <th class="th_details" colspan="6">Details</th> 14200 </tr> 14201 <tr class="entry_cont"> 14202 <td class="entry_details" colspan="6"> 14203 <p>Should be zero for fixed-focus cameras</p> 14204 </td> 14205 </tr> 14206 14207 14208 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14209 <!-- end of entry --> 14210 14211 14212 <tr class="entry" id="dynamic_android.lens.focusRange"> 14213 <td class="entry_name 14214 " rowspan="3"> 14215 android.<wbr/>lens.<wbr/>focus<wbr/>Range 14216 </td> 14217 <td class="entry_type"> 14218 <span class="entry_type_name">float</span> 14219 <span class="entry_type_container">x</span> 14220 14221 <span class="entry_type_array"> 14222 2 14223 </span> 14224 <span class="entry_type_visibility"> [public as pairFloatFloat]</span> 14225 14226 14227 <span class="entry_type_hwlevel">[limited] </span> 14228 14229 14230 <div class="entry_type_notes">Range of scene distances that are in focus</div> 14231 14232 14233 </td> <!-- entry_type --> 14234 14235 <td class="entry_description"> 14236 <p>The range of scene distances that are in 14237sharp focus (depth of field).<wbr/></p> 14238 </td> 14239 14240 <td class="entry_units"> 14241 A pair of focus distances in diopters: (near,<wbr/> 14242 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 14243 </td> 14244 14245 <td class="entry_range"> 14246 <p>>=0</p> 14247 </td> 14248 14249 <td class="entry_hal_version"> 14250 <p>3.<wbr/>2</p> 14251 </td> 14252 14253 <td class="entry_tags"> 14254 <ul class="entry_tags"> 14255 <li><a href="#tag_BC">BC</a></li> 14256 </ul> 14257 </td> 14258 14259 </tr> 14260 <tr class="entries_header"> 14261 <th class="th_details" colspan="6">Details</th> 14262 </tr> 14263 <tr class="entry_cont"> 14264 <td class="entry_details" colspan="6"> 14265 <p>If variable focus not supported,<wbr/> can still report 14266fixed depth of field range</p> 14267 </td> 14268 </tr> 14269 14270 14271 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14272 <!-- end of entry --> 14273 14274 14275 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 14276 <td class="entry_name 14277 " rowspan="3"> 14278 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 14279 </td> 14280 <td class="entry_type"> 14281 <span class="entry_type_name entry_type_name_enum">byte</span> 14282 14283 <span class="entry_type_visibility"> [public]</span> 14284 14285 14286 <span class="entry_type_hwlevel">[limited] </span> 14287 14288 14289 14290 <ul class="entry_type_enum"> 14291 <li> 14292 <span class="entry_type_enum_name">OFF (v3.2)</span> 14293 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 14294 </li> 14295 <li> 14296 <span class="entry_type_enum_name">ON (v3.2)</span> 14297 <span class="entry_type_enum_optional">[optional]</span> 14298 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 14299 </li> 14300 </ul> 14301 14302 </td> <!-- entry_type --> 14303 14304 <td class="entry_description"> 14305 <p>Sets whether the camera device uses optical image stabilization (OIS) 14306when capturing images.<wbr/></p> 14307 </td> 14308 14309 <td class="entry_units"> 14310 </td> 14311 14312 <td class="entry_range"> 14313 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 14314 </td> 14315 14316 <td class="entry_hal_version"> 14317 <p>3.<wbr/>2</p> 14318 </td> 14319 14320 <td class="entry_tags"> 14321 <ul class="entry_tags"> 14322 <li><a href="#tag_V1">V1</a></li> 14323 </ul> 14324 </td> 14325 14326 </tr> 14327 <tr class="entries_header"> 14328 <th class="th_details" colspan="6">Details</th> 14329 </tr> 14330 <tr class="entry_cont"> 14331 <td class="entry_details" colspan="6"> 14332 <p>OIS is used to compensate for motion blur due to small 14333movements of the camera during capture.<wbr/> Unlike digital image 14334stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 14335makes use of mechanical elements to stabilize the camera 14336sensor,<wbr/> and thus allows for longer exposure times before 14337camera shake becomes apparent.<wbr/></p> 14338<p>Switching between different optical stabilization modes may take several 14339frames to initialize,<wbr/> the camera device will report the current mode in 14340capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 14341optical stabilization modes in the first several capture results may still 14342be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 14343<p>If a camera device supports both OIS and digital image stabilization 14344(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 14345interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 14346<p>Not all devices will support OIS; see 14347<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 14348available controls.<wbr/></p> 14349 </td> 14350 </tr> 14351 14352 14353 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14354 <!-- end of entry --> 14355 14356 14357 <tr class="entry" id="dynamic_android.lens.state"> 14358 <td class="entry_name 14359 " rowspan="3"> 14360 android.<wbr/>lens.<wbr/>state 14361 </td> 14362 <td class="entry_type"> 14363 <span class="entry_type_name entry_type_name_enum">byte</span> 14364 14365 <span class="entry_type_visibility"> [public]</span> 14366 14367 14368 <span class="entry_type_hwlevel">[limited] </span> 14369 14370 14371 14372 <ul class="entry_type_enum"> 14373 <li> 14374 <span class="entry_type_enum_name">STATIONARY (v3.2)</span> 14375 <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/> 14376<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> 14377 </li> 14378 <li> 14379 <span class="entry_type_enum_name">MOVING (v3.2)</span> 14380 <span class="entry_type_enum_notes"><p>One or several of the lens parameters 14381(<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/> 14382<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 14383currently changing.<wbr/></p></span> 14384 </li> 14385 </ul> 14386 14387 </td> <!-- entry_type --> 14388 14389 <td class="entry_description"> 14390 <p>Current lens status.<wbr/></p> 14391 </td> 14392 14393 <td class="entry_units"> 14394 </td> 14395 14396 <td class="entry_range"> 14397 </td> 14398 14399 <td class="entry_hal_version"> 14400 <p>3.<wbr/>2</p> 14401 </td> 14402 14403 <td class="entry_tags"> 14404 <ul class="entry_tags"> 14405 <li><a href="#tag_V1">V1</a></li> 14406 </ul> 14407 </td> 14408 14409 </tr> 14410 <tr class="entries_header"> 14411 <th class="th_details" colspan="6">Details</th> 14412 </tr> 14413 <tr class="entry_cont"> 14414 <td class="entry_details" colspan="6"> 14415 <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/> 14416<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/> 14417they may take several frames to reach the requested values.<wbr/> This state indicates 14418the current status of the lens parameters.<wbr/></p> 14419<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 14420either because the parameters are all fixed,<wbr/> or because the lens has had enough 14421time to reach the most recently-requested values.<wbr/> 14422If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 14423<ul> 14424<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 14425<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 14426<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/> 14427which means the optical zoom is not supported.<wbr/></li> 14428<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> 14429<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> 14430</ul> 14431<p>Then this state will always be STATIONARY.<wbr/></p> 14432<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 14433is changing.<wbr/></p> 14434 </td> 14435 </tr> 14436 14437 14438 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14439 <!-- end of entry --> 14440 14441 14442 <tr class="entry" id="dynamic_android.lens.poseRotation"> 14443 <td class="entry_name 14444 " rowspan="3"> 14445 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 14446 </td> 14447 <td class="entry_type"> 14448 <span class="entry_type_name">float</span> 14449 <span class="entry_type_container">x</span> 14450 14451 <span class="entry_type_array"> 14452 4 14453 </span> 14454 <span class="entry_type_visibility"> [public]</span> 14455 14456 14457 14458 14459 14460 14461 </td> <!-- entry_type --> 14462 14463 <td class="entry_description"> 14464 <p>The orientation of the camera relative to the sensor 14465coordinate system.<wbr/></p> 14466 </td> 14467 14468 <td class="entry_units"> 14469 14470 Quaternion coefficients 14471 14472 </td> 14473 14474 <td class="entry_range"> 14475 </td> 14476 14477 <td class="entry_hal_version"> 14478 <p>3.<wbr/>2</p> 14479 </td> 14480 14481 <td class="entry_tags"> 14482 <ul class="entry_tags"> 14483 <li><a href="#tag_DEPTH">DEPTH</a></li> 14484 </ul> 14485 </td> 14486 14487 </tr> 14488 <tr class="entries_header"> 14489 <th class="th_details" colspan="6">Details</th> 14490 </tr> 14491 <tr class="entry_cont"> 14492 <td class="entry_details" colspan="6"> 14493 <p>The four coefficients that describe the quaternion 14494rotation from the Android sensor coordinate system to a 14495camera-aligned coordinate system where the X-axis is 14496aligned with the long side of the image sensor,<wbr/> the Y-axis 14497is aligned with the short side of the image sensor,<wbr/> and 14498the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 14499<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 14500to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 14501amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 14502<pre><code> theta = 2 * acos(w) 14503a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 14504a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 14505a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 14506</code></pre> 14507<p>To create a 3x3 rotation matrix that applies the rotation 14508defined by this quaternion,<wbr/> the following matrix can be 14509used:</p> 14510<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 14511 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 14512 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 14513</code></pre> 14514<p>This matrix can then be used to apply the rotation to a 14515 column vector point with</p> 14516<p><code>p' = Rp</code></p> 14517<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 14518 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 14519 </td> 14520 </tr> 14521 14522 14523 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14524 <!-- end of entry --> 14525 14526 14527 <tr class="entry" id="dynamic_android.lens.poseTranslation"> 14528 <td class="entry_name 14529 " rowspan="3"> 14530 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 14531 </td> 14532 <td class="entry_type"> 14533 <span class="entry_type_name">float</span> 14534 <span class="entry_type_container">x</span> 14535 14536 <span class="entry_type_array"> 14537 3 14538 </span> 14539 <span class="entry_type_visibility"> [public]</span> 14540 14541 14542 14543 14544 14545 14546 </td> <!-- entry_type --> 14547 14548 <td class="entry_description"> 14549 <p>Position of the camera optical center.<wbr/></p> 14550 </td> 14551 14552 <td class="entry_units"> 14553 Meters 14554 </td> 14555 14556 <td class="entry_range"> 14557 </td> 14558 14559 <td class="entry_hal_version"> 14560 <p>3.<wbr/>2</p> 14561 </td> 14562 14563 <td class="entry_tags"> 14564 <ul class="entry_tags"> 14565 <li><a href="#tag_DEPTH">DEPTH</a></li> 14566 </ul> 14567 </td> 14568 14569 </tr> 14570 <tr class="entries_header"> 14571 <th class="th_details" colspan="6">Details</th> 14572 </tr> 14573 <tr class="entry_cont"> 14574 <td class="entry_details" colspan="6"> 14575 <p>The position of the camera device's lens optical center,<wbr/> 14576as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p> 14577<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 14578is relative to the optical center of the largest camera device facing in the same 14579direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor 14580coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor 14581coordinate system,<wbr/> but not the origin.<wbr/></p> 14582<p>If this device is the largest or only camera device with a given facing,<wbr/> then this 14583position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm 14584from the main sensor along the +X axis (to the right from the user's perspective) will 14585report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 14586<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first 14587the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source 14588camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the 14589<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 14590relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination 14591camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination 14592camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel 14593coordinates.<wbr/></p> 14594<p>To compare this against a real image from the destination camera,<wbr/> the destination camera 14595image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p> 14596<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 14597the center of the primary gyroscope on the device.<wbr/></p> 14598 </td> 14599 </tr> 14600 14601 14602 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14603 <!-- end of entry --> 14604 14605 14606 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration"> 14607 <td class="entry_name 14608 " rowspan="3"> 14609 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 14610 </td> 14611 <td class="entry_type"> 14612 <span class="entry_type_name">float</span> 14613 <span class="entry_type_container">x</span> 14614 14615 <span class="entry_type_array"> 14616 5 14617 </span> 14618 <span class="entry_type_visibility"> [public]</span> 14619 14620 14621 14622 14623 14624 14625 </td> <!-- entry_type --> 14626 14627 <td class="entry_description"> 14628 <p>The parameters for this camera device's intrinsic 14629calibration.<wbr/></p> 14630 </td> 14631 14632 <td class="entry_units"> 14633 14634 Pixels in the 14635 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 14636 coordinate system.<wbr/> 14637 14638 </td> 14639 14640 <td class="entry_range"> 14641 </td> 14642 14643 <td class="entry_hal_version"> 14644 <p>3.<wbr/>2</p> 14645 </td> 14646 14647 <td class="entry_tags"> 14648 <ul class="entry_tags"> 14649 <li><a href="#tag_DEPTH">DEPTH</a></li> 14650 </ul> 14651 </td> 14652 14653 </tr> 14654 <tr class="entries_header"> 14655 <th class="th_details" colspan="6">Details</th> 14656 </tr> 14657 <tr class="entry_cont"> 14658 <td class="entry_details" colspan="6"> 14659 <p>The five calibration parameters that describe the 14660transform from camera-centric 3D coordinates to sensor 14661pixel coordinates:</p> 14662<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 14663</code></pre> 14664<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 14665focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 14666axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 14667being aligned with the lens plane.<wbr/></p> 14668<p>These are typically used within a transformation matrix K:</p> 14669<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 14670 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 14671 0 0,<wbr/> 1 ] 14672</code></pre> 14673<p>which can then be combined with the camera pose rotation 14674<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 14675<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 14676complete transform from world coordinates to pixel 14677coordinates:</p> 14678<pre><code>P = [ K 0 * [ R t 14679 0 1 ] 0 1 ] 14680</code></pre> 14681<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 14682and <code>p_<wbr/>s</code> being a point in the camera active pixel array 14683coordinate system,<wbr/> and with the mapping including the 14684homogeneous division by z:</p> 14685<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 14686p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 14687</code></pre> 14688<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 14689point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 14690(depth) in pixel coordinates.<wbr/></p> 14691<p>Note that the coordinate system for this transform is the 14692<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/> 14693where <code>(0,<wbr/>0)</code> is the top-left of the 14694preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 14695intrinsic calibration transforms have been applied to a 14696world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> 14697transform needs to be applied,<wbr/> and the result adjusted to 14698be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 14699system (where <code>(0,<wbr/> 0)</code> is the top-left of the 14700activeArraySize rectangle),<wbr/> to determine the final pixel 14701coordinate of the world point for processed (non-RAW) 14702output buffers.<wbr/></p> 14703 </td> 14704 </tr> 14705 14706 14707 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14708 <!-- end of entry --> 14709 14710 14711 <tr class="entry" id="dynamic_android.lens.radialDistortion"> 14712 <td class="entry_name 14713 entry_name_deprecated 14714 " rowspan="3"> 14715 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 14716 </td> 14717 <td class="entry_type"> 14718 <span class="entry_type_name">float</span> 14719 <span class="entry_type_container">x</span> 14720 14721 <span class="entry_type_array"> 14722 6 14723 </span> 14724 <span class="entry_type_visibility"> [public]</span> 14725 14726 14727 14728 <span class="entry_type_deprecated">[deprecated] </span> 14729 14730 14731 14732 </td> <!-- entry_type --> 14733 14734 <td class="entry_description"> 14735 <p>The correction coefficients to correct for this camera device's 14736radial and tangential lens distortion.<wbr/></p> 14737 </td> 14738 14739 <td class="entry_units"> 14740 14741 Unitless coefficients.<wbr/> 14742 14743 </td> 14744 14745 <td class="entry_range"> 14746 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14747 </td> 14748 14749 <td class="entry_hal_version"> 14750 <p>3.<wbr/>2</p> 14751 </td> 14752 14753 <td class="entry_tags"> 14754 <ul class="entry_tags"> 14755 <li><a href="#tag_DEPTH">DEPTH</a></li> 14756 </ul> 14757 </td> 14758 14759 </tr> 14760 <tr class="entries_header"> 14761 <th class="th_details" colspan="6">Details</th> 14762 </tr> 14763 <tr class="entry_cont"> 14764 <td class="entry_details" colspan="6"> 14765 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 14766kappa_<wbr/>3]</code> and two tangential distortion coefficients 14767<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 14768lens's geometric distortion with the mapping equations:</p> 14769<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 ) + 14770 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 14771 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 14772 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 14773</code></pre> 14774<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 14775input image that correspond to the pixel values in the 14776corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 14777<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 14778</code></pre> 14779<p>The pixel coordinates are defined in a normalized 14780coordinate system related to the 14781<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 14782Both <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 14783lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 14784of both x and y coordinates are normalized to be 1 at the 14785edge further from the optical center,<wbr/> so the range 14786for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 14787<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 14788optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 14789is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 14790<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 14791 </td> 14792 </tr> 14793 14794 14795 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14796 <!-- end of entry --> 14797 14798 14799 <tr class="entry" id="dynamic_android.lens.distortion"> 14800 <td class="entry_name 14801 " rowspan="3"> 14802 android.<wbr/>lens.<wbr/>distortion 14803 </td> 14804 <td class="entry_type"> 14805 <span class="entry_type_name">float</span> 14806 <span class="entry_type_container">x</span> 14807 14808 <span class="entry_type_array"> 14809 5 14810 </span> 14811 <span class="entry_type_visibility"> [public]</span> 14812 14813 14814 14815 14816 14817 14818 </td> <!-- entry_type --> 14819 14820 <td class="entry_description"> 14821 <p>The correction coefficients to correct for this camera device's 14822radial and tangential lens distortion.<wbr/></p> 14823<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was 14824inconsistently defined.<wbr/></p> 14825 </td> 14826 14827 <td class="entry_units"> 14828 14829 Unitless coefficients.<wbr/> 14830 14831 </td> 14832 14833 <td class="entry_range"> 14834 </td> 14835 14836 <td class="entry_hal_version"> 14837 <p>3.<wbr/>3</p> 14838 </td> 14839 14840 <td class="entry_tags"> 14841 <ul class="entry_tags"> 14842 <li><a href="#tag_DEPTH">DEPTH</a></li> 14843 </ul> 14844 </td> 14845 14846 </tr> 14847 <tr class="entries_header"> 14848 <th class="th_details" colspan="6">Details</th> 14849 </tr> 14850 <tr class="entry_cont"> 14851 <td class="entry_details" colspan="6"> 14852 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 14853kappa_<wbr/>3]</code> and two tangential distortion coefficients 14854<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 14855lens's geometric distortion with the mapping equations:</p> 14856<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 14857 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 14858 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 14859 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 14860</code></pre> 14861<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 14862input image that correspond to the pixel values in the 14863corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 14864<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 14865</code></pre> 14866<p>The pixel coordinates are defined in a coordinate system 14867related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 14868calibration fields; see that entry for details of the mapping stages.<wbr/> 14869Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> 14870have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and 14871the range of the coordinates depends on the focal length 14872terms of the intrinsic calibration.<wbr/></p> 14873<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 14874optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p> 14875<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 14876 </td> 14877 </tr> 14878 14879 14880 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 14881 <!-- end of entry --> 14882 14883 14884 14885 <!-- end of kind --> 14886 </tbody> 14887 14888 <!-- end of section --> 14889 <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr> 14890 14891 14892 <tr><td colspan="7" class="kind">controls</td></tr> 14893 14894 <thead class="entries_header"> 14895 <tr> 14896 <th class="th_name">Property Name</th> 14897 <th class="th_type">Type</th> 14898 <th class="th_description">Description</th> 14899 <th class="th_units">Units</th> 14900 <th class="th_range">Range</th> 14901 <th class="th_hal_version">Initial HIDL HAL version</th> 14902 <th class="th_tags">Tags</th> 14903 </tr> 14904 </thead> 14905 14906 <tbody> 14907 14908 14909 14910 14911 14912 14913 14914 14915 14916 14917 <tr class="entry" id="controls_android.noiseReduction.mode"> 14918 <td class="entry_name 14919 " rowspan="5"> 14920 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 14921 </td> 14922 <td class="entry_type"> 14923 <span class="entry_type_name entry_type_name_enum">byte</span> 14924 14925 <span class="entry_type_visibility"> [public]</span> 14926 14927 14928 <span class="entry_type_hwlevel">[full] </span> 14929 14930 14931 14932 <ul class="entry_type_enum"> 14933 <li> 14934 <span class="entry_type_enum_name">OFF (v3.2)</span> 14935 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 14936 </li> 14937 <li> 14938 <span class="entry_type_enum_name">FAST (v3.2)</span> 14939 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 14940output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 14941relative to sensor.<wbr/></p></span> 14942 </li> 14943 <li> 14944 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 14945 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 14946rate relative to sensor output.<wbr/></p></span> 14947 </li> 14948 <li> 14949 <span class="entry_type_enum_name">MINIMAL (v3.2)</span> 14950 <span class="entry_type_enum_optional">[optional]</span> 14951 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 14952sensor output.<wbr/> </p></span> 14953 </li> 14954 <li> 14955 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 14956 <span class="entry_type_enum_optional">[optional]</span> 14957 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 14958based 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>) 14959or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if 14960supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of 14961noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> 14962and the quality is equal to or better than FAST (since it is only applied to 14963lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 14964<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 14965with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 14966high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 14967produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 14968high-resolution buffers must not have noise reduction applied to maximize efficiency of 14969preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 14970low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 14971applied for reasonable preview quality.<wbr/></p> 14972<p>This mode is guaranteed to be supported by devices that support either the 14973YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 14974(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 14975be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 14976 </li> 14977 </ul> 14978 14979 </td> <!-- entry_type --> 14980 14981 <td class="entry_description"> 14982 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 14983 </td> 14984 14985 <td class="entry_units"> 14986 </td> 14987 14988 <td class="entry_range"> 14989 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 14990 </td> 14991 14992 <td class="entry_hal_version"> 14993 <p>3.<wbr/>2</p> 14994 </td> 14995 14996 <td class="entry_tags"> 14997 <ul class="entry_tags"> 14998 <li><a href="#tag_V1">V1</a></li> 14999 <li><a href="#tag_REPROC">REPROC</a></li> 15000 </ul> 15001 </td> 15002 15003 </tr> 15004 <tr class="entries_header"> 15005 <th class="th_details" colspan="6">Details</th> 15006 </tr> 15007 <tr class="entry_cont"> 15008 <td class="entry_details" colspan="6"> 15009 <p>The noise reduction algorithm attempts to improve image quality by removing 15010excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 15011<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 15012YUV domain.<wbr/></p> 15013<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 15014demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 15015This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 15016<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> 15017<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 15018will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 15019will use the highest-quality noise filtering algorithms,<wbr/> 15020even if it slows down capture rate.<wbr/> FAST means the camera device will not 15021slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 15022MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 15023Every output stream will have a similar amount of enhancement applied.<wbr/></p> 15024<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 15025buffer of high-resolution images during preview and reprocess image(s) from that buffer 15026into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 15027noise reduction to low-resolution streams (below maximum recording resolution) to maximize 15028preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 15029those will be reprocessed later if necessary.<wbr/></p> 15030<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 15031will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 15032may adjust the noise reduction parameters for best image quality based on the 15033<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 15034 </td> 15035 </tr> 15036 15037 <tr class="entries_header"> 15038 <th class="th_details" colspan="6">HAL Implementation Details</th> 15039 </tr> 15040 <tr class="entry_cont"> 15041 <td class="entry_details" colspan="6"> 15042 <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 15043adjust the internal noise reduction parameters appropriately to get the best quality 15044images.<wbr/></p> 15045 </td> 15046 </tr> 15047 15048 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15049 <!-- end of entry --> 15050 15051 15052 <tr class="entry" id="controls_android.noiseReduction.strength"> 15053 <td class="entry_name 15054 " rowspan="1"> 15055 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 15056 </td> 15057 <td class="entry_type"> 15058 <span class="entry_type_name">byte</span> 15059 15060 <span class="entry_type_visibility"> [system]</span> 15061 15062 15063 15064 15065 15066 15067 </td> <!-- entry_type --> 15068 15069 <td class="entry_description"> 15070 <p>Control the amount of noise reduction 15071applied to the images</p> 15072 </td> 15073 15074 <td class="entry_units"> 15075 1-10; 10 is max noise reduction 15076 </td> 15077 15078 <td class="entry_range"> 15079 <p>1 - 10</p> 15080 </td> 15081 15082 <td class="entry_hal_version"> 15083 <p>3.<wbr/>2</p> 15084 </td> 15085 15086 <td class="entry_tags"> 15087 <ul class="entry_tags"> 15088 <li><a href="#tag_FUTURE">FUTURE</a></li> 15089 </ul> 15090 </td> 15091 15092 </tr> 15093 15094 15095 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15096 <!-- end of entry --> 15097 15098 15099 15100 <!-- end of kind --> 15101 </tbody> 15102 <tr><td colspan="7" class="kind">static</td></tr> 15103 15104 <thead class="entries_header"> 15105 <tr> 15106 <th class="th_name">Property Name</th> 15107 <th class="th_type">Type</th> 15108 <th class="th_description">Description</th> 15109 <th class="th_units">Units</th> 15110 <th class="th_range">Range</th> 15111 <th class="th_hal_version">Initial HIDL HAL version</th> 15112 <th class="th_tags">Tags</th> 15113 </tr> 15114 </thead> 15115 15116 <tbody> 15117 15118 15119 15120 15121 15122 15123 15124 15125 15126 15127 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 15128 <td class="entry_name 15129 " rowspan="5"> 15130 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 15131 </td> 15132 <td class="entry_type"> 15133 <span class="entry_type_name">byte</span> 15134 <span class="entry_type_container">x</span> 15135 15136 <span class="entry_type_array"> 15137 n 15138 </span> 15139 <span class="entry_type_visibility"> [public as enumList]</span> 15140 15141 15142 <span class="entry_type_hwlevel">[limited] </span> 15143 15144 15145 <div class="entry_type_notes">list of enums</div> 15146 15147 15148 </td> <!-- entry_type --> 15149 15150 <td class="entry_description"> 15151 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported 15152by this camera device.<wbr/></p> 15153 </td> 15154 15155 <td class="entry_units"> 15156 </td> 15157 15158 <td class="entry_range"> 15159 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p> 15160 </td> 15161 15162 <td class="entry_hal_version"> 15163 <p>3.<wbr/>2</p> 15164 </td> 15165 15166 <td class="entry_tags"> 15167 <ul class="entry_tags"> 15168 <li><a href="#tag_V1">V1</a></li> 15169 <li><a href="#tag_REPROC">REPROC</a></li> 15170 </ul> 15171 </td> 15172 15173 </tr> 15174 <tr class="entries_header"> 15175 <th class="th_details" colspan="6">Details</th> 15176 </tr> 15177 <tr class="entry_cont"> 15178 <td class="entry_details" colspan="6"> 15179 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p> 15180<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support 15181ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p> 15182<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p> 15183 </td> 15184 </tr> 15185 15186 <tr class="entries_header"> 15187 <th class="th_details" colspan="6">HAL Implementation Details</th> 15188 </tr> 15189 <tr class="entry_cont"> 15190 <td class="entry_details" colspan="6"> 15191 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available 15192on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 15193That is,<wbr/> if the highest quality implementation on the camera device does not slow down 15194capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 15195 </td> 15196 </tr> 15197 15198 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15199 <!-- end of entry --> 15200 15201 15202 15203 <!-- end of kind --> 15204 </tbody> 15205 <tr><td colspan="7" class="kind">dynamic</td></tr> 15206 15207 <thead class="entries_header"> 15208 <tr> 15209 <th class="th_name">Property Name</th> 15210 <th class="th_type">Type</th> 15211 <th class="th_description">Description</th> 15212 <th class="th_units">Units</th> 15213 <th class="th_range">Range</th> 15214 <th class="th_hal_version">Initial HIDL HAL version</th> 15215 <th class="th_tags">Tags</th> 15216 </tr> 15217 </thead> 15218 15219 <tbody> 15220 15221 15222 15223 15224 15225 15226 15227 15228 15229 15230 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 15231 <td class="entry_name 15232 " rowspan="5"> 15233 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 15234 </td> 15235 <td class="entry_type"> 15236 <span class="entry_type_name entry_type_name_enum">byte</span> 15237 15238 <span class="entry_type_visibility"> [public]</span> 15239 15240 15241 <span class="entry_type_hwlevel">[full] </span> 15242 15243 15244 15245 <ul class="entry_type_enum"> 15246 <li> 15247 <span class="entry_type_enum_name">OFF (v3.2)</span> 15248 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 15249 </li> 15250 <li> 15251 <span class="entry_type_enum_name">FAST (v3.2)</span> 15252 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 15253output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 15254relative to sensor.<wbr/></p></span> 15255 </li> 15256 <li> 15257 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 15258 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 15259rate relative to sensor output.<wbr/></p></span> 15260 </li> 15261 <li> 15262 <span class="entry_type_enum_name">MINIMAL (v3.2)</span> 15263 <span class="entry_type_enum_optional">[optional]</span> 15264 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 15265sensor output.<wbr/> </p></span> 15266 </li> 15267 <li> 15268 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> 15269 <span class="entry_type_enum_optional">[optional]</span> 15270 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 15271based 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>) 15272or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if 15273supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of 15274noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> 15275and the quality is equal to or better than FAST (since it is only applied to 15276lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 15277<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 15278with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 15279high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 15280produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 15281high-resolution buffers must not have noise reduction applied to maximize efficiency of 15282preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 15283low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 15284applied for reasonable preview quality.<wbr/></p> 15285<p>This mode is guaranteed to be supported by devices that support either the 15286YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 15287(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 15288be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 15289 </li> 15290 </ul> 15291 15292 </td> <!-- entry_type --> 15293 15294 <td class="entry_description"> 15295 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 15296 </td> 15297 15298 <td class="entry_units"> 15299 </td> 15300 15301 <td class="entry_range"> 15302 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 15303 </td> 15304 15305 <td class="entry_hal_version"> 15306 <p>3.<wbr/>2</p> 15307 </td> 15308 15309 <td class="entry_tags"> 15310 <ul class="entry_tags"> 15311 <li><a href="#tag_V1">V1</a></li> 15312 <li><a href="#tag_REPROC">REPROC</a></li> 15313 </ul> 15314 </td> 15315 15316 </tr> 15317 <tr class="entries_header"> 15318 <th class="th_details" colspan="6">Details</th> 15319 </tr> 15320 <tr class="entry_cont"> 15321 <td class="entry_details" colspan="6"> 15322 <p>The noise reduction algorithm attempts to improve image quality by removing 15323excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 15324<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 15325YUV domain.<wbr/></p> 15326<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 15327demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 15328This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 15329<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> 15330<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 15331will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 15332will use the highest-quality noise filtering algorithms,<wbr/> 15333even if it slows down capture rate.<wbr/> FAST means the camera device will not 15334slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 15335MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 15336Every output stream will have a similar amount of enhancement applied.<wbr/></p> 15337<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 15338buffer of high-resolution images during preview and reprocess image(s) from that buffer 15339into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 15340noise reduction to low-resolution streams (below maximum recording resolution) to maximize 15341preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 15342those will be reprocessed later if necessary.<wbr/></p> 15343<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 15344will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 15345may adjust the noise reduction parameters for best image quality based on the 15346<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 15347 </td> 15348 </tr> 15349 15350 <tr class="entries_header"> 15351 <th class="th_details" colspan="6">HAL Implementation Details</th> 15352 </tr> 15353 <tr class="entry_cont"> 15354 <td class="entry_details" colspan="6"> 15355 <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 15356adjust the internal noise reduction parameters appropriately to get the best quality 15357images.<wbr/></p> 15358 </td> 15359 </tr> 15360 15361 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15362 <!-- end of entry --> 15363 15364 15365 15366 <!-- end of kind --> 15367 </tbody> 15368 15369 <!-- end of section --> 15370 <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr> 15371 15372 15373 <tr><td colspan="7" class="kind">static</td></tr> 15374 15375 <thead class="entries_header"> 15376 <tr> 15377 <th class="th_name">Property Name</th> 15378 <th class="th_type">Type</th> 15379 <th class="th_description">Description</th> 15380 <th class="th_units">Units</th> 15381 <th class="th_range">Range</th> 15382 <th class="th_hal_version">Initial HIDL HAL version</th> 15383 <th class="th_tags">Tags</th> 15384 </tr> 15385 </thead> 15386 15387 <tbody> 15388 15389 15390 15391 15392 15393 15394 15395 15396 15397 15398 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 15399 <td class="entry_name 15400 entry_name_deprecated 15401 " rowspan="3"> 15402 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 15403 </td> 15404 <td class="entry_type"> 15405 <span class="entry_type_name">byte</span> 15406 15407 <span class="entry_type_visibility"> [system]</span> 15408 15409 15410 15411 <span class="entry_type_deprecated">[deprecated] </span> 15412 15413 15414 15415 </td> <!-- entry_type --> 15416 15417 <td class="entry_description"> 15418 <p>If set to 1,<wbr/> the camera service does not 15419scale 'normalized' coordinates with respect to the crop 15420region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 15421and output (face rectangles).<wbr/></p> 15422 </td> 15423 15424 <td class="entry_units"> 15425 </td> 15426 15427 <td class="entry_range"> 15428 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15429 </td> 15430 15431 <td class="entry_hal_version"> 15432 <p>3.<wbr/>2</p> 15433 </td> 15434 15435 <td class="entry_tags"> 15436 </td> 15437 15438 </tr> 15439 <tr class="entries_header"> 15440 <th class="th_details" colspan="6">Details</th> 15441 </tr> 15442 <tr class="entry_cont"> 15443 <td class="entry_details" colspan="6"> 15444 <p>Normalized coordinates refer to those in the 15445(-1000,<wbr/>1000) range mentioned in the 15446android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 15447<p>HAL implementations should instead always use and emit 15448sensor array-relative coordinates for all region data.<wbr/> Does 15449not need to be listed in static metadata.<wbr/> Support will be 15450removed in future versions of camera service.<wbr/></p> 15451 </td> 15452 </tr> 15453 15454 15455 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15456 <!-- end of entry --> 15457 15458 15459 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 15460 <td class="entry_name 15461 entry_name_deprecated 15462 " rowspan="3"> 15463 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 15464 </td> 15465 <td class="entry_type"> 15466 <span class="entry_type_name">byte</span> 15467 15468 <span class="entry_type_visibility"> [system]</span> 15469 15470 15471 15472 <span class="entry_type_deprecated">[deprecated] </span> 15473 15474 15475 15476 </td> <!-- entry_type --> 15477 15478 <td class="entry_description"> 15479 <p>If set to 1,<wbr/> then the camera service always 15480switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 15481trigger.<wbr/></p> 15482 </td> 15483 15484 <td class="entry_units"> 15485 </td> 15486 15487 <td class="entry_range"> 15488 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15489 </td> 15490 15491 <td class="entry_hal_version"> 15492 <p>3.<wbr/>2</p> 15493 </td> 15494 15495 <td class="entry_tags"> 15496 </td> 15497 15498 </tr> 15499 <tr class="entries_header"> 15500 <th class="th_details" colspan="6">Details</th> 15501 </tr> 15502 <tr class="entry_cont"> 15503 <td class="entry_details" colspan="6"> 15504 <p>HAL implementations should implement AF trigger 15505modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 15506CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 15507not need to be listed in static metadata.<wbr/> Support will be 15508removed in future versions of camera service</p> 15509 </td> 15510 </tr> 15511 15512 15513 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15514 <!-- end of entry --> 15515 15516 15517 <tr class="entry" id="static_android.quirks.useZslFormat"> 15518 <td class="entry_name 15519 entry_name_deprecated 15520 " rowspan="3"> 15521 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 15522 </td> 15523 <td class="entry_type"> 15524 <span class="entry_type_name">byte</span> 15525 15526 <span class="entry_type_visibility"> [system]</span> 15527 15528 15529 15530 <span class="entry_type_deprecated">[deprecated] </span> 15531 15532 15533 15534 </td> <!-- entry_type --> 15535 15536 <td class="entry_description"> 15537 <p>If set to 1,<wbr/> the camera service uses 15538CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 15539HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 15540shutter lag stream</p> 15541 </td> 15542 15543 <td class="entry_units"> 15544 </td> 15545 15546 <td class="entry_range"> 15547 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15548 </td> 15549 15550 <td class="entry_hal_version"> 15551 <p>3.<wbr/>2</p> 15552 </td> 15553 15554 <td class="entry_tags"> 15555 </td> 15556 15557 </tr> 15558 <tr class="entries_header"> 15559 <th class="th_details" colspan="6">Details</th> 15560 </tr> 15561 <tr class="entry_cont"> 15562 <td class="entry_details" colspan="6"> 15563 <p>HAL implementations should use gralloc usage flags 15564to determine that a stream will be used for 15565zero-shutter-lag,<wbr/> instead of relying on an explicit 15566format setting.<wbr/> Does not need to be listed in static 15567metadata.<wbr/> Support will be removed in future versions of 15568camera service.<wbr/></p> 15569 </td> 15570 </tr> 15571 15572 15573 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15574 <!-- end of entry --> 15575 15576 15577 <tr class="entry" id="static_android.quirks.usePartialResult"> 15578 <td class="entry_name 15579 entry_name_deprecated 15580 " rowspan="5"> 15581 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 15582 </td> 15583 <td class="entry_type"> 15584 <span class="entry_type_name">byte</span> 15585 15586 <span class="entry_type_visibility"> [hidden]</span> 15587 15588 15589 15590 <span class="entry_type_deprecated">[deprecated] </span> 15591 15592 15593 15594 </td> <!-- entry_type --> 15595 15596 <td class="entry_description"> 15597 <p>If set to 1,<wbr/> the HAL will always split result 15598metadata for a single capture into multiple buffers,<wbr/> 15599returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 15600 </td> 15601 15602 <td class="entry_units"> 15603 </td> 15604 15605 <td class="entry_range"> 15606 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15607 </td> 15608 15609 <td class="entry_hal_version"> 15610 <p>3.<wbr/>2</p> 15611 </td> 15612 15613 <td class="entry_tags"> 15614 </td> 15615 15616 </tr> 15617 <tr class="entries_header"> 15618 <th class="th_details" colspan="6">Details</th> 15619 </tr> 15620 <tr class="entry_cont"> 15621 <td class="entry_details" colspan="6"> 15622 <p>Does not need to be listed in static 15623metadata.<wbr/> Support for partial results will be reworked in 15624future versions of camera service.<wbr/> This quirk will stop 15625working at that point; DO NOT USE without careful 15626consideration of future support.<wbr/></p> 15627 </td> 15628 </tr> 15629 15630 <tr class="entries_header"> 15631 <th class="th_details" colspan="6">HAL Implementation Details</th> 15632 </tr> 15633 <tr class="entry_cont"> 15634 <td class="entry_details" colspan="6"> 15635 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 15636for information on how to implement partial results.<wbr/></p> 15637 </td> 15638 </tr> 15639 15640 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15641 <!-- end of entry --> 15642 15643 15644 15645 <!-- end of kind --> 15646 </tbody> 15647 <tr><td colspan="7" class="kind">dynamic</td></tr> 15648 15649 <thead class="entries_header"> 15650 <tr> 15651 <th class="th_name">Property Name</th> 15652 <th class="th_type">Type</th> 15653 <th class="th_description">Description</th> 15654 <th class="th_units">Units</th> 15655 <th class="th_range">Range</th> 15656 <th class="th_hal_version">Initial HIDL HAL version</th> 15657 <th class="th_tags">Tags</th> 15658 </tr> 15659 </thead> 15660 15661 <tbody> 15662 15663 15664 15665 15666 15667 15668 15669 15670 15671 15672 <tr class="entry" id="dynamic_android.quirks.partialResult"> 15673 <td class="entry_name 15674 entry_name_deprecated 15675 " rowspan="5"> 15676 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 15677 </td> 15678 <td class="entry_type"> 15679 <span class="entry_type_name entry_type_name_enum">byte</span> 15680 15681 <span class="entry_type_visibility"> [hidden as boolean]</span> 15682 15683 15684 15685 <span class="entry_type_deprecated">[deprecated] </span> 15686 15687 15688 <ul class="entry_type_enum"> 15689 <li> 15690 <span class="entry_type_enum_name">FINAL (v3.2)</span> 15691 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 15692for this capture.<wbr/></p></span> 15693 </li> 15694 <li> 15695 <span class="entry_type_enum_name">PARTIAL (v3.2)</span> 15696 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 15697capture.<wbr/> More result buffers for this capture will be sent 15698by the camera device,<wbr/> the last of which will be marked 15699FINAL.<wbr/></p></span> 15700 </li> 15701 </ul> 15702 15703 </td> <!-- entry_type --> 15704 15705 <td class="entry_description"> 15706 <p>Whether a result given to the framework is the 15707final one for the capture,<wbr/> or only a partial that contains a 15708subset of the full set of dynamic metadata 15709values.<wbr/></p> 15710 </td> 15711 15712 <td class="entry_units"> 15713 </td> 15714 15715 <td class="entry_range"> 15716 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15717 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> 15718 </td> 15719 15720 <td class="entry_hal_version"> 15721 <p>3.<wbr/>2</p> 15722 </td> 15723 15724 <td class="entry_tags"> 15725 </td> 15726 15727 </tr> 15728 <tr class="entries_header"> 15729 <th class="th_details" colspan="6">Details</th> 15730 </tr> 15731 <tr class="entry_cont"> 15732 <td class="entry_details" colspan="6"> 15733 <p>The entries in the result metadata buffers for a 15734single capture may not overlap,<wbr/> except for this entry.<wbr/> The 15735FINAL buffers must retain FIFO ordering relative to the 15736requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 15737always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 15738before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 15739in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 15740capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 15741only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 15742 </td> 15743 </tr> 15744 15745 <tr class="entries_header"> 15746 <th class="th_details" colspan="6">HAL Implementation Details</th> 15747 </tr> 15748 <tr class="entry_cont"> 15749 <td class="entry_details" colspan="6"> 15750 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 15751for information on how to implement partial results.<wbr/></p> 15752 </td> 15753 </tr> 15754 15755 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15756 <!-- end of entry --> 15757 15758 15759 15760 <!-- end of kind --> 15761 </tbody> 15762 15763 <!-- end of section --> 15764 <tr><td colspan="7" id="section_request" class="section">request</td></tr> 15765 15766 15767 <tr><td colspan="7" class="kind">controls</td></tr> 15768 15769 <thead class="entries_header"> 15770 <tr> 15771 <th class="th_name">Property Name</th> 15772 <th class="th_type">Type</th> 15773 <th class="th_description">Description</th> 15774 <th class="th_units">Units</th> 15775 <th class="th_range">Range</th> 15776 <th class="th_hal_version">Initial HIDL HAL version</th> 15777 <th class="th_tags">Tags</th> 15778 </tr> 15779 </thead> 15780 15781 <tbody> 15782 15783 15784 15785 15786 15787 15788 15789 15790 15791 15792 <tr class="entry" id="controls_android.request.frameCount"> 15793 <td class="entry_name 15794 entry_name_deprecated 15795 " rowspan="1"> 15796 android.<wbr/>request.<wbr/>frame<wbr/>Count 15797 </td> 15798 <td class="entry_type"> 15799 <span class="entry_type_name">int32</span> 15800 15801 <span class="entry_type_visibility"> [system]</span> 15802 15803 15804 15805 <span class="entry_type_deprecated">[deprecated] </span> 15806 15807 15808 15809 </td> <!-- entry_type --> 15810 15811 <td class="entry_description"> 15812 <p>A frame counter set by the framework.<wbr/> Must 15813be maintained unchanged in output frame.<wbr/> This value monotonically 15814increases with every new result (that is,<wbr/> each new result has a unique 15815frameCount value).<wbr/></p> 15816 </td> 15817 15818 <td class="entry_units"> 15819 incrementing integer 15820 </td> 15821 15822 <td class="entry_range"> 15823 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15824 <p>Any int.<wbr/></p> 15825 </td> 15826 15827 <td class="entry_hal_version"> 15828 <p>3.<wbr/>2</p> 15829 </td> 15830 15831 <td class="entry_tags"> 15832 </td> 15833 15834 </tr> 15835 15836 15837 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15838 <!-- end of entry --> 15839 15840 15841 <tr class="entry" id="controls_android.request.id"> 15842 <td class="entry_name 15843 " rowspan="1"> 15844 android.<wbr/>request.<wbr/>id 15845 </td> 15846 <td class="entry_type"> 15847 <span class="entry_type_name">int32</span> 15848 15849 <span class="entry_type_visibility"> [hidden]</span> 15850 15851 15852 15853 15854 15855 15856 </td> <!-- entry_type --> 15857 15858 <td class="entry_description"> 15859 <p>An application-specified ID for the current 15860request.<wbr/> Must be maintained unchanged in output 15861frame</p> 15862 </td> 15863 15864 <td class="entry_units"> 15865 arbitrary integer assigned by application 15866 </td> 15867 15868 <td class="entry_range"> 15869 <p>Any int</p> 15870 </td> 15871 15872 <td class="entry_hal_version"> 15873 <p>3.<wbr/>2</p> 15874 </td> 15875 15876 <td class="entry_tags"> 15877 <ul class="entry_tags"> 15878 <li><a href="#tag_V1">V1</a></li> 15879 </ul> 15880 </td> 15881 15882 </tr> 15883 15884 15885 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15886 <!-- end of entry --> 15887 15888 15889 <tr class="entry" id="controls_android.request.inputStreams"> 15890 <td class="entry_name 15891 entry_name_deprecated 15892 " rowspan="3"> 15893 android.<wbr/>request.<wbr/>input<wbr/>Streams 15894 </td> 15895 <td class="entry_type"> 15896 <span class="entry_type_name">int32</span> 15897 <span class="entry_type_container">x</span> 15898 15899 <span class="entry_type_array"> 15900 n 15901 </span> 15902 <span class="entry_type_visibility"> [system]</span> 15903 15904 15905 15906 <span class="entry_type_deprecated">[deprecated] </span> 15907 15908 15909 15910 </td> <!-- entry_type --> 15911 15912 <td class="entry_description"> 15913 <p>List which camera reprocess stream is used 15914for the source of reprocessing data.<wbr/></p> 15915 </td> 15916 15917 <td class="entry_units"> 15918 List of camera reprocess stream IDs 15919 </td> 15920 15921 <td class="entry_range"> 15922 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15923 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 15924 </td> 15925 15926 <td class="entry_hal_version"> 15927 <p>3.<wbr/>2</p> 15928 </td> 15929 15930 <td class="entry_tags"> 15931 <ul class="entry_tags"> 15932 <li><a href="#tag_HAL2">HAL2</a></li> 15933 </ul> 15934 </td> 15935 15936 </tr> 15937 <tr class="entries_header"> 15938 <th class="th_details" colspan="6">Details</th> 15939 </tr> 15940 <tr class="entry_cont"> 15941 <td class="entry_details" colspan="6"> 15942 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 15943REPROCESS.<wbr/> Ignored otherwise</p> 15944 </td> 15945 </tr> 15946 15947 15948 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 15949 <!-- end of entry --> 15950 15951 15952 <tr class="entry" id="controls_android.request.metadataMode"> 15953 <td class="entry_name 15954 " rowspan="1"> 15955 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 15956 </td> 15957 <td class="entry_type"> 15958 <span class="entry_type_name entry_type_name_enum">byte</span> 15959 15960 <span class="entry_type_visibility"> [system]</span> 15961 15962 15963 15964 15965 15966 <ul class="entry_type_enum"> 15967 <li> 15968 <span class="entry_type_enum_name">NONE (v3.2)</span> 15969 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 15970for application-bound buffer data.<wbr/> If no 15971application-bound streams exist,<wbr/> no frame should be 15972placed in the output frame queue.<wbr/> If such streams 15973exist,<wbr/> a frame should be placed on the output queue 15974with null metadata but with the necessary output buffer 15975information.<wbr/> Timestamp information should still be 15976included with any output stream buffers</p></span> 15977 </li> 15978 <li> 15979 <span class="entry_type_enum_name">FULL (v3.2)</span> 15980 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 15981only be produced if they are separately 15982enabled</p></span> 15983 </li> 15984 </ul> 15985 15986 </td> <!-- entry_type --> 15987 15988 <td class="entry_description"> 15989 <p>How much metadata to produce on 15990output</p> 15991 </td> 15992 15993 <td class="entry_units"> 15994 </td> 15995 15996 <td class="entry_range"> 15997 </td> 15998 15999 <td class="entry_hal_version"> 16000 <p>3.<wbr/>2</p> 16001 </td> 16002 16003 <td class="entry_tags"> 16004 <ul class="entry_tags"> 16005 <li><a href="#tag_FUTURE">FUTURE</a></li> 16006 </ul> 16007 </td> 16008 16009 </tr> 16010 16011 16012 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16013 <!-- end of entry --> 16014 16015 16016 <tr class="entry" id="controls_android.request.outputStreams"> 16017 <td class="entry_name 16018 entry_name_deprecated 16019 " rowspan="3"> 16020 android.<wbr/>request.<wbr/>output<wbr/>Streams 16021 </td> 16022 <td class="entry_type"> 16023 <span class="entry_type_name">int32</span> 16024 <span class="entry_type_container">x</span> 16025 16026 <span class="entry_type_array"> 16027 n 16028 </span> 16029 <span class="entry_type_visibility"> [system]</span> 16030 16031 16032 16033 <span class="entry_type_deprecated">[deprecated] </span> 16034 16035 16036 16037 </td> <!-- entry_type --> 16038 16039 <td class="entry_description"> 16040 <p>Lists which camera output streams image data 16041from this capture must be sent to</p> 16042 </td> 16043 16044 <td class="entry_units"> 16045 List of camera stream IDs 16046 </td> 16047 16048 <td class="entry_range"> 16049 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16050 <p>List must only include streams that have been 16051created</p> 16052 </td> 16053 16054 <td class="entry_hal_version"> 16055 <p>3.<wbr/>2</p> 16056 </td> 16057 16058 <td class="entry_tags"> 16059 <ul class="entry_tags"> 16060 <li><a href="#tag_HAL2">HAL2</a></li> 16061 </ul> 16062 </td> 16063 16064 </tr> 16065 <tr class="entries_header"> 16066 <th class="th_details" colspan="6">Details</th> 16067 </tr> 16068 <tr class="entry_cont"> 16069 <td class="entry_details" colspan="6"> 16070 <p>If no output streams are listed,<wbr/> then the image 16071data should simply be discarded.<wbr/> The image data must 16072still be captured for metadata and statistics production,<wbr/> 16073and the lens and flash must operate as requested.<wbr/></p> 16074 </td> 16075 </tr> 16076 16077 16078 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16079 <!-- end of entry --> 16080 16081 16082 <tr class="entry" id="controls_android.request.type"> 16083 <td class="entry_name 16084 entry_name_deprecated 16085 " rowspan="1"> 16086 android.<wbr/>request.<wbr/>type 16087 </td> 16088 <td class="entry_type"> 16089 <span class="entry_type_name entry_type_name_enum">byte</span> 16090 16091 <span class="entry_type_visibility"> [system]</span> 16092 16093 16094 16095 <span class="entry_type_deprecated">[deprecated] </span> 16096 16097 16098 <ul class="entry_type_enum"> 16099 <li> 16100 <span class="entry_type_enum_name">CAPTURE (v3.2)</span> 16101 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 16102and process it according to the 16103settings</p></span> 16104 </li> 16105 <li> 16106 <span class="entry_type_enum_name">REPROCESS (v3.2)</span> 16107 <span class="entry_type_enum_notes"><p>Process previously captured data; the 16108<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 16109source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 16110needed for reprocessing with [RP]</p></span> 16111 </li> 16112 </ul> 16113 16114 </td> <!-- entry_type --> 16115 16116 <td class="entry_description"> 16117 <p>The type of the request; either CAPTURE or 16118REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p> 16119 </td> 16120 16121 <td class="entry_units"> 16122 </td> 16123 16124 <td class="entry_range"> 16125 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16126 </td> 16127 16128 <td class="entry_hal_version"> 16129 <p>3.<wbr/>2</p> 16130 </td> 16131 16132 <td class="entry_tags"> 16133 <ul class="entry_tags"> 16134 <li><a href="#tag_HAL2">HAL2</a></li> 16135 </ul> 16136 </td> 16137 16138 </tr> 16139 16140 16141 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16142 <!-- end of entry --> 16143 16144 16145 16146 <!-- end of kind --> 16147 </tbody> 16148 <tr><td colspan="7" class="kind">static</td></tr> 16149 16150 <thead class="entries_header"> 16151 <tr> 16152 <th class="th_name">Property Name</th> 16153 <th class="th_type">Type</th> 16154 <th class="th_description">Description</th> 16155 <th class="th_units">Units</th> 16156 <th class="th_range">Range</th> 16157 <th class="th_hal_version">Initial HIDL HAL version</th> 16158 <th class="th_tags">Tags</th> 16159 </tr> 16160 </thead> 16161 16162 <tbody> 16163 16164 16165 16166 16167 16168 16169 16170 16171 16172 16173 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 16174 <td class="entry_name 16175 " rowspan="3"> 16176 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 16177 </td> 16178 <td class="entry_type"> 16179 <span class="entry_type_name">int32</span> 16180 <span class="entry_type_container">x</span> 16181 16182 <span class="entry_type_array"> 16183 3 16184 </span> 16185 <span class="entry_type_visibility"> [ndk_public]</span> 16186 16187 16188 <span class="entry_type_hwlevel">[legacy] </span> 16189 16190 16191 16192 16193 </td> <!-- entry_type --> 16194 16195 <td class="entry_description"> 16196 <p>The maximum numbers of different types of output streams 16197that can be configured and used simultaneously by a camera device.<wbr/></p> 16198 </td> 16199 16200 <td class="entry_units"> 16201 </td> 16202 16203 <td class="entry_range"> 16204 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> 16205<p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> 16206<p>For processed (but not stalling) format streams,<wbr/> >= 3 16207for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 16208>= 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> 16209 </td> 16210 16211 <td class="entry_hal_version"> 16212 <p>3.<wbr/>2</p> 16213 </td> 16214 16215 <td class="entry_tags"> 16216 <ul class="entry_tags"> 16217 <li><a href="#tag_BC">BC</a></li> 16218 </ul> 16219 </td> 16220 16221 </tr> 16222 <tr class="entries_header"> 16223 <th class="th_details" colspan="6">Details</th> 16224 </tr> 16225 <tr class="entry_cont"> 16226 <td class="entry_details" colspan="6"> 16227 <p>This is a 3 element tuple that contains the max number of output simultaneous 16228streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 16229formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 16230stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 16231number 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> 16232<p>This lists the upper bound of the number of output streams supported by 16233the camera device.<wbr/> Using more streams simultaneously may require more hardware and 16234CPU resources that will consume more power.<wbr/> The image format for an output stream can 16235be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 16236The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized 16237into the 3 stream types as below:</p> 16238<ul> 16239<li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> 16240 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li> 16241<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 16242 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li> 16243<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> Typically 16244 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/> 16245 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li> 16246</ul> 16247 </td> 16248 </tr> 16249 16250 16251 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16252 <!-- end of entry --> 16253 16254 16255 <tr class="entry" id="static_android.request.maxNumOutputRaw"> 16256 <td class="entry_name 16257 " rowspan="3"> 16258 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw 16259 </td> 16260 <td class="entry_type"> 16261 <span class="entry_type_name">int32</span> 16262 16263 <span class="entry_type_visibility"> [java_public]</span> 16264 16265 <span class="entry_type_synthetic">[synthetic] </span> 16266 16267 <span class="entry_type_hwlevel">[legacy] </span> 16268 16269 16270 16271 16272 </td> <!-- entry_type --> 16273 16274 <td class="entry_description"> 16275 <p>The maximum numbers of different types of output streams 16276that can be configured and used simultaneously by a camera device 16277for any <code>RAW</code> formats.<wbr/></p> 16278 </td> 16279 16280 <td class="entry_units"> 16281 </td> 16282 16283 <td class="entry_range"> 16284 <p>>= 0</p> 16285 </td> 16286 16287 <td class="entry_hal_version"> 16288 <p>3.<wbr/>2</p> 16289 </td> 16290 16291 <td class="entry_tags"> 16292 </td> 16293 16294 </tr> 16295 <tr class="entries_header"> 16296 <th class="th_details" colspan="6">Details</th> 16297 </tr> 16298 <tr class="entry_cont"> 16299 <td class="entry_details" colspan="6"> 16300 <p>This value contains the max number of output simultaneous 16301streams from the raw sensor.<wbr/></p> 16302<p>This lists the upper bound of the number of output streams supported by 16303the camera device.<wbr/> Using more streams simultaneously may require more hardware and 16304CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 16305be 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> 16306<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> 16307<ul> 16308<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li> 16309<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li> 16310<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li> 16311</ul> 16312<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY) 16313never support raw streams.<wbr/></p> 16314 </td> 16315 </tr> 16316 16317 16318 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16319 <!-- end of entry --> 16320 16321 16322 <tr class="entry" id="static_android.request.maxNumOutputProc"> 16323 <td class="entry_name 16324 " rowspan="3"> 16325 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc 16326 </td> 16327 <td class="entry_type"> 16328 <span class="entry_type_name">int32</span> 16329 16330 <span class="entry_type_visibility"> [java_public]</span> 16331 16332 <span class="entry_type_synthetic">[synthetic] </span> 16333 16334 <span class="entry_type_hwlevel">[legacy] </span> 16335 16336 16337 16338 16339 </td> <!-- entry_type --> 16340 16341 <td class="entry_description"> 16342 <p>The maximum numbers of different types of output streams 16343that can be configured and used simultaneously by a camera device 16344for any processed (but not-stalling) formats.<wbr/></p> 16345 </td> 16346 16347 <td class="entry_units"> 16348 </td> 16349 16350 <td class="entry_range"> 16351 <p>>= 3 16352for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 16353>= 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> 16354 </td> 16355 16356 <td class="entry_hal_version"> 16357 <p>3.<wbr/>2</p> 16358 </td> 16359 16360 <td class="entry_tags"> 16361 </td> 16362 16363 </tr> 16364 <tr class="entries_header"> 16365 <th class="th_details" colspan="6">Details</th> 16366 </tr> 16367 <tr class="entry_cont"> 16368 <td class="entry_details" colspan="6"> 16369 <p>This value contains the max number of output simultaneous 16370streams for any processed (but not-stalling) formats.<wbr/></p> 16371<p>This lists the upper bound of the number of output streams supported by 16372the camera device.<wbr/> Using more streams simultaneously may require more hardware and 16373CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 16374be 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> 16375<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> 16376Typically:</p> 16377<ul> 16378<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li> 16379<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li> 16380<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li> 16381<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> 16382</ul> 16383<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 16384processed format -- it will return 0 for a non-stalling stream.<wbr/></p> 16385<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p> 16386 </td> 16387 </tr> 16388 16389 16390 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16391 <!-- end of entry --> 16392 16393 16394 <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> 16395 <td class="entry_name 16396 " rowspan="3"> 16397 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling 16398 </td> 16399 <td class="entry_type"> 16400 <span class="entry_type_name">int32</span> 16401 16402 <span class="entry_type_visibility"> [java_public]</span> 16403 16404 <span class="entry_type_synthetic">[synthetic] </span> 16405 16406 <span class="entry_type_hwlevel">[legacy] </span> 16407 16408 16409 16410 16411 </td> <!-- entry_type --> 16412 16413 <td class="entry_description"> 16414 <p>The maximum numbers of different types of output streams 16415that can be configured and used simultaneously by a camera device 16416for any processed (and stalling) formats.<wbr/></p> 16417 </td> 16418 16419 <td class="entry_units"> 16420 </td> 16421 16422 <td class="entry_range"> 16423 <p>>= 1</p> 16424 </td> 16425 16426 <td class="entry_hal_version"> 16427 <p>3.<wbr/>2</p> 16428 </td> 16429 16430 <td class="entry_tags"> 16431 </td> 16432 16433 </tr> 16434 <tr class="entries_header"> 16435 <th class="th_details" colspan="6">Details</th> 16436 </tr> 16437 <tr class="entry_cont"> 16438 <td class="entry_details" colspan="6"> 16439 <p>This value contains the max number of output simultaneous 16440streams for any processed (but not-stalling) formats.<wbr/></p> 16441<p>This lists the upper bound of the number of output streams supported by 16442the camera device.<wbr/> Using more streams simultaneously may require more hardware and 16443CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 16444be 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> 16445<p>A processed and stalling format is defined as any non-RAW format with a stallDurations 16446> 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> 16447<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 16448processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> 16449<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p> 16450 </td> 16451 </tr> 16452 16453 16454 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16455 <!-- end of entry --> 16456 16457 16458 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 16459 <td class="entry_name 16460 entry_name_deprecated 16461 " rowspan="3"> 16462 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 16463 </td> 16464 <td class="entry_type"> 16465 <span class="entry_type_name">int32</span> 16466 <span class="entry_type_container">x</span> 16467 16468 <span class="entry_type_array"> 16469 1 16470 </span> 16471 <span class="entry_type_visibility"> [system]</span> 16472 16473 16474 16475 <span class="entry_type_deprecated">[deprecated] </span> 16476 16477 16478 16479 </td> <!-- entry_type --> 16480 16481 <td class="entry_description"> 16482 <p>How many reprocessing streams of any type 16483can be allocated at the same time.<wbr/></p> 16484 </td> 16485 16486 <td class="entry_units"> 16487 </td> 16488 16489 <td class="entry_range"> 16490 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16491 <p>>= 0</p> 16492 </td> 16493 16494 <td class="entry_hal_version"> 16495 <p>3.<wbr/>2</p> 16496 </td> 16497 16498 <td class="entry_tags"> 16499 <ul class="entry_tags"> 16500 <li><a href="#tag_HAL2">HAL2</a></li> 16501 </ul> 16502 </td> 16503 16504 </tr> 16505 <tr class="entries_header"> 16506 <th class="th_details" colspan="6">Details</th> 16507 </tr> 16508 <tr class="entry_cont"> 16509 <td class="entry_details" colspan="6"> 16510 <p>Only used by HAL2.<wbr/>x.<wbr/></p> 16511<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 16512 </td> 16513 </tr> 16514 16515 16516 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16517 <!-- end of entry --> 16518 16519 16520 <tr class="entry" id="static_android.request.maxNumInputStreams"> 16521 <td class="entry_name 16522 " rowspan="5"> 16523 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 16524 </td> 16525 <td class="entry_type"> 16526 <span class="entry_type_name">int32</span> 16527 16528 <span class="entry_type_visibility"> [java_public]</span> 16529 16530 16531 <span class="entry_type_hwlevel">[full] </span> 16532 16533 16534 16535 16536 </td> <!-- entry_type --> 16537 16538 <td class="entry_description"> 16539 <p>The maximum numbers of any type of input streams 16540that can be configured and used simultaneously by a camera device.<wbr/></p> 16541 </td> 16542 16543 <td class="entry_units"> 16544 </td> 16545 16546 <td class="entry_range"> 16547 <p>0 or 1.<wbr/></p> 16548 </td> 16549 16550 <td class="entry_hal_version"> 16551 <p>3.<wbr/>2</p> 16552 </td> 16553 16554 <td class="entry_tags"> 16555 <ul class="entry_tags"> 16556 <li><a href="#tag_REPROC">REPROC</a></li> 16557 </ul> 16558 </td> 16559 16560 </tr> 16561 <tr class="entries_header"> 16562 <th class="th_details" colspan="6">Details</th> 16563 </tr> 16564 <tr class="entry_cont"> 16565 <td class="entry_details" colspan="6"> 16566 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 16567<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 16568input stream,<wbr/> there must be at least one output stream configured to to receive the 16569reprocessed images.<wbr/></p> 16570<p>When an input stream and some output streams are used in a reprocessing request,<wbr/> 16571only the input buffer will be used to produce these output stream buffers,<wbr/> and a 16572new sensor image will not be captured.<wbr/></p> 16573<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 16574stream image format will be PRIVATE,<wbr/> the associated output stream image format 16575should be JPEG.<wbr/></p> 16576 </td> 16577 </tr> 16578 16579 <tr class="entries_header"> 16580 <th class="th_details" colspan="6">HAL Implementation Details</th> 16581 </tr> 16582 <tr class="entry_cont"> 16583 <td class="entry_details" colspan="6"> 16584 <p>For the reprocessing flow and controls,<wbr/> see 16585hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p> 16586 </td> 16587 </tr> 16588 16589 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16590 <!-- end of entry --> 16591 16592 16593 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 16594 <td class="entry_name 16595 " rowspan="5"> 16596 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 16597 </td> 16598 <td class="entry_type"> 16599 <span class="entry_type_name">byte</span> 16600 16601 <span class="entry_type_visibility"> [public]</span> 16602 16603 16604 <span class="entry_type_hwlevel">[legacy] </span> 16605 16606 16607 16608 16609 </td> <!-- entry_type --> 16610 16611 <td class="entry_description"> 16612 <p>Specifies the number of maximum pipeline stages a frame 16613has to go through from when it's exposed to when it's available 16614to the framework.<wbr/></p> 16615 </td> 16616 16617 <td class="entry_units"> 16618 </td> 16619 16620 <td class="entry_range"> 16621 </td> 16622 16623 <td class="entry_hal_version"> 16624 <p>3.<wbr/>2</p> 16625 </td> 16626 16627 <td class="entry_tags"> 16628 </td> 16629 16630 </tr> 16631 <tr class="entries_header"> 16632 <th class="th_details" colspan="6">Details</th> 16633 </tr> 16634 <tr class="entry_cont"> 16635 <td class="entry_details" colspan="6"> 16636 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 16637one stage to readout) from the sensor.<wbr/> The ISP then usually adds 16638its own stages to do custom HW processing.<wbr/> Further stages may be 16639added by SW processing.<wbr/></p> 16640<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 16641processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 16642depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 16643the max pipeline depth.<wbr/></p> 16644<p>A pipeline depth of X stages is equivalent to a pipeline latency of 16645X frame intervals.<wbr/></p> 16646<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/> 16647the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p> 16648 </td> 16649 </tr> 16650 16651 <tr class="entries_header"> 16652 <th class="th_details" colspan="6">HAL Implementation Details</th> 16653 </tr> 16654 <tr class="entry_cont"> 16655 <td class="entry_details" colspan="6"> 16656 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the 16657max batch sizes may be larger than 1.<wbr/></p> 16658 </td> 16659 </tr> 16660 16661 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16662 <!-- end of entry --> 16663 16664 16665 <tr class="entry" id="static_android.request.partialResultCount"> 16666 <td class="entry_name 16667 " rowspan="3"> 16668 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 16669 </td> 16670 <td class="entry_type"> 16671 <span class="entry_type_name">int32</span> 16672 16673 <span class="entry_type_visibility"> [public]</span> 16674 16675 16676 16677 16678 16679 16680 </td> <!-- entry_type --> 16681 16682 <td class="entry_description"> 16683 <p>Defines how many sub-components 16684a result will be composed of.<wbr/></p> 16685 </td> 16686 16687 <td class="entry_units"> 16688 </td> 16689 16690 <td class="entry_range"> 16691 <p>>= 1</p> 16692 </td> 16693 16694 <td class="entry_hal_version"> 16695 <p>3.<wbr/>2</p> 16696 </td> 16697 16698 <td class="entry_tags"> 16699 </td> 16700 16701 </tr> 16702 <tr class="entries_header"> 16703 <th class="th_details" colspan="6">Details</th> 16704 </tr> 16705 <tr class="entry_cont"> 16706 <td class="entry_details" colspan="6"> 16707 <p>In order to combat the pipeline latency,<wbr/> partial results 16708may be delivered to the application layer from the camera device as 16709soon as they are available.<wbr/></p> 16710<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial 16711results are not supported,<wbr/> and only the final TotalCaptureResult will 16712be produced by the camera device.<wbr/></p> 16713<p>A typical use case for this might be: after requesting an 16714auto-focus (AF) lock the new AF state might be available 50% 16715of the way through the pipeline.<wbr/> The camera device could 16716then immediately dispatch this state via a partial result to 16717the application,<wbr/> and the rest of the metadata via later 16718partial results.<wbr/></p> 16719 </td> 16720 </tr> 16721 16722 16723 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 16724 <!-- end of entry --> 16725 16726 16727 <tr class="entry" id="static_android.request.availableCapabilities"> 16728 <td class="entry_name 16729 " rowspan="5"> 16730 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 16731 </td> 16732 <td class="entry_type"> 16733 <span class="entry_type_name entry_type_name_enum">byte</span> 16734 <span class="entry_type_container">x</span> 16735 16736 <span class="entry_type_array"> 16737 n 16738 </span> 16739 <span class="entry_type_visibility"> [public]</span> 16740 16741 16742 <span class="entry_type_hwlevel">[legacy] </span> 16743 16744 16745 16746 <ul class="entry_type_enum"> 16747 <li> 16748 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span> 16749 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 16750device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 16751supports.<wbr/></p> 16752<p>This capability is listed by all normal devices,<wbr/> and 16753indicates that the camera device has a feature set 16754that's comparable to the baseline requirements for the 16755older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 16756<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this 16757capability,<wbr/> indicating that they support only depth measurement,<wbr/> 16758not standard color output.<wbr/></p></span> 16759 </li> 16760 <li> 16761 <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span> 16762 <span class="entry_type_enum_optional">[optional]</span> 16763 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 16764as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> 16765The camera device supports basic manual control of the sensor image 16766acquisition related stages.<wbr/> This means the following controls are 16767guaranteed to be supported:</p> 16768<ul> 16769<li>Manual frame duration control<ul> 16770<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> 16771<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 16772</ul> 16773</li> 16774<li>Manual exposure control<ul> 16775<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 16776<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 16777</ul> 16778</li> 16779<li>Manual sensitivity control<ul> 16780<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 16781<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 16782</ul> 16783</li> 16784<li>Manual lens control (if the lens is adjustable)<ul> 16785<li>android.<wbr/>lens.<wbr/>*</li> 16786</ul> 16787</li> 16788<li>Manual flash control (if a flash unit is present)<ul> 16789<li>android.<wbr/>flash.<wbr/>*</li> 16790</ul> 16791</li> 16792<li>Manual black level locking<ul> 16793<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 16794</ul> 16795</li> 16796<li>Auto exposure lock<ul> 16797<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 16798</ul> 16799</li> 16800</ul> 16801<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 16802device will accurately report the values applied by 3A in the 16803result.<wbr/></p> 16804<p>A given camera device may also support additional manual sensor controls,<wbr/> 16805but this capability only covers the above list of controls.<wbr/></p> 16806<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will 16807additionally return a min frame duration that is greater than 16808zero for each supported size-format combination.<wbr/></p></span> 16809 </li> 16810 <li> 16811 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span> 16812 <span class="entry_type_enum_optional">[optional]</span> 16813 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> 16814The camera device supports basic manual control of the image post-processing 16815stages.<wbr/> This means the following controls are guaranteed to be supported:</p> 16816<ul> 16817<li> 16818<p>Manual tonemap control</p> 16819<ul> 16820<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> 16821<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 16822<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 16823<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li> 16824<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li> 16825</ul> 16826</li> 16827<li> 16828<p>Manual white balance control</p> 16829<ul> 16830<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 16831<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 16832</ul> 16833</li> 16834<li>Manual lens shading map control<ul> 16835<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li> 16836<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li> 16837<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 16838<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 16839</ul> 16840</li> 16841<li>Manual aberration correction control (if aberration correction is supported)<ul> 16842<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li> 16843<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li> 16844</ul> 16845</li> 16846<li>Auto white balance lock<ul> 16847<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 16848</ul> 16849</li> 16850</ul> 16851<p>If auto white balance is enabled,<wbr/> then the camera device 16852will accurately report the values applied by AWB in the result.<wbr/></p> 16853<p>A given camera device may also support additional post-processing 16854controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span> 16855 </li> 16856 <li> 16857 <span class="entry_type_enum_name">RAW (v3.2)</span> 16858 <span class="entry_type_enum_optional">[optional]</span> 16859 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and 16860metadata for interpreting them.<wbr/></p> 16861<p>Devices supporting the RAW capability allow both for 16862saving DNG files,<wbr/> and for direct application processing of 16863raw sensor images.<wbr/></p> 16864<ul> 16865<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li> 16866<li>The maximum available resolution for RAW_<wbr/>SENSOR streams 16867 will match either the value in 16868 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 16869 <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> 16870<li>All DNG-related optional metadata entries are provided 16871 by the camera device.<wbr/></li> 16872</ul></span> 16873 </li> 16874 <li> 16875 <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span> 16876 <span class="entry_type_enum_optional">[optional]</span> 16877 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p> 16878<ul> 16879<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> 16880<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/> 16881 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of 16882 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> 16883<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 16884 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> 16885<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> 16886<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop 16887 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 16888<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both 16889 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and 16890 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li> 16891<li>The maximum available resolution for PRIVATE streams 16892 (both input/<wbr/>output) will match the maximum available 16893 resolution of JPEG streams.<wbr/></li> 16894<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 16895<li>Only below controls are effective for reprocessing requests and 16896 will be present in capture results,<wbr/> other controls in reprocess 16897 requests will be ignored by the camera device.<wbr/><ul> 16898<li>android.<wbr/>jpeg.<wbr/>*</li> 16899<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 16900<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 16901</ul> 16902</li> 16903<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 16904 <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> 16905</ul></span> 16906 </li> 16907 <li> 16908 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span> 16909 <span class="entry_type_enum_optional">[optional]</span> 16910 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of 16911the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows 16912reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p> 16913<p>The values reported for the following controls are guaranteed to be available 16914in the CaptureResult,<wbr/> including when 3A is enabled:</p> 16915<ul> 16916<li>Exposure control<ul> 16917<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 16918</ul> 16919</li> 16920<li>Sensitivity control<ul> 16921<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 16922</ul> 16923</li> 16924<li>Lens controls (if the lens is adjustable)<ul> 16925<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li> 16926<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li> 16927</ul> 16928</li> 16929</ul> 16930<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will 16931always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span> 16932 </li> 16933 <li> 16934 <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span> 16935 <span class="entry_type_enum_optional">[optional]</span> 16936 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per 16937second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set 16938to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames 16939per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum 16940resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span> 16941 </li> 16942 <li> 16943 <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span> 16944 <span class="entry_type_enum_optional">[optional]</span> 16945 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as 16946PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the 16947following:</p> 16948<ul> 16949<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> 16950<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 16951 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> 16952<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 16953 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> 16954<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> 16955<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 16956 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 16957<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 16958 <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> 16959<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 16960 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li> 16961<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 16962<li>Only the below controls are effective for reprocessing requests and will be present 16963 in capture results.<wbr/> The reprocess requests are from the original capture results 16964 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 16965 reprocess requests will be ignored by the camera device.<wbr/><ul> 16966<li>android.<wbr/>jpeg.<wbr/>*</li> 16967<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 16968<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 16969<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li> 16970</ul> 16971</li> 16972<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 16973 <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> 16974</ul></span> 16975 </li> 16976 <li> 16977 <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span> 16978 <span class="entry_type_enum_optional">[optional]</span> 16979 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p> 16980<p>This capability requires the camera device to support the following:</p> 16981<ul> 16982<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as 16983 an output format.<wbr/></li> 16984<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 16985 optionally supported as an output format.<wbr/></li> 16986<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 16987 list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> 16988 and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul> 16989<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 16990<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 16991<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 16992<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 16993</ul> 16994</li> 16995<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> 16996<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> 16997<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support 16998 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16 16999 format.<wbr/></li> 17000</ul> 17001<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/> 17002so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that 17003should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/> 17004On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/> 17005using a repeating burst is recommended,<wbr/> where a depth-output target is only included 17006once every N frames,<wbr/> where N is the ratio between preview output rate and depth output 17007rate,<wbr/> including depth stall time.<wbr/></p></span> 17008 </li> 17009 <li> 17010 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span> 17011 <span class="entry_type_enum_optional">[optional]</span> 17012 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) use 17013case.<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 17014only 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> 17015<p>A camera device can still support high speed video streaming by advertising the high 17016speed 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 17017normal capture request per frame control and synchronization requirements will apply 17018to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability 17019describes the capability of a specialized operating mode with many limitations (see 17020below),<wbr/> which is only targeted at high speed video recording.<wbr/></p> 17021<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/> 17022To get desired output frame rates,<wbr/> the application is only allowed to select video 17023size 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 17024fps 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> 17025<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 17026ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 17027controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 17028and post-processing parameters is possible.<wbr/> All other controls operate the 17029same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 17030android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 17031<ul> 17032<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 17033<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 17034<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 17035<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 17036<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 17037<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 17038<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 17039<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 17040<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 17041<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 17042</ul> 17043<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 17044<ul> 17045<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not 17046work since aeMode is ON)</li> 17047<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 17048<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 17049<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li> 17050</ul> 17051<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 17052be lower than what camera can output,<wbr/> depending on the destination Surfaces for 17053the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 17054the application need check if the video encoder is capable of supporting the 17055high frame rate for a given video size,<wbr/> or it will end up with lower recording 17056frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame 17057rate will be bounded by the screen refresh rate.<wbr/></p> 17058<p>The camera device will only support up to 2 high speed simultaneous output surfaces 17059(preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only 17060if all of below conditions are true:</p> 17061<ul> 17062<li>The application creates a camera capture session with no more than 2 surfaces via 17063<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The 17064targeted 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 17065surface(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> 17066<li>The stream sizes are selected from the sizes reported by 17067<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li> 17068<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> 17069</ul> 17070<p>When above conditions are NOT satistied,<wbr/> 17071<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 17072will fail.<wbr/></p> 17073<p>Switching to a FPS range that has different maximum FPS may trigger some camera device 17074reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 17075the application avoids unnecessary maximum target FPS changes as much as possible 17076during high speed streaming.<wbr/></p></span> 17077 </li> 17078 <li> 17079 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> 17080 <span class="entry_type_enum_optional">[optional]</span> 17081 <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for 17082<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> 17083<p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking 17084results for use cases such as image stabilization or augmented reality.<wbr/></p></span> 17085 </li> 17086 <li> 17087 <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span> 17088 <span class="entry_type_enum_optional">[optional]</span> 17089 <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras that are 17090also exposed to the application.<wbr/></p> 17091<p>Camera application shouldn't assume that there are at most 1 rear camera and 1 front 17092camera in the system.<wbr/> For an application that switches between front and back cameras,<wbr/> 17093the recommendation is to switch between the first rear camera and the first front 17094camera in the list of supported camera devices.<wbr/></p> 17095<p>This capability requires the camera device to support the following:</p> 17096<ul> 17097<li>This camera device must list the following static metadata entries in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>:<ul> 17098<li><a href="#static_android.logicalMultiCamera.physicalIds">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids</a></li> 17099<li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a></li> 17100</ul> 17101</li> 17102<li>The underlying physical cameras' static metadata must list the following entries,<wbr/> 17103 so that the application can correlate pixels from the physical streams:<ul> 17104<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li> 17105<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 17106<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 17107<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 17108<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li> 17109</ul> 17110</li> 17111<li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be 17112 the same.<wbr/></li> 17113<li>The logical camera device must be LIMITED or higher device.<wbr/></li> 17114</ul> 17115<p>Both the logical camera device and its underlying physical devices support the 17116mandatory stream combinations required for their device levels.<wbr/></p> 17117<p>Additionally,<wbr/> for each guaranteed stream combination,<wbr/> the logical camera supports:</p> 17118<ul> 17119<li>For each guaranteed stream combination,<wbr/> the logical camera supports replacing one 17120 logical <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a> 17121 or raw stream with two physical streams of the same size and format,<wbr/> each from a 17122 separate physical camera,<wbr/> given that the size and format are supported by both 17123 physical cameras.<wbr/></li> 17124<li>If the logical camera doesn't advertise RAW capability,<wbr/> but the underlying physical 17125 cameras do,<wbr/> the logical camera will support guaranteed stream combinations for RAW 17126 capability,<wbr/> except that the RAW streams will be physical streams,<wbr/> each from a separate 17127 physical camera.<wbr/> This is usually the case when the physical cameras have different 17128 sensor sizes.<wbr/></li> 17129</ul> 17130<p>Using physical streams in place of a logical stream of the same size and format will 17131not slow down the frame rate of the capture,<wbr/> as long as the minimum frame duration 17132of the physical and logical streams are the same.<wbr/></p></span> 17133 </li> 17134 <li> 17135 <span class="entry_type_enum_name">MONOCHROME (v3.3)</span> 17136 <span class="entry_type_enum_optional">[optional]</span> 17137 <span class="entry_type_enum_notes"><p>The camera device is a monochrome camera that doesn't contain a color filter array,<wbr/> 17138and the pixel values on U and V planes are all 128.<wbr/></p></span> 17139 </li> 17140 </ul> 17141 17142 </td> <!-- entry_type --> 17143 17144 <td class="entry_description"> 17145 <p>List of capabilities that this camera device 17146advertises as fully supporting.<wbr/></p> 17147 </td> 17148 17149 <td class="entry_units"> 17150 </td> 17151 17152 <td class="entry_range"> 17153 </td> 17154 17155 <td class="entry_hal_version"> 17156 <p>3.<wbr/>2</p> 17157 </td> 17158 17159 <td class="entry_tags"> 17160 </td> 17161 17162 </tr> 17163 <tr class="entries_header"> 17164 <th class="th_details" colspan="6">Details</th> 17165 </tr> 17166 <tr class="entry_cont"> 17167 <td class="entry_details" colspan="6"> 17168 <p>A capability is a contract that the camera device makes in order 17169to be able to satisfy one or more use cases.<wbr/></p> 17170<p>Listing a capability guarantees that the whole set of features 17171required to support a common use will all be available.<wbr/></p> 17172<p>Using a subset of the functionality provided by an unsupported 17173capability may be possible on a specific camera device implementation; 17174to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 17175<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 17176<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 17177<p>The following capabilities are guaranteed to be available on 17178<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 17179<ul> 17180<li>MANUAL_<wbr/>SENSOR</li> 17181<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> 17182</ul> 17183<p>Other capabilities may be available on either FULL or LIMITED 17184devices,<wbr/> but the application should query this key to be sure.<wbr/></p> 17185 </td> 17186 </tr> 17187 17188 <tr class="entries_header"> 17189 <th class="th_details" colspan="6">HAL Implementation Details</th> 17190 </tr> 17191 <tr class="entry_cont"> 17192 <td class="entry_details" colspan="6"> 17193 <p>Additional constraint details per-capability will be available 17194in the Compatibility Test Suite.<wbr/></p> 17195<p>Minimum baseline requirements required for the 17196BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> 17197Instead refer to "BC" tags and the camera CTS tests in the 17198android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p> 17199<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 17200<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 17201request and the result in order to be considered to be 17202capability-compliant.<wbr/></p> 17203<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 17204then exposure time must be configurable via the request <em>and</em> 17205the actual exposure applied must be available via 17206the result.<wbr/></p> 17207<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the 17208<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p> 17209<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see 17210hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p> 17211<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the 17212CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p> 17213<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the 17214YUV_<wbr/>REPROCESSING capability must support the 17215CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p> 17216<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys 17217<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> 17218<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> 17219<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in 17220addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT 17221enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available 17222if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace 17223DEPTH).<wbr/></p> 17224<p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the 17225same way as a physical camera device based on its hardware level and capabilities.<wbr/> 17226It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p> 17227<ul> 17228<li> 17229<p>In camera1 API,<wbr/> to maintain application compatibility,<wbr/> for each {logical_<wbr/>camera_<wbr/>id,<wbr/> 17230physical_<wbr/>camera_<wbr/>1_<wbr/>id,<wbr/> physical_<wbr/>camera_<wbr/>2_<wbr/>id,<wbr/> ...<wbr/>} combination,<wbr/> where logical_<wbr/>camera_<wbr/>id 17231is composed of physical_<wbr/>camera_<wbr/>N_<wbr/>id,<wbr/> camera framework will only advertise one camera id 17232(within the combination) that is frontmost in the HAL published camera id list.<wbr/></p> 17233</li> 17234<li> 17235<p>Camera HAL is strongly recommended to advertise camera devices with best feature,<wbr/> 17236power,<wbr/> performance,<wbr/> and latency tradeoffs at the front of the camera id list.<wbr/></p> 17237</li> 17238</ul> 17239<p>For MONOCHROME,<wbr/> the camera device must also advertise BACKWARD_<wbr/>COMPATIBLE capability,<wbr/> and 17240it is exclusive of both RAW and MANUAL_<wbr/>POST_<wbr/>PROCESSING capabilities:</p> 17241<ul> 17242<li> 17243<p>To maintain backward compatibility,<wbr/> the camera device must support all 17244BACKWARD_<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 17245AUTO,<wbr/> and <a href="#dynamic_android.control.awbState">android.<wbr/>control.<wbr/>awb<wbr/>State</a> are either CONVERGED or LOCKED depending on 17246<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>.<wbr/></p> 17247</li> 17248<li> 17249<p>A monochrome device doesn't need to advertise DNG related optional metadata tags.<wbr/></p> 17250</li> 17251<li> 17252<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 17253<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are not applicable.<wbr/> So the camera device cannot 17254be a FULL device.<wbr/> However,<wbr/> the HAL can still advertise other individual capabilites.<wbr/></p> 17255</li> 17256<li> 17257<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/> 17258CurveGreen and curveBlue are no-ops.<wbr/></p> 17259</li> 17260</ul> 17261 </td> 17262 </tr> 17263 17264 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17265 <!-- end of entry --> 17266 17267 17268 <tr class="entry" id="static_android.request.availableRequestKeys"> 17269 <td class="entry_name 17270 " rowspan="5"> 17271 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 17272 </td> 17273 <td class="entry_type"> 17274 <span class="entry_type_name">int32</span> 17275 <span class="entry_type_container">x</span> 17276 17277 <span class="entry_type_array"> 17278 n 17279 </span> 17280 <span class="entry_type_visibility"> [ndk_public]</span> 17281 17282 17283 <span class="entry_type_hwlevel">[legacy] </span> 17284 17285 17286 17287 17288 </td> <!-- entry_type --> 17289 17290 <td class="entry_description"> 17291 <p>A list of all keys that the camera device has available 17292to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p> 17293 </td> 17294 17295 <td class="entry_units"> 17296 </td> 17297 17298 <td class="entry_range"> 17299 </td> 17300 17301 <td class="entry_hal_version"> 17302 <p>3.<wbr/>2</p> 17303 </td> 17304 17305 <td class="entry_tags"> 17306 </td> 17307 17308 </tr> 17309 <tr class="entries_header"> 17310 <th class="th_details" colspan="6">Details</th> 17311 </tr> 17312 <tr class="entry_cont"> 17313 <td class="entry_details" colspan="6"> 17314 <p>Attempting to set a key into a CaptureRequest that is not 17315listed here will result in an invalid request and will be rejected 17316by the camera device.<wbr/></p> 17317<p>This field can be used to query the feature set of a camera device 17318at a more granular level than capabilities.<wbr/> This is especially 17319important for optional keys that are not listed under any capability 17320in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 17321 </td> 17322 </tr> 17323 17324 <tr class="entries_header"> 17325 <th class="th_details" colspan="6">HAL Implementation Details</th> 17326 </tr> 17327 <tr class="entry_cont"> 17328 <td class="entry_details" colspan="6"> 17329 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 17330use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p> 17331<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 17332vendor extensions API and not against this field.<wbr/></p> 17333<p>The HAL must not consume any request tags that are not listed either 17334here or in the vendor tag list.<wbr/></p> 17335<p>The public camera2 API will always make the vendor tags visible 17336via 17337<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 17338 </td> 17339 </tr> 17340 17341 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17342 <!-- end of entry --> 17343 17344 17345 <tr class="entry" id="static_android.request.availableResultKeys"> 17346 <td class="entry_name 17347 " rowspan="5"> 17348 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 17349 </td> 17350 <td class="entry_type"> 17351 <span class="entry_type_name">int32</span> 17352 <span class="entry_type_container">x</span> 17353 17354 <span class="entry_type_array"> 17355 n 17356 </span> 17357 <span class="entry_type_visibility"> [ndk_public]</span> 17358 17359 17360 <span class="entry_type_hwlevel">[legacy] </span> 17361 17362 17363 17364 17365 </td> <!-- entry_type --> 17366 17367 <td class="entry_description"> 17368 <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> 17369 </td> 17370 17371 <td class="entry_units"> 17372 </td> 17373 17374 <td class="entry_range"> 17375 </td> 17376 17377 <td class="entry_hal_version"> 17378 <p>3.<wbr/>2</p> 17379 </td> 17380 17381 <td class="entry_tags"> 17382 </td> 17383 17384 </tr> 17385 <tr class="entries_header"> 17386 <th class="th_details" colspan="6">Details</th> 17387 </tr> 17388 <tr class="entry_cont"> 17389 <td class="entry_details" colspan="6"> 17390 <p>Attempting to get a key from a CaptureResult that is not 17391listed here will always return a <code>null</code> value.<wbr/> Getting a key from 17392a CaptureResult that is listed here will generally never return a <code>null</code> 17393value.<wbr/></p> 17394<p>The following keys may return <code>null</code> unless they are enabled:</p> 17395<ul> 17396<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> 17397</ul> 17398<p>(Those sometimes-null keys will nevertheless be listed here 17399if they are available.<wbr/>)</p> 17400<p>This field can be used to query the feature set of a camera device 17401at a more granular level than capabilities.<wbr/> This is especially 17402important for optional keys that are not listed under any capability 17403in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 17404 </td> 17405 </tr> 17406 17407 <tr class="entries_header"> 17408 <th class="th_details" colspan="6">HAL Implementation Details</th> 17409 </tr> 17410 <tr class="entry_cont"> 17411 <td class="entry_details" colspan="6"> 17412 <p>Tags listed here must always have an entry in the result metadata,<wbr/> 17413even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 17414matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 17415<p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 17416use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p> 17417<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 17418vendor extensions API and not against this field.<wbr/></p> 17419<p>The HAL must not produce any result tags that are not listed either 17420here or in the vendor tag list.<wbr/></p> 17421<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> 17422 </td> 17423 </tr> 17424 17425 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17426 <!-- end of entry --> 17427 17428 17429 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 17430 <td class="entry_name 17431 " rowspan="5"> 17432 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 17433 </td> 17434 <td class="entry_type"> 17435 <span class="entry_type_name">int32</span> 17436 <span class="entry_type_container">x</span> 17437 17438 <span class="entry_type_array"> 17439 n 17440 </span> 17441 <span class="entry_type_visibility"> [ndk_public]</span> 17442 17443 17444 <span class="entry_type_hwlevel">[legacy] </span> 17445 17446 17447 17448 17449 </td> <!-- entry_type --> 17450 17451 <td class="entry_description"> 17452 <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> 17453 </td> 17454 17455 <td class="entry_units"> 17456 </td> 17457 17458 <td class="entry_range"> 17459 </td> 17460 17461 <td class="entry_hal_version"> 17462 <p>3.<wbr/>2</p> 17463 </td> 17464 17465 <td class="entry_tags"> 17466 </td> 17467 17468 </tr> 17469 <tr class="entries_header"> 17470 <th class="th_details" colspan="6">Details</th> 17471 </tr> 17472 <tr class="entry_cont"> 17473 <td class="entry_details" colspan="6"> 17474 <p>This entry follows the same rules as 17475<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 17476CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 17477details.<wbr/></p> 17478 </td> 17479 </tr> 17480 17481 <tr class="entries_header"> 17482 <th class="th_details" colspan="6">HAL Implementation Details</th> 17483 </tr> 17484 <tr class="entry_cont"> 17485 <td class="entry_details" colspan="6"> 17486 <p>Keys listed here must always have an entry in the static info metadata,<wbr/> 17487even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 17488matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 17489<p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use 17490the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p> 17491<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 17492vendor extensions API and not against this field.<wbr/></p> 17493<p>The HAL must not have any tags in its static info that are not listed 17494either here or in the vendor tag list.<wbr/></p> 17495<p>The public camera2 API will always make the vendor tags visible 17496via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p> 17497 </td> 17498 </tr> 17499 17500 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17501 <!-- end of entry --> 17502 17503 17504 <tr class="entry" id="static_android.request.availableSessionKeys"> 17505 <td class="entry_name 17506 " rowspan="5"> 17507 android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys 17508 </td> 17509 <td class="entry_type"> 17510 <span class="entry_type_name">int32</span> 17511 <span class="entry_type_container">x</span> 17512 17513 <span class="entry_type_array"> 17514 n 17515 </span> 17516 <span class="entry_type_visibility"> [ndk_public]</span> 17517 17518 17519 <span class="entry_type_hwlevel">[legacy] </span> 17520 17521 17522 17523 17524 </td> <!-- entry_type --> 17525 17526 <td class="entry_description"> 17527 <p>A subset of the available request keys that the camera device 17528can pass as part of the capture session initialization.<wbr/></p> 17529 </td> 17530 17531 <td class="entry_units"> 17532 </td> 17533 17534 <td class="entry_range"> 17535 </td> 17536 17537 <td class="entry_hal_version"> 17538 <p>3.<wbr/>3</p> 17539 </td> 17540 17541 <td class="entry_tags"> 17542 </td> 17543 17544 </tr> 17545 <tr class="entries_header"> 17546 <th class="th_details" colspan="6">Details</th> 17547 </tr> 17548 <tr class="entry_cont"> 17549 <td class="entry_details" colspan="6"> 17550 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which 17551contains a list of keys that are difficult to apply per-frame and 17552can result in unexpected delays when modified during the capture session 17553lifetime.<wbr/> Typical examples include parameters that require a 17554time-consuming hardware re-configuration or internal camera pipeline 17555change.<wbr/> For performance reasons we advise clients to pass their initial 17556values as part of 17557<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/> 17558Once the camera capture session is enabled it is also recommended to avoid 17559changing them from their initial values set in 17560<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/> 17561Control over session parameters can still be exerted in capture requests 17562but clients should be aware and expect delays during their application.<wbr/> 17563An example usage scenario could look like this:</p> 17564<ul> 17565<li>The camera client starts by quering the session parameter key list via 17566 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li> 17567<li>Before triggering the capture session create sequence,<wbr/> a capture request 17568 must be built via 17569 <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a> 17570 using an appropriate template matching the particular use case.<wbr/></li> 17571<li>The client should go over the list of session parameters and check 17572 whether some of the keys listed matches with the parameters that 17573 they intend to modify as part of the first capture request.<wbr/></li> 17574<li>If there is no such match,<wbr/> the capture request can be passed 17575 unmodified to 17576 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li> 17577<li>If matches do exist,<wbr/> the client should update the respective values 17578 and pass the request to 17579 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li> 17580<li>After the capture session initialization completes the session parameter 17581 key list can continue to serve as reference when posting or updating 17582 further requests.<wbr/> As mentioned above further changes to session 17583 parameters should ideally be avoided,<wbr/> if updates are necessary 17584 however clients could expect a delay/<wbr/>glitch during the 17585 parameter switch.<wbr/></li> 17586</ul> 17587 </td> 17588 </tr> 17589 17590 <tr class="entries_header"> 17591 <th class="th_details" colspan="6">HAL Implementation Details</th> 17592 </tr> 17593 <tr class="entry_cont"> 17594 <td class="entry_details" colspan="6"> 17595 <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 17596speed mode is enabled,<wbr/> then only modifications of the maximum framerate value will be 17597monitored by the framework and can trigger camera re-configuration.<wbr/> For more information 17598about framerate ranges during constrained high speed sessions see 17599<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 17600Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 17601use the extensions C api (refer to 17602android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p> 17603<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 17604vendor extensions API and not against this field.<wbr/></p> 17605<p>The HAL must not consume any request tags in the session parameters that 17606are not listed either here or in the vendor tag list.<wbr/></p> 17607<p>The public camera2 API will always make the vendor tags visible 17608via 17609<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p> 17610 </td> 17611 </tr> 17612 17613 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17614 <!-- end of entry --> 17615 17616 17617 <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys"> 17618 <td class="entry_name 17619 " rowspan="5"> 17620 android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys 17621 </td> 17622 <td class="entry_type"> 17623 <span class="entry_type_name">int32</span> 17624 <span class="entry_type_container">x</span> 17625 17626 <span class="entry_type_array"> 17627 n 17628 </span> 17629 <span class="entry_type_visibility"> [hidden]</span> 17630 17631 17632 <span class="entry_type_hwlevel">[limited] </span> 17633 17634 17635 17636 17637 </td> <!-- entry_type --> 17638 17639 <td class="entry_description"> 17640 <p>A subset of the available request keys that can be overriden for 17641physical devices backing a logical multi-camera.<wbr/></p> 17642 </td> 17643 17644 <td class="entry_units"> 17645 </td> 17646 17647 <td class="entry_range"> 17648 </td> 17649 17650 <td class="entry_hal_version"> 17651 <p>3.<wbr/>3</p> 17652 </td> 17653 17654 <td class="entry_tags"> 17655 </td> 17656 17657 </tr> 17658 <tr class="entries_header"> 17659 <th class="th_details" colspan="6">Details</th> 17660 </tr> 17661 <tr class="entry_cont"> 17662 <td class="entry_details" colspan="6"> 17663 <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 17664of keys that can be overriden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/> 17665The respective value of such request key can be obtained by calling 17666<a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain 17667individual physical device requests must be built via 17668<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p> 17669 </td> 17670 </tr> 17671 17672 <tr class="entries_header"> 17673 <th class="th_details" colspan="6">HAL Implementation Details</th> 17674 </tr> 17675 <tr class="entry_cont"> 17676 <td class="entry_details" colspan="6"> 17677 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 17678use the extensions C api (refer to 17679android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more 17680details).<wbr/></p> 17681<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 17682vendor extensions API and not against this field.<wbr/></p> 17683<p>The HAL must not consume any request tags in the session parameters that 17684are not listed either here or in the vendor tag list.<wbr/></p> 17685<p>There should be no overlap between this set of keys and the available session keys 17686<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along 17687with any other controls that can have impact on the dual-camera sync.<wbr/></p> 17688<p>The public camera2 API will always make the vendor tags visible 17689via 17690<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p> 17691 </td> 17692 </tr> 17693 17694 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17695 <!-- end of entry --> 17696 17697 17698 17699 <!-- end of kind --> 17700 </tbody> 17701 <tr><td colspan="7" class="kind">dynamic</td></tr> 17702 17703 <thead class="entries_header"> 17704 <tr> 17705 <th class="th_name">Property Name</th> 17706 <th class="th_type">Type</th> 17707 <th class="th_description">Description</th> 17708 <th class="th_units">Units</th> 17709 <th class="th_range">Range</th> 17710 <th class="th_hal_version">Initial HIDL HAL version</th> 17711 <th class="th_tags">Tags</th> 17712 </tr> 17713 </thead> 17714 17715 <tbody> 17716 17717 17718 17719 17720 17721 17722 17723 17724 17725 17726 <tr class="entry" id="dynamic_android.request.frameCount"> 17727 <td class="entry_name 17728 entry_name_deprecated 17729 " rowspan="3"> 17730 android.<wbr/>request.<wbr/>frame<wbr/>Count 17731 </td> 17732 <td class="entry_type"> 17733 <span class="entry_type_name">int32</span> 17734 17735 <span class="entry_type_visibility"> [hidden]</span> 17736 17737 17738 17739 <span class="entry_type_deprecated">[deprecated] </span> 17740 17741 17742 17743 </td> <!-- entry_type --> 17744 17745 <td class="entry_description"> 17746 <p>A frame counter set by the framework.<wbr/> This value monotonically 17747increases with every new result (that is,<wbr/> each new result has a unique 17748frameCount value).<wbr/></p> 17749 </td> 17750 17751 <td class="entry_units"> 17752 count of frames 17753 </td> 17754 17755 <td class="entry_range"> 17756 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17757 <p>> 0</p> 17758 </td> 17759 17760 <td class="entry_hal_version"> 17761 <p>3.<wbr/>2</p> 17762 </td> 17763 17764 <td class="entry_tags"> 17765 </td> 17766 17767 </tr> 17768 <tr class="entries_header"> 17769 <th class="th_details" colspan="6">Details</th> 17770 </tr> 17771 <tr class="entry_cont"> 17772 <td class="entry_details" colspan="6"> 17773 <p>Reset on release()</p> 17774 </td> 17775 </tr> 17776 17777 17778 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17779 <!-- end of entry --> 17780 17781 17782 <tr class="entry" id="dynamic_android.request.id"> 17783 <td class="entry_name 17784 " rowspan="1"> 17785 android.<wbr/>request.<wbr/>id 17786 </td> 17787 <td class="entry_type"> 17788 <span class="entry_type_name">int32</span> 17789 17790 <span class="entry_type_visibility"> [hidden]</span> 17791 17792 17793 17794 17795 17796 17797 </td> <!-- entry_type --> 17798 17799 <td class="entry_description"> 17800 <p>An application-specified ID for the current 17801request.<wbr/> Must be maintained unchanged in output 17802frame</p> 17803 </td> 17804 17805 <td class="entry_units"> 17806 arbitrary integer assigned by application 17807 </td> 17808 17809 <td class="entry_range"> 17810 <p>Any int</p> 17811 </td> 17812 17813 <td class="entry_hal_version"> 17814 <p>3.<wbr/>2</p> 17815 </td> 17816 17817 <td class="entry_tags"> 17818 <ul class="entry_tags"> 17819 <li><a href="#tag_V1">V1</a></li> 17820 </ul> 17821 </td> 17822 17823 </tr> 17824 17825 17826 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17827 <!-- end of entry --> 17828 17829 17830 <tr class="entry" id="dynamic_android.request.metadataMode"> 17831 <td class="entry_name 17832 " rowspan="1"> 17833 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 17834 </td> 17835 <td class="entry_type"> 17836 <span class="entry_type_name entry_type_name_enum">byte</span> 17837 17838 <span class="entry_type_visibility"> [system]</span> 17839 17840 17841 17842 17843 17844 <ul class="entry_type_enum"> 17845 <li> 17846 <span class="entry_type_enum_name">NONE (v3.2)</span> 17847 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 17848for application-bound buffer data.<wbr/> If no 17849application-bound streams exist,<wbr/> no frame should be 17850placed in the output frame queue.<wbr/> If such streams 17851exist,<wbr/> a frame should be placed on the output queue 17852with null metadata but with the necessary output buffer 17853information.<wbr/> Timestamp information should still be 17854included with any output stream buffers</p></span> 17855 </li> 17856 <li> 17857 <span class="entry_type_enum_name">FULL (v3.2)</span> 17858 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 17859only be produced if they are separately 17860enabled</p></span> 17861 </li> 17862 </ul> 17863 17864 </td> <!-- entry_type --> 17865 17866 <td class="entry_description"> 17867 <p>How much metadata to produce on 17868output</p> 17869 </td> 17870 17871 <td class="entry_units"> 17872 </td> 17873 17874 <td class="entry_range"> 17875 </td> 17876 17877 <td class="entry_hal_version"> 17878 <p>3.<wbr/>2</p> 17879 </td> 17880 17881 <td class="entry_tags"> 17882 <ul class="entry_tags"> 17883 <li><a href="#tag_FUTURE">FUTURE</a></li> 17884 </ul> 17885 </td> 17886 17887 </tr> 17888 17889 17890 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17891 <!-- end of entry --> 17892 17893 17894 <tr class="entry" id="dynamic_android.request.outputStreams"> 17895 <td class="entry_name 17896 entry_name_deprecated 17897 " rowspan="3"> 17898 android.<wbr/>request.<wbr/>output<wbr/>Streams 17899 </td> 17900 <td class="entry_type"> 17901 <span class="entry_type_name">int32</span> 17902 <span class="entry_type_container">x</span> 17903 17904 <span class="entry_type_array"> 17905 n 17906 </span> 17907 <span class="entry_type_visibility"> [system]</span> 17908 17909 17910 17911 <span class="entry_type_deprecated">[deprecated] </span> 17912 17913 17914 17915 </td> <!-- entry_type --> 17916 17917 <td class="entry_description"> 17918 <p>Lists which camera output streams image data 17919from this capture must be sent to</p> 17920 </td> 17921 17922 <td class="entry_units"> 17923 List of camera stream IDs 17924 </td> 17925 17926 <td class="entry_range"> 17927 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17928 <p>List must only include streams that have been 17929created</p> 17930 </td> 17931 17932 <td class="entry_hal_version"> 17933 <p>3.<wbr/>2</p> 17934 </td> 17935 17936 <td class="entry_tags"> 17937 <ul class="entry_tags"> 17938 <li><a href="#tag_HAL2">HAL2</a></li> 17939 </ul> 17940 </td> 17941 17942 </tr> 17943 <tr class="entries_header"> 17944 <th class="th_details" colspan="6">Details</th> 17945 </tr> 17946 <tr class="entry_cont"> 17947 <td class="entry_details" colspan="6"> 17948 <p>If no output streams are listed,<wbr/> then the image 17949data should simply be discarded.<wbr/> The image data must 17950still be captured for metadata and statistics production,<wbr/> 17951and the lens and flash must operate as requested.<wbr/></p> 17952 </td> 17953 </tr> 17954 17955 17956 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 17957 <!-- end of entry --> 17958 17959 17960 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 17961 <td class="entry_name 17962 " rowspan="5"> 17963 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 17964 </td> 17965 <td class="entry_type"> 17966 <span class="entry_type_name">byte</span> 17967 17968 <span class="entry_type_visibility"> [public]</span> 17969 17970 17971 <span class="entry_type_hwlevel">[legacy] </span> 17972 17973 17974 17975 17976 </td> <!-- entry_type --> 17977 17978 <td class="entry_description"> 17979 <p>Specifies the number of pipeline stages the frame went 17980through from when it was exposed to when the final completed result 17981was available to the framework.<wbr/></p> 17982 </td> 17983 17984 <td class="entry_units"> 17985 </td> 17986 17987 <td class="entry_range"> 17988 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 17989 </td> 17990 17991 <td class="entry_hal_version"> 17992 <p>3.<wbr/>2</p> 17993 </td> 17994 17995 <td class="entry_tags"> 17996 </td> 17997 17998 </tr> 17999 <tr class="entries_header"> 18000 <th class="th_details" colspan="6">Details</th> 18001 </tr> 18002 <tr class="entry_cont"> 18003 <td class="entry_details" colspan="6"> 18004 <p>Depending on what settings are used in the request,<wbr/> and 18005what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 18006and some pipeline stages skipped.<wbr/></p> 18007<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 18008 </td> 18009 </tr> 18010 18011 <tr class="entries_header"> 18012 <th class="th_details" colspan="6">HAL Implementation Details</th> 18013 </tr> 18014 <tr class="entry_cont"> 18015 <td class="entry_details" colspan="6"> 18016 <p>This value must always represent the accurate count of how many 18017pipeline stages were actually used.<wbr/></p> 18018 </td> 18019 </tr> 18020 18021 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18022 <!-- end of entry --> 18023 18024 18025 18026 <!-- end of kind --> 18027 </tbody> 18028 18029 <!-- end of section --> 18030 <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr> 18031 18032 18033 <tr><td colspan="7" class="kind">controls</td></tr> 18034 18035 <thead class="entries_header"> 18036 <tr> 18037 <th class="th_name">Property Name</th> 18038 <th class="th_type">Type</th> 18039 <th class="th_description">Description</th> 18040 <th class="th_units">Units</th> 18041 <th class="th_range">Range</th> 18042 <th class="th_hal_version">Initial HIDL HAL version</th> 18043 <th class="th_tags">Tags</th> 18044 </tr> 18045 </thead> 18046 18047 <tbody> 18048 18049 18050 18051 18052 18053 18054 18055 18056 18057 18058 <tr class="entry" id="controls_android.scaler.cropRegion"> 18059 <td class="entry_name 18060 " rowspan="5"> 18061 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 18062 </td> 18063 <td class="entry_type"> 18064 <span class="entry_type_name">int32</span> 18065 <span class="entry_type_container">x</span> 18066 18067 <span class="entry_type_array"> 18068 4 18069 </span> 18070 <span class="entry_type_visibility"> [public as rectangle]</span> 18071 18072 18073 <span class="entry_type_hwlevel">[legacy] </span> 18074 18075 18076 18077 18078 </td> <!-- entry_type --> 18079 18080 <td class="entry_description"> 18081 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 18082 </td> 18083 18084 <td class="entry_units"> 18085 Pixel coordinates relative to 18086 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 18087 </td> 18088 18089 <td class="entry_range"> 18090 </td> 18091 18092 <td class="entry_hal_version"> 18093 <p>3.<wbr/>2</p> 18094 </td> 18095 18096 <td class="entry_tags"> 18097 <ul class="entry_tags"> 18098 <li><a href="#tag_BC">BC</a></li> 18099 </ul> 18100 </td> 18101 18102 </tr> 18103 <tr class="entries_header"> 18104 <th class="th_details" colspan="6">Details</th> 18105 </tr> 18106 <tr class="entry_cont"> 18107 <td class="entry_details" colspan="6"> 18108 <p>This control can be used to implement digital zoom.<wbr/></p> 18109<p>The crop region coordinate system is based off 18110<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 18111top-left corner of the sensor active array.<wbr/></p> 18112<p>Output streams use this rectangle to produce their output,<wbr/> 18113cropping to a smaller region if necessary to maintain the 18114stream's aspect ratio,<wbr/> then scaling the sensor input to 18115match the output's configured resolution.<wbr/></p> 18116<p>The crop region is applied after the RAW to other color 18117space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 18118(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 18119croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 18120<p>For non-raw streams,<wbr/> any additional per-stream cropping will 18121be done to maximize the final pixel area of the stream.<wbr/></p> 18122<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 18123ratio,<wbr/> then 4:3 streams will use the exact crop 18124region.<wbr/> 16:9 streams will further crop vertically 18125(letterbox).<wbr/></p> 18126<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 18127outputs will crop horizontally (pillarbox),<wbr/> and 16:9 18128streams will match exactly.<wbr/> These additional crops will 18129be centered within the crop region.<wbr/></p> 18130<p>The width and height of the crop region cannot 18131be set to be smaller than 18132<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 18133<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> 18134<p>The camera device may adjust the crop region to account 18135for rounding and other hardware requirements; the final 18136crop region used will be included in the output capture 18137result.<wbr/></p> 18138 </td> 18139 </tr> 18140 18141 <tr class="entries_header"> 18142 <th class="th_details" colspan="6">HAL Implementation Details</th> 18143 </tr> 18144 <tr class="entry_cont"> 18145 <td class="entry_details" colspan="6"> 18146 <p>The output streams must maintain square pixels at all 18147times,<wbr/> no matter what the relative aspect ratios of the 18148crop region and the stream are.<wbr/> Negative values for 18149corner are allowed for raw output if full pixel array is 18150larger than active pixel array.<wbr/> Width and height may be 18151rounded to nearest larger supportable width,<wbr/> especially 18152for raw output,<wbr/> where only a few fixed scales may be 18153possible.<wbr/></p> 18154<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 18155size than active array size,<wbr/> the HAL need follow below cropping rules:</p> 18156<ul> 18157<li> 18158<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active 18159array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from 18160<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p> 18161<ol> 18162<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 18163cropped pixel area by (tx,<wbr/> ty),<wbr/> 18164where <code>ty = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 18165and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The 18166(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 18167<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 18168<li>Scale the width and height of requested cropRegion with scaling factor of 18169sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height 18170respectively.<wbr/> 18171Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 18172with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 18173follow the general cropping rule for this new cropRegion and effective active 18174array size.<wbr/></li> 18175</ol> 18176</li> 18177<li> 18178<p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> 18179The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 18180The reported cropRegion may be slightly different with the requested cropRegion since 18181the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 18182hardware limitations.<wbr/></p> 18183</li> 18184</ul> 18185<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 18186 </td> 18187 </tr> 18188 18189 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18190 <!-- end of entry --> 18191 18192 18193 18194 <!-- end of kind --> 18195 </tbody> 18196 <tr><td colspan="7" class="kind">static</td></tr> 18197 18198 <thead class="entries_header"> 18199 <tr> 18200 <th class="th_name">Property Name</th> 18201 <th class="th_type">Type</th> 18202 <th class="th_description">Description</th> 18203 <th class="th_units">Units</th> 18204 <th class="th_range">Range</th> 18205 <th class="th_hal_version">Initial HIDL HAL version</th> 18206 <th class="th_tags">Tags</th> 18207 </tr> 18208 </thead> 18209 18210 <tbody> 18211 18212 18213 18214 18215 18216 18217 18218 18219 18220 18221 <tr class="entry" id="static_android.scaler.availableFormats"> 18222 <td class="entry_name 18223 entry_name_deprecated 18224 " rowspan="5"> 18225 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 18226 </td> 18227 <td class="entry_type"> 18228 <span class="entry_type_name entry_type_name_enum">int32</span> 18229 <span class="entry_type_container">x</span> 18230 18231 <span class="entry_type_array"> 18232 n 18233 </span> 18234 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 18235 18236 18237 18238 <span class="entry_type_deprecated">[deprecated] </span> 18239 18240 18241 <ul class="entry_type_enum"> 18242 <li> 18243 <span class="entry_type_enum_name">RAW16 (v3.2)</span> 18244 <span class="entry_type_enum_optional">[optional]</span> 18245 <span class="entry_type_enum_value">0x20</span> 18246 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 18247buffers with 16-bit pixels.<wbr/></p> 18248<p>Buffers of this format are typically expected to have a 18249Bayer Color Filter Array (CFA) layout,<wbr/> which is given in 18250<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with 18251CFAs that are not representable by a format in 18252<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not 18253use this format.<wbr/></p> 18254<p>Buffers of this format will also follow the constraints given for 18255RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 18256<p>This format is intended to give users access to the full contents 18257of the buffers coming directly from the image sensor prior to any 18258cropping or scaling operations,<wbr/> and all coordinate systems for 18259metadata used for this format are relative to the size of the 18260active region of the image sensor before any geometric distortion 18261correction has been applied (i.<wbr/>e.<wbr/> 18262<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 18263dimensions for this format are limited to the full dimensions of 18264the 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 18265<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 18266only supported output size).<wbr/></p> 18267<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 18268the full set of performance guarantees.<wbr/></p></span> 18269 </li> 18270 <li> 18271 <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span> 18272 <span class="entry_type_enum_optional">[optional]</span> 18273 <span class="entry_type_enum_value">0x24</span> 18274 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or 18275<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a> 18276as referred in public API) is a format for raw image buffers 18277coming from an image sensor.<wbr/></p> 18278<p>The actual structure of buffers of this format is 18279platform-specific,<wbr/> but must follow several constraints:</p> 18280<ol> 18281<li>No image post-processing operations may have been applied to 18282buffers of this type.<wbr/> These buffers contain raw image data coming 18283directly from the image sensor.<wbr/></li> 18284<li>If a buffer of this format is passed to the camera device for 18285reprocessing,<wbr/> the resulting images will be identical to the images 18286produced if the buffer had come directly from the sensor and was 18287processed with the same settings.<wbr/></li> 18288</ol> 18289<p>The intended use for this format is to allow access to the native 18290raw format buffers coming directly from the camera sensor without 18291any additional conversions or decrease in framerate.<wbr/></p> 18292<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 18293performance guarantees.<wbr/></p></span> 18294 </li> 18295 <li> 18296 <span class="entry_type_enum_name">YV12 (v3.2)</span> 18297 <span class="entry_type_enum_optional">[optional]</span> 18298 <span class="entry_type_enum_value">0x32315659</span> 18299 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 18300 </li> 18301 <li> 18302 <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span> 18303 <span class="entry_type_enum_optional">[optional]</span> 18304 <span class="entry_type_enum_value">0x11</span> 18305 <span class="entry_type_enum_notes"><p>NV21</p></span> 18306 </li> 18307 <li> 18308 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span> 18309 <span class="entry_type_enum_value">0x22</span> 18310 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 18311 </li> 18312 <li> 18313 <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span> 18314 <span class="entry_type_enum_value">0x23</span> 18315 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 18316 </li> 18317 <li> 18318 <span class="entry_type_enum_name">BLOB (v3.2)</span> 18319 <span class="entry_type_enum_value">0x21</span> 18320 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 18321 </li> 18322 </ul> 18323 18324 </td> <!-- entry_type --> 18325 18326 <td class="entry_description"> 18327 <p>The list of image formats that are supported by this 18328camera device for output streams.<wbr/></p> 18329 </td> 18330 18331 <td class="entry_units"> 18332 </td> 18333 18334 <td class="entry_range"> 18335 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18336 </td> 18337 18338 <td class="entry_hal_version"> 18339 <p>3.<wbr/>2</p> 18340 </td> 18341 18342 <td class="entry_tags"> 18343 <ul class="entry_tags"> 18344 <li><a href="#tag_BC">BC</a></li> 18345 </ul> 18346 </td> 18347 18348 </tr> 18349 <tr class="entries_header"> 18350 <th class="th_details" colspan="6">Details</th> 18351 </tr> 18352 <tr class="entry_cont"> 18353 <td class="entry_details" colspan="6"> 18354 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 18355<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 18356 </td> 18357 </tr> 18358 18359 <tr class="entries_header"> 18360 <th class="th_details" colspan="6">HAL Implementation Details</th> 18361 </tr> 18362 <tr class="entry_cont"> 18363 <td class="entry_details" colspan="6"> 18364 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 18365system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 18366<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 18367gralloc module will select a format based on the usage flags provided 18368by the camera HAL device and the other endpoint of the stream.<wbr/> It is 18369usually used by preview and recording streams,<wbr/> where the application doesn't 18370need access the image data.<wbr/></p> 18371<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 18372needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> 18373<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 18374<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 18375recommended that any information used by the camera device when 18376processing images is fully expressed by the result metadata 18377for that image buffer.<wbr/></p> 18378 </td> 18379 </tr> 18380 18381 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18382 <!-- end of entry --> 18383 18384 18385 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 18386 <td class="entry_name 18387 entry_name_deprecated 18388 " rowspan="3"> 18389 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 18390 </td> 18391 <td class="entry_type"> 18392 <span class="entry_type_name">int64</span> 18393 <span class="entry_type_container">x</span> 18394 18395 <span class="entry_type_array"> 18396 n 18397 </span> 18398 <span class="entry_type_visibility"> [hidden]</span> 18399 18400 18401 18402 <span class="entry_type_deprecated">[deprecated] </span> 18403 18404 18405 18406 </td> <!-- entry_type --> 18407 18408 <td class="entry_description"> 18409 <p>The minimum frame duration that is supported 18410for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 18411 </td> 18412 18413 <td class="entry_units"> 18414 Nanoseconds 18415 </td> 18416 18417 <td class="entry_range"> 18418 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18419 <p>TODO: Remove property.<wbr/></p> 18420 </td> 18421 18422 <td class="entry_hal_version"> 18423 <p>3.<wbr/>2</p> 18424 </td> 18425 18426 <td class="entry_tags"> 18427 <ul class="entry_tags"> 18428 <li><a href="#tag_BC">BC</a></li> 18429 </ul> 18430 </td> 18431 18432 </tr> 18433 <tr class="entries_header"> 18434 <th class="th_details" colspan="6">Details</th> 18435 </tr> 18436 <tr class="entry_cont"> 18437 <td class="entry_details" colspan="6"> 18438 <p>This corresponds to the minimum steady-state frame duration when only 18439that JPEG stream is active and captured in a burst,<wbr/> with all 18440processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 18441<p>When multiple streams are configured,<wbr/> the minimum 18442frame duration will be >= max(individual stream min 18443durations)</p> 18444 </td> 18445 </tr> 18446 18447 18448 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18449 <!-- end of entry --> 18450 18451 18452 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 18453 <td class="entry_name 18454 entry_name_deprecated 18455 " rowspan="5"> 18456 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 18457 </td> 18458 <td class="entry_type"> 18459 <span class="entry_type_name">int32</span> 18460 <span class="entry_type_container">x</span> 18461 18462 <span class="entry_type_array"> 18463 n x 2 18464 </span> 18465 <span class="entry_type_visibility"> [hidden as size]</span> 18466 18467 18468 18469 <span class="entry_type_deprecated">[deprecated] </span> 18470 18471 18472 18473 </td> <!-- entry_type --> 18474 18475 <td class="entry_description"> 18476 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 18477 </td> 18478 18479 <td class="entry_units"> 18480 </td> 18481 18482 <td class="entry_range"> 18483 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18484 <p>TODO: Remove property.<wbr/></p> 18485 </td> 18486 18487 <td class="entry_hal_version"> 18488 <p>3.<wbr/>2</p> 18489 </td> 18490 18491 <td class="entry_tags"> 18492 <ul class="entry_tags"> 18493 <li><a href="#tag_BC">BC</a></li> 18494 </ul> 18495 </td> 18496 18497 </tr> 18498 <tr class="entries_header"> 18499 <th class="th_details" colspan="6">Details</th> 18500 </tr> 18501 <tr class="entry_cont"> 18502 <td class="entry_details" colspan="6"> 18503 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 18504sensor 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> 18505 </td> 18506 </tr> 18507 18508 <tr class="entries_header"> 18509 <th class="th_details" colspan="6">HAL Implementation Details</th> 18510 </tr> 18511 <tr class="entry_cont"> 18512 <td class="entry_details" colspan="6"> 18513 <p>The HAL must include sensor maximum resolution 18514(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 18515and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 18516 </td> 18517 </tr> 18518 18519 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18520 <!-- end of entry --> 18521 18522 18523 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 18524 <td class="entry_name 18525 " rowspan="3"> 18526 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 18527 </td> 18528 <td class="entry_type"> 18529 <span class="entry_type_name">float</span> 18530 18531 <span class="entry_type_visibility"> [public]</span> 18532 18533 18534 <span class="entry_type_hwlevel">[legacy] </span> 18535 18536 18537 18538 18539 </td> <!-- entry_type --> 18540 18541 <td class="entry_description"> 18542 <p>The maximum ratio between both active area width 18543and crop region width,<wbr/> and active area height and 18544crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 18545 </td> 18546 18547 <td class="entry_units"> 18548 Zoom scale factor 18549 </td> 18550 18551 <td class="entry_range"> 18552 <p>>=1</p> 18553 </td> 18554 18555 <td class="entry_hal_version"> 18556 <p>3.<wbr/>2</p> 18557 </td> 18558 18559 <td class="entry_tags"> 18560 <ul class="entry_tags"> 18561 <li><a href="#tag_BC">BC</a></li> 18562 </ul> 18563 </td> 18564 18565 </tr> 18566 <tr class="entries_header"> 18567 <th class="th_details" colspan="6">Details</th> 18568 </tr> 18569 <tr class="entry_cont"> 18570 <td class="entry_details" colspan="6"> 18571 <p>This represents the maximum amount of zooming possible by 18572the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping 18573window size.<wbr/></p> 18574<p>Crop regions that have a width or height that is smaller 18575than this ratio allows will be rounded up to the minimum 18576allowed size by the camera device.<wbr/></p> 18577 </td> 18578 </tr> 18579 18580 18581 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18582 <!-- end of entry --> 18583 18584 18585 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 18586 <td class="entry_name 18587 entry_name_deprecated 18588 " rowspan="3"> 18589 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 18590 </td> 18591 <td class="entry_type"> 18592 <span class="entry_type_name">int64</span> 18593 <span class="entry_type_container">x</span> 18594 18595 <span class="entry_type_array"> 18596 n 18597 </span> 18598 <span class="entry_type_visibility"> [hidden]</span> 18599 18600 18601 18602 <span class="entry_type_deprecated">[deprecated] </span> 18603 18604 18605 18606 </td> <!-- entry_type --> 18607 18608 <td class="entry_description"> 18609 <p>For each available processed output size (defined in 18610<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 18611minimum supportable frame duration for that size.<wbr/></p> 18612 </td> 18613 18614 <td class="entry_units"> 18615 Nanoseconds 18616 </td> 18617 18618 <td class="entry_range"> 18619 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18620 </td> 18621 18622 <td class="entry_hal_version"> 18623 <p>3.<wbr/>2</p> 18624 </td> 18625 18626 <td class="entry_tags"> 18627 <ul class="entry_tags"> 18628 <li><a href="#tag_BC">BC</a></li> 18629 </ul> 18630 </td> 18631 18632 </tr> 18633 <tr class="entries_header"> 18634 <th class="th_details" colspan="6">Details</th> 18635 </tr> 18636 <tr class="entry_cont"> 18637 <td class="entry_details" colspan="6"> 18638 <p>This should correspond to the frame duration when only that processed 18639stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 18640set to FAST.<wbr/></p> 18641<p>When multiple streams are configured,<wbr/> the minimum frame duration will 18642be >= max(individual stream min durations).<wbr/></p> 18643 </td> 18644 </tr> 18645 18646 18647 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18648 <!-- end of entry --> 18649 18650 18651 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 18652 <td class="entry_name 18653 entry_name_deprecated 18654 " rowspan="5"> 18655 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 18656 </td> 18657 <td class="entry_type"> 18658 <span class="entry_type_name">int32</span> 18659 <span class="entry_type_container">x</span> 18660 18661 <span class="entry_type_array"> 18662 n x 2 18663 </span> 18664 <span class="entry_type_visibility"> [hidden as size]</span> 18665 18666 18667 18668 <span class="entry_type_deprecated">[deprecated] </span> 18669 18670 18671 18672 </td> <!-- entry_type --> 18673 18674 <td class="entry_description"> 18675 <p>The resolutions available for use with 18676processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 18677platform opaque YUV/<wbr/>RGB streams to the GPU or video 18678encoders.<wbr/></p> 18679 </td> 18680 18681 <td class="entry_units"> 18682 </td> 18683 18684 <td class="entry_range"> 18685 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18686 </td> 18687 18688 <td class="entry_hal_version"> 18689 <p>3.<wbr/>2</p> 18690 </td> 18691 18692 <td class="entry_tags"> 18693 <ul class="entry_tags"> 18694 <li><a href="#tag_BC">BC</a></li> 18695 </ul> 18696 </td> 18697 18698 </tr> 18699 <tr class="entries_header"> 18700 <th class="th_details" colspan="6">Details</th> 18701 </tr> 18702 <tr class="entry_cont"> 18703 <td class="entry_details" colspan="6"> 18704 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 18705<p>For a given use case,<wbr/> the actual maximum supported resolution 18706may be lower than what is listed here,<wbr/> depending on the destination 18707Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 18708the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 18709smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 18710can provide.<wbr/></p> 18711<p>Please reference the documentation for the image data destination to 18712check if it limits the maximum size for image data.<wbr/></p> 18713 </td> 18714 </tr> 18715 18716 <tr class="entries_header"> 18717 <th class="th_details" colspan="6">HAL Implementation Details</th> 18718 </tr> 18719 <tr class="entry_cont"> 18720 <td class="entry_details" colspan="6"> 18721 <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/> 18722the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 18723and each below resolution if it is smaller than or equal to the sensor 18724maximum resolution (if they are not listed in JPEG sizes already):</p> 18725<ul> 18726<li>240p (320 x 240)</li> 18727<li>480p (640 x 480)</li> 18728<li>720p (1280 x 720)</li> 18729<li>1080p (1920 x 1080)</li> 18730</ul> 18731<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/> 18732the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 18733 </td> 18734 </tr> 18735 18736 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18737 <!-- end of entry --> 18738 18739 18740 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 18741 <td class="entry_name 18742 entry_name_deprecated 18743 " rowspan="3"> 18744 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 18745 </td> 18746 <td class="entry_type"> 18747 <span class="entry_type_name">int64</span> 18748 <span class="entry_type_container">x</span> 18749 18750 <span class="entry_type_array"> 18751 n 18752 </span> 18753 <span class="entry_type_visibility"> [system]</span> 18754 18755 18756 18757 <span class="entry_type_deprecated">[deprecated] </span> 18758 18759 18760 18761 </td> <!-- entry_type --> 18762 18763 <td class="entry_description"> 18764 <p>For each available raw output size (defined in 18765<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 18766supportable frame duration for that size.<wbr/></p> 18767 </td> 18768 18769 <td class="entry_units"> 18770 Nanoseconds 18771 </td> 18772 18773 <td class="entry_range"> 18774 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18775 </td> 18776 18777 <td class="entry_hal_version"> 18778 <p>3.<wbr/>2</p> 18779 </td> 18780 18781 <td class="entry_tags"> 18782 <ul class="entry_tags"> 18783 <li><a href="#tag_BC">BC</a></li> 18784 </ul> 18785 </td> 18786 18787 </tr> 18788 <tr class="entries_header"> 18789 <th class="th_details" colspan="6">Details</th> 18790 </tr> 18791 <tr class="entry_cont"> 18792 <td class="entry_details" colspan="6"> 18793 <p>Should correspond to the frame duration when only the raw stream is 18794active.<wbr/></p> 18795<p>When multiple streams are configured,<wbr/> the minimum 18796frame duration will be >= max(individual stream min 18797durations)</p> 18798 </td> 18799 </tr> 18800 18801 18802 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18803 <!-- end of entry --> 18804 18805 18806 <tr class="entry" id="static_android.scaler.availableRawSizes"> 18807 <td class="entry_name 18808 entry_name_deprecated 18809 " rowspan="1"> 18810 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 18811 </td> 18812 <td class="entry_type"> 18813 <span class="entry_type_name">int32</span> 18814 <span class="entry_type_container">x</span> 18815 18816 <span class="entry_type_array"> 18817 n x 2 18818 </span> 18819 <span class="entry_type_visibility"> [system as size]</span> 18820 18821 18822 18823 <span class="entry_type_deprecated">[deprecated] </span> 18824 18825 18826 18827 </td> <!-- entry_type --> 18828 18829 <td class="entry_description"> 18830 <p>The resolutions available for use with raw 18831sensor output streams,<wbr/> listed as width,<wbr/> 18832height</p> 18833 </td> 18834 18835 <td class="entry_units"> 18836 </td> 18837 18838 <td class="entry_range"> 18839 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 18840 </td> 18841 18842 <td class="entry_hal_version"> 18843 <p>3.<wbr/>2</p> 18844 </td> 18845 18846 <td class="entry_tags"> 18847 </td> 18848 18849 </tr> 18850 18851 18852 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18853 <!-- end of entry --> 18854 18855 18856 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 18857 <td class="entry_name 18858 " rowspan="5"> 18859 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 18860 </td> 18861 <td class="entry_type"> 18862 <span class="entry_type_name">int32</span> 18863 18864 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> 18865 18866 18867 18868 18869 18870 18871 </td> <!-- entry_type --> 18872 18873 <td class="entry_description"> 18874 <p>The mapping of image formats that are supported by this 18875camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 18876 </td> 18877 18878 <td class="entry_units"> 18879 </td> 18880 18881 <td class="entry_range"> 18882 </td> 18883 18884 <td class="entry_hal_version"> 18885 <p>3.<wbr/>2</p> 18886 </td> 18887 18888 <td class="entry_tags"> 18889 <ul class="entry_tags"> 18890 <li><a href="#tag_REPROC">REPROC</a></li> 18891 </ul> 18892 </td> 18893 18894 </tr> 18895 <tr class="entries_header"> 18896 <th class="th_details" colspan="6">Details</th> 18897 </tr> 18898 <tr class="entry_cont"> 18899 <td class="entry_details" colspan="6"> 18900 <p>All camera devices with at least 1 18901<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 18902available input format.<wbr/></p> 18903<p>The camera device will support the following map of formats,<wbr/> 18904if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 18905<table> 18906<thead> 18907<tr> 18908<th align="left">Input Format</th> 18909<th align="left">Output Format</th> 18910<th align="left">Capability</th> 18911</tr> 18912</thead> 18913<tbody> 18914<tr> 18915<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 18916<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 18917<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 18918</tr> 18919<tr> 18920<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 18921<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> 18922<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 18923</tr> 18924<tr> 18925<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> 18926<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 18927<td align="left">YUV_<wbr/>REPROCESSING</td> 18928</tr> 18929<tr> 18930<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> 18931<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> 18932<td align="left">YUV_<wbr/>REPROCESSING</td> 18933</tr> 18934</tbody> 18935</table> 18936<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A 18937PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a> 18938with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p> 18939<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input 18940or 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> 18941<p>Attempting to configure an input stream with output streams not 18942listed as available in this map is not valid.<wbr/></p> 18943 </td> 18944 </tr> 18945 18946 <tr class="entries_header"> 18947 <th class="th_details" colspan="6">HAL Implementation Details</th> 18948 </tr> 18949 <tr class="entry_cont"> 18950 <td class="entry_details" colspan="6"> 18951 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition 18952of the image format enumerations.<wbr/> The PRIVATE format refers to the 18953HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine 18954the actual format by using the gralloc usage flags.<wbr/> 18955For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially 18956processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/> 18957See camera3.<wbr/>h for more details.<wbr/></p> 18958<p>This value is encoded as a variable-size array-of-arrays.<wbr/> 18959The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 18960<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 18961inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 18962<p>A code sample to read/<wbr/>write this encoding (with a device that 18963supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 18964and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 18965<pre><code>//<wbr/> reading 18966int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 18967for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 18968 int32_<wbr/>t format = contents[i++]; 18969 int32_<wbr/>t length = contents[i++]; 18970 int32_<wbr/>t output_<wbr/>formats[length]; 18971 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 18972 length * sizeof(int32_<wbr/>t)); 18973 i += length; 18974} 18975 18976//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING) 18977int32_<wbr/>t[] contents = { 18978 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 18979 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 18980}; 18981update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 18982 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 18983</code></pre> 18984<p>If the HAL claims to support any of the capabilities listed in the 18985above details,<wbr/> then it must also support all the input-output 18986combinations listed for that capability.<wbr/> It can optionally support 18987additional formats if it so chooses.<wbr/></p> 18988 </td> 18989 </tr> 18990 18991 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 18992 <!-- end of entry --> 18993 18994 18995 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 18996 <td class="entry_name 18997 " rowspan="5"> 18998 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 18999 </td> 19000 <td class="entry_type"> 19001 <span class="entry_type_name entry_type_name_enum">int32</span> 19002 <span class="entry_type_container">x</span> 19003 19004 <span class="entry_type_array"> 19005 n x 4 19006 </span> 19007 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 19008 19009 19010 <span class="entry_type_hwlevel">[legacy] </span> 19011 19012 19013 19014 <ul class="entry_type_enum"> 19015 <li> 19016 <span class="entry_type_enum_name">OUTPUT (v3.2)</span> 19017 </li> 19018 <li> 19019 <span class="entry_type_enum_name">INPUT (v3.2)</span> 19020 </li> 19021 </ul> 19022 19023 </td> <!-- entry_type --> 19024 19025 <td class="entry_description"> 19026 <p>The available stream configurations that this 19027camera device supports 19028(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 19029 </td> 19030 19031 <td class="entry_units"> 19032 </td> 19033 19034 <td class="entry_range"> 19035 </td> 19036 19037 <td class="entry_hal_version"> 19038 <p>3.<wbr/>2</p> 19039 </td> 19040 19041 <td class="entry_tags"> 19042 </td> 19043 19044 </tr> 19045 <tr class="entries_header"> 19046 <th class="th_details" colspan="6">Details</th> 19047 </tr> 19048 <tr class="entry_cont"> 19049 <td class="entry_details" colspan="6"> 19050 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 19051tuples.<wbr/></p> 19052<p>For a given use case,<wbr/> the actual maximum supported resolution 19053may be lower than what is listed here,<wbr/> depending on the destination 19054Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 19055the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 19056smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 19057can provide.<wbr/></p> 19058<p>Please reference the documentation for the image data destination to 19059check if it limits the maximum size for image data.<wbr/></p> 19060<p>Not all output formats may be supported in a configuration with 19061an input stream of a particular format.<wbr/> For more details,<wbr/> see 19062<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 19063<p>The following table describes the minimum required output stream 19064configurations based on the hardware level 19065(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 19066<table> 19067<thead> 19068<tr> 19069<th align="center">Format</th> 19070<th align="center">Size</th> 19071<th align="center">Hardware Level</th> 19072<th align="center">Notes</th> 19073</tr> 19074</thead> 19075<tbody> 19076<tr> 19077<td align="center">JPEG</td> 19078<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 19079<td align="center">Any</td> 19080<td align="center"></td> 19081</tr> 19082<tr> 19083<td align="center">JPEG</td> 19084<td align="center">1920x1080 (1080p)</td> 19085<td align="center">Any</td> 19086<td align="center">if 1080p <= activeArraySize</td> 19087</tr> 19088<tr> 19089<td align="center">JPEG</td> 19090<td align="center">1280x720 (720)</td> 19091<td align="center">Any</td> 19092<td align="center">if 720p <= activeArraySize</td> 19093</tr> 19094<tr> 19095<td align="center">JPEG</td> 19096<td align="center">640x480 (480p)</td> 19097<td align="center">Any</td> 19098<td align="center">if 480p <= activeArraySize</td> 19099</tr> 19100<tr> 19101<td align="center">JPEG</td> 19102<td align="center">320x240 (240p)</td> 19103<td align="center">Any</td> 19104<td align="center">if 240p <= activeArraySize</td> 19105</tr> 19106<tr> 19107<td align="center">YUV_<wbr/>420_<wbr/>888</td> 19108<td align="center">all output sizes available for JPEG</td> 19109<td align="center">FULL</td> 19110<td align="center"></td> 19111</tr> 19112<tr> 19113<td align="center">YUV_<wbr/>420_<wbr/>888</td> 19114<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 19115<td align="center">LIMITED</td> 19116<td align="center"></td> 19117</tr> 19118<tr> 19119<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 19120<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 19121<td align="center">Any</td> 19122<td align="center"></td> 19123</tr> 19124</tbody> 19125</table> 19126<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 19127mandatory stream configurations on a per-capability basis.<wbr/></p> 19128 </td> 19129 </tr> 19130 19131 <tr class="entries_header"> 19132 <th class="th_details" colspan="6">HAL Implementation Details</th> 19133 </tr> 19134 <tr class="entry_cont"> 19135 <td class="entry_details" colspan="6"> 19136 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 19137of sensor maximum resolution for JPEG formats (regardless of hardware 19138level).<wbr/></p> 19139<p>(The following is a rewording of the above required table):</p> 19140<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 19141<ul> 19142<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 19143(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 19144(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/> 19145it does not have to be included in the supported JPEG sizes.<wbr/></li> 19146<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 19147the dimensions being a multiple of 16.<wbr/></li> 19148</ul> 19149<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 19150However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 19151resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 19152additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 19153if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 19154ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 191553264x2448.<wbr/></p> 19156<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/> 19157the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 19158here as output streams.<wbr/></p> 19159<p>It must also include each below resolution if it is smaller than or 19160equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 19161formats),<wbr/> as output streams:</p> 19162<ul> 19163<li>240p (320 x 240)</li> 19164<li>480p (640 x 480)</li> 19165<li>720p (1280 x 720)</li> 19166<li>1080p (1920 x 1080)</li> 19167</ul> 19168<p>For LIMITED capability devices 19169(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 19170the HAL only has to list up to the maximum video size 19171supported by the device.<wbr/></p> 19172<p>Regardless of hardware level,<wbr/> every output resolution available for 19173YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 19174<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 19175<ul> 19176<li>availableFormats</li> 19177<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 19178</ul> 19179 </td> 19180 </tr> 19181 19182 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19183 <!-- end of entry --> 19184 19185 19186 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 19187 <td class="entry_name 19188 " rowspan="3"> 19189 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 19190 </td> 19191 <td class="entry_type"> 19192 <span class="entry_type_name">int64</span> 19193 <span class="entry_type_container">x</span> 19194 19195 <span class="entry_type_array"> 19196 4 x n 19197 </span> 19198 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 19199 19200 19201 <span class="entry_type_hwlevel">[legacy] </span> 19202 19203 19204 19205 19206 </td> <!-- entry_type --> 19207 19208 <td class="entry_description"> 19209 <p>This lists the minimum frame duration for each 19210format/<wbr/>size combination.<wbr/></p> 19211 </td> 19212 19213 <td class="entry_units"> 19214 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 19215 </td> 19216 19217 <td class="entry_range"> 19218 </td> 19219 19220 <td class="entry_hal_version"> 19221 <p>3.<wbr/>2</p> 19222 </td> 19223 19224 <td class="entry_tags"> 19225 <ul class="entry_tags"> 19226 <li><a href="#tag_V1">V1</a></li> 19227 </ul> 19228 </td> 19229 19230 </tr> 19231 <tr class="entries_header"> 19232 <th class="th_details" colspan="6">Details</th> 19233 </tr> 19234 <tr class="entry_cont"> 19235 <td class="entry_details" colspan="6"> 19236 <p>This should correspond to the frame duration when only that 19237stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 19238set to either OFF or FAST.<wbr/></p> 19239<p>When multiple streams are used in a request,<wbr/> the minimum frame 19240duration will be max(individual stream min durations).<wbr/></p> 19241<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 19242is the same regardless of whether the stream is input or output.<wbr/></p> 19243<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 19244<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 19245calculating the max frame rate.<wbr/></p> 19246 </td> 19247 </tr> 19248 19249 19250 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19251 <!-- end of entry --> 19252 19253 19254 <tr class="entry" id="static_android.scaler.availableStallDurations"> 19255 <td class="entry_name 19256 " rowspan="5"> 19257 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 19258 </td> 19259 <td class="entry_type"> 19260 <span class="entry_type_name">int64</span> 19261 <span class="entry_type_container">x</span> 19262 19263 <span class="entry_type_array"> 19264 4 x n 19265 </span> 19266 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 19267 19268 19269 <span class="entry_type_hwlevel">[legacy] </span> 19270 19271 19272 19273 19274 </td> <!-- entry_type --> 19275 19276 <td class="entry_description"> 19277 <p>This lists the maximum stall duration for each 19278output format/<wbr/>size combination.<wbr/></p> 19279 </td> 19280 19281 <td class="entry_units"> 19282 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 19283 </td> 19284 19285 <td class="entry_range"> 19286 </td> 19287 19288 <td class="entry_hal_version"> 19289 <p>3.<wbr/>2</p> 19290 </td> 19291 19292 <td class="entry_tags"> 19293 <ul class="entry_tags"> 19294 <li><a href="#tag_V1">V1</a></li> 19295 </ul> 19296 </td> 19297 19298 </tr> 19299 <tr class="entries_header"> 19300 <th class="th_details" colspan="6">Details</th> 19301 </tr> 19302 <tr class="entry_cont"> 19303 <td class="entry_details" colspan="6"> 19304 <p>A stall duration is how much extra time would get added 19305to the normal minimum frame duration for a repeating request 19306that has streams with non-zero stall.<wbr/></p> 19307<p>For example,<wbr/> consider JPEG captures which have the following 19308characteristics:</p> 19309<ul> 19310<li>JPEG streams act like processed YUV streams in requests for which 19311they are not included; in requests in which they are directly 19312referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 19313JPEG stream requires the underlying YUV data to always be ready for 19314use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 19315frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 19316<li>The JPEG processor can run concurrently to the rest of the camera 19317pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 19318</ul> 19319<p>In other words,<wbr/> using a repeating YUV request would result 19320in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 19321JPEG request is submitted periodically,<wbr/> the frame rate will stay 19322at 30 FPS (as long as we wait for the previous JPEG to return each 19323time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 19324the frame rate will drop from 30 FPS.<wbr/></p> 19325<p>In general,<wbr/> submitting a new request with a non-0 stall time 19326stream will <em>not</em> cause a frame rate drop unless there are still 19327outstanding buffers for that stream from previous requests.<wbr/></p> 19328<p>Submitting a repeating request with streams (call this <code>S</code>) 19329is the same as setting the minimum frame duration from 19330the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 19331the maximum stall duration for <code>S</code>.<wbr/></p> 19332<p>If interleaving requests with and without a stall duration,<wbr/> 19333a request will stall by the maximum of the remaining times 19334for each can-stall stream with outstanding buffers.<wbr/></p> 19335<p>This means that a stalling request will not have an exposure start 19336until the stall has completed.<wbr/></p> 19337<p>This should correspond to the stall duration when only that stream is 19338active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 19339or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 19340effectively results in an indeterminate stall duration for all 19341streams in a request (the regular stall calculation rules are 19342ignored).<wbr/></p> 19343<p>The following formats may always have a stall duration:</p> 19344<ul> 19345<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li> 19346<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li> 19347</ul> 19348<p>The following formats will never have a stall duration:</p> 19349<ul> 19350<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> 19351<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li> 19352<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li> 19353</ul> 19354<p>All other formats may or may not have an allowed stall duration on 19355a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 19356for more details.<wbr/></p> 19357<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 19358calculating the max frame rate (absent stalls).<wbr/></p> 19359 </td> 19360 </tr> 19361 19362 <tr class="entries_header"> 19363 <th class="th_details" colspan="6">HAL Implementation Details</th> 19364 </tr> 19365 <tr class="entry_cont"> 19366 <td class="entry_details" colspan="6"> 19367 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 19368(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE 19369and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 19370 </td> 19371 </tr> 19372 19373 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19374 <!-- end of entry --> 19375 19376 19377 <tr class="entry" id="static_android.scaler.streamConfigurationMap"> 19378 <td class="entry_name 19379 " rowspan="5"> 19380 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map 19381 </td> 19382 <td class="entry_type"> 19383 <span class="entry_type_name">int32</span> 19384 19385 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span> 19386 19387 <span class="entry_type_synthetic">[synthetic] </span> 19388 19389 <span class="entry_type_hwlevel">[legacy] </span> 19390 19391 19392 19393 19394 </td> <!-- entry_type --> 19395 19396 <td class="entry_description"> 19397 <p>The available stream configurations that this 19398camera device supports; also includes the minimum frame durations 19399and the stall durations for each format/<wbr/>size combination.<wbr/></p> 19400 </td> 19401 19402 <td class="entry_units"> 19403 </td> 19404 19405 <td class="entry_range"> 19406 </td> 19407 19408 <td class="entry_hal_version"> 19409 <p>3.<wbr/>2</p> 19410 </td> 19411 19412 <td class="entry_tags"> 19413 </td> 19414 19415 </tr> 19416 <tr class="entries_header"> 19417 <th class="th_details" colspan="6">Details</th> 19418 </tr> 19419 <tr class="entry_cont"> 19420 <td class="entry_details" colspan="6"> 19421 <p>All camera devices will support sensor maximum resolution (defined by 19422<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> 19423<p>For a given use case,<wbr/> the actual maximum supported resolution 19424may be lower than what is listed here,<wbr/> depending on the destination 19425Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 19426the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 19427smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 19428can provide.<wbr/></p> 19429<p>Please reference the documentation for the image data destination to 19430check if it limits the maximum size for image data.<wbr/></p> 19431<p>The following table describes the minimum required output stream 19432configurations based on the hardware level 19433(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 19434<table> 19435<thead> 19436<tr> 19437<th align="center">Format</th> 19438<th align="center">Size</th> 19439<th align="center">Hardware Level</th> 19440<th align="center">Notes</th> 19441</tr> 19442</thead> 19443<tbody> 19444<tr> 19445<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 19446<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td> 19447<td align="center">Any</td> 19448<td align="center"></td> 19449</tr> 19450<tr> 19451<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 19452<td align="center">1920x1080 (1080p)</td> 19453<td align="center">Any</td> 19454<td align="center">if 1080p <= activeArraySize</td> 19455</tr> 19456<tr> 19457<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 19458<td align="center">1280x720 (720p)</td> 19459<td align="center">Any</td> 19460<td align="center">if 720p <= activeArraySize</td> 19461</tr> 19462<tr> 19463<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 19464<td align="center">640x480 (480p)</td> 19465<td align="center">Any</td> 19466<td align="center">if 480p <= activeArraySize</td> 19467</tr> 19468<tr> 19469<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 19470<td align="center">320x240 (240p)</td> 19471<td align="center">Any</td> 19472<td align="center">if 240p <= activeArraySize</td> 19473</tr> 19474<tr> 19475<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> 19476<td align="center">all output sizes available for JPEG</td> 19477<td align="center">FULL</td> 19478<td align="center"></td> 19479</tr> 19480<tr> 19481<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> 19482<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 19483<td align="center">LIMITED</td> 19484<td align="center"></td> 19485</tr> 19486<tr> 19487<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 19488<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 19489<td align="center">Any</td> 19490<td align="center"></td> 19491</tr> 19492</tbody> 19493</table> 19494<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 19495stream configurations on a per-capability basis.<wbr/></p> 19496<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 19497<ul> 19498<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 19499(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 19500(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/> 19501it does not have to be included in the supported JPEG sizes.<wbr/></li> 19502<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 19503the dimensions being a multiple of 16.<wbr/> 19504Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 19505However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum 19506resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 19507additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 19508if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 19509ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 195103264x2448.<wbr/></li> 19511</ul> 19512 </td> 19513 </tr> 19514 19515 <tr class="entries_header"> 19516 <th class="th_details" colspan="6">HAL Implementation Details</th> 19517 </tr> 19518 <tr class="entry_cont"> 19519 <td class="entry_details" colspan="6"> 19520 <p>Do not set this property directly 19521(it is synthetic and will not be available at the HAL layer); 19522set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> 19523<p>Not all output formats may be supported in a configuration with 19524an input stream of a particular format.<wbr/> For more details,<wbr/> see 19525<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 19526<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 19527of sensor maximum resolution for JPEG formats (regardless of hardware 19528level).<wbr/></p> 19529<p>(The following is a rewording of the above required table):</p> 19530<p>The HAL must include sensor maximum resolution (defined by 19531<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 19532<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/> 19533the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 19534here as output streams.<wbr/></p> 19535<p>It must also include each below resolution if it is smaller than or 19536equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 19537formats),<wbr/> as output streams:</p> 19538<ul> 19539<li>240p (320 x 240)</li> 19540<li>480p (640 x 480)</li> 19541<li>720p (1280 x 720)</li> 19542<li>1080p (1920 x 1080)</li> 19543</ul> 19544<p>For LIMITED capability devices 19545(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 19546the HAL only has to list up to the maximum video size 19547supported by the device.<wbr/></p> 19548<p>Regardless of hardware level,<wbr/> every output resolution available for 19549YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 19550<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 19551<ul> 19552<li>availableFormats</li> 19553<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 19554</ul> 19555 </td> 19556 </tr> 19557 19558 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19559 <!-- end of entry --> 19560 19561 19562 <tr class="entry" id="static_android.scaler.croppingType"> 19563 <td class="entry_name 19564 " rowspan="3"> 19565 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type 19566 </td> 19567 <td class="entry_type"> 19568 <span class="entry_type_name entry_type_name_enum">byte</span> 19569 19570 <span class="entry_type_visibility"> [public]</span> 19571 19572 19573 <span class="entry_type_hwlevel">[legacy] </span> 19574 19575 19576 19577 <ul class="entry_type_enum"> 19578 <li> 19579 <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span> 19580 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span> 19581 </li> 19582 <li> 19583 <span class="entry_type_enum_name">FREEFORM (v3.2)</span> 19584 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span> 19585 </li> 19586 </ul> 19587 19588 </td> <!-- entry_type --> 19589 19590 <td class="entry_description"> 19591 <p>The crop type that this camera device supports.<wbr/></p> 19592 </td> 19593 19594 <td class="entry_units"> 19595 </td> 19596 19597 <td class="entry_range"> 19598 </td> 19599 19600 <td class="entry_hal_version"> 19601 <p>3.<wbr/>2</p> 19602 </td> 19603 19604 <td class="entry_tags"> 19605 </td> 19606 19607 </tr> 19608 <tr class="entries_header"> 19609 <th class="th_details" colspan="6">Details</th> 19610 </tr> 19611 <tr class="entry_cont"> 19612 <td class="entry_details" colspan="6"> 19613 <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 19614device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 19615crop 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>) 19616and keep the crop region width and height unchanged.<wbr/> The camera device will return the 19617final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 19618<p>Camera devices that support FREEFORM cropping will support any crop region that 19619is inside of the active array.<wbr/> The camera device will apply the same crop region and 19620return 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> 19621<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p> 19622 </td> 19623 </tr> 19624 19625 19626 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19627 <!-- end of entry --> 19628 19629 19630 19631 <!-- end of kind --> 19632 </tbody> 19633 <tr><td colspan="7" class="kind">dynamic</td></tr> 19634 19635 <thead class="entries_header"> 19636 <tr> 19637 <th class="th_name">Property Name</th> 19638 <th class="th_type">Type</th> 19639 <th class="th_description">Description</th> 19640 <th class="th_units">Units</th> 19641 <th class="th_range">Range</th> 19642 <th class="th_hal_version">Initial HIDL HAL version</th> 19643 <th class="th_tags">Tags</th> 19644 </tr> 19645 </thead> 19646 19647 <tbody> 19648 19649 19650 19651 19652 19653 19654 19655 19656 19657 19658 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 19659 <td class="entry_name 19660 " rowspan="5"> 19661 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 19662 </td> 19663 <td class="entry_type"> 19664 <span class="entry_type_name">int32</span> 19665 <span class="entry_type_container">x</span> 19666 19667 <span class="entry_type_array"> 19668 4 19669 </span> 19670 <span class="entry_type_visibility"> [public as rectangle]</span> 19671 19672 19673 <span class="entry_type_hwlevel">[legacy] </span> 19674 19675 19676 19677 19678 </td> <!-- entry_type --> 19679 19680 <td class="entry_description"> 19681 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 19682 </td> 19683 19684 <td class="entry_units"> 19685 Pixel coordinates relative to 19686 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 19687 </td> 19688 19689 <td class="entry_range"> 19690 </td> 19691 19692 <td class="entry_hal_version"> 19693 <p>3.<wbr/>2</p> 19694 </td> 19695 19696 <td class="entry_tags"> 19697 <ul class="entry_tags"> 19698 <li><a href="#tag_BC">BC</a></li> 19699 </ul> 19700 </td> 19701 19702 </tr> 19703 <tr class="entries_header"> 19704 <th class="th_details" colspan="6">Details</th> 19705 </tr> 19706 <tr class="entry_cont"> 19707 <td class="entry_details" colspan="6"> 19708 <p>This control can be used to implement digital zoom.<wbr/></p> 19709<p>The crop region coordinate system is based off 19710<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 19711top-left corner of the sensor active array.<wbr/></p> 19712<p>Output streams use this rectangle to produce their output,<wbr/> 19713cropping to a smaller region if necessary to maintain the 19714stream's aspect ratio,<wbr/> then scaling the sensor input to 19715match the output's configured resolution.<wbr/></p> 19716<p>The crop region is applied after the RAW to other color 19717space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 19718(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 19719croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 19720<p>For non-raw streams,<wbr/> any additional per-stream cropping will 19721be done to maximize the final pixel area of the stream.<wbr/></p> 19722<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 19723ratio,<wbr/> then 4:3 streams will use the exact crop 19724region.<wbr/> 16:9 streams will further crop vertically 19725(letterbox).<wbr/></p> 19726<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 19727outputs will crop horizontally (pillarbox),<wbr/> and 16:9 19728streams will match exactly.<wbr/> These additional crops will 19729be centered within the crop region.<wbr/></p> 19730<p>The width and height of the crop region cannot 19731be set to be smaller than 19732<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 19733<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> 19734<p>The camera device may adjust the crop region to account 19735for rounding and other hardware requirements; the final 19736crop region used will be included in the output capture 19737result.<wbr/></p> 19738 </td> 19739 </tr> 19740 19741 <tr class="entries_header"> 19742 <th class="th_details" colspan="6">HAL Implementation Details</th> 19743 </tr> 19744 <tr class="entry_cont"> 19745 <td class="entry_details" colspan="6"> 19746 <p>The output streams must maintain square pixels at all 19747times,<wbr/> no matter what the relative aspect ratios of the 19748crop region and the stream are.<wbr/> Negative values for 19749corner are allowed for raw output if full pixel array is 19750larger than active pixel array.<wbr/> Width and height may be 19751rounded to nearest larger supportable width,<wbr/> especially 19752for raw output,<wbr/> where only a few fixed scales may be 19753possible.<wbr/></p> 19754<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 19755size than active array size,<wbr/> the HAL need follow below cropping rules:</p> 19756<ul> 19757<li> 19758<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active 19759array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from 19760<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p> 19761<ol> 19762<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 19763cropped pixel area by (tx,<wbr/> ty),<wbr/> 19764where <code>ty = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 19765and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The 19766(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 19767<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 19768<li>Scale the width and height of requested cropRegion with scaling factor of 19769sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height 19770respectively.<wbr/> 19771Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 19772with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 19773follow the general cropping rule for this new cropRegion and effective active 19774array size.<wbr/></li> 19775</ol> 19776</li> 19777<li> 19778<p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> 19779The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 19780The reported cropRegion may be slightly different with the requested cropRegion since 19781the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 19782hardware limitations.<wbr/></p> 19783</li> 19784</ul> 19785<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 19786 </td> 19787 </tr> 19788 19789 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19790 <!-- end of entry --> 19791 19792 19793 19794 <!-- end of kind --> 19795 </tbody> 19796 19797 <!-- end of section --> 19798 <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr> 19799 19800 19801 <tr><td colspan="7" class="kind">controls</td></tr> 19802 19803 <thead class="entries_header"> 19804 <tr> 19805 <th class="th_name">Property Name</th> 19806 <th class="th_type">Type</th> 19807 <th class="th_description">Description</th> 19808 <th class="th_units">Units</th> 19809 <th class="th_range">Range</th> 19810 <th class="th_hal_version">Initial HIDL HAL version</th> 19811 <th class="th_tags">Tags</th> 19812 </tr> 19813 </thead> 19814 19815 <tbody> 19816 19817 19818 19819 19820 19821 19822 19823 19824 19825 19826 <tr class="entry" id="controls_android.sensor.exposureTime"> 19827 <td class="entry_name 19828 " rowspan="3"> 19829 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 19830 </td> 19831 <td class="entry_type"> 19832 <span class="entry_type_name">int64</span> 19833 19834 <span class="entry_type_visibility"> [public]</span> 19835 19836 19837 <span class="entry_type_hwlevel">[full] </span> 19838 19839 19840 19841 19842 </td> <!-- entry_type --> 19843 19844 <td class="entry_description"> 19845 <p>Duration each pixel is exposed to 19846light.<wbr/></p> 19847 </td> 19848 19849 <td class="entry_units"> 19850 Nanoseconds 19851 </td> 19852 19853 <td class="entry_range"> 19854 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 19855 </td> 19856 19857 <td class="entry_hal_version"> 19858 <p>3.<wbr/>2</p> 19859 </td> 19860 19861 <td class="entry_tags"> 19862 <ul class="entry_tags"> 19863 <li><a href="#tag_V1">V1</a></li> 19864 </ul> 19865 </td> 19866 19867 </tr> 19868 <tr class="entries_header"> 19869 <th class="th_details" colspan="6">Details</th> 19870 </tr> 19871 <tr class="entry_cont"> 19872 <td class="entry_details" colspan="6"> 19873 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 19874duration exposed to the nearest possible value (rather than expose longer).<wbr/> 19875The final exposure time used will be available in the output capture result.<wbr/></p> 19876<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 19877OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 19878 </td> 19879 </tr> 19880 19881 19882 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 19883 <!-- end of entry --> 19884 19885 19886 <tr class="entry" id="controls_android.sensor.frameDuration"> 19887 <td class="entry_name 19888 " rowspan="5"> 19889 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 19890 </td> 19891 <td class="entry_type"> 19892 <span class="entry_type_name">int64</span> 19893 19894 <span class="entry_type_visibility"> [public]</span> 19895 19896 19897 <span class="entry_type_hwlevel">[full] </span> 19898 19899 19900 19901 19902 </td> <!-- entry_type --> 19903 19904 <td class="entry_description"> 19905 <p>Duration from start of frame exposure to 19906start of next frame exposure.<wbr/></p> 19907 </td> 19908 19909 <td class="entry_units"> 19910 Nanoseconds 19911 </td> 19912 19913 <td class="entry_range"> 19914 <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/> 19915The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 19916 </td> 19917 19918 <td class="entry_hal_version"> 19919 <p>3.<wbr/>2</p> 19920 </td> 19921 19922 <td class="entry_tags"> 19923 <ul class="entry_tags"> 19924 <li><a href="#tag_V1">V1</a></li> 19925 </ul> 19926 </td> 19927 19928 </tr> 19929 <tr class="entries_header"> 19930 <th class="th_details" colspan="6">Details</th> 19931 </tr> 19932 <tr class="entry_cont"> 19933 <td class="entry_details" colspan="6"> 19934 <p>The maximum frame rate that can be supported by a camera subsystem is 19935a function of many factors:</p> 19936<ul> 19937<li>Requested resolutions of output image streams</li> 19938<li>Availability of binning /<wbr/> skipping modes on the imager</li> 19939<li>The bandwidth of the imager interface</li> 19940<li>The bandwidth of the various ISP processing blocks</li> 19941</ul> 19942<p>Since these factors can vary greatly between different ISPs and 19943sensors,<wbr/> the camera abstraction tries to represent the bandwidth 19944restrictions with as simple a model as possible.<wbr/></p> 19945<p>The model presented has the following characteristics:</p> 19946<ul> 19947<li>The image sensor is always configured to output the smallest 19948resolution possible given the application's requested output stream 19949sizes.<wbr/> The smallest resolution is defined as being at least as large 19950as the largest requested output stream size; the camera pipeline must 19951never digitally upsample sensor data when the crop region covers the 19952whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 19953resolutions are configured,<wbr/> the sensor can provide a higher frame 19954rate.<wbr/></li> 19955<li>Since any request may use any or all the currently configured 19956output streams,<wbr/> the sensor and ISP must be configured to support 19957scaling a single capture to all the streams at the same time.<wbr/> This 19958means the camera pipeline must be ready to produce the largest 19959requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 19960frame rate of a given configured stream set is governed only by the 19961largest requested stream resolution.<wbr/></li> 19962<li>Using more than one output stream in a request does not affect the 19963frame duration.<wbr/></li> 19964<li>Certain format-streams may need to do additional background processing 19965before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 19966can run concurrently to the rest of the camera pipeline,<wbr/> but 19967cannot process more than 1 capture at a time.<wbr/></li> 19968</ul> 19969<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via 19970<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 19971These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is 19972possible for a given stream configuration.<wbr/></p> 19973<p>Specifically,<wbr/> the application can use the following rules to 19974determine the minimum frame duration it can request from the camera 19975device:</p> 19976<ol> 19977<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li> 19978<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> 19979(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li> 19980<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum 19981out 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> 19982</ol> 19983<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> 19984using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady 19985state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let 19986this special kind of request be called <code>Rsimple</code>.<wbr/></p> 19987<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a 19988new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if 19989<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all 19990buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p> 19991<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> 19992<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 19993OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 19994 </td> 19995 </tr> 19996 19997 <tr class="entries_header"> 19998 <th class="th_details" colspan="6">HAL Implementation Details</th> 19999 </tr> 20000 <tr class="entry_cont"> 20001 <td class="entry_details" colspan="6"> 20002 <p>For more details about stalling,<wbr/> see 20003<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 20004 </td> 20005 </tr> 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="controls_android.sensor.sensitivity"> 20012 <td class="entry_name 20013 " rowspan="5"> 20014 android.<wbr/>sensor.<wbr/>sensitivity 20015 </td> 20016 <td class="entry_type"> 20017 <span class="entry_type_name">int32</span> 20018 20019 <span class="entry_type_visibility"> [public]</span> 20020 20021 20022 <span class="entry_type_hwlevel">[full] </span> 20023 20024 20025 20026 20027 </td> <!-- entry_type --> 20028 20029 <td class="entry_description"> 20030 <p>The amount of gain applied to sensor data 20031before processing.<wbr/></p> 20032 </td> 20033 20034 <td class="entry_units"> 20035 ISO arithmetic units 20036 </td> 20037 20038 <td class="entry_range"> 20039 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</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 <ul class="entry_tags"> 20048 <li><a href="#tag_V1">V1</a></li> 20049 </ul> 20050 </td> 20051 20052 </tr> 20053 <tr class="entries_header"> 20054 <th class="th_details" colspan="6">Details</th> 20055 </tr> 20056 <tr class="entry_cont"> 20057 <td class="entry_details" colspan="6"> 20058 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 20059as defined in ISO 12232:2006.<wbr/></p> 20060<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 20061if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 20062is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 20063<p>If the camera device cannot apply the exact sensitivity 20064requested,<wbr/> it will reduce the gain to the nearest supported 20065value.<wbr/> The final sensitivity used will be available in the 20066output capture result.<wbr/></p> 20067<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 20068OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20069 </td> 20070 </tr> 20071 20072 <tr class="entries_header"> 20073 <th class="th_details" colspan="6">HAL Implementation Details</th> 20074 </tr> 20075 <tr class="entry_cont"> 20076 <td class="entry_details" colspan="6"> 20077 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 20078 </td> 20079 </tr> 20080 20081 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20082 <!-- end of entry --> 20083 20084 20085 <tr class="entry" id="controls_android.sensor.testPatternData"> 20086 <td class="entry_name 20087 " rowspan="5"> 20088 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 20089 </td> 20090 <td class="entry_type"> 20091 <span class="entry_type_name">int32</span> 20092 <span class="entry_type_container">x</span> 20093 20094 <span class="entry_type_array"> 20095 4 20096 </span> 20097 <span class="entry_type_visibility"> [public]</span> 20098 20099 20100 20101 20102 20103 20104 </td> <!-- entry_type --> 20105 20106 <td class="entry_description"> 20107 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 20108when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 20109 </td> 20110 20111 <td class="entry_units"> 20112 </td> 20113 20114 <td class="entry_range"> 20115 </td> 20116 20117 <td class="entry_hal_version"> 20118 <p>3.<wbr/>2</p> 20119 </td> 20120 20121 <td class="entry_tags"> 20122 </td> 20123 20124 </tr> 20125 <tr class="entries_header"> 20126 <th class="th_details" colspan="6">Details</th> 20127 </tr> 20128 <tr class="entry_cont"> 20129 <td class="entry_details" colspan="6"> 20130 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 20131The camera device then uses the most significant X bits 20132that correspond to how many bits are in its Bayer raw sensor 20133output.<wbr/></p> 20134<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 2013510 most significant bits from each color channel.<wbr/></p> 20136 </td> 20137 </tr> 20138 20139 <tr class="entries_header"> 20140 <th class="th_details" colspan="6">HAL Implementation Details</th> 20141 </tr> 20142 <tr class="entry_cont"> 20143 <td class="entry_details" colspan="6"> 20144 20145 </td> 20146 </tr> 20147 20148 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20149 <!-- end of entry --> 20150 20151 20152 <tr class="entry" id="controls_android.sensor.testPatternMode"> 20153 <td class="entry_name 20154 " rowspan="5"> 20155 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 20156 </td> 20157 <td class="entry_type"> 20158 <span class="entry_type_name entry_type_name_enum">int32</span> 20159 20160 <span class="entry_type_visibility"> [public]</span> 20161 20162 20163 20164 20165 20166 <ul class="entry_type_enum"> 20167 <li> 20168 <span class="entry_type_enum_name">OFF (v3.2)</span> 20169 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 20170device returns captures from the image sensor.<wbr/></p> 20171<p>This is the default if the key is not set.<wbr/></p></span> 20172 </li> 20173 <li> 20174 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span> 20175 <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 20176respective color channel provided in 20177<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 20178<p>For example:</p> 20179<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 20180</code></pre> 20181<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 20182<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 20183</code></pre> 20184<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 20185are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 20186 </li> 20187 <li> 20188 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span> 20189 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 20190<p>The vertical bars (left-to-right) are as follows:</p> 20191<ul> 20192<li>100% white</li> 20193<li>yellow</li> 20194<li>cyan</li> 20195<li>green</li> 20196<li>magenta</li> 20197<li>red</li> 20198<li>blue</li> 20199<li>black</li> 20200</ul> 20201<p>In general the image would look like the following:</p> 20202<pre><code>W Y C G M R B K 20203W Y C G M R B K 20204W Y C G M R B K 20205W Y C G M R B K 20206W Y C G M R B K 20207.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 20208.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 20209.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 20210 20211(B = Blue,<wbr/> K = Black) 20212</code></pre> 20213<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 20214When this is not possible,<wbr/> the bar size should be rounded 20215down to the nearest integer and the pattern can repeat 20216on the right side.<wbr/></p> 20217<p>Each bar's height must always take up the full sensor 20218pixel array height.<wbr/></p> 20219<p>Each pixel in this test pattern must be set to either 202200% intensity or 100% intensity.<wbr/></p></span> 20221 </li> 20222 <li> 20223 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span> 20224 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 20225each bar should start at its specified color at the top,<wbr/> 20226and fade to gray at the bottom.<wbr/></p> 20227<p>Furthermore each bar is further subdivided into a left and 20228right half.<wbr/> The left half should have a smooth gradient,<wbr/> 20229and the right half should have a quantized gradient.<wbr/></p> 20230<p>In particular,<wbr/> the right half's should consist of blocks of the 20231same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 20232<p>The least significant bits in the quantized gradient should 20233be copied from the most significant bits of the smooth gradient.<wbr/></p> 20234<p>The height of each bar should always be a multiple of 128.<wbr/> 20235When this is not the case,<wbr/> the pattern should repeat at the bottom 20236of the image.<wbr/></p></span> 20237 </li> 20238 <li> 20239 <span class="entry_type_enum_name">PN9 (v3.2)</span> 20240 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 20241generated from a PN9 512-bit sequence (typically implemented 20242in hardware with a linear feedback shift register).<wbr/></p> 20243<p>The generator should be reset at the beginning of each frame,<wbr/> 20244and thus each subsequent raw frame with this test pattern should 20245be exactly the same as the last.<wbr/></p></span> 20246 </li> 20247 <li> 20248 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span> 20249 <span class="entry_type_enum_value">256</span> 20250 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 20251available only on this camera device are at least this numeric 20252value.<wbr/></p> 20253<p>All of the custom test patterns will be static 20254(that is the raw image must not vary from frame to frame).<wbr/></p></span> 20255 </li> 20256 </ul> 20257 20258 </td> <!-- entry_type --> 20259 20260 <td class="entry_description"> 20261 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 20262doing a real exposure from the camera.<wbr/></p> 20263 </td> 20264 20265 <td class="entry_units"> 20266 </td> 20267 20268 <td class="entry_range"> 20269 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 20270 </td> 20271 20272 <td class="entry_hal_version"> 20273 <p>3.<wbr/>2</p> 20274 </td> 20275 20276 <td class="entry_tags"> 20277 </td> 20278 20279 </tr> 20280 <tr class="entries_header"> 20281 <th class="th_details" colspan="6">Details</th> 20282 </tr> 20283 <tr class="entry_cont"> 20284 <td class="entry_details" colspan="6"> 20285 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 20286by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 20287work as normal.<wbr/></p> 20288<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 20289occur (and that the test pattern remain unmodified,<wbr/> since the flash 20290would not actually affect it).<wbr/></p> 20291<p>Defaults to OFF.<wbr/></p> 20292 </td> 20293 </tr> 20294 20295 <tr class="entries_header"> 20296 <th class="th_details" colspan="6">HAL Implementation Details</th> 20297 </tr> 20298 <tr class="entry_cont"> 20299 <td class="entry_details" colspan="6"> 20300 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 20301<p>The HAL may choose to substitute test patterns from the sensor 20302with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 20303indistinguishable to the ISP whether the data came from the 20304sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 20305 </td> 20306 </tr> 20307 20308 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20309 <!-- end of entry --> 20310 20311 20312 20313 <!-- end of kind --> 20314 </tbody> 20315 <tr><td colspan="7" class="kind">static</td></tr> 20316 20317 <thead class="entries_header"> 20318 <tr> 20319 <th class="th_name">Property Name</th> 20320 <th class="th_type">Type</th> 20321 <th class="th_description">Description</th> 20322 <th class="th_units">Units</th> 20323 <th class="th_range">Range</th> 20324 <th class="th_hal_version">Initial HIDL HAL version</th> 20325 <th class="th_tags">Tags</th> 20326 </tr> 20327 </thead> 20328 20329 <tbody> 20330 20331 20332 20333 20334 20335 20336 20337 20338 20339 20340 20341 20342 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 20343 <td class="entry_name 20344 " rowspan="5"> 20345 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 20346 </td> 20347 <td class="entry_type"> 20348 <span class="entry_type_name">int32</span> 20349 <span class="entry_type_container">x</span> 20350 20351 <span class="entry_type_array"> 20352 4 20353 </span> 20354 <span class="entry_type_visibility"> [public as rectangle]</span> 20355 20356 20357 <span class="entry_type_hwlevel">[legacy] </span> 20358 20359 20360 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 20361 20362 20363 </td> <!-- entry_type --> 20364 20365 <td class="entry_description"> 20366 <p>The area of the image sensor which corresponds to active pixels after any geometric 20367distortion correction has been applied.<wbr/></p> 20368 </td> 20369 20370 <td class="entry_units"> 20371 Pixel coordinates on the image sensor 20372 </td> 20373 20374 <td class="entry_range"> 20375 </td> 20376 20377 <td class="entry_hal_version"> 20378 <p>3.<wbr/>2</p> 20379 </td> 20380 20381 <td class="entry_tags"> 20382 <ul class="entry_tags"> 20383 <li><a href="#tag_RAW">RAW</a></li> 20384 </ul> 20385 </td> 20386 20387 </tr> 20388 <tr class="entries_header"> 20389 <th class="th_details" colspan="6">Details</th> 20390 </tr> 20391 <tr class="entry_cont"> 20392 <td class="entry_details" colspan="6"> 20393 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 20394the region that actually receives light from the scene) after any geometric correction 20395has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the 20396image output formats aside from the raw formats.<wbr/></p> 20397<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 20398the full pixel array,<wbr/> and the size of the full pixel array is given by 20399<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 20400<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including 20401<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 20402this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p> 20403<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may 20404include black calibration pixels or other inactive regions,<wbr/> and geometric correction 20405resulting in scaling or cropping may have been applied.<wbr/></p> 20406 </td> 20407 </tr> 20408 20409 <tr class="entries_header"> 20410 <th class="th_details" colspan="6">HAL Implementation Details</th> 20411 </tr> 20412 <tr class="entry_cont"> 20413 <td class="entry_details" colspan="6"> 20414 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 20415>= <code>(0,<wbr/>0)</code>.<wbr/> 20416The <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> 20417 </td> 20418 </tr> 20419 20420 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20421 <!-- end of entry --> 20422 20423 20424 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 20425 <td class="entry_name 20426 " rowspan="3"> 20427 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 20428 </td> 20429 <td class="entry_type"> 20430 <span class="entry_type_name">int32</span> 20431 <span class="entry_type_container">x</span> 20432 20433 <span class="entry_type_array"> 20434 2 20435 </span> 20436 <span class="entry_type_visibility"> [public as rangeInt]</span> 20437 20438 20439 <span class="entry_type_hwlevel">[full] </span> 20440 20441 20442 <div class="entry_type_notes">Range of supported sensitivities</div> 20443 20444 20445 </td> <!-- entry_type --> 20446 20447 <td class="entry_description"> 20448 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this 20449camera device.<wbr/></p> 20450 </td> 20451 20452 <td class="entry_units"> 20453 </td> 20454 20455 <td class="entry_range"> 20456 <p>Min <= 100,<wbr/> Max >= 800</p> 20457 </td> 20458 20459 <td class="entry_hal_version"> 20460 <p>3.<wbr/>2</p> 20461 </td> 20462 20463 <td class="entry_tags"> 20464 <ul class="entry_tags"> 20465 <li><a href="#tag_BC">BC</a></li> 20466 <li><a href="#tag_V1">V1</a></li> 20467 </ul> 20468 </td> 20469 20470 </tr> 20471 <tr class="entries_header"> 20472 <th class="th_details" colspan="6">Details</th> 20473 </tr> 20474 <tr class="entry_cont"> 20475 <td class="entry_details" colspan="6"> 20476 <p>The values are the standard ISO sensitivity values,<wbr/> 20477as defined in ISO 12232:2006.<wbr/></p> 20478 </td> 20479 </tr> 20480 20481 20482 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20483 <!-- end of entry --> 20484 20485 20486 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 20487 <td class="entry_name 20488 " rowspan="1"> 20489 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 20490 </td> 20491 <td class="entry_type"> 20492 <span class="entry_type_name entry_type_name_enum">byte</span> 20493 20494 <span class="entry_type_visibility"> [public]</span> 20495 20496 20497 <span class="entry_type_hwlevel">[full] </span> 20498 20499 20500 20501 <ul class="entry_type_enum"> 20502 <li> 20503 <span class="entry_type_enum_name">RGGB (v3.2)</span> 20504 </li> 20505 <li> 20506 <span class="entry_type_enum_name">GRBG (v3.2)</span> 20507 </li> 20508 <li> 20509 <span class="entry_type_enum_name">GBRG (v3.2)</span> 20510 </li> 20511 <li> 20512 <span class="entry_type_enum_name">BGGR (v3.2)</span> 20513 </li> 20514 <li> 20515 <span class="entry_type_enum_name">RGB (v3.2)</span> 20516 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 20517values for each pixel,<wbr/> instead of just 1 16-bit value 20518per pixel.<wbr/></p></span> 20519 </li> 20520 </ul> 20521 20522 </td> <!-- entry_type --> 20523 20524 <td class="entry_description"> 20525 <p>The arrangement of color filters on sensor; 20526represents the colors in the top-left 2x2 section of 20527the sensor,<wbr/> in reading order.<wbr/></p> 20528 </td> 20529 20530 <td class="entry_units"> 20531 </td> 20532 20533 <td class="entry_range"> 20534 </td> 20535 20536 <td class="entry_hal_version"> 20537 <p>3.<wbr/>2</p> 20538 </td> 20539 20540 <td class="entry_tags"> 20541 <ul class="entry_tags"> 20542 <li><a href="#tag_RAW">RAW</a></li> 20543 </ul> 20544 </td> 20545 20546 </tr> 20547 20548 20549 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20550 <!-- end of entry --> 20551 20552 20553 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 20554 <td class="entry_name 20555 " rowspan="3"> 20556 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 20557 </td> 20558 <td class="entry_type"> 20559 <span class="entry_type_name">int64</span> 20560 <span class="entry_type_container">x</span> 20561 20562 <span class="entry_type_array"> 20563 2 20564 </span> 20565 <span class="entry_type_visibility"> [public as rangeLong]</span> 20566 20567 20568 <span class="entry_type_hwlevel">[full] </span> 20569 20570 20571 <div class="entry_type_notes">nanoseconds</div> 20572 20573 20574 </td> <!-- entry_type --> 20575 20576 <td class="entry_description"> 20577 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported 20578by this camera device.<wbr/></p> 20579 </td> 20580 20581 <td class="entry_units"> 20582 Nanoseconds 20583 </td> 20584 20585 <td class="entry_range"> 20586 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL 20587capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 20588the maximum exposure time will be greater than 100ms.<wbr/></p> 20589 </td> 20590 20591 <td class="entry_hal_version"> 20592 <p>3.<wbr/>2</p> 20593 </td> 20594 20595 <td class="entry_tags"> 20596 <ul class="entry_tags"> 20597 <li><a href="#tag_V1">V1</a></li> 20598 </ul> 20599 </td> 20600 20601 </tr> 20602 20603 <tr class="entries_header"> 20604 <th class="th_details" colspan="6">HAL Implementation Details</th> 20605 </tr> 20606 <tr class="entry_cont"> 20607 <td class="entry_details" colspan="6"> 20608 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 20609The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least 20610100ms.<wbr/></p> 20611 </td> 20612 </tr> 20613 20614 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20615 <!-- end of entry --> 20616 20617 20618 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 20619 <td class="entry_name 20620 " rowspan="5"> 20621 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 20622 </td> 20623 <td class="entry_type"> 20624 <span class="entry_type_name">int64</span> 20625 20626 <span class="entry_type_visibility"> [public]</span> 20627 20628 20629 <span class="entry_type_hwlevel">[full] </span> 20630 20631 20632 20633 20634 </td> <!-- entry_type --> 20635 20636 <td class="entry_description"> 20637 <p>The maximum possible frame duration (minimum frame rate) for 20638<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p> 20639 </td> 20640 20641 <td class="entry_units"> 20642 Nanoseconds 20643 </td> 20644 20645 <td class="entry_range"> 20646 <p>For FULL capability devices 20647(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p> 20648 </td> 20649 20650 <td class="entry_hal_version"> 20651 <p>3.<wbr/>2</p> 20652 </td> 20653 20654 <td class="entry_tags"> 20655 <ul class="entry_tags"> 20656 <li><a href="#tag_V1">V1</a></li> 20657 </ul> 20658 </td> 20659 20660 </tr> 20661 <tr class="entries_header"> 20662 <th class="th_details" colspan="6">Details</th> 20663 </tr> 20664 <tr class="entry_cont"> 20665 <td class="entry_details" colspan="6"> 20666 <p>Attempting to use frame durations beyond the maximum will result in the frame 20667duration being clipped to the maximum.<wbr/> See that control for a full definition of frame 20668durations.<wbr/></p> 20669<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 20670for the minimum frame duration values.<wbr/></p> 20671 </td> 20672 </tr> 20673 20674 <tr class="entries_header"> 20675 <th class="th_details" colspan="6">HAL Implementation Details</th> 20676 </tr> 20677 <tr class="entry_cont"> 20678 <td class="entry_details" colspan="6"> 20679 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 20680The maximum of the range SHOULD be at least 206811 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 20682<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 20683equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 20684value (since exposure time overrides frame duration).<wbr/></p> 20685<p>Available minimum frame durations for JPEG must be no greater 20686than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 20687minimum frame durations (for that respective size).<wbr/></p> 20688<p>Since JPEG processing is considered offline and can take longer than 20689a single uncompressed capture,<wbr/> refer to 20690<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 20691for details about encoding this scenario.<wbr/></p> 20692 </td> 20693 </tr> 20694 20695 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20696 <!-- end of entry --> 20697 20698 20699 <tr class="entry" id="static_android.sensor.info.physicalSize"> 20700 <td class="entry_name 20701 " rowspan="5"> 20702 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 20703 </td> 20704 <td class="entry_type"> 20705 <span class="entry_type_name">float</span> 20706 <span class="entry_type_container">x</span> 20707 20708 <span class="entry_type_array"> 20709 2 20710 </span> 20711 <span class="entry_type_visibility"> [public as sizeF]</span> 20712 20713 20714 <span class="entry_type_hwlevel">[legacy] </span> 20715 20716 20717 <div class="entry_type_notes">width x height</div> 20718 20719 20720 </td> <!-- entry_type --> 20721 20722 <td class="entry_description"> 20723 <p>The physical dimensions of the full pixel 20724array.<wbr/></p> 20725 </td> 20726 20727 <td class="entry_units"> 20728 Millimeters 20729 </td> 20730 20731 <td class="entry_range"> 20732 </td> 20733 20734 <td class="entry_hal_version"> 20735 <p>3.<wbr/>2</p> 20736 </td> 20737 20738 <td class="entry_tags"> 20739 <ul class="entry_tags"> 20740 <li><a href="#tag_V1">V1</a></li> 20741 <li><a href="#tag_BC">BC</a></li> 20742 </ul> 20743 </td> 20744 20745 </tr> 20746 <tr class="entries_header"> 20747 <th class="th_details" colspan="6">Details</th> 20748 </tr> 20749 <tr class="entry_cont"> 20750 <td class="entry_details" colspan="6"> 20751 <p>This is the physical size of the sensor pixel 20752array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 20753 </td> 20754 </tr> 20755 20756 <tr class="entries_header"> 20757 <th class="th_details" colspan="6">HAL Implementation Details</th> 20758 </tr> 20759 <tr class="entry_cont"> 20760 <td class="entry_details" colspan="6"> 20761 <p>Needed for FOV calculation for old API</p> 20762 </td> 20763 </tr> 20764 20765 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20766 <!-- end of entry --> 20767 20768 20769 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 20770 <td class="entry_name 20771 " rowspan="3"> 20772 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 20773 </td> 20774 <td class="entry_type"> 20775 <span class="entry_type_name">int32</span> 20776 <span class="entry_type_container">x</span> 20777 20778 <span class="entry_type_array"> 20779 2 20780 </span> 20781 <span class="entry_type_visibility"> [public as size]</span> 20782 20783 20784 <span class="entry_type_hwlevel">[legacy] </span> 20785 20786 20787 20788 20789 </td> <!-- entry_type --> 20790 20791 <td class="entry_description"> 20792 <p>Dimensions of the full pixel array,<wbr/> possibly 20793including black calibration pixels.<wbr/></p> 20794 </td> 20795 20796 <td class="entry_units"> 20797 Pixels 20798 </td> 20799 20800 <td class="entry_range"> 20801 </td> 20802 20803 <td class="entry_hal_version"> 20804 <p>3.<wbr/>2</p> 20805 </td> 20806 20807 <td class="entry_tags"> 20808 <ul class="entry_tags"> 20809 <li><a href="#tag_RAW">RAW</a></li> 20810 <li><a href="#tag_BC">BC</a></li> 20811 </ul> 20812 </td> 20813 20814 </tr> 20815 <tr class="entries_header"> 20816 <th class="th_details" colspan="6">Details</th> 20817 </tr> 20818 <tr class="entry_cont"> 20819 <td class="entry_details" colspan="6"> 20820 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers 20821<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 20822the raw buffers produced by this sensor.<wbr/></p> 20823<p>If a camera device supports raw sensor formats,<wbr/> either this or 20824<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 20825output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a> 20826(this depends on whether or not the image sensor returns buffers containing pixels that 20827are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p> 20828<p>Some parts of the full pixel array may not receive light from the scene,<wbr/> 20829or 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 20830defines the rectangle of active pixels that will be included in processed image 20831formats.<wbr/></p> 20832 </td> 20833 </tr> 20834 20835 20836 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20837 <!-- end of entry --> 20838 20839 20840 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 20841 <td class="entry_name 20842 " rowspan="5"> 20843 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 20844 </td> 20845 <td class="entry_type"> 20846 <span class="entry_type_name">int32</span> 20847 20848 <span class="entry_type_visibility"> [public]</span> 20849 20850 20851 20852 20853 20854 20855 </td> <!-- entry_type --> 20856 20857 <td class="entry_description"> 20858 <p>Maximum raw value output by sensor.<wbr/></p> 20859 </td> 20860 20861 <td class="entry_units"> 20862 </td> 20863 20864 <td class="entry_range"> 20865 <p>> 255 (8-bit output)</p> 20866 </td> 20867 20868 <td class="entry_hal_version"> 20869 <p>3.<wbr/>2</p> 20870 </td> 20871 20872 <td class="entry_tags"> 20873 <ul class="entry_tags"> 20874 <li><a href="#tag_RAW">RAW</a></li> 20875 </ul> 20876 </td> 20877 20878 </tr> 20879 <tr class="entries_header"> 20880 <th class="th_details" colspan="6">Details</th> 20881 </tr> 20882 <tr class="entry_cont"> 20883 <td class="entry_details" colspan="6"> 20884 <p>This specifies the fully-saturated encoding level for the raw 20885sample values from the sensor.<wbr/> This is typically caused by the 20886sensor becoming highly non-linear or clipping.<wbr/> The minimum for 20887each channel is specified by the offset in the 20888<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p> 20889<p>The white level is typically determined either by sensor bit depth 20890(8-14 bits is expected),<wbr/> or by the point where the sensor response 20891becomes too non-linear to be useful.<wbr/> The default value for this is 20892maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 20893<p>The white level values of captured images may vary for different 20894capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 20895represents a coarse approximation for such case.<wbr/> It is recommended 20896to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported 20897by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p> 20898 </td> 20899 </tr> 20900 20901 <tr class="entries_header"> 20902 <th class="th_details" colspan="6">HAL Implementation Details</th> 20903 </tr> 20904 <tr class="entry_cont"> 20905 <td class="entry_details" colspan="6"> 20906 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 20907so the value for linear sensors should not be significantly lower 20908than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 20909 </td> 20910 </tr> 20911 20912 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 20913 <!-- end of entry --> 20914 20915 20916 <tr class="entry" id="static_android.sensor.info.timestampSource"> 20917 <td class="entry_name 20918 " rowspan="5"> 20919 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source 20920 </td> 20921 <td class="entry_type"> 20922 <span class="entry_type_name entry_type_name_enum">byte</span> 20923 20924 <span class="entry_type_visibility"> [public]</span> 20925 20926 20927 <span class="entry_type_hwlevel">[legacy] </span> 20928 20929 20930 20931 <ul class="entry_type_enum"> 20932 <li> 20933 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span> 20934 <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/> 20935but can not be compared to timestamps from other subsystems 20936(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different 20937camera devices in the same system.<wbr/> Timestamps between streams and results for 20938a single camera instance are comparable,<wbr/> and the timestamps for all buffers 20939and the result metadata generated by a single capture are identical.<wbr/></p></span> 20940 </li> 20941 <li> 20942 <span class="entry_type_enum_name">REALTIME (v3.2)</span> 20943 <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 20944<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> 20945and they can be compared to other timestamps using that base.<wbr/></p></span> 20946 </li> 20947 </ul> 20948 20949 </td> <!-- entry_type --> 20950 20951 <td class="entry_description"> 20952 <p>The time base source for sensor capture start timestamps.<wbr/></p> 20953 </td> 20954 20955 <td class="entry_units"> 20956 </td> 20957 20958 <td class="entry_range"> 20959 </td> 20960 20961 <td class="entry_hal_version"> 20962 <p>3.<wbr/>2</p> 20963 </td> 20964 20965 <td class="entry_tags"> 20966 <ul class="entry_tags"> 20967 <li><a href="#tag_V1">V1</a></li> 20968 </ul> 20969 </td> 20970 20971 </tr> 20972 <tr class="entries_header"> 20973 <th class="th_details" colspan="6">Details</th> 20974 </tr> 20975 <tr class="entry_cont"> 20976 <td class="entry_details" colspan="6"> 20977 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but 20978may not based on a time source that can be compared to other system time sources.<wbr/></p> 20979<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they 20980can be compared against other system time sources/<wbr/>timestamps.<wbr/></p> 20981 </td> 20982 </tr> 20983 20984 <tr class="entries_header"> 20985 <th class="th_details" colspan="6">HAL Implementation Details</th> 20986 </tr> 20987 <tr class="entry_cont"> 20988 <td class="entry_details" colspan="6"> 20989 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp 20990source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera 20991framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See 20992system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and 20993SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video 20994recording might suffer unexpected behavior.<wbr/></p> 20995<p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which 20996tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p> 20997 </td> 20998 </tr> 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.sensor.info.lensShadingApplied"> 21005 <td class="entry_name 21006 " rowspan="3"> 21007 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied 21008 </td> 21009 <td class="entry_type"> 21010 <span class="entry_type_name entry_type_name_enum">byte</span> 21011 21012 <span class="entry_type_visibility"> [public as boolean]</span> 21013 21014 21015 21016 21017 21018 <ul class="entry_type_enum"> 21019 <li> 21020 <span class="entry_type_enum_name">FALSE (v3.2)</span> 21021 </li> 21022 <li> 21023 <span class="entry_type_enum_name">TRUE (v3.2)</span> 21024 </li> 21025 </ul> 21026 21027 </td> <!-- entry_type --> 21028 21029 <td class="entry_description"> 21030 <p>Whether the RAW images output from this camera device are subject to 21031lens shading correction.<wbr/></p> 21032 </td> 21033 21034 <td class="entry_units"> 21035 </td> 21036 21037 <td class="entry_range"> 21038 </td> 21039 21040 <td class="entry_hal_version"> 21041 <p>3.<wbr/>2</p> 21042 </td> 21043 21044 <td class="entry_tags"> 21045 </td> 21046 21047 </tr> 21048 <tr class="entries_header"> 21049 <th class="th_details" colspan="6">Details</th> 21050 </tr> 21051 <tr class="entry_cont"> 21052 <td class="entry_details" colspan="6"> 21053 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will 21054have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will 21055not be adjusted for lens shading correction.<wbr/> 21056See <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> 21057<p>This key will be <code>null</code> for all devices do not report this information.<wbr/> 21058Devices with RAW capability will always report this information in this key.<wbr/></p> 21059 </td> 21060 </tr> 21061 21062 21063 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21064 <!-- end of entry --> 21065 21066 21067 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize"> 21068 <td class="entry_name 21069 " rowspan="5"> 21070 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 21071 </td> 21072 <td class="entry_type"> 21073 <span class="entry_type_name">int32</span> 21074 <span class="entry_type_container">x</span> 21075 21076 <span class="entry_type_array"> 21077 4 21078 </span> 21079 <span class="entry_type_visibility"> [public as rectangle]</span> 21080 21081 21082 <span class="entry_type_hwlevel">[legacy] </span> 21083 21084 21085 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 21086 21087 21088 </td> <!-- entry_type --> 21089 21090 <td class="entry_description"> 21091 <p>The area of the image sensor which corresponds to active pixels prior to the 21092application of any geometric distortion correction.<wbr/></p> 21093 </td> 21094 21095 <td class="entry_units"> 21096 Pixel coordinates on the image sensor 21097 </td> 21098 21099 <td class="entry_range"> 21100 </td> 21101 21102 <td class="entry_hal_version"> 21103 <p>3.<wbr/>2</p> 21104 </td> 21105 21106 <td class="entry_tags"> 21107 <ul class="entry_tags"> 21108 <li><a href="#tag_RAW">RAW</a></li> 21109 </ul> 21110 </td> 21111 21112 </tr> 21113 <tr class="entries_header"> 21114 <th class="th_details" colspan="6">Details</th> 21115 </tr> 21116 <tr class="entry_cont"> 21117 <td class="entry_details" colspan="6"> 21118 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 21119the region that actually receives light from the scene) before any geometric correction 21120has been applied,<wbr/> and should be treated as the active region rectangle for any of the 21121raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading 21122correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as 21123the origin,<wbr/> (0,<wbr/>0).<wbr/></p> 21124<p>The size of this region determines the maximum field of view and the maximum number of 21125pixels that an image from this sensor can contain,<wbr/> prior to the application of 21126geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a 21127post-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> 21128field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image 21129can be calculated by applying the geometric distortion correction fields to this 21130rectangle,<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> 21131<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the 21132dimensions 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/> 21133(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in 21134<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p> 21135<ol> 21136<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in 21137<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 21138to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li> 21139<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/> 21140(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw 21141buffers is defined relative to the top,<wbr/> left of the 21142<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> 21143<li>If the resulting corrected pixel coordinate is within the region given in 21144<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 21145processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/> 21146when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li> 21147</ol> 21148<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> 21149is (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/> 21150<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 21151correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in 21152pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer 21153with 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) 21154relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in 21155<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21156<p>The currently supported fields that correct for geometric distortion are:</p> 21157<ol> 21158<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li> 21159</ol> 21160<p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same 21161as the post-distortion-corrected rectangle given in 21162<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21163<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 21164the full pixel array,<wbr/> and the size of the full pixel array is given by 21165<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21166<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the 21167full array may include black calibration pixels or other inactive regions.<wbr/></p> 21168 </td> 21169 </tr> 21170 21171 <tr class="entries_header"> 21172 <th class="th_details" colspan="6">HAL Implementation Details</th> 21173 </tr> 21174 <tr class="entry_cont"> 21175 <td class="entry_details" colspan="6"> 21176 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 21177>= <code>(0,<wbr/>0)</code>.<wbr/> 21178The <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> 21179<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is 21180the same as the post-correction active array region given in 21181<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21182 </td> 21183 </tr> 21184 21185 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21186 <!-- end of entry --> 21187 21188 21189 21190 21191 21192 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 21193 <td class="entry_name 21194 " rowspan="5"> 21195 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 21196 </td> 21197 <td class="entry_type"> 21198 <span class="entry_type_name entry_type_name_enum">byte</span> 21199 21200 <span class="entry_type_visibility"> [public]</span> 21201 21202 21203 21204 21205 21206 <ul class="entry_type_enum"> 21207 <li> 21208 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> 21209 <span class="entry_type_enum_value">1</span> 21210 </li> 21211 <li> 21212 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> 21213 <span class="entry_type_enum_value">2</span> 21214 </li> 21215 <li> 21216 <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span> 21217 <span class="entry_type_enum_value">3</span> 21218 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 21219 </li> 21220 <li> 21221 <span class="entry_type_enum_name">FLASH (v3.2)</span> 21222 <span class="entry_type_enum_value">4</span> 21223 </li> 21224 <li> 21225 <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span> 21226 <span class="entry_type_enum_value">9</span> 21227 </li> 21228 <li> 21229 <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span> 21230 <span class="entry_type_enum_value">10</span> 21231 </li> 21232 <li> 21233 <span class="entry_type_enum_name">SHADE (v3.2)</span> 21234 <span class="entry_type_enum_value">11</span> 21235 </li> 21236 <li> 21237 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span> 21238 <span class="entry_type_enum_value">12</span> 21239 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 21240 </li> 21241 <li> 21242 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span> 21243 <span class="entry_type_enum_value">13</span> 21244 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 21245 </li> 21246 <li> 21247 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span> 21248 <span class="entry_type_enum_value">14</span> 21249 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 21250 </li> 21251 <li> 21252 <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span> 21253 <span class="entry_type_enum_value">15</span> 21254 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 21255 </li> 21256 <li> 21257 <span class="entry_type_enum_name">STANDARD_A (v3.2)</span> 21258 <span class="entry_type_enum_value">17</span> 21259 </li> 21260 <li> 21261 <span class="entry_type_enum_name">STANDARD_B (v3.2)</span> 21262 <span class="entry_type_enum_value">18</span> 21263 </li> 21264 <li> 21265 <span class="entry_type_enum_name">STANDARD_C (v3.2)</span> 21266 <span class="entry_type_enum_value">19</span> 21267 </li> 21268 <li> 21269 <span class="entry_type_enum_name">D55 (v3.2)</span> 21270 <span class="entry_type_enum_value">20</span> 21271 </li> 21272 <li> 21273 <span class="entry_type_enum_name">D65 (v3.2)</span> 21274 <span class="entry_type_enum_value">21</span> 21275 </li> 21276 <li> 21277 <span class="entry_type_enum_name">D75 (v3.2)</span> 21278 <span class="entry_type_enum_value">22</span> 21279 </li> 21280 <li> 21281 <span class="entry_type_enum_name">D50 (v3.2)</span> 21282 <span class="entry_type_enum_value">23</span> 21283 </li> 21284 <li> 21285 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span> 21286 <span class="entry_type_enum_value">24</span> 21287 </li> 21288 </ul> 21289 21290 </td> <!-- entry_type --> 21291 21292 <td class="entry_description"> 21293 <p>The standard reference illuminant used as the scene light source when 21294calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 21295<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 21296<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> 21297 </td> 21298 21299 <td class="entry_units"> 21300 </td> 21301 21302 <td class="entry_range"> 21303 </td> 21304 21305 <td class="entry_hal_version"> 21306 <p>3.<wbr/>2</p> 21307 </td> 21308 21309 <td class="entry_tags"> 21310 <ul class="entry_tags"> 21311 <li><a href="#tag_RAW">RAW</a></li> 21312 </ul> 21313 </td> 21314 21315 </tr> 21316 <tr class="entries_header"> 21317 <th class="th_details" colspan="6">Details</th> 21318 </tr> 21319 <tr class="entry_cont"> 21320 <td class="entry_details" colspan="6"> 21321 <p>The values in this key correspond to the values defined for the 21322EXIF LightSource tag.<wbr/> These illuminants are standard light sources 21323that are often used calibrating camera devices.<wbr/></p> 21324<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 21325<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 21326<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> 21327<p>Some devices may choose to provide a second set of calibration 21328information for improved quality,<wbr/> including 21329<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> 21330 </td> 21331 </tr> 21332 21333 <tr class="entries_header"> 21334 <th class="th_details" colspan="6">HAL Implementation Details</th> 21335 </tr> 21336 <tr class="entry_cont"> 21337 <td class="entry_details" colspan="6"> 21338 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 21339and corresponding matrices must be present to support the RAW capability 21340and DNG output.<wbr/></p> 21341<p>When producing raw images with a color profile that has only been 21342calibrated against a single light source,<wbr/> it is valid to omit 21343<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the 21344<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/> 21345and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 21346<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be 21347chosen so that it is representative of typical scene lighting.<wbr/> In 21348general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> 21349<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and 21350<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be 21351chosen to represent the typical range of scene lighting conditions.<wbr/> 21352In general,<wbr/> low color temperature illuminant such as Standard-A will 21353be chosen for the first reference illuminant and a higher color 21354temperature illuminant such as D65 will be chosen for the second 21355reference illuminant.<wbr/></p> 21356 </td> 21357 </tr> 21358 21359 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21360 <!-- end of entry --> 21361 21362 21363 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 21364 <td class="entry_name 21365 " rowspan="3"> 21366 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 21367 </td> 21368 <td class="entry_type"> 21369 <span class="entry_type_name">byte</span> 21370 21371 <span class="entry_type_visibility"> [public]</span> 21372 21373 21374 21375 21376 21377 21378 </td> <!-- entry_type --> 21379 21380 <td class="entry_description"> 21381 <p>The standard reference illuminant used as the scene light source when 21382calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 21383<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 21384<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 21385 </td> 21386 21387 <td class="entry_units"> 21388 </td> 21389 21390 <td class="entry_range"> 21391 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p> 21392 </td> 21393 21394 <td class="entry_hal_version"> 21395 <p>3.<wbr/>2</p> 21396 </td> 21397 21398 <td class="entry_tags"> 21399 <ul class="entry_tags"> 21400 <li><a href="#tag_RAW">RAW</a></li> 21401 </ul> 21402 </td> 21403 21404 </tr> 21405 <tr class="entries_header"> 21406 <th class="th_details" colspan="6">Details</th> 21407 </tr> 21408 <tr class="entry_cont"> 21409 <td class="entry_details" colspan="6"> 21410 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p> 21411<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 21412<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 21413<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> 21414 </td> 21415 </tr> 21416 21417 21418 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21419 <!-- end of entry --> 21420 21421 21422 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 21423 <td class="entry_name 21424 " rowspan="3"> 21425 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 21426 </td> 21427 <td class="entry_type"> 21428 <span class="entry_type_name">rational</span> 21429 <span class="entry_type_container">x</span> 21430 21431 <span class="entry_type_array"> 21432 3 x 3 21433 </span> 21434 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 21435 21436 21437 21438 21439 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 21440 21441 21442 </td> <!-- entry_type --> 21443 21444 <td class="entry_description"> 21445 <p>A per-device calibration transform matrix that maps from the 21446reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> 21447 </td> 21448 21449 <td class="entry_units"> 21450 </td> 21451 21452 <td class="entry_range"> 21453 </td> 21454 21455 <td class="entry_hal_version"> 21456 <p>3.<wbr/>2</p> 21457 </td> 21458 21459 <td class="entry_tags"> 21460 <ul class="entry_tags"> 21461 <li><a href="#tag_RAW">RAW</a></li> 21462 </ul> 21463 </td> 21464 21465 </tr> 21466 <tr class="entries_header"> 21467 <th class="th_details" colspan="6">Details</th> 21468 </tr> 21469 <tr class="entry_cont"> 21470 <td class="entry_details" colspan="6"> 21471 <p>This matrix is used to correct for per-device variations in the 21472sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 21473<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 21474contains a per-device calibration transform that maps colors 21475from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 21476colorspace) into this camera device's native sensor color 21477space under the first reference illuminant 21478(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 21479 </td> 21480 </tr> 21481 21482 21483 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21484 <!-- end of entry --> 21485 21486 21487 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 21488 <td class="entry_name 21489 " rowspan="3"> 21490 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 21491 </td> 21492 <td class="entry_type"> 21493 <span class="entry_type_name">rational</span> 21494 <span class="entry_type_container">x</span> 21495 21496 <span class="entry_type_array"> 21497 3 x 3 21498 </span> 21499 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 21500 21501 21502 21503 21504 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 21505 21506 21507 </td> <!-- entry_type --> 21508 21509 <td class="entry_description"> 21510 <p>A per-device calibration transform matrix that maps from the 21511reference sensor colorspace to the actual device sensor colorspace 21512(this is the colorspace of the raw buffer data).<wbr/></p> 21513 </td> 21514 21515 <td class="entry_units"> 21516 </td> 21517 21518 <td class="entry_range"> 21519 </td> 21520 21521 <td class="entry_hal_version"> 21522 <p>3.<wbr/>2</p> 21523 </td> 21524 21525 <td class="entry_tags"> 21526 <ul class="entry_tags"> 21527 <li><a href="#tag_RAW">RAW</a></li> 21528 </ul> 21529 </td> 21530 21531 </tr> 21532 <tr class="entries_header"> 21533 <th class="th_details" colspan="6">Details</th> 21534 </tr> 21535 <tr class="entry_cont"> 21536 <td class="entry_details" colspan="6"> 21537 <p>This matrix is used to correct for per-device variations in the 21538sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 21539<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 21540contains a per-device calibration transform that maps colors 21541from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 21542colorspace) into this camera device's native sensor color 21543space under the second reference illuminant 21544(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 21545<p>This matrix will only be present if the second reference 21546illuminant is present.<wbr/></p> 21547 </td> 21548 </tr> 21549 21550 21551 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21552 <!-- end of entry --> 21553 21554 21555 <tr class="entry" id="static_android.sensor.colorTransform1"> 21556 <td class="entry_name 21557 " rowspan="3"> 21558 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 21559 </td> 21560 <td class="entry_type"> 21561 <span class="entry_type_name">rational</span> 21562 <span class="entry_type_container">x</span> 21563 21564 <span class="entry_type_array"> 21565 3 x 3 21566 </span> 21567 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 21568 21569 21570 21571 21572 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 21573 21574 21575 </td> <!-- entry_type --> 21576 21577 <td class="entry_description"> 21578 <p>A matrix that transforms color values from CIE XYZ color space to 21579reference sensor color space.<wbr/></p> 21580 </td> 21581 21582 <td class="entry_units"> 21583 </td> 21584 21585 <td class="entry_range"> 21586 </td> 21587 21588 <td class="entry_hal_version"> 21589 <p>3.<wbr/>2</p> 21590 </td> 21591 21592 <td class="entry_tags"> 21593 <ul class="entry_tags"> 21594 <li><a href="#tag_RAW">RAW</a></li> 21595 </ul> 21596 </td> 21597 21598 </tr> 21599 <tr class="entries_header"> 21600 <th class="th_details" colspan="6">Details</th> 21601 </tr> 21602 <tr class="entry_cont"> 21603 <td class="entry_details" colspan="6"> 21604 <p>This matrix is used to convert from the standard CIE XYZ color 21605space to the reference sensor colorspace,<wbr/> and is used when processing 21606raw buffer data.<wbr/></p> 21607<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 21608contains a color transform matrix that maps colors from the CIE 21609XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 21610"golden module" colorspace) under the first reference illuminant 21611(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 21612<p>The white points chosen in both the reference sensor color space 21613and the CIE XYZ colorspace when calculating this transform will 21614match the standard white point for the first reference illuminant 21615(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 21616 </td> 21617 </tr> 21618 21619 21620 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21621 <!-- end of entry --> 21622 21623 21624 <tr class="entry" id="static_android.sensor.colorTransform2"> 21625 <td class="entry_name 21626 " rowspan="3"> 21627 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 21628 </td> 21629 <td class="entry_type"> 21630 <span class="entry_type_name">rational</span> 21631 <span class="entry_type_container">x</span> 21632 21633 <span class="entry_type_array"> 21634 3 x 3 21635 </span> 21636 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 21637 21638 21639 21640 21641 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 21642 21643 21644 </td> <!-- entry_type --> 21645 21646 <td class="entry_description"> 21647 <p>A matrix that transforms color values from CIE XYZ color space to 21648reference sensor color space.<wbr/></p> 21649 </td> 21650 21651 <td class="entry_units"> 21652 </td> 21653 21654 <td class="entry_range"> 21655 </td> 21656 21657 <td class="entry_hal_version"> 21658 <p>3.<wbr/>2</p> 21659 </td> 21660 21661 <td class="entry_tags"> 21662 <ul class="entry_tags"> 21663 <li><a href="#tag_RAW">RAW</a></li> 21664 </ul> 21665 </td> 21666 21667 </tr> 21668 <tr class="entries_header"> 21669 <th class="th_details" colspan="6">Details</th> 21670 </tr> 21671 <tr class="entry_cont"> 21672 <td class="entry_details" colspan="6"> 21673 <p>This matrix is used to convert from the standard CIE XYZ color 21674space to the reference sensor colorspace,<wbr/> and is used when processing 21675raw buffer data.<wbr/></p> 21676<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 21677contains a color transform matrix that maps colors from the CIE 21678XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 21679"golden module" colorspace) under the second reference illuminant 21680(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 21681<p>The white points chosen in both the reference sensor color space 21682and the CIE XYZ colorspace when calculating this transform will 21683match the standard white point for the second reference illuminant 21684(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 21685<p>This matrix will only be present if the second reference 21686illuminant is present.<wbr/></p> 21687 </td> 21688 </tr> 21689 21690 21691 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21692 <!-- end of entry --> 21693 21694 21695 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 21696 <td class="entry_name 21697 " rowspan="3"> 21698 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 21699 </td> 21700 <td class="entry_type"> 21701 <span class="entry_type_name">rational</span> 21702 <span class="entry_type_container">x</span> 21703 21704 <span class="entry_type_array"> 21705 3 x 3 21706 </span> 21707 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 21708 21709 21710 21711 21712 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 21713 21714 21715 </td> <!-- entry_type --> 21716 21717 <td class="entry_description"> 21718 <p>A matrix that transforms white balanced camera colors from the reference 21719sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 21720 </td> 21721 21722 <td class="entry_units"> 21723 </td> 21724 21725 <td class="entry_range"> 21726 </td> 21727 21728 <td class="entry_hal_version"> 21729 <p>3.<wbr/>2</p> 21730 </td> 21731 21732 <td class="entry_tags"> 21733 <ul class="entry_tags"> 21734 <li><a href="#tag_RAW">RAW</a></li> 21735 </ul> 21736 </td> 21737 21738 </tr> 21739 <tr class="entries_header"> 21740 <th class="th_details" colspan="6">Details</th> 21741 </tr> 21742 <tr class="entry_cont"> 21743 <td class="entry_details" colspan="6"> 21744 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 21745is used when processing raw buffer data.<wbr/></p> 21746<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 21747a color transform matrix that maps white balanced colors from the 21748reference sensor color space to the CIE XYZ color space with a D50 white 21749point.<wbr/></p> 21750<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 21751this matrix is chosen so that the standard white point for this reference 21752illuminant in the reference sensor colorspace is mapped to D50 in the 21753CIE XYZ colorspace.<wbr/></p> 21754 </td> 21755 </tr> 21756 21757 21758 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21759 <!-- end of entry --> 21760 21761 21762 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 21763 <td class="entry_name 21764 " rowspan="3"> 21765 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 21766 </td> 21767 <td class="entry_type"> 21768 <span class="entry_type_name">rational</span> 21769 <span class="entry_type_container">x</span> 21770 21771 <span class="entry_type_array"> 21772 3 x 3 21773 </span> 21774 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 21775 21776 21777 21778 21779 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 21780 21781 21782 </td> <!-- entry_type --> 21783 21784 <td class="entry_description"> 21785 <p>A matrix that transforms white balanced camera colors from the reference 21786sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 21787 </td> 21788 21789 <td class="entry_units"> 21790 </td> 21791 21792 <td class="entry_range"> 21793 </td> 21794 21795 <td class="entry_hal_version"> 21796 <p>3.<wbr/>2</p> 21797 </td> 21798 21799 <td class="entry_tags"> 21800 <ul class="entry_tags"> 21801 <li><a href="#tag_RAW">RAW</a></li> 21802 </ul> 21803 </td> 21804 21805 </tr> 21806 <tr class="entries_header"> 21807 <th class="th_details" colspan="6">Details</th> 21808 </tr> 21809 <tr class="entry_cont"> 21810 <td class="entry_details" colspan="6"> 21811 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 21812is used when processing raw buffer data.<wbr/></p> 21813<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 21814a color transform matrix that maps white balanced colors from the 21815reference sensor color space to the CIE XYZ color space with a D50 white 21816point.<wbr/></p> 21817<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 21818this matrix is chosen so that the standard white point for this reference 21819illuminant in the reference sensor colorspace is mapped to D50 in the 21820CIE XYZ colorspace.<wbr/></p> 21821<p>This matrix will only be present if the second reference 21822illuminant is present.<wbr/></p> 21823 </td> 21824 </tr> 21825 21826 21827 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21828 <!-- end of entry --> 21829 21830 21831 <tr class="entry" id="static_android.sensor.baseGainFactor"> 21832 <td class="entry_name 21833 " rowspan="1"> 21834 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 21835 </td> 21836 <td class="entry_type"> 21837 <span class="entry_type_name">rational</span> 21838 21839 <span class="entry_type_visibility"> [system]</span> 21840 21841 21842 21843 21844 21845 21846 </td> <!-- entry_type --> 21847 21848 <td class="entry_description"> 21849 <p>Gain factor from electrons to raw units when 21850ISO=100</p> 21851 </td> 21852 21853 <td class="entry_units"> 21854 </td> 21855 21856 <td class="entry_range"> 21857 </td> 21858 21859 <td class="entry_hal_version"> 21860 <p>3.<wbr/>2</p> 21861 </td> 21862 21863 <td class="entry_tags"> 21864 <ul class="entry_tags"> 21865 <li><a href="#tag_FUTURE">FUTURE</a></li> 21866 </ul> 21867 </td> 21868 21869 </tr> 21870 21871 21872 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21873 <!-- end of entry --> 21874 21875 21876 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 21877 <td class="entry_name 21878 " rowspan="5"> 21879 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 21880 </td> 21881 <td class="entry_type"> 21882 <span class="entry_type_name">int32</span> 21883 <span class="entry_type_container">x</span> 21884 21885 <span class="entry_type_array"> 21886 4 21887 </span> 21888 <span class="entry_type_visibility"> [public as blackLevelPattern]</span> 21889 21890 21891 21892 21893 <div class="entry_type_notes">2x2 raw count block</div> 21894 21895 21896 </td> <!-- entry_type --> 21897 21898 <td class="entry_description"> 21899 <p>A fixed black level offset for each of the color filter arrangement 21900(CFA) mosaic channels.<wbr/></p> 21901 </td> 21902 21903 <td class="entry_units"> 21904 </td> 21905 21906 <td class="entry_range"> 21907 <p>>= 0 for each.<wbr/></p> 21908 </td> 21909 21910 <td class="entry_hal_version"> 21911 <p>3.<wbr/>2</p> 21912 </td> 21913 21914 <td class="entry_tags"> 21915 <ul class="entry_tags"> 21916 <li><a href="#tag_RAW">RAW</a></li> 21917 </ul> 21918 </td> 21919 21920 </tr> 21921 <tr class="entries_header"> 21922 <th class="th_details" colspan="6">Details</th> 21923 </tr> 21924 <tr class="entry_cont"> 21925 <td class="entry_details" colspan="6"> 21926 <p>This key specifies the zero light value for each of the CFA mosaic 21927channels in the camera sensor.<wbr/> The maximal value output by the 21928sensor 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> 21929<p>The values are given in the same order as channels listed for the CFA 21930layout 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 21931nth value given corresponds to the black level offset for the nth 21932color channel listed in the CFA.<wbr/></p> 21933<p>The black level values of captured images may vary for different 21934capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 21935represents a coarse approximation for such case.<wbr/> It is recommended to 21936use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from 21937<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when 21938supported by the camera device,<wbr/> which provides more accurate black 21939level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use 21940pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black 21941level values for each frame.<wbr/></p> 21942 </td> 21943 </tr> 21944 21945 <tr class="entries_header"> 21946 <th class="th_details" colspan="6">HAL Implementation Details</th> 21947 </tr> 21948 <tr class="entry_cont"> 21949 <td class="entry_details" colspan="6"> 21950 <p>The values are given in row-column scan order,<wbr/> with the first value 21951corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 21952 </td> 21953 </tr> 21954 21955 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 21956 <!-- end of entry --> 21957 21958 21959 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 21960 <td class="entry_name 21961 " rowspan="3"> 21962 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 21963 </td> 21964 <td class="entry_type"> 21965 <span class="entry_type_name">int32</span> 21966 21967 <span class="entry_type_visibility"> [public]</span> 21968 21969 21970 <span class="entry_type_hwlevel">[full] </span> 21971 21972 21973 21974 21975 </td> <!-- entry_type --> 21976 21977 <td class="entry_description"> 21978 <p>Maximum sensitivity that is implemented 21979purely through analog gain.<wbr/></p> 21980 </td> 21981 21982 <td class="entry_units"> 21983 </td> 21984 21985 <td class="entry_range"> 21986 </td> 21987 21988 <td class="entry_hal_version"> 21989 <p>3.<wbr/>2</p> 21990 </td> 21991 21992 <td class="entry_tags"> 21993 <ul class="entry_tags"> 21994 <li><a href="#tag_V1">V1</a></li> 21995 <li><a href="#tag_FULL">FULL</a></li> 21996 </ul> 21997 </td> 21998 21999 </tr> 22000 <tr class="entries_header"> 22001 <th class="th_details" colspan="6">Details</th> 22002 </tr> 22003 <tr class="entry_cont"> 22004 <td class="entry_details" colspan="6"> 22005 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 22006equal to this,<wbr/> all applied gain must be analog.<wbr/> For 22007values above this,<wbr/> the gain applied can be a mix of analog and 22008digital.<wbr/></p> 22009 </td> 22010 </tr> 22011 22012 22013 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22014 <!-- end of entry --> 22015 22016 22017 <tr class="entry" id="static_android.sensor.orientation"> 22018 <td class="entry_name 22019 " rowspan="3"> 22020 android.<wbr/>sensor.<wbr/>orientation 22021 </td> 22022 <td class="entry_type"> 22023 <span class="entry_type_name">int32</span> 22024 22025 <span class="entry_type_visibility"> [public]</span> 22026 22027 22028 <span class="entry_type_hwlevel">[legacy] </span> 22029 22030 22031 22032 22033 </td> <!-- entry_type --> 22034 22035 <td class="entry_description"> 22036 <p>Clockwise angle through which the output image needs to be rotated to be 22037upright on the device screen in its native orientation.<wbr/></p> 22038 </td> 22039 22040 <td class="entry_units"> 22041 Degrees of clockwise rotation; always a multiple of 22042 90 22043 </td> 22044 22045 <td class="entry_range"> 22046 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 22047 </td> 22048 22049 <td class="entry_hal_version"> 22050 <p>3.<wbr/>2</p> 22051 </td> 22052 22053 <td class="entry_tags"> 22054 <ul class="entry_tags"> 22055 <li><a href="#tag_BC">BC</a></li> 22056 </ul> 22057 </td> 22058 22059 </tr> 22060 <tr class="entries_header"> 22061 <th class="th_details" colspan="6">Details</th> 22062 </tr> 22063 <tr class="entry_cont"> 22064 <td class="entry_details" colspan="6"> 22065 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in 22066the sensor's coordinate system.<wbr/></p> 22067 </td> 22068 </tr> 22069 22070 22071 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22072 <!-- end of entry --> 22073 22074 22075 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 22076 <td class="entry_name 22077 " rowspan="3"> 22078 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 22079 </td> 22080 <td class="entry_type"> 22081 <span class="entry_type_name">int32</span> 22082 <span class="entry_type_container">x</span> 22083 22084 <span class="entry_type_array"> 22085 3 22086 </span> 22087 <span class="entry_type_visibility"> [system]</span> 22088 22089 22090 22091 22092 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 22093 22094 22095 </td> <!-- entry_type --> 22096 22097 <td class="entry_description"> 22098 <p>The number of input samples for each dimension of 22099<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 22100 </td> 22101 22102 <td class="entry_units"> 22103 </td> 22104 22105 <td class="entry_range"> 22106 <p>Hue >= 1,<wbr/> 22107Saturation >= 2,<wbr/> 22108Value >= 1</p> 22109 </td> 22110 22111 <td class="entry_hal_version"> 22112 <p>3.<wbr/>2</p> 22113 </td> 22114 22115 <td class="entry_tags"> 22116 <ul class="entry_tags"> 22117 <li><a href="#tag_RAW">RAW</a></li> 22118 </ul> 22119 </td> 22120 22121 </tr> 22122 <tr class="entries_header"> 22123 <th class="th_details" colspan="6">Details</th> 22124 </tr> 22125 <tr class="entry_cont"> 22126 <td class="entry_details" colspan="6"> 22127 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 22128dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 22129dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 22130element.<wbr/></p> 22131 </td> 22132 </tr> 22133 22134 22135 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22136 <!-- end of entry --> 22137 22138 22139 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 22140 <td class="entry_name 22141 " rowspan="5"> 22142 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 22143 </td> 22144 <td class="entry_type"> 22145 <span class="entry_type_name">int32</span> 22146 <span class="entry_type_container">x</span> 22147 22148 <span class="entry_type_array"> 22149 n 22150 </span> 22151 <span class="entry_type_visibility"> [public]</span> 22152 22153 22154 22155 22156 <div class="entry_type_notes">list of enums</div> 22157 22158 22159 </td> <!-- entry_type --> 22160 22161 <td class="entry_description"> 22162 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> 22163supported by this camera device.<wbr/></p> 22164 </td> 22165 22166 <td class="entry_units"> 22167 </td> 22168 22169 <td class="entry_range"> 22170 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p> 22171 </td> 22172 22173 <td class="entry_hal_version"> 22174 <p>3.<wbr/>2</p> 22175 </td> 22176 22177 <td class="entry_tags"> 22178 </td> 22179 22180 </tr> 22181 <tr class="entries_header"> 22182 <th class="th_details" colspan="6">Details</th> 22183 </tr> 22184 <tr class="entry_cont"> 22185 <td class="entry_details" colspan="6"> 22186 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p> 22187 </td> 22188 </tr> 22189 22190 <tr class="entries_header"> 22191 <th class="th_details" colspan="6">HAL Implementation Details</th> 22192 </tr> 22193 <tr class="entry_cont"> 22194 <td class="entry_details" colspan="6"> 22195 <p>All custom modes must be >= CUSTOM1.<wbr/></p> 22196 </td> 22197 </tr> 22198 22199 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22200 <!-- end of entry --> 22201 22202 22203 <tr class="entry" id="static_android.sensor.opticalBlackRegions"> 22204 <td class="entry_name 22205 " rowspan="5"> 22206 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions 22207 </td> 22208 <td class="entry_type"> 22209 <span class="entry_type_name">int32</span> 22210 <span class="entry_type_container">x</span> 22211 22212 <span class="entry_type_array"> 22213 4 x num_regions 22214 </span> 22215 <span class="entry_type_visibility"> [public as rectangle]</span> 22216 22217 22218 22219 22220 22221 22222 </td> <!-- entry_type --> 22223 22224 <td class="entry_description"> 22225 <p>List of disjoint rectangles indicating the sensor 22226optically shielded black pixel regions.<wbr/></p> 22227 </td> 22228 22229 <td class="entry_units"> 22230 </td> 22231 22232 <td class="entry_range"> 22233 </td> 22234 22235 <td class="entry_hal_version"> 22236 <p>3.<wbr/>2</p> 22237 </td> 22238 22239 <td class="entry_tags"> 22240 </td> 22241 22242 </tr> 22243 <tr class="entries_header"> 22244 <th class="th_details" colspan="6">Details</th> 22245 </tr> 22246 <tr class="entry_cont"> 22247 <td class="entry_details" colspan="6"> 22248 <p>In most camera sensors,<wbr/> the active array is surrounded by some 22249optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels 22250provides a reliable black reference for black level compensation 22251in active array region.<wbr/></p> 22252<p>This key provides a list of disjoint rectangles specifying the 22253regions of optically shielded (with metal shield) black pixel 22254regions if the camera device is capable of reading out these black 22255pixels in the output raw images.<wbr/> In comparison to the fixed black 22256level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key 22257may provide a more accurate way for the application to calculate 22258black level of each captured raw images.<wbr/></p> 22259<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 22260<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p> 22261 </td> 22262 </tr> 22263 22264 <tr class="entries_header"> 22265 <th class="th_details" colspan="6">HAL Implementation Details</th> 22266 </tr> 22267 <tr class="entry_cont"> 22268 <td class="entry_details" colspan="6"> 22269 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin) 22270must be >= (0,<wbr/>0) and <= 22271<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 22272<= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be 22273outside the region reported by 22274<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> 22275<p>The HAL must report minimal number of disjoint regions for the 22276optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can 22277be covered by one rectangle,<wbr/> the HAL must not split this region into 22278multiple rectangles.<wbr/></p> 22279 </td> 22280 </tr> 22281 22282 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22283 <!-- end of entry --> 22284 22285 22286 <tr class="entry" id="static_android.sensor.opaqueRawSize"> 22287 <td class="entry_name 22288 " rowspan="5"> 22289 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size 22290 </td> 22291 <td class="entry_type"> 22292 <span class="entry_type_name">int32</span> 22293 <span class="entry_type_container">x</span> 22294 22295 <span class="entry_type_array"> 22296 n x 3 22297 </span> 22298 <span class="entry_type_visibility"> [system]</span> 22299 22300 22301 22302 22303 22304 22305 </td> <!-- entry_type --> 22306 22307 <td class="entry_description"> 22308 <p>Size in bytes for all the listed opaque RAW buffer sizes</p> 22309 </td> 22310 22311 <td class="entry_units"> 22312 </td> 22313 22314 <td class="entry_range"> 22315 <p>Must be large enough to fit the opaque RAW of corresponding size produced by 22316the camera</p> 22317 </td> 22318 22319 <td class="entry_hal_version"> 22320 <p>3.<wbr/>2</p> 22321 </td> 22322 22323 <td class="entry_tags"> 22324 </td> 22325 22326 </tr> 22327 <tr class="entries_header"> 22328 <th class="th_details" colspan="6">Details</th> 22329 </tr> 22330 <tr class="entry_cont"> 22331 <td class="entry_details" colspan="6"> 22332 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/> 22333This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/> 22334All RAW_<wbr/>OPAQUE output stream configuration listed in 22335<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in 22336this key.<wbr/></p> 22337 </td> 22338 </tr> 22339 22340 <tr class="entries_header"> 22341 <th class="th_details" colspan="6">HAL Implementation Details</th> 22342 </tr> 22343 <tr class="entry_cont"> 22344 <td class="entry_details" colspan="6"> 22345 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p> 22346<p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this 22347key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera 22348framework will derive this key by assuming each pixel takes two bytes and no padding bytes 22349between rows.<wbr/></p> 22350 </td> 22351 </tr> 22352 22353 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22354 <!-- end of entry --> 22355 22356 22357 22358 <!-- end of kind --> 22359 </tbody> 22360 <tr><td colspan="7" class="kind">dynamic</td></tr> 22361 22362 <thead class="entries_header"> 22363 <tr> 22364 <th class="th_name">Property Name</th> 22365 <th class="th_type">Type</th> 22366 <th class="th_description">Description</th> 22367 <th class="th_units">Units</th> 22368 <th class="th_range">Range</th> 22369 <th class="th_hal_version">Initial HIDL HAL version</th> 22370 <th class="th_tags">Tags</th> 22371 </tr> 22372 </thead> 22373 22374 <tbody> 22375 22376 22377 22378 22379 22380 22381 22382 22383 22384 22385 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 22386 <td class="entry_name 22387 " rowspan="3"> 22388 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 22389 </td> 22390 <td class="entry_type"> 22391 <span class="entry_type_name">int64</span> 22392 22393 <span class="entry_type_visibility"> [public]</span> 22394 22395 22396 <span class="entry_type_hwlevel">[full] </span> 22397 22398 22399 22400 22401 </td> <!-- entry_type --> 22402 22403 <td class="entry_description"> 22404 <p>Duration each pixel is exposed to 22405light.<wbr/></p> 22406 </td> 22407 22408 <td class="entry_units"> 22409 Nanoseconds 22410 </td> 22411 22412 <td class="entry_range"> 22413 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 22414 </td> 22415 22416 <td class="entry_hal_version"> 22417 <p>3.<wbr/>2</p> 22418 </td> 22419 22420 <td class="entry_tags"> 22421 <ul class="entry_tags"> 22422 <li><a href="#tag_V1">V1</a></li> 22423 </ul> 22424 </td> 22425 22426 </tr> 22427 <tr class="entries_header"> 22428 <th class="th_details" colspan="6">Details</th> 22429 </tr> 22430 <tr class="entry_cont"> 22431 <td class="entry_details" colspan="6"> 22432 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 22433duration exposed to the nearest possible value (rather than expose longer).<wbr/> 22434The final exposure time used will be available in the output capture result.<wbr/></p> 22435<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 22436OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 22437 </td> 22438 </tr> 22439 22440 22441 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22442 <!-- end of entry --> 22443 22444 22445 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 22446 <td class="entry_name 22447 " rowspan="5"> 22448 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 22449 </td> 22450 <td class="entry_type"> 22451 <span class="entry_type_name">int64</span> 22452 22453 <span class="entry_type_visibility"> [public]</span> 22454 22455 22456 <span class="entry_type_hwlevel">[full] </span> 22457 22458 22459 22460 22461 </td> <!-- entry_type --> 22462 22463 <td class="entry_description"> 22464 <p>Duration from start of frame exposure to 22465start of next frame exposure.<wbr/></p> 22466 </td> 22467 22468 <td class="entry_units"> 22469 Nanoseconds 22470 </td> 22471 22472 <td class="entry_range"> 22473 <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/> 22474The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 22475 </td> 22476 22477 <td class="entry_hal_version"> 22478 <p>3.<wbr/>2</p> 22479 </td> 22480 22481 <td class="entry_tags"> 22482 <ul class="entry_tags"> 22483 <li><a href="#tag_V1">V1</a></li> 22484 </ul> 22485 </td> 22486 22487 </tr> 22488 <tr class="entries_header"> 22489 <th class="th_details" colspan="6">Details</th> 22490 </tr> 22491 <tr class="entry_cont"> 22492 <td class="entry_details" colspan="6"> 22493 <p>The maximum frame rate that can be supported by a camera subsystem is 22494a function of many factors:</p> 22495<ul> 22496<li>Requested resolutions of output image streams</li> 22497<li>Availability of binning /<wbr/> skipping modes on the imager</li> 22498<li>The bandwidth of the imager interface</li> 22499<li>The bandwidth of the various ISP processing blocks</li> 22500</ul> 22501<p>Since these factors can vary greatly between different ISPs and 22502sensors,<wbr/> the camera abstraction tries to represent the bandwidth 22503restrictions with as simple a model as possible.<wbr/></p> 22504<p>The model presented has the following characteristics:</p> 22505<ul> 22506<li>The image sensor is always configured to output the smallest 22507resolution possible given the application's requested output stream 22508sizes.<wbr/> The smallest resolution is defined as being at least as large 22509as the largest requested output stream size; the camera pipeline must 22510never digitally upsample sensor data when the crop region covers the 22511whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 22512resolutions are configured,<wbr/> the sensor can provide a higher frame 22513rate.<wbr/></li> 22514<li>Since any request may use any or all the currently configured 22515output streams,<wbr/> the sensor and ISP must be configured to support 22516scaling a single capture to all the streams at the same time.<wbr/> This 22517means the camera pipeline must be ready to produce the largest 22518requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 22519frame rate of a given configured stream set is governed only by the 22520largest requested stream resolution.<wbr/></li> 22521<li>Using more than one output stream in a request does not affect the 22522frame duration.<wbr/></li> 22523<li>Certain format-streams may need to do additional background processing 22524before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 22525can run concurrently to the rest of the camera pipeline,<wbr/> but 22526cannot process more than 1 capture at a time.<wbr/></li> 22527</ul> 22528<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via 22529<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 22530These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is 22531possible for a given stream configuration.<wbr/></p> 22532<p>Specifically,<wbr/> the application can use the following rules to 22533determine the minimum frame duration it can request from the camera 22534device:</p> 22535<ol> 22536<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li> 22537<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> 22538(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li> 22539<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum 22540out 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> 22541</ol> 22542<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> 22543using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady 22544state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let 22545this special kind of request be called <code>Rsimple</code>.<wbr/></p> 22546<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a 22547new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if 22548<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all 22549buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p> 22550<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> 22551<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 22552OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 22553 </td> 22554 </tr> 22555 22556 <tr class="entries_header"> 22557 <th class="th_details" colspan="6">HAL Implementation Details</th> 22558 </tr> 22559 <tr class="entry_cont"> 22560 <td class="entry_details" colspan="6"> 22561 <p>For more details about stalling,<wbr/> see 22562<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 22563 </td> 22564 </tr> 22565 22566 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22567 <!-- end of entry --> 22568 22569 22570 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 22571 <td class="entry_name 22572 " rowspan="5"> 22573 android.<wbr/>sensor.<wbr/>sensitivity 22574 </td> 22575 <td class="entry_type"> 22576 <span class="entry_type_name">int32</span> 22577 22578 <span class="entry_type_visibility"> [public]</span> 22579 22580 22581 <span class="entry_type_hwlevel">[full] </span> 22582 22583 22584 22585 22586 </td> <!-- entry_type --> 22587 22588 <td class="entry_description"> 22589 <p>The amount of gain applied to sensor data 22590before processing.<wbr/></p> 22591 </td> 22592 22593 <td class="entry_units"> 22594 ISO arithmetic units 22595 </td> 22596 22597 <td class="entry_range"> 22598 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 22599 </td> 22600 22601 <td class="entry_hal_version"> 22602 <p>3.<wbr/>2</p> 22603 </td> 22604 22605 <td class="entry_tags"> 22606 <ul class="entry_tags"> 22607 <li><a href="#tag_V1">V1</a></li> 22608 </ul> 22609 </td> 22610 22611 </tr> 22612 <tr class="entries_header"> 22613 <th class="th_details" colspan="6">Details</th> 22614 </tr> 22615 <tr class="entry_cont"> 22616 <td class="entry_details" colspan="6"> 22617 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 22618as defined in ISO 12232:2006.<wbr/></p> 22619<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 22620if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 22621is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 22622<p>If the camera device cannot apply the exact sensitivity 22623requested,<wbr/> it will reduce the gain to the nearest supported 22624value.<wbr/> The final sensitivity used will be available in the 22625output capture result.<wbr/></p> 22626<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 22627OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 22628 </td> 22629 </tr> 22630 22631 <tr class="entries_header"> 22632 <th class="th_details" colspan="6">HAL Implementation Details</th> 22633 </tr> 22634 <tr class="entry_cont"> 22635 <td class="entry_details" colspan="6"> 22636 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 22637 </td> 22638 </tr> 22639 22640 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22641 <!-- end of entry --> 22642 22643 22644 <tr class="entry" id="dynamic_android.sensor.timestamp"> 22645 <td class="entry_name 22646 " rowspan="5"> 22647 android.<wbr/>sensor.<wbr/>timestamp 22648 </td> 22649 <td class="entry_type"> 22650 <span class="entry_type_name">int64</span> 22651 22652 <span class="entry_type_visibility"> [public]</span> 22653 22654 22655 <span class="entry_type_hwlevel">[legacy] </span> 22656 22657 22658 22659 22660 </td> <!-- entry_type --> 22661 22662 <td class="entry_description"> 22663 <p>Time at start of exposure of first 22664row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p> 22665 </td> 22666 22667 <td class="entry_units"> 22668 Nanoseconds 22669 </td> 22670 22671 <td class="entry_range"> 22672 <p>> 0</p> 22673 </td> 22674 22675 <td class="entry_hal_version"> 22676 <p>3.<wbr/>2</p> 22677 </td> 22678 22679 <td class="entry_tags"> 22680 <ul class="entry_tags"> 22681 <li><a href="#tag_BC">BC</a></li> 22682 </ul> 22683 </td> 22684 22685 </tr> 22686 <tr class="entries_header"> 22687 <th class="th_details" colspan="6">Details</th> 22688 </tr> 22689 <tr class="entry_cont"> 22690 <td class="entry_details" colspan="6"> 22691 <p>The timestamps are also included in all image 22692buffers produced for the same capture,<wbr/> and will be identical 22693on all the outputs.<wbr/></p> 22694<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/> 22695the timestamps measure time since an unspecified starting point,<wbr/> 22696and are monotonically increasing.<wbr/> They can be compared with the 22697timestamps for other captures from the same camera device,<wbr/> but are 22698not guaranteed to be comparable to any other time source.<wbr/></p> 22699<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the 22700timestamps 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 22701be compared to other timestamps from other subsystems that 22702are using that base.<wbr/></p> 22703<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of 22704the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the 22705timestamp</a> in the TotalCaptureResult that was used to create the 22706reprocess capture request.<wbr/></p> 22707 </td> 22708 </tr> 22709 22710 <tr class="entries_header"> 22711 <th class="th_details" colspan="6">HAL Implementation Details</th> 22712 </tr> 22713 <tr class="entry_cont"> 22714 <td class="entry_details" colspan="6"> 22715 <p>All timestamps must be in reference to the kernel's 22716CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for 22717time spent asleep.<wbr/> This allows for synchronization with 22718sensors that continue to operate while the system is 22719otherwise asleep.<wbr/></p> 22720<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 22721The timestamp must be synchronized with the timestamps from other 22722sensor subsystems that are using the same timebase.<wbr/></p> 22723<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up 22724with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the 22725capture request.<wbr/></p> 22726 </td> 22727 </tr> 22728 22729 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22730 <!-- end of entry --> 22731 22732 22733 <tr class="entry" id="dynamic_android.sensor.temperature"> 22734 <td class="entry_name 22735 " rowspan="1"> 22736 android.<wbr/>sensor.<wbr/>temperature 22737 </td> 22738 <td class="entry_type"> 22739 <span class="entry_type_name">float</span> 22740 22741 <span class="entry_type_visibility"> [system]</span> 22742 22743 22744 22745 22746 22747 22748 </td> <!-- entry_type --> 22749 22750 <td class="entry_description"> 22751 <p>The temperature of the sensor,<wbr/> sampled at the time 22752exposure began for this frame.<wbr/></p> 22753<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 22754somewhere close to it.<wbr/></p> 22755 </td> 22756 22757 <td class="entry_units"> 22758 Celsius 22759 </td> 22760 22761 <td class="entry_range"> 22762 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 22763 </td> 22764 22765 <td class="entry_hal_version"> 22766 <p>3.<wbr/>2</p> 22767 </td> 22768 22769 <td class="entry_tags"> 22770 <ul class="entry_tags"> 22771 <li><a href="#tag_FUTURE">FUTURE</a></li> 22772 </ul> 22773 </td> 22774 22775 </tr> 22776 22777 22778 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22779 <!-- end of entry --> 22780 22781 22782 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 22783 <td class="entry_name 22784 " rowspan="3"> 22785 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 22786 </td> 22787 <td class="entry_type"> 22788 <span class="entry_type_name">rational</span> 22789 <span class="entry_type_container">x</span> 22790 22791 <span class="entry_type_array"> 22792 3 22793 </span> 22794 <span class="entry_type_visibility"> [public]</span> 22795 22796 22797 22798 22799 22800 22801 </td> <!-- entry_type --> 22802 22803 <td class="entry_description"> 22804 <p>The estimated camera neutral color in the native sensor colorspace at 22805the time of capture.<wbr/></p> 22806 </td> 22807 22808 <td class="entry_units"> 22809 </td> 22810 22811 <td class="entry_range"> 22812 </td> 22813 22814 <td class="entry_hal_version"> 22815 <p>3.<wbr/>2</p> 22816 </td> 22817 22818 <td class="entry_tags"> 22819 <ul class="entry_tags"> 22820 <li><a href="#tag_RAW">RAW</a></li> 22821 </ul> 22822 </td> 22823 22824 </tr> 22825 <tr class="entries_header"> 22826 <th class="th_details" colspan="6">Details</th> 22827 </tr> 22828 <tr class="entry_cont"> 22829 <td class="entry_details" colspan="6"> 22830 <p>This value gives the neutral color point encoded as an RGB value in the 22831native sensor color space.<wbr/> The neutral color point indicates the 22832currently estimated white point of the scene illumination.<wbr/> It can be 22833used to interpolate between the provided color transforms when 22834processing raw sensor data.<wbr/></p> 22835<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 22836 </td> 22837 </tr> 22838 22839 22840 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22841 <!-- end of entry --> 22842 22843 22844 <tr class="entry" id="dynamic_android.sensor.noiseProfile"> 22845 <td class="entry_name 22846 " rowspan="5"> 22847 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile 22848 </td> 22849 <td class="entry_type"> 22850 <span class="entry_type_name">double</span> 22851 <span class="entry_type_container">x</span> 22852 22853 <span class="entry_type_array"> 22854 2 x CFA Channels 22855 </span> 22856 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span> 22857 22858 22859 22860 22861 <div class="entry_type_notes">Pairs of noise model coefficients</div> 22862 22863 22864 </td> <!-- entry_type --> 22865 22866 <td class="entry_description"> 22867 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p> 22868 </td> 22869 22870 <td class="entry_units"> 22871 </td> 22872 22873 <td class="entry_range"> 22874 </td> 22875 22876 <td class="entry_hal_version"> 22877 <p>3.<wbr/>2</p> 22878 </td> 22879 22880 <td class="entry_tags"> 22881 <ul class="entry_tags"> 22882 <li><a href="#tag_RAW">RAW</a></li> 22883 </ul> 22884 </td> 22885 22886 </tr> 22887 <tr class="entries_header"> 22888 <th class="th_details" colspan="6">Details</th> 22889 </tr> 22890 <tr class="entry_cont"> 22891 <td class="entry_details" colspan="6"> 22892 <p>This key contains two noise model coefficients for each CFA channel 22893corresponding to the sensor amplification (S) and sensor readout 22894noise (O).<wbr/> These are given as pairs of coefficients for each channel 22895in the same order as channels listed for the CFA layout key 22896(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is 22897represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where 22898the first member of the Pair at index n is the S coefficient and the 22899second member is the O coefficient for the nth color channel in the CFA.<wbr/></p> 22900<p>These coefficients are used in a two parameter noise model to describe 22901the amount of noise present in the image for each CFA channel.<wbr/> The 22902noise model used here is:</p> 22903<p>N(x) = sqrt(Sx + O)</p> 22904<p>Where x represents the recorded signal of a CFA channel normalized to 22905the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for 22906that channel.<wbr/></p> 22907<p>A more detailed description of the noise model can be found in the 22908Adobe DNG specification for the NoiseProfile tag.<wbr/></p> 22909 </td> 22910 </tr> 22911 22912 <tr class="entries_header"> 22913 <th class="th_details" colspan="6">HAL Implementation Details</th> 22914 </tr> 22915 <tr class="entry_cont"> 22916 <td class="entry_details" colspan="6"> 22917 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as 22918an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients 22919for the red channel,<wbr/> S1 and O1 are the coefficients for the first green 22920channel,<wbr/> etc.<wbr/></p> 22921 </td> 22922 </tr> 22923 22924 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22925 <!-- end of entry --> 22926 22927 22928 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 22929 <td class="entry_name 22930 " rowspan="3"> 22931 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 22932 </td> 22933 <td class="entry_type"> 22934 <span class="entry_type_name">float</span> 22935 <span class="entry_type_container">x</span> 22936 22937 <span class="entry_type_array"> 22938 hue_samples x saturation_samples x value_samples x 3 22939 </span> 22940 <span class="entry_type_visibility"> [system]</span> 22941 22942 22943 22944 22945 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 22946 22947 22948 </td> <!-- entry_type --> 22949 22950 <td class="entry_description"> 22951 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 22952for each pixel.<wbr/></p> 22953 </td> 22954 22955 <td class="entry_units"> 22956 22957 The hue shift is given in degrees; saturation and value scale factors are 22958 unitless and are between 0 and 1 inclusive 22959 22960 </td> 22961 22962 <td class="entry_range"> 22963 </td> 22964 22965 <td class="entry_hal_version"> 22966 <p>3.<wbr/>2</p> 22967 </td> 22968 22969 <td class="entry_tags"> 22970 <ul class="entry_tags"> 22971 <li><a href="#tag_RAW">RAW</a></li> 22972 </ul> 22973 </td> 22974 22975 </tr> 22976 <tr class="entries_header"> 22977 <th class="th_details" colspan="6">Details</th> 22978 </tr> 22979 <tr class="entry_cont"> 22980 <td class="entry_details" colspan="6"> 22981 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 22982<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 22983<p>Each entry of this map contains three floats corresponding to the 22984hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 22985hue shift has the lowest index.<wbr/> The map entries are stored in the key 22986in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 22987hue divisions in the middle loop,<wbr/> and the saturation divisions in the 22988inner loop.<wbr/> All zero input saturation entries are required to have a 22989value scale factor of 1.<wbr/>0.<wbr/></p> 22990 </td> 22991 </tr> 22992 22993 22994 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 22995 <!-- end of entry --> 22996 22997 22998 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 22999 <td class="entry_name 23000 " rowspan="3"> 23001 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 23002 </td> 23003 <td class="entry_type"> 23004 <span class="entry_type_name">float</span> 23005 <span class="entry_type_container">x</span> 23006 23007 <span class="entry_type_array"> 23008 samples x 2 23009 </span> 23010 <span class="entry_type_visibility"> [system]</span> 23011 23012 23013 23014 23015 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 23016 23017 23018 </td> <!-- entry_type --> 23019 23020 <td class="entry_description"> 23021 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 23022 </td> 23023 23024 <td class="entry_units"> 23025 </td> 23026 23027 <td class="entry_range"> 23028 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 23029<code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 23030sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 23031 </td> 23032 23033 <td class="entry_hal_version"> 23034 <p>3.<wbr/>2</p> 23035 </td> 23036 23037 <td class="entry_tags"> 23038 <ul class="entry_tags"> 23039 <li><a href="#tag_RAW">RAW</a></li> 23040 </ul> 23041 </td> 23042 23043 </tr> 23044 <tr class="entries_header"> 23045 <th class="th_details" colspan="6">Details</th> 23046 </tr> 23047 <tr class="entry_cont"> 23048 <td class="entry_details" colspan="6"> 23049 <p>This key contains a default tone curve that can be applied while 23050processing the image as a starting point for user adjustments.<wbr/> 23051The curve is specified as a list of value pairs in linear gamma.<wbr/> 23052The curve is interpolated using a cubic spline.<wbr/></p> 23053 </td> 23054 </tr> 23055 23056 23057 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23058 <!-- end of entry --> 23059 23060 23061 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 23062 <td class="entry_name 23063 " rowspan="5"> 23064 android.<wbr/>sensor.<wbr/>green<wbr/>Split 23065 </td> 23066 <td class="entry_type"> 23067 <span class="entry_type_name">float</span> 23068 23069 <span class="entry_type_visibility"> [public]</span> 23070 23071 23072 23073 23074 23075 23076 </td> <!-- entry_type --> 23077 23078 <td class="entry_description"> 23079 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 23080 </td> 23081 23082 <td class="entry_units"> 23083 </td> 23084 23085 <td class="entry_range"> 23086 <p>>= 0</p> 23087 </td> 23088 23089 <td class="entry_hal_version"> 23090 <p>3.<wbr/>2</p> 23091 </td> 23092 23093 <td class="entry_tags"> 23094 <ul class="entry_tags"> 23095 <li><a href="#tag_RAW">RAW</a></li> 23096 </ul> 23097 </td> 23098 23099 </tr> 23100 <tr class="entries_header"> 23101 <th class="th_details" colspan="6">Details</th> 23102 </tr> 23103 <tr class="entry_cont"> 23104 <td class="entry_details" colspan="6"> 23105 <p>This value is an estimate of the worst case split between the 23106Bayer green channels in the red and blue rows in the sensor color 23107filter array.<wbr/></p> 23108<p>The green split is calculated as follows:</p> 23109<ol> 23110<li>A 5x5 pixel (or larger) window W within the active sensor array is 23111chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 23112mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 23113chosen is implementation defined,<wbr/> and should be chosen to provide a 23114green split estimate that is both representative of the entire image 23115for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 23116<li>The arithmetic mean of the green channels from the red 23117rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 23118<li>The arithmetic mean of the green channels from the blue 23119rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 23120<li>The maximum ratio R of the two means is computed as follows: 23121<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 23122</ol> 23123<p>The ratio R is the green split divergence reported for this property,<wbr/> 23124which represents how much the green channels differ in the mosaic 23125pattern.<wbr/> This value is typically used to determine the treatment of 23126the green mosaic channels when demosaicing.<wbr/></p> 23127<p>The green split value can be roughly interpreted as follows:</p> 23128<ul> 23129<li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 23130<li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 23131correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 23132<li>R > 1.<wbr/>20 will require strong software correction to produce 23133a usuable image (>20% divergence).<wbr/></li> 23134</ul> 23135 </td> 23136 </tr> 23137 23138 <tr class="entries_header"> 23139 <th class="th_details" colspan="6">HAL Implementation Details</th> 23140 </tr> 23141 <tr class="entry_cont"> 23142 <td class="entry_details" colspan="6"> 23143 <p>The green split given may be a static value based on prior 23144characterization of the camera sensor using the green split 23145calculation method given here over a large,<wbr/> representative,<wbr/> sample 23146set of images.<wbr/> Other methods of calculation that produce equivalent 23147results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 23148 </td> 23149 </tr> 23150 23151 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23152 <!-- end of entry --> 23153 23154 23155 <tr class="entry" id="dynamic_android.sensor.testPatternData"> 23156 <td class="entry_name 23157 " rowspan="5"> 23158 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 23159 </td> 23160 <td class="entry_type"> 23161 <span class="entry_type_name">int32</span> 23162 <span class="entry_type_container">x</span> 23163 23164 <span class="entry_type_array"> 23165 4 23166 </span> 23167 <span class="entry_type_visibility"> [public]</span> 23168 23169 23170 23171 23172 23173 23174 </td> <!-- entry_type --> 23175 23176 <td class="entry_description"> 23177 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 23178when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 23179 </td> 23180 23181 <td class="entry_units"> 23182 </td> 23183 23184 <td class="entry_range"> 23185 </td> 23186 23187 <td class="entry_hal_version"> 23188 <p>3.<wbr/>2</p> 23189 </td> 23190 23191 <td class="entry_tags"> 23192 </td> 23193 23194 </tr> 23195 <tr class="entries_header"> 23196 <th class="th_details" colspan="6">Details</th> 23197 </tr> 23198 <tr class="entry_cont"> 23199 <td class="entry_details" colspan="6"> 23200 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 23201The camera device then uses the most significant X bits 23202that correspond to how many bits are in its Bayer raw sensor 23203output.<wbr/></p> 23204<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 2320510 most significant bits from each color channel.<wbr/></p> 23206 </td> 23207 </tr> 23208 23209 <tr class="entries_header"> 23210 <th class="th_details" colspan="6">HAL Implementation Details</th> 23211 </tr> 23212 <tr class="entry_cont"> 23213 <td class="entry_details" colspan="6"> 23214 23215 </td> 23216 </tr> 23217 23218 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23219 <!-- end of entry --> 23220 23221 23222 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 23223 <td class="entry_name 23224 " rowspan="5"> 23225 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 23226 </td> 23227 <td class="entry_type"> 23228 <span class="entry_type_name entry_type_name_enum">int32</span> 23229 23230 <span class="entry_type_visibility"> [public]</span> 23231 23232 23233 23234 23235 23236 <ul class="entry_type_enum"> 23237 <li> 23238 <span class="entry_type_enum_name">OFF (v3.2)</span> 23239 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 23240device returns captures from the image sensor.<wbr/></p> 23241<p>This is the default if the key is not set.<wbr/></p></span> 23242 </li> 23243 <li> 23244 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span> 23245 <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 23246respective color channel provided in 23247<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 23248<p>For example:</p> 23249<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 23250</code></pre> 23251<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 23252<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 23253</code></pre> 23254<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 23255are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 23256 </li> 23257 <li> 23258 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span> 23259 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 23260<p>The vertical bars (left-to-right) are as follows:</p> 23261<ul> 23262<li>100% white</li> 23263<li>yellow</li> 23264<li>cyan</li> 23265<li>green</li> 23266<li>magenta</li> 23267<li>red</li> 23268<li>blue</li> 23269<li>black</li> 23270</ul> 23271<p>In general the image would look like the following:</p> 23272<pre><code>W Y C G M R B K 23273W Y C G M R B K 23274W Y C G M R B K 23275W Y C G M R B K 23276W Y C G M R B K 23277.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 23278.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 23279.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 23280 23281(B = Blue,<wbr/> K = Black) 23282</code></pre> 23283<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 23284When this is not possible,<wbr/> the bar size should be rounded 23285down to the nearest integer and the pattern can repeat 23286on the right side.<wbr/></p> 23287<p>Each bar's height must always take up the full sensor 23288pixel array height.<wbr/></p> 23289<p>Each pixel in this test pattern must be set to either 232900% intensity or 100% intensity.<wbr/></p></span> 23291 </li> 23292 <li> 23293 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span> 23294 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 23295each bar should start at its specified color at the top,<wbr/> 23296and fade to gray at the bottom.<wbr/></p> 23297<p>Furthermore each bar is further subdivided into a left and 23298right half.<wbr/> The left half should have a smooth gradient,<wbr/> 23299and the right half should have a quantized gradient.<wbr/></p> 23300<p>In particular,<wbr/> the right half's should consist of blocks of the 23301same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 23302<p>The least significant bits in the quantized gradient should 23303be copied from the most significant bits of the smooth gradient.<wbr/></p> 23304<p>The height of each bar should always be a multiple of 128.<wbr/> 23305When this is not the case,<wbr/> the pattern should repeat at the bottom 23306of the image.<wbr/></p></span> 23307 </li> 23308 <li> 23309 <span class="entry_type_enum_name">PN9 (v3.2)</span> 23310 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 23311generated from a PN9 512-bit sequence (typically implemented 23312in hardware with a linear feedback shift register).<wbr/></p> 23313<p>The generator should be reset at the beginning of each frame,<wbr/> 23314and thus each subsequent raw frame with this test pattern should 23315be exactly the same as the last.<wbr/></p></span> 23316 </li> 23317 <li> 23318 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span> 23319 <span class="entry_type_enum_value">256</span> 23320 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 23321available only on this camera device are at least this numeric 23322value.<wbr/></p> 23323<p>All of the custom test patterns will be static 23324(that is the raw image must not vary from frame to frame).<wbr/></p></span> 23325 </li> 23326 </ul> 23327 23328 </td> <!-- entry_type --> 23329 23330 <td class="entry_description"> 23331 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 23332doing a real exposure from the camera.<wbr/></p> 23333 </td> 23334 23335 <td class="entry_units"> 23336 </td> 23337 23338 <td class="entry_range"> 23339 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 23340 </td> 23341 23342 <td class="entry_hal_version"> 23343 <p>3.<wbr/>2</p> 23344 </td> 23345 23346 <td class="entry_tags"> 23347 </td> 23348 23349 </tr> 23350 <tr class="entries_header"> 23351 <th class="th_details" colspan="6">Details</th> 23352 </tr> 23353 <tr class="entry_cont"> 23354 <td class="entry_details" colspan="6"> 23355 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 23356by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 23357work as normal.<wbr/></p> 23358<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 23359occur (and that the test pattern remain unmodified,<wbr/> since the flash 23360would not actually affect it).<wbr/></p> 23361<p>Defaults to OFF.<wbr/></p> 23362 </td> 23363 </tr> 23364 23365 <tr class="entries_header"> 23366 <th class="th_details" colspan="6">HAL Implementation Details</th> 23367 </tr> 23368 <tr class="entry_cont"> 23369 <td class="entry_details" colspan="6"> 23370 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 23371<p>The HAL may choose to substitute test patterns from the sensor 23372with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 23373indistinguishable to the ISP whether the data came from the 23374sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 23375 </td> 23376 </tr> 23377 23378 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23379 <!-- end of entry --> 23380 23381 23382 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew"> 23383 <td class="entry_name 23384 " rowspan="5"> 23385 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew 23386 </td> 23387 <td class="entry_type"> 23388 <span class="entry_type_name">int64</span> 23389 23390 <span class="entry_type_visibility"> [public]</span> 23391 23392 23393 <span class="entry_type_hwlevel">[limited] </span> 23394 23395 23396 23397 23398 </td> <!-- entry_type --> 23399 23400 <td class="entry_description"> 23401 <p>Duration between the start of first row exposure 23402and the start of last row exposure.<wbr/></p> 23403 </td> 23404 23405 <td class="entry_units"> 23406 Nanoseconds 23407 </td> 23408 23409 <td class="entry_range"> 23410 <p>>= 0 and < 23411<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p> 23412 </td> 23413 23414 <td class="entry_hal_version"> 23415 <p>3.<wbr/>2</p> 23416 </td> 23417 23418 <td class="entry_tags"> 23419 <ul class="entry_tags"> 23420 <li><a href="#tag_V1">V1</a></li> 23421 </ul> 23422 </td> 23423 23424 </tr> 23425 <tr class="entries_header"> 23426 <th class="th_details" colspan="6">Details</th> 23427 </tr> 23428 <tr class="entry_cont"> 23429 <td class="entry_details" colspan="6"> 23430 <p>This is the exposure time skew between the first and last 23431row exposure start times.<wbr/> The first row and the last row are 23432the first and last rows inside of the 23433<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 23434<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent 23435to the frame readout time.<wbr/></p> 23436 </td> 23437 </tr> 23438 23439 <tr class="entries_header"> 23440 <th class="th_details" colspan="6">HAL Implementation Details</th> 23441 </tr> 23442 <tr class="entry_cont"> 23443 <td class="entry_details" colspan="6"> 23444 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin 23445exposure at the same time.<wbr/></p> 23446 </td> 23447 </tr> 23448 23449 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23450 <!-- end of entry --> 23451 23452 23453 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel"> 23454 <td class="entry_name 23455 " rowspan="5"> 23456 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level 23457 </td> 23458 <td class="entry_type"> 23459 <span class="entry_type_name">float</span> 23460 <span class="entry_type_container">x</span> 23461 23462 <span class="entry_type_array"> 23463 4 23464 </span> 23465 <span class="entry_type_visibility"> [public]</span> 23466 23467 23468 23469 23470 <div class="entry_type_notes">2x2 raw count block</div> 23471 23472 23473 </td> <!-- entry_type --> 23474 23475 <td class="entry_description"> 23476 <p>A per-frame dynamic black level offset for each of the color filter 23477arrangement (CFA) mosaic channels.<wbr/></p> 23478 </td> 23479 23480 <td class="entry_units"> 23481 </td> 23482 23483 <td class="entry_range"> 23484 <p>>= 0 for each.<wbr/></p> 23485 </td> 23486 23487 <td class="entry_hal_version"> 23488 <p>3.<wbr/>2</p> 23489 </td> 23490 23491 <td class="entry_tags"> 23492 <ul class="entry_tags"> 23493 <li><a href="#tag_RAW">RAW</a></li> 23494 </ul> 23495 </td> 23496 23497 </tr> 23498 <tr class="entries_header"> 23499 <th class="th_details" colspan="6">Details</th> 23500 </tr> 23501 <tr class="entry_cont"> 23502 <td class="entry_details" colspan="6"> 23503 <p>Camera sensor black levels may vary dramatically for different 23504capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black 23505level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too 23506inaccurate to represent the actual value on a per-frame basis.<wbr/> The 23507camera device internal pipeline relies on reliable black level values 23508to process the raw images appropriately.<wbr/> To get the best image 23509quality,<wbr/> the camera device may choose to estimate the per frame black 23510level values either based on optically shielded black regions 23511(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p> 23512<p>This key reports the camera device estimated per-frame zero light 23513value for each of the CFA mosaic channels in the camera sensor.<wbr/> The 23514<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse 23515approximation of the actual black level values.<wbr/> This value is the 23516black level used in camera device internal image processing pipeline 23517and generally more accurate than the fixed black level values.<wbr/> 23518However,<wbr/> since they are estimated values by the camera device,<wbr/> they 23519may not be as accurate as the black level values calculated from the 23520optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p> 23521<p>The values are given in the same order as channels listed for the CFA 23522layout 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 23523nth value given corresponds to the black level offset for the nth 23524color channel listed in the CFA.<wbr/></p> 23525<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 23526camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p> 23527 </td> 23528 </tr> 23529 23530 <tr class="entries_header"> 23531 <th class="th_details" colspan="6">HAL Implementation Details</th> 23532 </tr> 23533 <tr class="entry_cont"> 23534 <td class="entry_details" colspan="6"> 23535 <p>The values are given in row-column scan order,<wbr/> with the first value 23536corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 23537 </td> 23538 </tr> 23539 23540 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23541 <!-- end of entry --> 23542 23543 23544 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel"> 23545 <td class="entry_name 23546 " rowspan="5"> 23547 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level 23548 </td> 23549 <td class="entry_type"> 23550 <span class="entry_type_name">int32</span> 23551 23552 <span class="entry_type_visibility"> [public]</span> 23553 23554 23555 23556 23557 23558 23559 </td> <!-- entry_type --> 23560 23561 <td class="entry_description"> 23562 <p>Maximum raw value output by sensor for this frame.<wbr/></p> 23563 </td> 23564 23565 <td class="entry_units"> 23566 </td> 23567 23568 <td class="entry_range"> 23569 <p>>= 0</p> 23570 </td> 23571 23572 <td class="entry_hal_version"> 23573 <p>3.<wbr/>2</p> 23574 </td> 23575 23576 <td class="entry_tags"> 23577 <ul class="entry_tags"> 23578 <li><a href="#tag_RAW">RAW</a></li> 23579 </ul> 23580 </td> 23581 23582 </tr> 23583 <tr class="entries_header"> 23584 <th class="th_details" colspan="6">Details</th> 23585 </tr> 23586 <tr class="entry_cont"> 23587 <td class="entry_details" colspan="6"> 23588 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different 23589capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white 23590level will change accordingly.<wbr/> This key is similar to 23591<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device 23592estimated white level for each frame.<wbr/></p> 23593<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is 23594available or the camera device advertises this key via 23595<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 23596 </td> 23597 </tr> 23598 23599 <tr class="entries_header"> 23600 <th class="th_details" colspan="6">HAL Implementation Details</th> 23601 </tr> 23602 <tr class="entry_cont"> 23603 <td class="entry_details" colspan="6"> 23604 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 23605so the value for linear sensors should not be significantly lower 23606than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 23607 </td> 23608 </tr> 23609 23610 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23611 <!-- end of entry --> 23612 23613 23614 23615 <!-- end of kind --> 23616 </tbody> 23617 23618 <!-- end of section --> 23619 <tr><td colspan="7" id="section_shading" class="section">shading</td></tr> 23620 23621 23622 <tr><td colspan="7" class="kind">controls</td></tr> 23623 23624 <thead class="entries_header"> 23625 <tr> 23626 <th class="th_name">Property Name</th> 23627 <th class="th_type">Type</th> 23628 <th class="th_description">Description</th> 23629 <th class="th_units">Units</th> 23630 <th class="th_range">Range</th> 23631 <th class="th_hal_version">Initial HIDL HAL version</th> 23632 <th class="th_tags">Tags</th> 23633 </tr> 23634 </thead> 23635 23636 <tbody> 23637 23638 23639 23640 23641 23642 23643 23644 23645 23646 23647 <tr class="entry" id="controls_android.shading.mode"> 23648 <td class="entry_name 23649 " rowspan="3"> 23650 android.<wbr/>shading.<wbr/>mode 23651 </td> 23652 <td class="entry_type"> 23653 <span class="entry_type_name entry_type_name_enum">byte</span> 23654 23655 <span class="entry_type_visibility"> [public]</span> 23656 23657 23658 <span class="entry_type_hwlevel">[full] </span> 23659 23660 23661 23662 <ul class="entry_type_enum"> 23663 <li> 23664 <span class="entry_type_enum_name">OFF (v3.2)</span> 23665 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 23666 </li> 23667 <li> 23668 <span class="entry_type_enum_name">FAST (v3.2)</span> 23669 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 23670frame rate relative to sensor raw output</p></span> 23671 </li> 23672 <li> 23673 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 23674 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 23675cost of possibly reduced frame rate.<wbr/></p></span> 23676 </li> 23677 </ul> 23678 23679 </td> <!-- entry_type --> 23680 23681 <td class="entry_description"> 23682 <p>Quality of lens shading correction applied 23683to the image data.<wbr/></p> 23684 </td> 23685 23686 <td class="entry_units"> 23687 </td> 23688 23689 <td class="entry_range"> 23690 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 23691 </td> 23692 23693 <td class="entry_hal_version"> 23694 <p>3.<wbr/>2</p> 23695 </td> 23696 23697 <td class="entry_tags"> 23698 </td> 23699 23700 </tr> 23701 <tr class="entries_header"> 23702 <th class="th_details" colspan="6">Details</th> 23703 </tr> 23704 <tr class="entry_cont"> 23705 <td class="entry_details" colspan="6"> 23706 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 23707camera device,<wbr/> and an identity lens shading map data will be provided 23708if <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 23709shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 23710the 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 23711map shown below:</p> 23712<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/> 23713 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/> 23714 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/> 23715 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/> 23716 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/> 23717 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 ] 23718</code></pre> 23719<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 23720device.<wbr/> Applications can request lens shading map data by setting 23721<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 23722shading 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 23723data will be the one applied by the camera device for this capture request.<wbr/></p> 23724<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 23725the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 23726AWB 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> 23727OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 23728to be converged before using the returned shading map data.<wbr/></p> 23729 </td> 23730 </tr> 23731 23732 23733 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23734 <!-- end of entry --> 23735 23736 23737 <tr class="entry" id="controls_android.shading.strength"> 23738 <td class="entry_name 23739 " rowspan="1"> 23740 android.<wbr/>shading.<wbr/>strength 23741 </td> 23742 <td class="entry_type"> 23743 <span class="entry_type_name">byte</span> 23744 23745 <span class="entry_type_visibility"> [system]</span> 23746 23747 23748 23749 23750 23751 23752 </td> <!-- entry_type --> 23753 23754 <td class="entry_description"> 23755 <p>Control the amount of shading correction 23756applied to the images</p> 23757 </td> 23758 23759 <td class="entry_units"> 23760 unitless: 1-10; 10 is full shading 23761 compensation 23762 </td> 23763 23764 <td class="entry_range"> 23765 </td> 23766 23767 <td class="entry_hal_version"> 23768 <p>3.<wbr/>2</p> 23769 </td> 23770 23771 <td class="entry_tags"> 23772 <ul class="entry_tags"> 23773 <li><a href="#tag_FUTURE">FUTURE</a></li> 23774 </ul> 23775 </td> 23776 23777 </tr> 23778 23779 23780 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23781 <!-- end of entry --> 23782 23783 23784 23785 <!-- end of kind --> 23786 </tbody> 23787 <tr><td colspan="7" class="kind">dynamic</td></tr> 23788 23789 <thead class="entries_header"> 23790 <tr> 23791 <th class="th_name">Property Name</th> 23792 <th class="th_type">Type</th> 23793 <th class="th_description">Description</th> 23794 <th class="th_units">Units</th> 23795 <th class="th_range">Range</th> 23796 <th class="th_hal_version">Initial HIDL HAL version</th> 23797 <th class="th_tags">Tags</th> 23798 </tr> 23799 </thead> 23800 23801 <tbody> 23802 23803 23804 23805 23806 23807 23808 23809 23810 23811 23812 <tr class="entry" id="dynamic_android.shading.mode"> 23813 <td class="entry_name 23814 " rowspan="3"> 23815 android.<wbr/>shading.<wbr/>mode 23816 </td> 23817 <td class="entry_type"> 23818 <span class="entry_type_name entry_type_name_enum">byte</span> 23819 23820 <span class="entry_type_visibility"> [public]</span> 23821 23822 23823 <span class="entry_type_hwlevel">[full] </span> 23824 23825 23826 23827 <ul class="entry_type_enum"> 23828 <li> 23829 <span class="entry_type_enum_name">OFF (v3.2)</span> 23830 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 23831 </li> 23832 <li> 23833 <span class="entry_type_enum_name">FAST (v3.2)</span> 23834 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 23835frame rate relative to sensor raw output</p></span> 23836 </li> 23837 <li> 23838 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 23839 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 23840cost of possibly reduced frame rate.<wbr/></p></span> 23841 </li> 23842 </ul> 23843 23844 </td> <!-- entry_type --> 23845 23846 <td class="entry_description"> 23847 <p>Quality of lens shading correction applied 23848to the image data.<wbr/></p> 23849 </td> 23850 23851 <td class="entry_units"> 23852 </td> 23853 23854 <td class="entry_range"> 23855 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 23856 </td> 23857 23858 <td class="entry_hal_version"> 23859 <p>3.<wbr/>2</p> 23860 </td> 23861 23862 <td class="entry_tags"> 23863 </td> 23864 23865 </tr> 23866 <tr class="entries_header"> 23867 <th class="th_details" colspan="6">Details</th> 23868 </tr> 23869 <tr class="entry_cont"> 23870 <td class="entry_details" colspan="6"> 23871 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 23872camera device,<wbr/> and an identity lens shading map data will be provided 23873if <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 23874shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 23875the 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 23876map shown below:</p> 23877<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/> 23878 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/> 23879 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/> 23880 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/> 23881 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/> 23882 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 ] 23883</code></pre> 23884<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 23885device.<wbr/> Applications can request lens shading map data by setting 23886<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 23887shading 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 23888data will be the one applied by the camera device for this capture request.<wbr/></p> 23889<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 23890the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 23891AWB 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> 23892OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 23893to be converged before using the returned shading map data.<wbr/></p> 23894 </td> 23895 </tr> 23896 23897 23898 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23899 <!-- end of entry --> 23900 23901 23902 23903 <!-- end of kind --> 23904 </tbody> 23905 <tr><td colspan="7" class="kind">static</td></tr> 23906 23907 <thead class="entries_header"> 23908 <tr> 23909 <th class="th_name">Property Name</th> 23910 <th class="th_type">Type</th> 23911 <th class="th_description">Description</th> 23912 <th class="th_units">Units</th> 23913 <th class="th_range">Range</th> 23914 <th class="th_hal_version">Initial HIDL HAL version</th> 23915 <th class="th_tags">Tags</th> 23916 </tr> 23917 </thead> 23918 23919 <tbody> 23920 23921 23922 23923 23924 23925 23926 23927 23928 23929 23930 <tr class="entry" id="static_android.shading.availableModes"> 23931 <td class="entry_name 23932 " rowspan="5"> 23933 android.<wbr/>shading.<wbr/>available<wbr/>Modes 23934 </td> 23935 <td class="entry_type"> 23936 <span class="entry_type_name">byte</span> 23937 <span class="entry_type_container">x</span> 23938 23939 <span class="entry_type_array"> 23940 n 23941 </span> 23942 <span class="entry_type_visibility"> [public as enumList]</span> 23943 23944 23945 <span class="entry_type_hwlevel">[legacy] </span> 23946 23947 23948 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div> 23949 23950 23951 </td> <!-- entry_type --> 23952 23953 <td class="entry_description"> 23954 <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> 23955 </td> 23956 23957 <td class="entry_units"> 23958 </td> 23959 23960 <td class="entry_range"> 23961 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p> 23962 </td> 23963 23964 <td class="entry_hal_version"> 23965 <p>3.<wbr/>2</p> 23966 </td> 23967 23968 <td class="entry_tags"> 23969 </td> 23970 23971 </tr> 23972 <tr class="entries_header"> 23973 <th class="th_details" colspan="6">Details</th> 23974 </tr> 23975 <tr class="entry_cont"> 23976 <td class="entry_details" colspan="6"> 23977 <p>This list contains lens shading modes that can be set for the camera device.<wbr/> 23978Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always 23979list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/> 23980LEGACY devices will always only support FAST mode.<wbr/></p> 23981 </td> 23982 </tr> 23983 23984 <tr class="entries_header"> 23985 <th class="th_details" colspan="6">HAL Implementation Details</th> 23986 </tr> 23987 <tr class="entry_cont"> 23988 <td class="entry_details" colspan="6"> 23989 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is 23990available on the camera device,<wbr/> but the underlying implementation can be the same for 23991both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not 23992slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 23993 </td> 23994 </tr> 23995 23996 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 23997 <!-- end of entry --> 23998 23999 24000 24001 <!-- end of kind --> 24002 </tbody> 24003 24004 <!-- end of section --> 24005 <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr> 24006 24007 24008 <tr><td colspan="7" class="kind">controls</td></tr> 24009 24010 <thead class="entries_header"> 24011 <tr> 24012 <th class="th_name">Property Name</th> 24013 <th class="th_type">Type</th> 24014 <th class="th_description">Description</th> 24015 <th class="th_units">Units</th> 24016 <th class="th_range">Range</th> 24017 <th class="th_hal_version">Initial HIDL HAL version</th> 24018 <th class="th_tags">Tags</th> 24019 </tr> 24020 </thead> 24021 24022 <tbody> 24023 24024 24025 24026 24027 24028 24029 24030 24031 24032 24033 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 24034 <td class="entry_name 24035 " rowspan="5"> 24036 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 24037 </td> 24038 <td class="entry_type"> 24039 <span class="entry_type_name entry_type_name_enum">byte</span> 24040 24041 <span class="entry_type_visibility"> [public]</span> 24042 24043 24044 <span class="entry_type_hwlevel">[legacy] </span> 24045 24046 24047 24048 <ul class="entry_type_enum"> 24049 <li> 24050 <span class="entry_type_enum_name">OFF (v3.2)</span> 24051 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 24052results.<wbr/></p></span> 24053 </li> 24054 <li> 24055 <span class="entry_type_enum_name">SIMPLE (v3.2)</span> 24056 <span class="entry_type_enum_optional">[optional]</span> 24057 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 24058 </li> 24059 <li> 24060 <span class="entry_type_enum_name">FULL (v3.2)</span> 24061 <span class="entry_type_enum_optional">[optional]</span> 24062 <span class="entry_type_enum_notes"><p>Return all face 24063metadata.<wbr/></p> 24064<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 24065 </li> 24066 </ul> 24067 24068 </td> <!-- entry_type --> 24069 24070 <td class="entry_description"> 24071 <p>Operating mode for the face detector 24072unit.<wbr/></p> 24073 </td> 24074 24075 <td class="entry_units"> 24076 </td> 24077 24078 <td class="entry_range"> 24079 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 24080 </td> 24081 24082 <td class="entry_hal_version"> 24083 <p>3.<wbr/>2</p> 24084 </td> 24085 24086 <td class="entry_tags"> 24087 <ul class="entry_tags"> 24088 <li><a href="#tag_BC">BC</a></li> 24089 </ul> 24090 </td> 24091 24092 </tr> 24093 <tr class="entries_header"> 24094 <th class="th_details" colspan="6">Details</th> 24095 </tr> 24096 <tr class="entry_cont"> 24097 <td class="entry_details" colspan="6"> 24098 <p>Whether face detection is enabled,<wbr/> and whether it 24099should output just the basic fields or the full set of 24100fields.<wbr/></p> 24101 </td> 24102 </tr> 24103 24104 <tr class="entries_header"> 24105 <th class="th_details" colspan="6">HAL Implementation Details</th> 24106 </tr> 24107 <tr class="entry_cont"> 24108 <td class="entry_details" colspan="6"> 24109 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 24110<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 24111FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 24112<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 24113 </td> 24114 </tr> 24115 24116 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24117 <!-- end of entry --> 24118 24119 24120 <tr class="entry" id="controls_android.statistics.histogramMode"> 24121 <td class="entry_name 24122 " rowspan="1"> 24123 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 24124 </td> 24125 <td class="entry_type"> 24126 <span class="entry_type_name entry_type_name_enum">byte</span> 24127 24128 <span class="entry_type_visibility"> [system as boolean]</span> 24129 24130 24131 24132 24133 24134 <ul class="entry_type_enum"> 24135 <li> 24136 <span class="entry_type_enum_name">OFF (v3.2)</span> 24137 </li> 24138 <li> 24139 <span class="entry_type_enum_name">ON (v3.2)</span> 24140 </li> 24141 </ul> 24142 24143 </td> <!-- entry_type --> 24144 24145 <td class="entry_description"> 24146 <p>Operating mode for histogram 24147generation</p> 24148 </td> 24149 24150 <td class="entry_units"> 24151 </td> 24152 24153 <td class="entry_range"> 24154 </td> 24155 24156 <td class="entry_hal_version"> 24157 <p>3.<wbr/>2</p> 24158 </td> 24159 24160 <td class="entry_tags"> 24161 <ul class="entry_tags"> 24162 <li><a href="#tag_FUTURE">FUTURE</a></li> 24163 </ul> 24164 </td> 24165 24166 </tr> 24167 24168 24169 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24170 <!-- end of entry --> 24171 24172 24173 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 24174 <td class="entry_name 24175 " rowspan="1"> 24176 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 24177 </td> 24178 <td class="entry_type"> 24179 <span class="entry_type_name entry_type_name_enum">byte</span> 24180 24181 <span class="entry_type_visibility"> [system as boolean]</span> 24182 24183 24184 24185 24186 24187 <ul class="entry_type_enum"> 24188 <li> 24189 <span class="entry_type_enum_name">OFF (v3.2)</span> 24190 </li> 24191 <li> 24192 <span class="entry_type_enum_name">ON (v3.2)</span> 24193 </li> 24194 </ul> 24195 24196 </td> <!-- entry_type --> 24197 24198 <td class="entry_description"> 24199 <p>Operating mode for sharpness map 24200generation</p> 24201 </td> 24202 24203 <td class="entry_units"> 24204 </td> 24205 24206 <td class="entry_range"> 24207 </td> 24208 24209 <td class="entry_hal_version"> 24210 <p>3.<wbr/>2</p> 24211 </td> 24212 24213 <td class="entry_tags"> 24214 <ul class="entry_tags"> 24215 <li><a href="#tag_FUTURE">FUTURE</a></li> 24216 </ul> 24217 </td> 24218 24219 </tr> 24220 24221 24222 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24223 <!-- end of entry --> 24224 24225 24226 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 24227 <td class="entry_name 24228 " rowspan="3"> 24229 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 24230 </td> 24231 <td class="entry_type"> 24232 <span class="entry_type_name entry_type_name_enum">byte</span> 24233 24234 <span class="entry_type_visibility"> [public as boolean]</span> 24235 24236 24237 24238 24239 24240 <ul class="entry_type_enum"> 24241 <li> 24242 <span class="entry_type_enum_name">OFF (v3.2)</span> 24243 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 24244 </li> 24245 <li> 24246 <span class="entry_type_enum_name">ON (v3.2)</span> 24247 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 24248 </li> 24249 </ul> 24250 24251 </td> <!-- entry_type --> 24252 24253 <td class="entry_description"> 24254 <p>Operating mode for hot pixel map generation.<wbr/></p> 24255 </td> 24256 24257 <td class="entry_units"> 24258 </td> 24259 24260 <td class="entry_range"> 24261 <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> 24262 </td> 24263 24264 <td class="entry_hal_version"> 24265 <p>3.<wbr/>2</p> 24266 </td> 24267 24268 <td class="entry_tags"> 24269 <ul class="entry_tags"> 24270 <li><a href="#tag_V1">V1</a></li> 24271 <li><a href="#tag_RAW">RAW</a></li> 24272 </ul> 24273 </td> 24274 24275 </tr> 24276 <tr class="entries_header"> 24277 <th class="th_details" colspan="6">Details</th> 24278 </tr> 24279 <tr class="entry_cont"> 24280 <td class="entry_details" colspan="6"> 24281 <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/> 24282If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 24283 </td> 24284 </tr> 24285 24286 24287 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24288 <!-- end of entry --> 24289 24290 24291 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 24292 <td class="entry_name 24293 " rowspan="3"> 24294 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 24295 </td> 24296 <td class="entry_type"> 24297 <span class="entry_type_name entry_type_name_enum">byte</span> 24298 24299 <span class="entry_type_visibility"> [public]</span> 24300 24301 24302 <span class="entry_type_hwlevel">[full] </span> 24303 24304 24305 24306 <ul class="entry_type_enum"> 24307 <li> 24308 <span class="entry_type_enum_name">OFF (v3.2)</span> 24309 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 24310 </li> 24311 <li> 24312 <span class="entry_type_enum_name">ON (v3.2)</span> 24313 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 24314 </li> 24315 </ul> 24316 24317 </td> <!-- entry_type --> 24318 24319 <td class="entry_description"> 24320 <p>Whether the camera device will output the lens 24321shading map in output result metadata.<wbr/></p> 24322 </td> 24323 24324 <td class="entry_units"> 24325 </td> 24326 24327 <td class="entry_range"> 24328 <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> 24329 </td> 24330 24331 <td class="entry_hal_version"> 24332 <p>3.<wbr/>2</p> 24333 </td> 24334 24335 <td class="entry_tags"> 24336 <ul class="entry_tags"> 24337 <li><a href="#tag_RAW">RAW</a></li> 24338 </ul> 24339 </td> 24340 24341 </tr> 24342 <tr class="entries_header"> 24343 <th class="th_details" colspan="6">Details</th> 24344 </tr> 24345 <tr class="entry_cont"> 24346 <td class="entry_details" colspan="6"> 24347 <p>When set to ON,<wbr/> 24348<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 24349the output result metadata.<wbr/></p> 24350<p>ON is always supported on devices with the RAW capability.<wbr/></p> 24351 </td> 24352 </tr> 24353 24354 24355 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24356 <!-- end of entry --> 24357 24358 24359 <tr class="entry" id="controls_android.statistics.oisDataMode"> 24360 <td class="entry_name 24361 " rowspan="1"> 24362 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode 24363 </td> 24364 <td class="entry_type"> 24365 <span class="entry_type_name entry_type_name_enum">byte</span> 24366 24367 <span class="entry_type_visibility"> [public]</span> 24368 24369 24370 24371 24372 24373 <ul class="entry_type_enum"> 24374 <li> 24375 <span class="entry_type_enum_name">OFF (v3.3)</span> 24376 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span> 24377 </li> 24378 <li> 24379 <span class="entry_type_enum_name">ON (v3.3)</span> 24380 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span> 24381 </li> 24382 </ul> 24383 24384 </td> <!-- entry_type --> 24385 24386 <td class="entry_description"> 24387 <p>A control for selecting whether OIS position information is included in output 24388result metadata.<wbr/></p> 24389 </td> 24390 24391 <td class="entry_units"> 24392 </td> 24393 24394 <td class="entry_range"> 24395 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p> 24396 </td> 24397 24398 <td class="entry_hal_version"> 24399 <p>3.<wbr/>3</p> 24400 </td> 24401 24402 <td class="entry_tags"> 24403 </td> 24404 24405 </tr> 24406 24407 24408 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24409 <!-- end of entry --> 24410 24411 24412 24413 <!-- end of kind --> 24414 </tbody> 24415 <tr><td colspan="7" class="kind">static</td></tr> 24416 24417 <thead class="entries_header"> 24418 <tr> 24419 <th class="th_name">Property Name</th> 24420 <th class="th_type">Type</th> 24421 <th class="th_description">Description</th> 24422 <th class="th_units">Units</th> 24423 <th class="th_range">Range</th> 24424 <th class="th_hal_version">Initial HIDL HAL version</th> 24425 <th class="th_tags">Tags</th> 24426 </tr> 24427 </thead> 24428 24429 <tbody> 24430 24431 24432 24433 24434 24435 24436 24437 24438 24439 24440 24441 24442 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 24443 <td class="entry_name 24444 " rowspan="3"> 24445 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 24446 </td> 24447 <td class="entry_type"> 24448 <span class="entry_type_name">byte</span> 24449 <span class="entry_type_container">x</span> 24450 24451 <span class="entry_type_array"> 24452 n 24453 </span> 24454 <span class="entry_type_visibility"> [public as enumList]</span> 24455 24456 24457 <span class="entry_type_hwlevel">[legacy] </span> 24458 24459 24460 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 24461 24462 24463 </td> <!-- entry_type --> 24464 24465 <td class="entry_description"> 24466 <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 24467supported by this camera device.<wbr/></p> 24468 </td> 24469 24470 <td class="entry_units"> 24471 </td> 24472 24473 <td class="entry_range"> 24474 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p> 24475 </td> 24476 24477 <td class="entry_hal_version"> 24478 <p>3.<wbr/>2</p> 24479 </td> 24480 24481 <td class="entry_tags"> 24482 </td> 24483 24484 </tr> 24485 <tr class="entries_header"> 24486 <th class="th_details" colspan="6">Details</th> 24487 </tr> 24488 <tr class="entry_cont"> 24489 <td class="entry_details" colspan="6"> 24490 <p>OFF is always supported.<wbr/></p> 24491 </td> 24492 </tr> 24493 24494 24495 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24496 <!-- end of entry --> 24497 24498 24499 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 24500 <td class="entry_name 24501 " rowspan="1"> 24502 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 24503 </td> 24504 <td class="entry_type"> 24505 <span class="entry_type_name">int32</span> 24506 24507 <span class="entry_type_visibility"> [system]</span> 24508 24509 24510 24511 24512 24513 24514 </td> <!-- entry_type --> 24515 24516 <td class="entry_description"> 24517 <p>Number of histogram buckets 24518supported</p> 24519 </td> 24520 24521 <td class="entry_units"> 24522 </td> 24523 24524 <td class="entry_range"> 24525 <p>>= 64</p> 24526 </td> 24527 24528 <td class="entry_hal_version"> 24529 <p>3.<wbr/>2</p> 24530 </td> 24531 24532 <td class="entry_tags"> 24533 <ul class="entry_tags"> 24534 <li><a href="#tag_FUTURE">FUTURE</a></li> 24535 </ul> 24536 </td> 24537 24538 </tr> 24539 24540 24541 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24542 <!-- end of entry --> 24543 24544 24545 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 24546 <td class="entry_name 24547 " rowspan="1"> 24548 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 24549 </td> 24550 <td class="entry_type"> 24551 <span class="entry_type_name">int32</span> 24552 24553 <span class="entry_type_visibility"> [public]</span> 24554 24555 24556 <span class="entry_type_hwlevel">[legacy] </span> 24557 24558 24559 24560 24561 </td> <!-- entry_type --> 24562 24563 <td class="entry_description"> 24564 <p>The maximum number of simultaneously detectable 24565faces.<wbr/></p> 24566 </td> 24567 24568 <td class="entry_units"> 24569 </td> 24570 24571 <td class="entry_range"> 24572 <p>0 for cameras without available face detection; otherwise: 24573<code>>=4</code> for LIMITED or FULL hwlevel devices or 24574<code>>0</code> for LEGACY devices.<wbr/></p> 24575 </td> 24576 24577 <td class="entry_hal_version"> 24578 <p>3.<wbr/>2</p> 24579 </td> 24580 24581 <td class="entry_tags"> 24582 <ul class="entry_tags"> 24583 <li><a href="#tag_BC">BC</a></li> 24584 </ul> 24585 </td> 24586 24587 </tr> 24588 24589 24590 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24591 <!-- end of entry --> 24592 24593 24594 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 24595 <td class="entry_name 24596 " rowspan="1"> 24597 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 24598 </td> 24599 <td class="entry_type"> 24600 <span class="entry_type_name">int32</span> 24601 24602 <span class="entry_type_visibility"> [system]</span> 24603 24604 24605 24606 24607 24608 24609 </td> <!-- entry_type --> 24610 24611 <td class="entry_description"> 24612 <p>Maximum value possible for a histogram 24613bucket</p> 24614 </td> 24615 24616 <td class="entry_units"> 24617 </td> 24618 24619 <td class="entry_range"> 24620 </td> 24621 24622 <td class="entry_hal_version"> 24623 <p>3.<wbr/>2</p> 24624 </td> 24625 24626 <td class="entry_tags"> 24627 <ul class="entry_tags"> 24628 <li><a href="#tag_FUTURE">FUTURE</a></li> 24629 </ul> 24630 </td> 24631 24632 </tr> 24633 24634 24635 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24636 <!-- end of entry --> 24637 24638 24639 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 24640 <td class="entry_name 24641 " rowspan="1"> 24642 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 24643 </td> 24644 <td class="entry_type"> 24645 <span class="entry_type_name">int32</span> 24646 24647 <span class="entry_type_visibility"> [system]</span> 24648 24649 24650 24651 24652 24653 24654 </td> <!-- entry_type --> 24655 24656 <td class="entry_description"> 24657 <p>Maximum value possible for a sharpness map 24658region.<wbr/></p> 24659 </td> 24660 24661 <td class="entry_units"> 24662 </td> 24663 24664 <td class="entry_range"> 24665 </td> 24666 24667 <td class="entry_hal_version"> 24668 <p>3.<wbr/>2</p> 24669 </td> 24670 24671 <td class="entry_tags"> 24672 <ul class="entry_tags"> 24673 <li><a href="#tag_FUTURE">FUTURE</a></li> 24674 </ul> 24675 </td> 24676 24677 </tr> 24678 24679 24680 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24681 <!-- end of entry --> 24682 24683 24684 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 24685 <td class="entry_name 24686 " rowspan="1"> 24687 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 24688 </td> 24689 <td class="entry_type"> 24690 <span class="entry_type_name">int32</span> 24691 <span class="entry_type_container">x</span> 24692 24693 <span class="entry_type_array"> 24694 2 24695 </span> 24696 <span class="entry_type_visibility"> [system as size]</span> 24697 24698 24699 24700 24701 <div class="entry_type_notes">width x height</div> 24702 24703 24704 </td> <!-- entry_type --> 24705 24706 <td class="entry_description"> 24707 <p>Dimensions of the sharpness 24708map</p> 24709 </td> 24710 24711 <td class="entry_units"> 24712 </td> 24713 24714 <td class="entry_range"> 24715 <p>Must be at least 32 x 32</p> 24716 </td> 24717 24718 <td class="entry_hal_version"> 24719 <p>3.<wbr/>2</p> 24720 </td> 24721 24722 <td class="entry_tags"> 24723 <ul class="entry_tags"> 24724 <li><a href="#tag_FUTURE">FUTURE</a></li> 24725 </ul> 24726 </td> 24727 24728 </tr> 24729 24730 24731 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24732 <!-- end of entry --> 24733 24734 24735 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 24736 <td class="entry_name 24737 " rowspan="3"> 24738 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 24739 </td> 24740 <td class="entry_type"> 24741 <span class="entry_type_name">byte</span> 24742 <span class="entry_type_container">x</span> 24743 24744 <span class="entry_type_array"> 24745 n 24746 </span> 24747 <span class="entry_type_visibility"> [public as boolean]</span> 24748 24749 24750 24751 24752 <div class="entry_type_notes">list of enums</div> 24753 24754 24755 </td> <!-- entry_type --> 24756 24757 <td class="entry_description"> 24758 <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 24759supported by this camera device.<wbr/></p> 24760 </td> 24761 24762 <td class="entry_units"> 24763 </td> 24764 24765 <td class="entry_range"> 24766 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p> 24767 </td> 24768 24769 <td class="entry_hal_version"> 24770 <p>3.<wbr/>2</p> 24771 </td> 24772 24773 <td class="entry_tags"> 24774 <ul class="entry_tags"> 24775 <li><a href="#tag_V1">V1</a></li> 24776 <li><a href="#tag_RAW">RAW</a></li> 24777 </ul> 24778 </td> 24779 24780 </tr> 24781 <tr class="entries_header"> 24782 <th class="th_details" colspan="6">Details</th> 24783 </tr> 24784 <tr class="entry_cont"> 24785 <td class="entry_details" colspan="6"> 24786 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only 24787<code>false</code>.<wbr/></p> 24788<p>ON is always supported on devices with the RAW capability.<wbr/></p> 24789 </td> 24790 </tr> 24791 24792 24793 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24794 <!-- end of entry --> 24795 24796 24797 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes"> 24798 <td class="entry_name 24799 " rowspan="3"> 24800 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes 24801 </td> 24802 <td class="entry_type"> 24803 <span class="entry_type_name">byte</span> 24804 <span class="entry_type_container">x</span> 24805 24806 <span class="entry_type_array"> 24807 n 24808 </span> 24809 <span class="entry_type_visibility"> [public as enumList]</span> 24810 24811 24812 24813 24814 <div class="entry_type_notes">list of enums</div> 24815 24816 24817 </td> <!-- entry_type --> 24818 24819 <td class="entry_description"> 24820 <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 24821are supported by this camera device.<wbr/></p> 24822 </td> 24823 24824 <td class="entry_units"> 24825 </td> 24826 24827 <td class="entry_range"> 24828 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p> 24829 </td> 24830 24831 <td class="entry_hal_version"> 24832 <p>3.<wbr/>2</p> 24833 </td> 24834 24835 <td class="entry_tags"> 24836 </td> 24837 24838 </tr> 24839 <tr class="entries_header"> 24840 <th class="th_details" colspan="6">Details</th> 24841 </tr> 24842 <tr class="entry_cont"> 24843 <td class="entry_details" colspan="6"> 24844 <p>If no lens shading map output is available for this camera device,<wbr/> this key will 24845contain only OFF.<wbr/></p> 24846<p>ON is always supported on devices with the RAW capability.<wbr/> 24847LEGACY mode devices will always only support OFF.<wbr/></p> 24848 </td> 24849 </tr> 24850 24851 24852 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24853 <!-- end of entry --> 24854 24855 24856 <tr class="entry" id="static_android.statistics.info.availableOisDataModes"> 24857 <td class="entry_name 24858 " rowspan="3"> 24859 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes 24860 </td> 24861 <td class="entry_type"> 24862 <span class="entry_type_name">byte</span> 24863 <span class="entry_type_container">x</span> 24864 24865 <span class="entry_type_array"> 24866 n 24867 </span> 24868 <span class="entry_type_visibility"> [public as enumList]</span> 24869 24870 24871 24872 24873 <div class="entry_type_notes">list of enums</div> 24874 24875 24876 </td> <!-- entry_type --> 24877 24878 <td class="entry_description"> 24879 <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 24880are supported by this camera device.<wbr/></p> 24881 </td> 24882 24883 <td class="entry_units"> 24884 </td> 24885 24886 <td class="entry_range"> 24887 <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p> 24888 </td> 24889 24890 <td class="entry_hal_version"> 24891 <p>3.<wbr/>3</p> 24892 </td> 24893 24894 <td class="entry_tags"> 24895 </td> 24896 24897 </tr> 24898 <tr class="entries_header"> 24899 <th class="th_details" colspan="6">Details</th> 24900 </tr> 24901 <tr class="entry_cont"> 24902 <td class="entry_details" colspan="6"> 24903 <p>If no OIS data output is available for this camera device,<wbr/> this key will 24904contain only OFF.<wbr/></p> 24905 </td> 24906 </tr> 24907 24908 24909 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 24910 <!-- end of entry --> 24911 24912 24913 24914 24915 24916 24917 <!-- end of kind --> 24918 </tbody> 24919 <tr><td colspan="7" class="kind">dynamic</td></tr> 24920 24921 <thead class="entries_header"> 24922 <tr> 24923 <th class="th_name">Property Name</th> 24924 <th class="th_type">Type</th> 24925 <th class="th_description">Description</th> 24926 <th class="th_units">Units</th> 24927 <th class="th_range">Range</th> 24928 <th class="th_hal_version">Initial HIDL HAL version</th> 24929 <th class="th_tags">Tags</th> 24930 </tr> 24931 </thead> 24932 24933 <tbody> 24934 24935 24936 24937 24938 24939 24940 24941 24942 24943 24944 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 24945 <td class="entry_name 24946 " rowspan="5"> 24947 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 24948 </td> 24949 <td class="entry_type"> 24950 <span class="entry_type_name entry_type_name_enum">byte</span> 24951 24952 <span class="entry_type_visibility"> [public]</span> 24953 24954 24955 <span class="entry_type_hwlevel">[legacy] </span> 24956 24957 24958 24959 <ul class="entry_type_enum"> 24960 <li> 24961 <span class="entry_type_enum_name">OFF (v3.2)</span> 24962 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 24963results.<wbr/></p></span> 24964 </li> 24965 <li> 24966 <span class="entry_type_enum_name">SIMPLE (v3.2)</span> 24967 <span class="entry_type_enum_optional">[optional]</span> 24968 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 24969 </li> 24970 <li> 24971 <span class="entry_type_enum_name">FULL (v3.2)</span> 24972 <span class="entry_type_enum_optional">[optional]</span> 24973 <span class="entry_type_enum_notes"><p>Return all face 24974metadata.<wbr/></p> 24975<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 24976 </li> 24977 </ul> 24978 24979 </td> <!-- entry_type --> 24980 24981 <td class="entry_description"> 24982 <p>Operating mode for the face detector 24983unit.<wbr/></p> 24984 </td> 24985 24986 <td class="entry_units"> 24987 </td> 24988 24989 <td class="entry_range"> 24990 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 24991 </td> 24992 24993 <td class="entry_hal_version"> 24994 <p>3.<wbr/>2</p> 24995 </td> 24996 24997 <td class="entry_tags"> 24998 <ul class="entry_tags"> 24999 <li><a href="#tag_BC">BC</a></li> 25000 </ul> 25001 </td> 25002 25003 </tr> 25004 <tr class="entries_header"> 25005 <th class="th_details" colspan="6">Details</th> 25006 </tr> 25007 <tr class="entry_cont"> 25008 <td class="entry_details" colspan="6"> 25009 <p>Whether face detection is enabled,<wbr/> and whether it 25010should output just the basic fields or the full set of 25011fields.<wbr/></p> 25012 </td> 25013 </tr> 25014 25015 <tr class="entries_header"> 25016 <th class="th_details" colspan="6">HAL Implementation Details</th> 25017 </tr> 25018 <tr class="entry_cont"> 25019 <td class="entry_details" colspan="6"> 25020 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 25021<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 25022FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 25023<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 25024 </td> 25025 </tr> 25026 25027 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25028 <!-- end of entry --> 25029 25030 25031 <tr class="entry" id="dynamic_android.statistics.faceIds"> 25032 <td class="entry_name 25033 " rowspan="3"> 25034 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 25035 </td> 25036 <td class="entry_type"> 25037 <span class="entry_type_name">int32</span> 25038 <span class="entry_type_container">x</span> 25039 25040 <span class="entry_type_array"> 25041 n 25042 </span> 25043 <span class="entry_type_visibility"> [ndk_public]</span> 25044 25045 25046 <span class="entry_type_hwlevel">[legacy] </span> 25047 25048 25049 25050 25051 </td> <!-- entry_type --> 25052 25053 <td class="entry_description"> 25054 <p>List of unique IDs for detected faces.<wbr/></p> 25055 </td> 25056 25057 <td class="entry_units"> 25058 </td> 25059 25060 <td class="entry_range"> 25061 </td> 25062 25063 <td class="entry_hal_version"> 25064 <p>3.<wbr/>2</p> 25065 </td> 25066 25067 <td class="entry_tags"> 25068 <ul class="entry_tags"> 25069 <li><a href="#tag_BC">BC</a></li> 25070 </ul> 25071 </td> 25072 25073 </tr> 25074 <tr class="entries_header"> 25075 <th class="th_details" colspan="6">Details</th> 25076 </tr> 25077 <tr class="entry_cont"> 25078 <td class="entry_details" colspan="6"> 25079 <p>Each detected face is given a unique ID that is valid for as long as the face is visible 25080to the camera device.<wbr/> A face that leaves the field of view and later returns may be 25081assigned a new ID.<wbr/></p> 25082<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 25083 </td> 25084 </tr> 25085 25086 25087 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25088 <!-- end of entry --> 25089 25090 25091 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 25092 <td class="entry_name 25093 " rowspan="3"> 25094 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 25095 </td> 25096 <td class="entry_type"> 25097 <span class="entry_type_name">int32</span> 25098 <span class="entry_type_container">x</span> 25099 25100 <span class="entry_type_array"> 25101 n x 6 25102 </span> 25103 <span class="entry_type_visibility"> [ndk_public]</span> 25104 25105 25106 <span class="entry_type_hwlevel">[legacy] </span> 25107 25108 25109 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 25110 25111 25112 </td> <!-- entry_type --> 25113 25114 <td class="entry_description"> 25115 <p>List of landmarks for detected 25116faces.<wbr/></p> 25117 </td> 25118 25119 <td class="entry_units"> 25120 </td> 25121 25122 <td class="entry_range"> 25123 </td> 25124 25125 <td class="entry_hal_version"> 25126 <p>3.<wbr/>2</p> 25127 </td> 25128 25129 <td class="entry_tags"> 25130 <ul class="entry_tags"> 25131 <li><a href="#tag_BC">BC</a></li> 25132 </ul> 25133 </td> 25134 25135 </tr> 25136 <tr class="entries_header"> 25137 <th class="th_details" colspan="6">Details</th> 25138 </tr> 25139 <tr class="entry_cont"> 25140 <td class="entry_details" colspan="6"> 25141 <p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 25142<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 25143<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 25144 </td> 25145 </tr> 25146 25147 25148 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25149 <!-- end of entry --> 25150 25151 25152 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 25153 <td class="entry_name 25154 " rowspan="3"> 25155 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 25156 </td> 25157 <td class="entry_type"> 25158 <span class="entry_type_name">int32</span> 25159 <span class="entry_type_container">x</span> 25160 25161 <span class="entry_type_array"> 25162 n x 4 25163 </span> 25164 <span class="entry_type_visibility"> [ndk_public as rectangle]</span> 25165 25166 25167 <span class="entry_type_hwlevel">[legacy] </span> 25168 25169 25170 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 25171 25172 25173 </td> <!-- entry_type --> 25174 25175 <td class="entry_description"> 25176 <p>List of the bounding rectangles for detected 25177faces.<wbr/></p> 25178 </td> 25179 25180 <td class="entry_units"> 25181 </td> 25182 25183 <td class="entry_range"> 25184 </td> 25185 25186 <td class="entry_hal_version"> 25187 <p>3.<wbr/>2</p> 25188 </td> 25189 25190 <td class="entry_tags"> 25191 <ul class="entry_tags"> 25192 <li><a href="#tag_BC">BC</a></li> 25193 </ul> 25194 </td> 25195 25196 </tr> 25197 <tr class="entries_header"> 25198 <th class="th_details" colspan="6">Details</th> 25199 </tr> 25200 <tr class="entry_cont"> 25201 <td class="entry_details" colspan="6"> 25202 <p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 25203<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 25204<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p> 25205 </td> 25206 </tr> 25207 25208 25209 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25210 <!-- end of entry --> 25211 25212 25213 <tr class="entry" id="dynamic_android.statistics.faceScores"> 25214 <td class="entry_name 25215 " rowspan="5"> 25216 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 25217 </td> 25218 <td class="entry_type"> 25219 <span class="entry_type_name">byte</span> 25220 <span class="entry_type_container">x</span> 25221 25222 <span class="entry_type_array"> 25223 n 25224 </span> 25225 <span class="entry_type_visibility"> [ndk_public]</span> 25226 25227 25228 <span class="entry_type_hwlevel">[legacy] </span> 25229 25230 25231 25232 25233 </td> <!-- entry_type --> 25234 25235 <td class="entry_description"> 25236 <p>List of the face confidence scores for 25237detected faces</p> 25238 </td> 25239 25240 <td class="entry_units"> 25241 </td> 25242 25243 <td class="entry_range"> 25244 <p>1-100</p> 25245 </td> 25246 25247 <td class="entry_hal_version"> 25248 <p>3.<wbr/>2</p> 25249 </td> 25250 25251 <td class="entry_tags"> 25252 <ul class="entry_tags"> 25253 <li><a href="#tag_BC">BC</a></li> 25254 </ul> 25255 </td> 25256 25257 </tr> 25258 <tr class="entries_header"> 25259 <th class="th_details" colspan="6">Details</th> 25260 </tr> 25261 <tr class="entry_cont"> 25262 <td class="entry_details" colspan="6"> 25263 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 25264 </td> 25265 </tr> 25266 25267 <tr class="entries_header"> 25268 <th class="th_details" colspan="6">HAL Implementation Details</th> 25269 </tr> 25270 <tr class="entry_cont"> 25271 <td class="entry_details" colspan="6"> 25272 <p>The value should be meaningful (for example,<wbr/> setting 100 at 25273all times is illegal).<wbr/></p> 25274 </td> 25275 </tr> 25276 25277 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25278 <!-- end of entry --> 25279 25280 25281 <tr class="entry" id="dynamic_android.statistics.faces"> 25282 <td class="entry_name 25283 " rowspan="3"> 25284 android.<wbr/>statistics.<wbr/>faces 25285 </td> 25286 <td class="entry_type"> 25287 <span class="entry_type_name">int32</span> 25288 <span class="entry_type_container">x</span> 25289 25290 <span class="entry_type_array"> 25291 n 25292 </span> 25293 <span class="entry_type_visibility"> [java_public as face]</span> 25294 25295 <span class="entry_type_synthetic">[synthetic] </span> 25296 25297 <span class="entry_type_hwlevel">[legacy] </span> 25298 25299 25300 25301 25302 </td> <!-- entry_type --> 25303 25304 <td class="entry_description"> 25305 <p>List of the faces detected through camera face detection 25306in this capture.<wbr/></p> 25307 </td> 25308 25309 <td class="entry_units"> 25310 </td> 25311 25312 <td class="entry_range"> 25313 </td> 25314 25315 <td class="entry_hal_version"> 25316 <p>3.<wbr/>2</p> 25317 </td> 25318 25319 <td class="entry_tags"> 25320 </td> 25321 25322 </tr> 25323 <tr class="entries_header"> 25324 <th class="th_details" colspan="6">Details</th> 25325 </tr> 25326 <tr class="entry_cont"> 25327 <td class="entry_details" colspan="6"> 25328 <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> 25329 </td> 25330 </tr> 25331 25332 25333 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25334 <!-- end of entry --> 25335 25336 25337 <tr class="entry" id="dynamic_android.statistics.histogram"> 25338 <td class="entry_name 25339 " rowspan="3"> 25340 android.<wbr/>statistics.<wbr/>histogram 25341 </td> 25342 <td class="entry_type"> 25343 <span class="entry_type_name">int32</span> 25344 <span class="entry_type_container">x</span> 25345 25346 <span class="entry_type_array"> 25347 n x 3 25348 </span> 25349 <span class="entry_type_visibility"> [system]</span> 25350 25351 25352 25353 25354 <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> 25355 25356 25357 </td> <!-- entry_type --> 25358 25359 <td class="entry_description"> 25360 <p>A 3-channel histogram based on the raw 25361sensor data</p> 25362 </td> 25363 25364 <td class="entry_units"> 25365 </td> 25366 25367 <td class="entry_range"> 25368 </td> 25369 25370 <td class="entry_hal_version"> 25371 <p>3.<wbr/>2</p> 25372 </td> 25373 25374 <td class="entry_tags"> 25375 <ul class="entry_tags"> 25376 <li><a href="#tag_FUTURE">FUTURE</a></li> 25377 </ul> 25378 </td> 25379 25380 </tr> 25381 <tr class="entries_header"> 25382 <th class="th_details" colspan="6">Details</th> 25383 </tr> 25384 <tr class="entry_cont"> 25385 <td class="entry_details" colspan="6"> 25386 <p>The k'th bucket (0-based) covers the input range 25387(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/> 25388(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 25389supported,<wbr/> all channels should have the same data</p> 25390 </td> 25391 </tr> 25392 25393 25394 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25395 <!-- end of entry --> 25396 25397 25398 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 25399 <td class="entry_name 25400 " rowspan="1"> 25401 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 25402 </td> 25403 <td class="entry_type"> 25404 <span class="entry_type_name entry_type_name_enum">byte</span> 25405 25406 <span class="entry_type_visibility"> [system as boolean]</span> 25407 25408 25409 25410 25411 25412 <ul class="entry_type_enum"> 25413 <li> 25414 <span class="entry_type_enum_name">OFF (v3.2)</span> 25415 </li> 25416 <li> 25417 <span class="entry_type_enum_name">ON (v3.2)</span> 25418 </li> 25419 </ul> 25420 25421 </td> <!-- entry_type --> 25422 25423 <td class="entry_description"> 25424 <p>Operating mode for histogram 25425generation</p> 25426 </td> 25427 25428 <td class="entry_units"> 25429 </td> 25430 25431 <td class="entry_range"> 25432 </td> 25433 25434 <td class="entry_hal_version"> 25435 <p>3.<wbr/>2</p> 25436 </td> 25437 25438 <td class="entry_tags"> 25439 <ul class="entry_tags"> 25440 <li><a href="#tag_FUTURE">FUTURE</a></li> 25441 </ul> 25442 </td> 25443 25444 </tr> 25445 25446 25447 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25448 <!-- end of entry --> 25449 25450 25451 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 25452 <td class="entry_name 25453 " rowspan="3"> 25454 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 25455 </td> 25456 <td class="entry_type"> 25457 <span class="entry_type_name">int32</span> 25458 <span class="entry_type_container">x</span> 25459 25460 <span class="entry_type_array"> 25461 n x m x 3 25462 </span> 25463 <span class="entry_type_visibility"> [system]</span> 25464 25465 25466 25467 25468 <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> 25469 25470 25471 </td> <!-- entry_type --> 25472 25473 <td class="entry_description"> 25474 <p>A 3-channel sharpness map,<wbr/> based on the raw 25475sensor data</p> 25476 </td> 25477 25478 <td class="entry_units"> 25479 </td> 25480 25481 <td class="entry_range"> 25482 </td> 25483 25484 <td class="entry_hal_version"> 25485 <p>3.<wbr/>2</p> 25486 </td> 25487 25488 <td class="entry_tags"> 25489 <ul class="entry_tags"> 25490 <li><a href="#tag_FUTURE">FUTURE</a></li> 25491 </ul> 25492 </td> 25493 25494 </tr> 25495 <tr class="entries_header"> 25496 <th class="th_details" colspan="6">Details</th> 25497 </tr> 25498 <tr class="entry_cont"> 25499 <td class="entry_details" colspan="6"> 25500 <p>If only a monochrome sharpness map is supported,<wbr/> 25501all channels should have the same data</p> 25502 </td> 25503 </tr> 25504 25505 25506 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25507 <!-- end of entry --> 25508 25509 25510 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 25511 <td class="entry_name 25512 " rowspan="1"> 25513 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 25514 </td> 25515 <td class="entry_type"> 25516 <span class="entry_type_name entry_type_name_enum">byte</span> 25517 25518 <span class="entry_type_visibility"> [system as boolean]</span> 25519 25520 25521 25522 25523 25524 <ul class="entry_type_enum"> 25525 <li> 25526 <span class="entry_type_enum_name">OFF (v3.2)</span> 25527 </li> 25528 <li> 25529 <span class="entry_type_enum_name">ON (v3.2)</span> 25530 </li> 25531 </ul> 25532 25533 </td> <!-- entry_type --> 25534 25535 <td class="entry_description"> 25536 <p>Operating mode for sharpness map 25537generation</p> 25538 </td> 25539 25540 <td class="entry_units"> 25541 </td> 25542 25543 <td class="entry_range"> 25544 </td> 25545 25546 <td class="entry_hal_version"> 25547 <p>3.<wbr/>2</p> 25548 </td> 25549 25550 <td class="entry_tags"> 25551 <ul class="entry_tags"> 25552 <li><a href="#tag_FUTURE">FUTURE</a></li> 25553 </ul> 25554 </td> 25555 25556 </tr> 25557 25558 25559 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25560 <!-- end of entry --> 25561 25562 25563 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> 25564 <td class="entry_name 25565 " rowspan="3"> 25566 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map 25567 </td> 25568 <td class="entry_type"> 25569 <span class="entry_type_name">byte</span> 25570 25571 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span> 25572 25573 25574 <span class="entry_type_hwlevel">[full] </span> 25575 25576 25577 25578 25579 </td> <!-- entry_type --> 25580 25581 <td class="entry_description"> 25582 <p>The shading map is a low-resolution floating-point map 25583that lists the coefficients used to correct for vignetting,<wbr/> for each 25584Bayer color channel.<wbr/></p> 25585 </td> 25586 25587 <td class="entry_units"> 25588 </td> 25589 25590 <td class="entry_range"> 25591 <p>Each gain factor is >= 1</p> 25592 </td> 25593 25594 <td class="entry_hal_version"> 25595 <p>3.<wbr/>2</p> 25596 </td> 25597 25598 <td class="entry_tags"> 25599 </td> 25600 25601 </tr> 25602 <tr class="entries_header"> 25603 <th class="th_details" colspan="6">Details</th> 25604 </tr> 25605 <tr class="entry_cont"> 25606 <td class="entry_details" colspan="6"> 25607 <p>The map provided here is the same map that is used by the camera device to 25608correct both color shading and vignetting for output non-RAW images.<wbr/></p> 25609<p>When there is no lens shading correction applied to RAW 25610output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> 25611false),<wbr/> this map is the complete lens shading correction 25612map; when there is some lens shading correction applied to 25613the 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 25614correction map that needs to be applied to get shading 25615corrected images that match the camera device's output for 25616non-RAW formats.<wbr/></p> 25617<p>For a complete shading correction map,<wbr/> the least shaded 25618section of the image will have a gain factor of 1; all 25619other sections will have gains above 1.<wbr/></p> 25620<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 25621will take into account the colorCorrection settings.<wbr/></p> 25622<p>The shading map is for the entire active pixel array,<wbr/> and is not 25623affected by the crop region specified in the request.<wbr/> Each shading map 25624entry is the value of the shading compensation map over a specific 25625pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 25626map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 25627(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 25628pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 25629The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 25630<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 25631channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 25632The shading map is stored in a fully interleaved format.<wbr/></p> 25633<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/> 25634and will be smaller than 64x64.<wbr/></p> 25635<p>As an example,<wbr/> given a very small map defined as:</p> 25636<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] 25637values = 25638[ 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/> 25639 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/> 25640 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/> 25641 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/> 25642 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/> 25643 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 ] 25644</code></pre> 25645<p>The low-resolution scaling map images for each channel are 25646(displayed using nearest-neighbor interpolation):</p> 25647<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 25648<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 25649<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 25650<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 25651<p>As a visualization only,<wbr/> inverting the full-color map to recover an 25652image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 25653<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 25654 </td> 25655 </tr> 25656 25657 25658 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25659 <!-- end of entry --> 25660 25661 25662 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 25663 <td class="entry_name 25664 " rowspan="5"> 25665 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 25666 </td> 25667 <td class="entry_type"> 25668 <span class="entry_type_name">float</span> 25669 <span class="entry_type_container">x</span> 25670 25671 <span class="entry_type_array"> 25672 4 x n x m 25673 </span> 25674 <span class="entry_type_visibility"> [ndk_public]</span> 25675 25676 25677 <span class="entry_type_hwlevel">[full] </span> 25678 25679 25680 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 25681 25682 25683 </td> <!-- entry_type --> 25684 25685 <td class="entry_description"> 25686 <p>The shading map is a low-resolution floating-point map 25687that lists the coefficients used to correct for vignetting and color shading,<wbr/> 25688for each Bayer color channel of RAW image data.<wbr/></p> 25689 </td> 25690 25691 <td class="entry_units"> 25692 </td> 25693 25694 <td class="entry_range"> 25695 <p>Each gain factor is >= 1</p> 25696 </td> 25697 25698 <td class="entry_hal_version"> 25699 <p>3.<wbr/>2</p> 25700 </td> 25701 25702 <td class="entry_tags"> 25703 </td> 25704 25705 </tr> 25706 <tr class="entries_header"> 25707 <th class="th_details" colspan="6">Details</th> 25708 </tr> 25709 <tr class="entry_cont"> 25710 <td class="entry_details" colspan="6"> 25711 <p>The map provided here is the same map that is used by the camera device to 25712correct both color shading and vignetting for output non-RAW images.<wbr/></p> 25713<p>When there is no lens shading correction applied to RAW 25714output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> 25715false),<wbr/> this map is the complete lens shading correction 25716map; when there is some lens shading correction applied to 25717the 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 25718correction map that needs to be applied to get shading 25719corrected images that match the camera device's output for 25720non-RAW formats.<wbr/></p> 25721<p>For a complete shading correction map,<wbr/> the least shaded 25722section of the image will have a gain factor of 1; all 25723other sections will have gains above 1.<wbr/></p> 25724<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 25725will take into account the colorCorrection settings.<wbr/></p> 25726<p>The shading map is for the entire active pixel array,<wbr/> and is not 25727affected by the crop region specified in the request.<wbr/> Each shading map 25728entry is the value of the shading compensation map over a specific 25729pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 25730map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 25731(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 25732pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 25733The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 25734<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 25735channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 25736The shading map is stored in a fully interleaved format,<wbr/> and its size 25737is 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> 25738<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/> 25739and will be smaller than 64x64.<wbr/></p> 25740<p>As an example,<wbr/> given a very small map defined as:</p> 25741<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 25742<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 25743[ 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/> 25744 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/> 25745 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/> 25746 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/> 25747 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/> 25748 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 ] 25749</code></pre> 25750<p>The low-resolution scaling map images for each channel are 25751(displayed using nearest-neighbor interpolation):</p> 25752<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 25753<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 25754<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 25755<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 25756<p>As a visualization only,<wbr/> inverting the full-color map to recover an 25757image of a gray wall (using bicubic interpolation for visual quality) 25758as captured by the sensor gives:</p> 25759<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 25760<p>Note that the RAW image data might be subject to lens shading 25761correction not reported on this map.<wbr/> Query 25762<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 25763to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> 25764is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading 25765correction.<wbr/> In the case full lens shading correction is applied to RAW 25766images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/> 25767In other words,<wbr/> the map reported in this key is the remaining lens shading 25768that needs to be applied on the RAW image to get images without lens shading 25769artifacts.<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 25770formats.<wbr/></p> 25771 </td> 25772 </tr> 25773 25774 <tr class="entries_header"> 25775 <th class="th_details" colspan="6">HAL Implementation Details</th> 25776 </tr> 25777 <tr class="entry_cont"> 25778 <td class="entry_details" colspan="6"> 25779 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> 25780When AE and AWB are in AUTO modes 25781(<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 25782may have all the information it need to generate most accurate lens shading map.<wbr/> When 25783AE or AWB are in manual mode 25784(<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 25785may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 25786generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 25787the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p> 25788 </td> 25789 </tr> 25790 25791 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25792 <!-- end of entry --> 25793 25794 25795 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 25796 <td class="entry_name 25797 entry_name_deprecated 25798 " rowspan="3"> 25799 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 25800 </td> 25801 <td class="entry_type"> 25802 <span class="entry_type_name">float</span> 25803 <span class="entry_type_container">x</span> 25804 25805 <span class="entry_type_array"> 25806 4 25807 </span> 25808 <span class="entry_type_visibility"> [hidden]</span> 25809 25810 25811 25812 <span class="entry_type_deprecated">[deprecated] </span> 25813 25814 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 25815 25816 25817 </td> <!-- entry_type --> 25818 25819 <td class="entry_description"> 25820 <p>The best-fit color channel gains calculated 25821by the camera device's statistics units for the current output frame.<wbr/></p> 25822 </td> 25823 25824 <td class="entry_units"> 25825 </td> 25826 25827 <td class="entry_range"> 25828 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 25829 </td> 25830 25831 <td class="entry_hal_version"> 25832 <p>3.<wbr/>2</p> 25833 </td> 25834 25835 <td class="entry_tags"> 25836 </td> 25837 25838 </tr> 25839 <tr class="entries_header"> 25840 <th class="th_details" colspan="6">Details</th> 25841 </tr> 25842 <tr class="entry_cont"> 25843 <td class="entry_details" colspan="6"> 25844 <p>This may be different than the gains used for this frame,<wbr/> 25845since statistics processing on data from a new frame 25846typically completes after the transform has already been 25847applied to that frame.<wbr/></p> 25848<p>The 4 channel gains are defined in Bayer domain,<wbr/> 25849see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 25850<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 25851regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 25852 </td> 25853 </tr> 25854 25855 25856 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25857 <!-- end of entry --> 25858 25859 25860 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 25861 <td class="entry_name 25862 entry_name_deprecated 25863 " rowspan="3"> 25864 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 25865 </td> 25866 <td class="entry_type"> 25867 <span class="entry_type_name">rational</span> 25868 <span class="entry_type_container">x</span> 25869 25870 <span class="entry_type_array"> 25871 3 x 3 25872 </span> 25873 <span class="entry_type_visibility"> [hidden]</span> 25874 25875 25876 25877 <span class="entry_type_deprecated">[deprecated] </span> 25878 25879 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 25880 25881 25882 </td> <!-- entry_type --> 25883 25884 <td class="entry_description"> 25885 <p>The best-fit color transform matrix estimate 25886calculated by the camera device's statistics units for the current 25887output frame.<wbr/></p> 25888 </td> 25889 25890 <td class="entry_units"> 25891 </td> 25892 25893 <td class="entry_range"> 25894 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 25895 </td> 25896 25897 <td class="entry_hal_version"> 25898 <p>3.<wbr/>2</p> 25899 </td> 25900 25901 <td class="entry_tags"> 25902 </td> 25903 25904 </tr> 25905 <tr class="entries_header"> 25906 <th class="th_details" colspan="6">Details</th> 25907 </tr> 25908 <tr class="entry_cont"> 25909 <td class="entry_details" colspan="6"> 25910 <p>The camera device will provide the estimate from its 25911statistics unit on the white balance transforms to use 25912for the next frame.<wbr/> These are the values the camera device believes 25913are the best fit for the current output frame.<wbr/> This may 25914be different than the transform used for this frame,<wbr/> since 25915statistics processing on data from a new frame typically 25916completes after the transform has already been applied to 25917that frame.<wbr/></p> 25918<p>These estimates must be provided for all frames,<wbr/> even if 25919capture settings and color transforms are set by the application.<wbr/></p> 25920<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 25921regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 25922 </td> 25923 </tr> 25924 25925 25926 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 25927 <!-- end of entry --> 25928 25929 25930 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 25931 <td class="entry_name 25932 " rowspan="3"> 25933 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 25934 </td> 25935 <td class="entry_type"> 25936 <span class="entry_type_name entry_type_name_enum">byte</span> 25937 25938 <span class="entry_type_visibility"> [public]</span> 25939 25940 25941 <span class="entry_type_hwlevel">[full] </span> 25942 25943 25944 25945 <ul class="entry_type_enum"> 25946 <li> 25947 <span class="entry_type_enum_name">NONE (v3.2)</span> 25948 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination 25949in the current scene.<wbr/></p></span> 25950 </li> 25951 <li> 25952 <span class="entry_type_enum_name">50HZ (v3.2)</span> 25953 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz 25954in the current scene.<wbr/></p></span> 25955 </li> 25956 <li> 25957 <span class="entry_type_enum_name">60HZ (v3.2)</span> 25958 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz 25959in the current scene.<wbr/></p></span> 25960 </li> 25961 </ul> 25962 25963 </td> <!-- entry_type --> 25964 25965 <td class="entry_description"> 25966 <p>The camera device estimated scene illumination lighting 25967frequency.<wbr/></p> 25968 </td> 25969 25970 <td class="entry_units"> 25971 </td> 25972 25973 <td class="entry_range"> 25974 </td> 25975 25976 <td class="entry_hal_version"> 25977 <p>3.<wbr/>2</p> 25978 </td> 25979 25980 <td class="entry_tags"> 25981 </td> 25982 25983 </tr> 25984 <tr class="entries_header"> 25985 <th class="th_details" colspan="6">Details</th> 25986 </tr> 25987 <tr class="entry_cont"> 25988 <td class="entry_details" colspan="6"> 25989 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 25990that depends on the local utility power standards.<wbr/> This flicker must be 25991accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 25992The camera device uses this entry to tell the application what the scene 25993illuminant frequency is.<wbr/></p> 25994<p>When manual exposure control is enabled 25995(<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> == 25996OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform 25997antibanding,<wbr/> and the application can ensure it selects 25998exposure times that do not cause banding issues by looking 25999into this metadata field.<wbr/> See 26000<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p> 26001<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p> 26002 </td> 26003 </tr> 26004 26005 26006 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26007 <!-- end of entry --> 26008 26009 26010 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 26011 <td class="entry_name 26012 " rowspan="3"> 26013 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 26014 </td> 26015 <td class="entry_type"> 26016 <span class="entry_type_name entry_type_name_enum">byte</span> 26017 26018 <span class="entry_type_visibility"> [public as boolean]</span> 26019 26020 26021 26022 26023 26024 <ul class="entry_type_enum"> 26025 <li> 26026 <span class="entry_type_enum_name">OFF (v3.2)</span> 26027 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 26028 </li> 26029 <li> 26030 <span class="entry_type_enum_name">ON (v3.2)</span> 26031 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 26032 </li> 26033 </ul> 26034 26035 </td> <!-- entry_type --> 26036 26037 <td class="entry_description"> 26038 <p>Operating mode for hot pixel map generation.<wbr/></p> 26039 </td> 26040 26041 <td class="entry_units"> 26042 </td> 26043 26044 <td class="entry_range"> 26045 <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> 26046 </td> 26047 26048 <td class="entry_hal_version"> 26049 <p>3.<wbr/>2</p> 26050 </td> 26051 26052 <td class="entry_tags"> 26053 <ul class="entry_tags"> 26054 <li><a href="#tag_V1">V1</a></li> 26055 <li><a href="#tag_RAW">RAW</a></li> 26056 </ul> 26057 </td> 26058 26059 </tr> 26060 <tr class="entries_header"> 26061 <th class="th_details" colspan="6">Details</th> 26062 </tr> 26063 <tr class="entry_cont"> 26064 <td class="entry_details" colspan="6"> 26065 <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/> 26066If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 26067 </td> 26068 </tr> 26069 26070 26071 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26072 <!-- end of entry --> 26073 26074 26075 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 26076 <td class="entry_name 26077 " rowspan="5"> 26078 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 26079 </td> 26080 <td class="entry_type"> 26081 <span class="entry_type_name">int32</span> 26082 <span class="entry_type_container">x</span> 26083 26084 <span class="entry_type_array"> 26085 2 x n 26086 </span> 26087 <span class="entry_type_visibility"> [public as point]</span> 26088 26089 26090 26091 26092 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 26093 26094 26095 </td> <!-- entry_type --> 26096 26097 <td class="entry_description"> 26098 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 26099 </td> 26100 26101 <td class="entry_units"> 26102 </td> 26103 26104 <td class="entry_range"> 26105 <p>n <= number of pixels on the sensor.<wbr/> 26106The <code>(x,<wbr/> y)</code> coordinates must be bounded by 26107<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 26108 </td> 26109 26110 <td class="entry_hal_version"> 26111 <p>3.<wbr/>2</p> 26112 </td> 26113 26114 <td class="entry_tags"> 26115 <ul class="entry_tags"> 26116 <li><a href="#tag_V1">V1</a></li> 26117 <li><a href="#tag_RAW">RAW</a></li> 26118 </ul> 26119 </td> 26120 26121 </tr> 26122 <tr class="entries_header"> 26123 <th class="th_details" colspan="6">Details</th> 26124 </tr> 26125 <tr class="entry_cont"> 26126 <td class="entry_details" colspan="6"> 26127 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 26128<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 26129bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 26130height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 26131This may include hot pixels that lie outside of the active array 26132bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 26133 </td> 26134 </tr> 26135 26136 <tr class="entries_header"> 26137 <th class="th_details" colspan="6">HAL Implementation Details</th> 26138 </tr> 26139 <tr class="entry_cont"> 26140 <td class="entry_details" colspan="6"> 26141 <p>A hotpixel map contains the coordinates of pixels on the camera 26142sensor that do report valid values (usually due to defects in 26143the camera sensor).<wbr/> This includes pixels that are stuck at certain 26144values,<wbr/> or have a response that does not accuractly encode the 26145incoming light from the scene.<wbr/></p> 26146<p>To avoid performance issues,<wbr/> there should be significantly fewer hot 26147pixels than actual pixels on the camera sensor.<wbr/></p> 26148 </td> 26149 </tr> 26150 26151 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26152 <!-- end of entry --> 26153 26154 26155 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> 26156 <td class="entry_name 26157 " rowspan="3"> 26158 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 26159 </td> 26160 <td class="entry_type"> 26161 <span class="entry_type_name entry_type_name_enum">byte</span> 26162 26163 <span class="entry_type_visibility"> [public]</span> 26164 26165 26166 <span class="entry_type_hwlevel">[full] </span> 26167 26168 26169 26170 <ul class="entry_type_enum"> 26171 <li> 26172 <span class="entry_type_enum_name">OFF (v3.2)</span> 26173 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 26174 </li> 26175 <li> 26176 <span class="entry_type_enum_name">ON (v3.2)</span> 26177 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 26178 </li> 26179 </ul> 26180 26181 </td> <!-- entry_type --> 26182 26183 <td class="entry_description"> 26184 <p>Whether the camera device will output the lens 26185shading map in output result metadata.<wbr/></p> 26186 </td> 26187 26188 <td class="entry_units"> 26189 </td> 26190 26191 <td class="entry_range"> 26192 <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> 26193 </td> 26194 26195 <td class="entry_hal_version"> 26196 <p>3.<wbr/>2</p> 26197 </td> 26198 26199 <td class="entry_tags"> 26200 <ul class="entry_tags"> 26201 <li><a href="#tag_RAW">RAW</a></li> 26202 </ul> 26203 </td> 26204 26205 </tr> 26206 <tr class="entries_header"> 26207 <th class="th_details" colspan="6">Details</th> 26208 </tr> 26209 <tr class="entry_cont"> 26210 <td class="entry_details" colspan="6"> 26211 <p>When set to ON,<wbr/> 26212<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 26213the output result metadata.<wbr/></p> 26214<p>ON is always supported on devices with the RAW capability.<wbr/></p> 26215 </td> 26216 </tr> 26217 26218 26219 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26220 <!-- end of entry --> 26221 26222 26223 <tr class="entry" id="dynamic_android.statistics.oisDataMode"> 26224 <td class="entry_name 26225 " rowspan="1"> 26226 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode 26227 </td> 26228 <td class="entry_type"> 26229 <span class="entry_type_name entry_type_name_enum">byte</span> 26230 26231 <span class="entry_type_visibility"> [public]</span> 26232 26233 26234 26235 26236 26237 <ul class="entry_type_enum"> 26238 <li> 26239 <span class="entry_type_enum_name">OFF (v3.3)</span> 26240 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span> 26241 </li> 26242 <li> 26243 <span class="entry_type_enum_name">ON (v3.3)</span> 26244 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span> 26245 </li> 26246 </ul> 26247 26248 </td> <!-- entry_type --> 26249 26250 <td class="entry_description"> 26251 <p>A control for selecting whether OIS position information is included in output 26252result metadata.<wbr/></p> 26253 </td> 26254 26255 <td class="entry_units"> 26256 </td> 26257 26258 <td class="entry_range"> 26259 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p> 26260 </td> 26261 26262 <td class="entry_hal_version"> 26263 <p>3.<wbr/>3</p> 26264 </td> 26265 26266 <td class="entry_tags"> 26267 </td> 26268 26269 </tr> 26270 26271 26272 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26273 <!-- end of entry --> 26274 26275 26276 <tr class="entry" id="dynamic_android.statistics.oisTimestamps"> 26277 <td class="entry_name 26278 " rowspan="3"> 26279 android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps 26280 </td> 26281 <td class="entry_type"> 26282 <span class="entry_type_name">int64</span> 26283 <span class="entry_type_container">x</span> 26284 26285 <span class="entry_type_array"> 26286 n 26287 </span> 26288 <span class="entry_type_visibility"> [ndk_public]</span> 26289 26290 26291 26292 26293 26294 26295 </td> <!-- entry_type --> 26296 26297 <td class="entry_description"> 26298 <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p> 26299 </td> 26300 26301 <td class="entry_units"> 26302 nanoseconds 26303 </td> 26304 26305 <td class="entry_range"> 26306 </td> 26307 26308 <td class="entry_hal_version"> 26309 <p>3.<wbr/>3</p> 26310 </td> 26311 26312 <td class="entry_tags"> 26313 </td> 26314 26315 </tr> 26316 <tr class="entries_header"> 26317 <th class="th_details" colspan="6">Details</th> 26318 </tr> 26319 <tr class="entry_cont"> 26320 <td class="entry_details" colspan="6"> 26321 <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same 26322timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p> 26323 </td> 26324 </tr> 26325 26326 26327 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26328 <!-- end of entry --> 26329 26330 26331 <tr class="entry" id="dynamic_android.statistics.oisXShifts"> 26332 <td class="entry_name 26333 " rowspan="3"> 26334 android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts 26335 </td> 26336 <td class="entry_type"> 26337 <span class="entry_type_name">float</span> 26338 <span class="entry_type_container">x</span> 26339 26340 <span class="entry_type_array"> 26341 n 26342 </span> 26343 <span class="entry_type_visibility"> [ndk_public]</span> 26344 26345 26346 26347 26348 26349 26350 </td> <!-- entry_type --> 26351 26352 <td class="entry_description"> 26353 <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p> 26354 </td> 26355 26356 <td class="entry_units"> 26357 Pixels in active array.<wbr/> 26358 </td> 26359 26360 <td class="entry_range"> 26361 </td> 26362 26363 <td class="entry_hal_version"> 26364 <p>3.<wbr/>3</p> 26365 </td> 26366 26367 <td class="entry_tags"> 26368 </td> 26369 26370 </tr> 26371 <tr class="entries_header"> 26372 <th class="th_details" colspan="6">Details</th> 26373 </tr> 26374 <tr class="entry_cont"> 26375 <td class="entry_details" colspan="6"> 26376 <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/> 26377A positive value is a shift from left to right in active array coordinate system.<wbr/> For 26378example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of 26379(3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p> 26380<p>The number of shifts must match the number of timestamps in 26381<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p> 26382 </td> 26383 </tr> 26384 26385 26386 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26387 <!-- end of entry --> 26388 26389 26390 <tr class="entry" id="dynamic_android.statistics.oisYShifts"> 26391 <td class="entry_name 26392 " rowspan="3"> 26393 android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts 26394 </td> 26395 <td class="entry_type"> 26396 <span class="entry_type_name">float</span> 26397 <span class="entry_type_container">x</span> 26398 26399 <span class="entry_type_array"> 26400 n 26401 </span> 26402 <span class="entry_type_visibility"> [ndk_public]</span> 26403 26404 26405 26406 26407 26408 26409 </td> <!-- entry_type --> 26410 26411 <td class="entry_description"> 26412 <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p> 26413 </td> 26414 26415 <td class="entry_units"> 26416 Pixels in active array.<wbr/> 26417 </td> 26418 26419 <td class="entry_range"> 26420 </td> 26421 26422 <td class="entry_hal_version"> 26423 <p>3.<wbr/>3</p> 26424 </td> 26425 26426 <td class="entry_tags"> 26427 </td> 26428 26429 </tr> 26430 <tr class="entries_header"> 26431 <th class="th_details" colspan="6">Details</th> 26432 </tr> 26433 <tr class="entry_cont"> 26434 <td class="entry_details" colspan="6"> 26435 <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/> 26436A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For 26437example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of 26438(0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p> 26439<p>The number of shifts must match the number of timestamps in 26440<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p> 26441 </td> 26442 </tr> 26443 26444 26445 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26446 <!-- end of entry --> 26447 26448 26449 <tr class="entry" id="dynamic_android.statistics.oisSamples"> 26450 <td class="entry_name 26451 " rowspan="3"> 26452 android.<wbr/>statistics.<wbr/>ois<wbr/>Samples 26453 </td> 26454 <td class="entry_type"> 26455 <span class="entry_type_name">float</span> 26456 <span class="entry_type_container">x</span> 26457 26458 <span class="entry_type_array"> 26459 n 26460 </span> 26461 <span class="entry_type_visibility"> [java_public as oisSample]</span> 26462 26463 <span class="entry_type_synthetic">[synthetic] </span> 26464 26465 26466 26467 26468 26469 </td> <!-- entry_type --> 26470 26471 <td class="entry_description"> 26472 <p>An array of OIS samples.<wbr/></p> 26473 </td> 26474 26475 <td class="entry_units"> 26476 </td> 26477 26478 <td class="entry_range"> 26479 </td> 26480 26481 <td class="entry_hal_version"> 26482 <p>3.<wbr/>3</p> 26483 </td> 26484 26485 <td class="entry_tags"> 26486 </td> 26487 26488 </tr> 26489 <tr class="entries_header"> 26490 <th class="th_details" colspan="6">Details</th> 26491 </tr> 26492 <tr class="entry_cont"> 26493 <td class="entry_details" colspan="6"> 26494 <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/> 26495in pixels,<wbr/> of the OIS sample.<wbr/></p> 26496<p>A positive value for a shift in x direction is a shift from left to right in active array 26497coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array 26498coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p> 26499<p>A positive value for a shift in y direction is a shift from top to bottom in active array 26500coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array 26501coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p> 26502 </td> 26503 </tr> 26504 26505 26506 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26507 <!-- end of entry --> 26508 26509 26510 26511 <!-- end of kind --> 26512 </tbody> 26513 26514 <!-- end of section --> 26515 <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr> 26516 26517 26518 <tr><td colspan="7" class="kind">controls</td></tr> 26519 26520 <thead class="entries_header"> 26521 <tr> 26522 <th class="th_name">Property Name</th> 26523 <th class="th_type">Type</th> 26524 <th class="th_description">Description</th> 26525 <th class="th_units">Units</th> 26526 <th class="th_range">Range</th> 26527 <th class="th_hal_version">Initial HIDL HAL version</th> 26528 <th class="th_tags">Tags</th> 26529 </tr> 26530 </thead> 26531 26532 <tbody> 26533 26534 26535 26536 26537 26538 26539 26540 26541 26542 26543 <tr class="entry" id="controls_android.tonemap.curveBlue"> 26544 <td class="entry_name 26545 " rowspan="3"> 26546 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 26547 </td> 26548 <td class="entry_type"> 26549 <span class="entry_type_name">float</span> 26550 <span class="entry_type_container">x</span> 26551 26552 <span class="entry_type_array"> 26553 n x 2 26554 </span> 26555 <span class="entry_type_visibility"> [ndk_public]</span> 26556 26557 26558 <span class="entry_type_hwlevel">[full] </span> 26559 26560 26561 <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> 26562 26563 26564 </td> <!-- entry_type --> 26565 26566 <td class="entry_description"> 26567 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 26568channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 26569CONTRAST_<wbr/>CURVE.<wbr/></p> 26570 </td> 26571 26572 <td class="entry_units"> 26573 </td> 26574 26575 <td class="entry_range"> 26576 </td> 26577 26578 <td class="entry_hal_version"> 26579 <p>3.<wbr/>2</p> 26580 </td> 26581 26582 <td class="entry_tags"> 26583 </td> 26584 26585 </tr> 26586 <tr class="entries_header"> 26587 <th class="th_details" colspan="6">Details</th> 26588 </tr> 26589 <tr class="entry_cont"> 26590 <td class="entry_details" colspan="6"> 26591 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 26592 </td> 26593 </tr> 26594 26595 26596 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26597 <!-- end of entry --> 26598 26599 26600 <tr class="entry" id="controls_android.tonemap.curveGreen"> 26601 <td class="entry_name 26602 " rowspan="3"> 26603 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 26604 </td> 26605 <td class="entry_type"> 26606 <span class="entry_type_name">float</span> 26607 <span class="entry_type_container">x</span> 26608 26609 <span class="entry_type_array"> 26610 n x 2 26611 </span> 26612 <span class="entry_type_visibility"> [ndk_public]</span> 26613 26614 26615 <span class="entry_type_hwlevel">[full] </span> 26616 26617 26618 <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> 26619 26620 26621 </td> <!-- entry_type --> 26622 26623 <td class="entry_description"> 26624 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 26625channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 26626CONTRAST_<wbr/>CURVE.<wbr/></p> 26627 </td> 26628 26629 <td class="entry_units"> 26630 </td> 26631 26632 <td class="entry_range"> 26633 </td> 26634 26635 <td class="entry_hal_version"> 26636 <p>3.<wbr/>2</p> 26637 </td> 26638 26639 <td class="entry_tags"> 26640 </td> 26641 26642 </tr> 26643 <tr class="entries_header"> 26644 <th class="th_details" colspan="6">Details</th> 26645 </tr> 26646 <tr class="entry_cont"> 26647 <td class="entry_details" colspan="6"> 26648 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 26649 </td> 26650 </tr> 26651 26652 26653 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26654 <!-- end of entry --> 26655 26656 26657 <tr class="entry" id="controls_android.tonemap.curveRed"> 26658 <td class="entry_name 26659 " rowspan="5"> 26660 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 26661 </td> 26662 <td class="entry_type"> 26663 <span class="entry_type_name">float</span> 26664 <span class="entry_type_container">x</span> 26665 26666 <span class="entry_type_array"> 26667 n x 2 26668 </span> 26669 <span class="entry_type_visibility"> [ndk_public]</span> 26670 26671 26672 <span class="entry_type_hwlevel">[full] </span> 26673 26674 26675 <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> 26676 26677 26678 </td> <!-- entry_type --> 26679 26680 <td class="entry_description"> 26681 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 26682channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 26683CONTRAST_<wbr/>CURVE.<wbr/></p> 26684 </td> 26685 26686 <td class="entry_units"> 26687 </td> 26688 26689 <td class="entry_range"> 26690 <p>0-1 on both input and output coordinates,<wbr/> normalized 26691as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 26692 </td> 26693 26694 <td class="entry_hal_version"> 26695 <p>3.<wbr/>2</p> 26696 </td> 26697 26698 <td class="entry_tags"> 26699 </td> 26700 26701 </tr> 26702 <tr class="entries_header"> 26703 <th class="th_details" colspan="6">Details</th> 26704 </tr> 26705 <tr class="entry_cont"> 26706 <td class="entry_details" colspan="6"> 26707 <p>Each channel's curve is defined by an array of control points:</p> 26708<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 26709 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 267102 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 26711<p>These are sorted in order of increasing <code>Pin</code>; it is 26712required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 26713define a complete mapping.<wbr/> For input values between control points,<wbr/> 26714the camera device must linearly interpolate between the control 26715points.<wbr/></p> 26716<p>Each curve can have an independent number of points,<wbr/> and the number 26717of points can be less than max (that is,<wbr/> the request doesn't have to 26718always provide a curve with number of points equivalent to 26719<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 26720<p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels 26721are ignored.<wbr/></p> 26722<p>A few examples,<wbr/> and their corresponding graphical mappings; these 26723only specify the red channel and the precision is limited to 4 26724digits,<wbr/> for conciseness.<wbr/></p> 26725<p>Linear mapping:</p> 26726<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 ] 26727</code></pre> 26728<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 26729<p>Invert mapping:</p> 26730<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 ] 26731</code></pre> 26732<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 26733<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 26734<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 26735 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/> 26736 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/> 26737 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/> 26738 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 ] 26739</code></pre> 26740<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 26741<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 26742<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 26743 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/> 26744 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/> 26745 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/> 26746 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 ] 26747</code></pre> 26748<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 26749 </td> 26750 </tr> 26751 26752 <tr class="entries_header"> 26753 <th class="th_details" colspan="6">HAL Implementation Details</th> 26754 </tr> 26755 <tr class="entry_cont"> 26756 <td class="entry_details" colspan="6"> 26757 <p>For good quality of mapping,<wbr/> at least 128 control points are 26758preferred.<wbr/></p> 26759<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 26760control points used as are available.<wbr/></p> 26761 </td> 26762 </tr> 26763 26764 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26765 <!-- end of entry --> 26766 26767 26768 <tr class="entry" id="controls_android.tonemap.curve"> 26769 <td class="entry_name 26770 " rowspan="5"> 26771 android.<wbr/>tonemap.<wbr/>curve 26772 </td> 26773 <td class="entry_type"> 26774 <span class="entry_type_name">float</span> 26775 26776 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span> 26777 26778 <span class="entry_type_synthetic">[synthetic] </span> 26779 26780 <span class="entry_type_hwlevel">[full] </span> 26781 26782 26783 26784 26785 </td> <!-- entry_type --> 26786 26787 <td class="entry_description"> 26788 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 26789is CONTRAST_<wbr/>CURVE.<wbr/></p> 26790 </td> 26791 26792 <td class="entry_units"> 26793 </td> 26794 26795 <td class="entry_range"> 26796 </td> 26797 26798 <td class="entry_hal_version"> 26799 <p>3.<wbr/>2</p> 26800 </td> 26801 26802 <td class="entry_tags"> 26803 </td> 26804 26805 </tr> 26806 <tr class="entries_header"> 26807 <th class="th_details" colspan="6">Details</th> 26808 </tr> 26809 <tr class="entry_cont"> 26810 <td class="entry_details" colspan="6"> 26811 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 26812channels respectively.<wbr/> The following example uses the red channel as an 26813example.<wbr/> The same logic applies to green and blue channel.<wbr/> 26814Each channel's curve is defined by an array of control points:</p> 26815<pre><code>curveRed = 26816 [ 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) ] 268172 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 26818<p>These are sorted in order of increasing <code>Pin</code>; it is always 26819guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 26820define a complete mapping.<wbr/> For input values between control points,<wbr/> 26821the camera device must linearly interpolate between the control 26822points.<wbr/></p> 26823<p>Each curve can have an independent number of points,<wbr/> and the number 26824of points can be less than max (that is,<wbr/> the request doesn't have to 26825always provide a curve with number of points equivalent to 26826<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 26827<p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels 26828are ignored.<wbr/></p> 26829<p>A few examples,<wbr/> and their corresponding graphical mappings; these 26830only specify the red channel and the precision is limited to 4 26831digits,<wbr/> for conciseness.<wbr/></p> 26832<p>Linear mapping:</p> 26833<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 26834</code></pre> 26835<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 26836<p>Invert mapping:</p> 26837<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 26838</code></pre> 26839<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 26840<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 26841<pre><code>curveRed = [ 26842 (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/> 26843 (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/> 26844 (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/> 26845 (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) ] 26846</code></pre> 26847<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 26848<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 26849<pre><code>curveRed = [ 26850 (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/> 26851 (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/> 26852 (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/> 26853 (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) ] 26854</code></pre> 26855<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 26856 </td> 26857 </tr> 26858 26859 <tr class="entries_header"> 26860 <th class="th_details" colspan="6">HAL Implementation Details</th> 26861 </tr> 26862 <tr class="entry_cont"> 26863 <td class="entry_details" colspan="6"> 26864 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 26865curveBlue entries.<wbr/></p> 26866 </td> 26867 </tr> 26868 26869 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26870 <!-- end of entry --> 26871 26872 26873 <tr class="entry" id="controls_android.tonemap.mode"> 26874 <td class="entry_name 26875 " rowspan="3"> 26876 android.<wbr/>tonemap.<wbr/>mode 26877 </td> 26878 <td class="entry_type"> 26879 <span class="entry_type_name entry_type_name_enum">byte</span> 26880 26881 <span class="entry_type_visibility"> [public]</span> 26882 26883 26884 <span class="entry_type_hwlevel">[full] </span> 26885 26886 26887 26888 <ul class="entry_type_enum"> 26889 <li> 26890 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span> 26891 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 26892the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 26893<p>All color enhancement and tonemapping must be disabled,<wbr/> except 26894for applying the tonemapping curve specified by 26895<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 26896<p>Must not slow down frame rate relative to raw 26897sensor output.<wbr/></p></span> 26898 </li> 26899 <li> 26900 <span class="entry_type_enum_name">FAST (v3.2)</span> 26901 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 26902reducing frame rate compared to raw sensor output.<wbr/></p></span> 26903 </li> 26904 <li> 26905 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 26906 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 26907the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 26908 </li> 26909 <li> 26910 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span> 26911 <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 26912tonemapping.<wbr/></p> 26913<p>All color enhancement and tonemapping must be disabled,<wbr/> except 26914for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 26915<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 26916 </li> 26917 <li> 26918 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span> 26919 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 26920<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 26921<p>All color enhancement and tonemapping must be disabled,<wbr/> except 26922for applying the tonemapping curve specified by 26923<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 26924<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 26925 </li> 26926 </ul> 26927 26928 </td> <!-- entry_type --> 26929 26930 <td class="entry_description"> 26931 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 26932 </td> 26933 26934 <td class="entry_units"> 26935 </td> 26936 26937 <td class="entry_range"> 26938 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 26939 </td> 26940 26941 <td class="entry_hal_version"> 26942 <p>3.<wbr/>2</p> 26943 </td> 26944 26945 <td class="entry_tags"> 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>When switching to an application-defined contrast curve by setting 26955<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 26956per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 26957mapping from input high-bit-depth pixel value to the output 26958low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 26959and output may change depending on the camera pipeline,<wbr/> the values 26960are specified by normalized floating-point numbers.<wbr/></p> 26961<p>More-complex color mapping operations such as 3D color look-up 26962tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 26963transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 26964CONTRAST_<wbr/>CURVE.<wbr/></p> 26965<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 26966emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 26967These values are always available,<wbr/> and as close as possible to the 26968actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 26969<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 26970provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 26971roughly the same.<wbr/></p> 26972 </td> 26973 </tr> 26974 26975 26976 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 26977 <!-- end of entry --> 26978 26979 26980 <tr class="entry" id="controls_android.tonemap.gamma"> 26981 <td class="entry_name 26982 " rowspan="3"> 26983 android.<wbr/>tonemap.<wbr/>gamma 26984 </td> 26985 <td class="entry_type"> 26986 <span class="entry_type_name">float</span> 26987 26988 <span class="entry_type_visibility"> [public]</span> 26989 26990 26991 26992 26993 26994 26995 </td> <!-- entry_type --> 26996 26997 <td class="entry_description"> 26998 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 26999GAMMA_<wbr/>VALUE</p> 27000 </td> 27001 27002 <td class="entry_units"> 27003 </td> 27004 27005 <td class="entry_range"> 27006 </td> 27007 27008 <td class="entry_hal_version"> 27009 <p>3.<wbr/>2</p> 27010 </td> 27011 27012 <td class="entry_tags"> 27013 </td> 27014 27015 </tr> 27016 <tr class="entries_header"> 27017 <th class="th_details" colspan="6">Details</th> 27018 </tr> 27019 <tr class="entry_cont"> 27020 <td class="entry_details" colspan="6"> 27021 <p>The tonemap curve will be defined the following formula: 27022* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 27023where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 27024pow is the power function and gamma is the gamma value specified by this 27025key.<wbr/></p> 27026<p>The same curve will be applied to all color channels.<wbr/> The camera device 27027may clip the input gamma value to its supported range.<wbr/> The actual applied 27028value will be returned in capture result.<wbr/></p> 27029<p>The valid range of gamma value varies on different devices,<wbr/> but values 27030within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 27031 </td> 27032 </tr> 27033 27034 27035 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27036 <!-- end of entry --> 27037 27038 27039 <tr class="entry" id="controls_android.tonemap.presetCurve"> 27040 <td class="entry_name 27041 " rowspan="3"> 27042 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 27043 </td> 27044 <td class="entry_type"> 27045 <span class="entry_type_name entry_type_name_enum">byte</span> 27046 27047 <span class="entry_type_visibility"> [public]</span> 27048 27049 27050 27051 27052 27053 <ul class="entry_type_enum"> 27054 <li> 27055 <span class="entry_type_enum_name">SRGB (v3.2)</span> 27056 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 27057 </li> 27058 <li> 27059 <span class="entry_type_enum_name">REC709 (v3.2)</span> 27060 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 27061 </li> 27062 </ul> 27063 27064 </td> <!-- entry_type --> 27065 27066 <td class="entry_description"> 27067 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27068PRESET_<wbr/>CURVE</p> 27069 </td> 27070 27071 <td class="entry_units"> 27072 </td> 27073 27074 <td class="entry_range"> 27075 </td> 27076 27077 <td class="entry_hal_version"> 27078 <p>3.<wbr/>2</p> 27079 </td> 27080 27081 <td class="entry_tags"> 27082 </td> 27083 27084 </tr> 27085 <tr class="entries_header"> 27086 <th class="th_details" colspan="6">Details</th> 27087 </tr> 27088 <tr class="entry_cont"> 27089 <td class="entry_details" colspan="6"> 27090 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 27091<p>sRGB (approximated by 16 control points):</p> 27092<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 27093<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 27094<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 27095<p>Note that above figures show a 16 control points approximation of preset 27096curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 27097 </td> 27098 </tr> 27099 27100 27101 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27102 <!-- end of entry --> 27103 27104 27105 27106 <!-- end of kind --> 27107 </tbody> 27108 <tr><td colspan="7" class="kind">static</td></tr> 27109 27110 <thead class="entries_header"> 27111 <tr> 27112 <th class="th_name">Property Name</th> 27113 <th class="th_type">Type</th> 27114 <th class="th_description">Description</th> 27115 <th class="th_units">Units</th> 27116 <th class="th_range">Range</th> 27117 <th class="th_hal_version">Initial HIDL HAL version</th> 27118 <th class="th_tags">Tags</th> 27119 </tr> 27120 </thead> 27121 27122 <tbody> 27123 27124 27125 27126 27127 27128 27129 27130 27131 27132 27133 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 27134 <td class="entry_name 27135 " rowspan="5"> 27136 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 27137 </td> 27138 <td class="entry_type"> 27139 <span class="entry_type_name">int32</span> 27140 27141 <span class="entry_type_visibility"> [public]</span> 27142 27143 27144 <span class="entry_type_hwlevel">[full] </span> 27145 27146 27147 27148 27149 </td> <!-- entry_type --> 27150 27151 <td class="entry_description"> 27152 <p>Maximum number of supported points in the 27153tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 27154 </td> 27155 27156 <td class="entry_units"> 27157 </td> 27158 27159 <td class="entry_range"> 27160 </td> 27161 27162 <td class="entry_hal_version"> 27163 <p>3.<wbr/>2</p> 27164 </td> 27165 27166 <td class="entry_tags"> 27167 </td> 27168 27169 </tr> 27170 <tr class="entries_header"> 27171 <th class="th_details" colspan="6">Details</th> 27172 </tr> 27173 <tr class="entry_cont"> 27174 <td class="entry_details" colspan="6"> 27175 <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 27176less than this maximum,<wbr/> the camera device will resample the curve to its internal 27177representation,<wbr/> using linear interpolation.<wbr/></p> 27178<p>The output curves in the result metadata may have a different number 27179of points than the input curves,<wbr/> and will represent the actual 27180hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 27181 </td> 27182 </tr> 27183 27184 <tr class="entries_header"> 27185 <th class="th_details" colspan="6">HAL Implementation Details</th> 27186 </tr> 27187 <tr class="entry_cont"> 27188 <td class="entry_details" colspan="6"> 27189 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 27190 </td> 27191 </tr> 27192 27193 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27194 <!-- end of entry --> 27195 27196 27197 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 27198 <td class="entry_name 27199 " rowspan="5"> 27200 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 27201 </td> 27202 <td class="entry_type"> 27203 <span class="entry_type_name">byte</span> 27204 <span class="entry_type_container">x</span> 27205 27206 <span class="entry_type_array"> 27207 n 27208 </span> 27209 <span class="entry_type_visibility"> [public as enumList]</span> 27210 27211 27212 <span class="entry_type_hwlevel">[full] </span> 27213 27214 27215 <div class="entry_type_notes">list of enums</div> 27216 27217 27218 </td> <!-- entry_type --> 27219 27220 <td class="entry_description"> 27221 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera 27222device.<wbr/></p> 27223 </td> 27224 27225 <td class="entry_units"> 27226 </td> 27227 27228 <td class="entry_range"> 27229 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></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 </td> 27238 27239 </tr> 27240 <tr class="entries_header"> 27241 <th class="th_details" colspan="6">Details</th> 27242 </tr> 27243 <tr class="entry_cont"> 27244 <td class="entry_details" colspan="6"> 27245 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain 27246at least one of below mode combinations:</p> 27247<ul> 27248<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 27249<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 27250</ul> 27251<p>This includes all FULL level devices.<wbr/></p> 27252 </td> 27253 </tr> 27254 27255 <tr class="entries_header"> 27256 <th class="th_details" colspan="6">HAL Implementation Details</th> 27257 </tr> 27258 <tr class="entry_cont"> 27259 <td class="entry_details" colspan="6"> 27260 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available 27261on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 27262That is,<wbr/> if the highest quality implementation on the camera device does not slow down 27263capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 27264 </td> 27265 </tr> 27266 27267 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27268 <!-- end of entry --> 27269 27270 27271 27272 <!-- end of kind --> 27273 </tbody> 27274 <tr><td colspan="7" class="kind">dynamic</td></tr> 27275 27276 <thead class="entries_header"> 27277 <tr> 27278 <th class="th_name">Property Name</th> 27279 <th class="th_type">Type</th> 27280 <th class="th_description">Description</th> 27281 <th class="th_units">Units</th> 27282 <th class="th_range">Range</th> 27283 <th class="th_hal_version">Initial HIDL HAL version</th> 27284 <th class="th_tags">Tags</th> 27285 </tr> 27286 </thead> 27287 27288 <tbody> 27289 27290 27291 27292 27293 27294 27295 27296 27297 27298 27299 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 27300 <td class="entry_name 27301 " rowspan="3"> 27302 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 27303 </td> 27304 <td class="entry_type"> 27305 <span class="entry_type_name">float</span> 27306 <span class="entry_type_container">x</span> 27307 27308 <span class="entry_type_array"> 27309 n x 2 27310 </span> 27311 <span class="entry_type_visibility"> [ndk_public]</span> 27312 27313 27314 <span class="entry_type_hwlevel">[full] </span> 27315 27316 27317 <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> 27318 27319 27320 </td> <!-- entry_type --> 27321 27322 <td class="entry_description"> 27323 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 27324channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27325CONTRAST_<wbr/>CURVE.<wbr/></p> 27326 </td> 27327 27328 <td class="entry_units"> 27329 </td> 27330 27331 <td class="entry_range"> 27332 </td> 27333 27334 <td class="entry_hal_version"> 27335 <p>3.<wbr/>2</p> 27336 </td> 27337 27338 <td class="entry_tags"> 27339 </td> 27340 27341 </tr> 27342 <tr class="entries_header"> 27343 <th class="th_details" colspan="6">Details</th> 27344 </tr> 27345 <tr class="entry_cont"> 27346 <td class="entry_details" colspan="6"> 27347 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 27348 </td> 27349 </tr> 27350 27351 27352 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27353 <!-- end of entry --> 27354 27355 27356 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 27357 <td class="entry_name 27358 " rowspan="3"> 27359 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 27360 </td> 27361 <td class="entry_type"> 27362 <span class="entry_type_name">float</span> 27363 <span class="entry_type_container">x</span> 27364 27365 <span class="entry_type_array"> 27366 n x 2 27367 </span> 27368 <span class="entry_type_visibility"> [ndk_public]</span> 27369 27370 27371 <span class="entry_type_hwlevel">[full] </span> 27372 27373 27374 <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> 27375 27376 27377 </td> <!-- entry_type --> 27378 27379 <td class="entry_description"> 27380 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 27381channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27382CONTRAST_<wbr/>CURVE.<wbr/></p> 27383 </td> 27384 27385 <td class="entry_units"> 27386 </td> 27387 27388 <td class="entry_range"> 27389 </td> 27390 27391 <td class="entry_hal_version"> 27392 <p>3.<wbr/>2</p> 27393 </td> 27394 27395 <td class="entry_tags"> 27396 </td> 27397 27398 </tr> 27399 <tr class="entries_header"> 27400 <th class="th_details" colspan="6">Details</th> 27401 </tr> 27402 <tr class="entry_cont"> 27403 <td class="entry_details" colspan="6"> 27404 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 27405 </td> 27406 </tr> 27407 27408 27409 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27410 <!-- end of entry --> 27411 27412 27413 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 27414 <td class="entry_name 27415 " rowspan="5"> 27416 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 27417 </td> 27418 <td class="entry_type"> 27419 <span class="entry_type_name">float</span> 27420 <span class="entry_type_container">x</span> 27421 27422 <span class="entry_type_array"> 27423 n x 2 27424 </span> 27425 <span class="entry_type_visibility"> [ndk_public]</span> 27426 27427 27428 <span class="entry_type_hwlevel">[full] </span> 27429 27430 27431 <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> 27432 27433 27434 </td> <!-- entry_type --> 27435 27436 <td class="entry_description"> 27437 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 27438channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27439CONTRAST_<wbr/>CURVE.<wbr/></p> 27440 </td> 27441 27442 <td class="entry_units"> 27443 </td> 27444 27445 <td class="entry_range"> 27446 <p>0-1 on both input and output coordinates,<wbr/> normalized 27447as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 27448 </td> 27449 27450 <td class="entry_hal_version"> 27451 <p>3.<wbr/>2</p> 27452 </td> 27453 27454 <td class="entry_tags"> 27455 </td> 27456 27457 </tr> 27458 <tr class="entries_header"> 27459 <th class="th_details" colspan="6">Details</th> 27460 </tr> 27461 <tr class="entry_cont"> 27462 <td class="entry_details" colspan="6"> 27463 <p>Each channel's curve is defined by an array of control points:</p> 27464<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 27465 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 274662 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 27467<p>These are sorted in order of increasing <code>Pin</code>; it is 27468required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 27469define a complete mapping.<wbr/> For input values between control points,<wbr/> 27470the camera device must linearly interpolate between the control 27471points.<wbr/></p> 27472<p>Each curve can have an independent number of points,<wbr/> and the number 27473of points can be less than max (that is,<wbr/> the request doesn't have to 27474always provide a curve with number of points equivalent to 27475<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 27476<p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels 27477are ignored.<wbr/></p> 27478<p>A few examples,<wbr/> and their corresponding graphical mappings; these 27479only specify the red channel and the precision is limited to 4 27480digits,<wbr/> for conciseness.<wbr/></p> 27481<p>Linear mapping:</p> 27482<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 ] 27483</code></pre> 27484<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 27485<p>Invert mapping:</p> 27486<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 ] 27487</code></pre> 27488<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 27489<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 27490<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 27491 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/> 27492 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/> 27493 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/> 27494 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 ] 27495</code></pre> 27496<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 27497<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 27498<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 27499 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/> 27500 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/> 27501 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/> 27502 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 ] 27503</code></pre> 27504<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 27505 </td> 27506 </tr> 27507 27508 <tr class="entries_header"> 27509 <th class="th_details" colspan="6">HAL Implementation Details</th> 27510 </tr> 27511 <tr class="entry_cont"> 27512 <td class="entry_details" colspan="6"> 27513 <p>For good quality of mapping,<wbr/> at least 128 control points are 27514preferred.<wbr/></p> 27515<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 27516control points used as are available.<wbr/></p> 27517 </td> 27518 </tr> 27519 27520 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27521 <!-- end of entry --> 27522 27523 27524 <tr class="entry" id="dynamic_android.tonemap.curve"> 27525 <td class="entry_name 27526 " rowspan="5"> 27527 android.<wbr/>tonemap.<wbr/>curve 27528 </td> 27529 <td class="entry_type"> 27530 <span class="entry_type_name">float</span> 27531 27532 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span> 27533 27534 <span class="entry_type_synthetic">[synthetic] </span> 27535 27536 <span class="entry_type_hwlevel">[full] </span> 27537 27538 27539 27540 27541 </td> <!-- entry_type --> 27542 27543 <td class="entry_description"> 27544 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 27545is CONTRAST_<wbr/>CURVE.<wbr/></p> 27546 </td> 27547 27548 <td class="entry_units"> 27549 </td> 27550 27551 <td class="entry_range"> 27552 </td> 27553 27554 <td class="entry_hal_version"> 27555 <p>3.<wbr/>2</p> 27556 </td> 27557 27558 <td class="entry_tags"> 27559 </td> 27560 27561 </tr> 27562 <tr class="entries_header"> 27563 <th class="th_details" colspan="6">Details</th> 27564 </tr> 27565 <tr class="entry_cont"> 27566 <td class="entry_details" colspan="6"> 27567 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 27568channels respectively.<wbr/> The following example uses the red channel as an 27569example.<wbr/> The same logic applies to green and blue channel.<wbr/> 27570Each channel's curve is defined by an array of control points:</p> 27571<pre><code>curveRed = 27572 [ 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) ] 275732 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 27574<p>These are sorted in order of increasing <code>Pin</code>; it is always 27575guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 27576define a complete mapping.<wbr/> For input values between control points,<wbr/> 27577the camera device must linearly interpolate between the control 27578points.<wbr/></p> 27579<p>Each curve can have an independent number of points,<wbr/> and the number 27580of points can be less than max (that is,<wbr/> the request doesn't have to 27581always provide a curve with number of points equivalent to 27582<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 27583<p>For devices with MONOCHROME capability,<wbr/> only red channel is used.<wbr/> Green and blue channels 27584are ignored.<wbr/></p> 27585<p>A few examples,<wbr/> and their corresponding graphical mappings; these 27586only specify the red channel and the precision is limited to 4 27587digits,<wbr/> for conciseness.<wbr/></p> 27588<p>Linear mapping:</p> 27589<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 27590</code></pre> 27591<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 27592<p>Invert mapping:</p> 27593<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 27594</code></pre> 27595<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 27596<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 27597<pre><code>curveRed = [ 27598 (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/> 27599 (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/> 27600 (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/> 27601 (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) ] 27602</code></pre> 27603<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 27604<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 27605<pre><code>curveRed = [ 27606 (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/> 27607 (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/> 27608 (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/> 27609 (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) ] 27610</code></pre> 27611<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 27612 </td> 27613 </tr> 27614 27615 <tr class="entries_header"> 27616 <th class="th_details" colspan="6">HAL Implementation Details</th> 27617 </tr> 27618 <tr class="entry_cont"> 27619 <td class="entry_details" colspan="6"> 27620 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 27621curveBlue entries.<wbr/></p> 27622 </td> 27623 </tr> 27624 27625 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27626 <!-- end of entry --> 27627 27628 27629 <tr class="entry" id="dynamic_android.tonemap.mode"> 27630 <td class="entry_name 27631 " rowspan="3"> 27632 android.<wbr/>tonemap.<wbr/>mode 27633 </td> 27634 <td class="entry_type"> 27635 <span class="entry_type_name entry_type_name_enum">byte</span> 27636 27637 <span class="entry_type_visibility"> [public]</span> 27638 27639 27640 <span class="entry_type_hwlevel">[full] </span> 27641 27642 27643 27644 <ul class="entry_type_enum"> 27645 <li> 27646 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span> 27647 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 27648the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 27649<p>All color enhancement and tonemapping must be disabled,<wbr/> except 27650for applying the tonemapping curve specified by 27651<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 27652<p>Must not slow down frame rate relative to raw 27653sensor output.<wbr/></p></span> 27654 </li> 27655 <li> 27656 <span class="entry_type_enum_name">FAST (v3.2)</span> 27657 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 27658reducing frame rate compared to raw sensor output.<wbr/></p></span> 27659 </li> 27660 <li> 27661 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> 27662 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 27663the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 27664 </li> 27665 <li> 27666 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span> 27667 <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 27668tonemapping.<wbr/></p> 27669<p>All color enhancement and tonemapping must be disabled,<wbr/> except 27670for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 27671<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 27672 </li> 27673 <li> 27674 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span> 27675 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 27676<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 27677<p>All color enhancement and tonemapping must be disabled,<wbr/> except 27678for applying the tonemapping curve specified by 27679<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 27680<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 27681 </li> 27682 </ul> 27683 27684 </td> <!-- entry_type --> 27685 27686 <td class="entry_description"> 27687 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 27688 </td> 27689 27690 <td class="entry_units"> 27691 </td> 27692 27693 <td class="entry_range"> 27694 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 27695 </td> 27696 27697 <td class="entry_hal_version"> 27698 <p>3.<wbr/>2</p> 27699 </td> 27700 27701 <td class="entry_tags"> 27702 </td> 27703 27704 </tr> 27705 <tr class="entries_header"> 27706 <th class="th_details" colspan="6">Details</th> 27707 </tr> 27708 <tr class="entry_cont"> 27709 <td class="entry_details" colspan="6"> 27710 <p>When switching to an application-defined contrast curve by setting 27711<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 27712per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 27713mapping from input high-bit-depth pixel value to the output 27714low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 27715and output may change depending on the camera pipeline,<wbr/> the values 27716are specified by normalized floating-point numbers.<wbr/></p> 27717<p>More-complex color mapping operations such as 3D color look-up 27718tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 27719transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27720CONTRAST_<wbr/>CURVE.<wbr/></p> 27721<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 27722emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 27723These values are always available,<wbr/> and as close as possible to the 27724actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 27725<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 27726provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 27727roughly the same.<wbr/></p> 27728 </td> 27729 </tr> 27730 27731 27732 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27733 <!-- end of entry --> 27734 27735 27736 <tr class="entry" id="dynamic_android.tonemap.gamma"> 27737 <td class="entry_name 27738 " rowspan="3"> 27739 android.<wbr/>tonemap.<wbr/>gamma 27740 </td> 27741 <td class="entry_type"> 27742 <span class="entry_type_name">float</span> 27743 27744 <span class="entry_type_visibility"> [public]</span> 27745 27746 27747 27748 27749 27750 27751 </td> <!-- entry_type --> 27752 27753 <td class="entry_description"> 27754 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27755GAMMA_<wbr/>VALUE</p> 27756 </td> 27757 27758 <td class="entry_units"> 27759 </td> 27760 27761 <td class="entry_range"> 27762 </td> 27763 27764 <td class="entry_hal_version"> 27765 <p>3.<wbr/>2</p> 27766 </td> 27767 27768 <td class="entry_tags"> 27769 </td> 27770 27771 </tr> 27772 <tr class="entries_header"> 27773 <th class="th_details" colspan="6">Details</th> 27774 </tr> 27775 <tr class="entry_cont"> 27776 <td class="entry_details" colspan="6"> 27777 <p>The tonemap curve will be defined the following formula: 27778* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 27779where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 27780pow is the power function and gamma is the gamma value specified by this 27781key.<wbr/></p> 27782<p>The same curve will be applied to all color channels.<wbr/> The camera device 27783may clip the input gamma value to its supported range.<wbr/> The actual applied 27784value will be returned in capture result.<wbr/></p> 27785<p>The valid range of gamma value varies on different devices,<wbr/> but values 27786within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 27787 </td> 27788 </tr> 27789 27790 27791 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27792 <!-- end of entry --> 27793 27794 27795 <tr class="entry" id="dynamic_android.tonemap.presetCurve"> 27796 <td class="entry_name 27797 " rowspan="3"> 27798 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 27799 </td> 27800 <td class="entry_type"> 27801 <span class="entry_type_name entry_type_name_enum">byte</span> 27802 27803 <span class="entry_type_visibility"> [public]</span> 27804 27805 27806 27807 27808 27809 <ul class="entry_type_enum"> 27810 <li> 27811 <span class="entry_type_enum_name">SRGB (v3.2)</span> 27812 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 27813 </li> 27814 <li> 27815 <span class="entry_type_enum_name">REC709 (v3.2)</span> 27816 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 27817 </li> 27818 </ul> 27819 27820 </td> <!-- entry_type --> 27821 27822 <td class="entry_description"> 27823 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27824PRESET_<wbr/>CURVE</p> 27825 </td> 27826 27827 <td class="entry_units"> 27828 </td> 27829 27830 <td class="entry_range"> 27831 </td> 27832 27833 <td class="entry_hal_version"> 27834 <p>3.<wbr/>2</p> 27835 </td> 27836 27837 <td class="entry_tags"> 27838 </td> 27839 27840 </tr> 27841 <tr class="entries_header"> 27842 <th class="th_details" colspan="6">Details</th> 27843 </tr> 27844 <tr class="entry_cont"> 27845 <td class="entry_details" colspan="6"> 27846 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 27847<p>sRGB (approximated by 16 control points):</p> 27848<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 27849<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 27850<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 27851<p>Note that above figures show a 16 control points approximation of preset 27852curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 27853 </td> 27854 </tr> 27855 27856 27857 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27858 <!-- end of entry --> 27859 27860 27861 27862 <!-- end of kind --> 27863 </tbody> 27864 27865 <!-- end of section --> 27866 <tr><td colspan="7" id="section_led" class="section">led</td></tr> 27867 27868 27869 <tr><td colspan="7" class="kind">controls</td></tr> 27870 27871 <thead class="entries_header"> 27872 <tr> 27873 <th class="th_name">Property Name</th> 27874 <th class="th_type">Type</th> 27875 <th class="th_description">Description</th> 27876 <th class="th_units">Units</th> 27877 <th class="th_range">Range</th> 27878 <th class="th_hal_version">Initial HIDL HAL version</th> 27879 <th class="th_tags">Tags</th> 27880 </tr> 27881 </thead> 27882 27883 <tbody> 27884 27885 27886 27887 27888 27889 27890 27891 27892 27893 27894 <tr class="entry" id="controls_android.led.transmit"> 27895 <td class="entry_name 27896 " rowspan="1"> 27897 android.<wbr/>led.<wbr/>transmit 27898 </td> 27899 <td class="entry_type"> 27900 <span class="entry_type_name entry_type_name_enum">byte</span> 27901 27902 <span class="entry_type_visibility"> [hidden as boolean]</span> 27903 27904 27905 27906 27907 27908 <ul class="entry_type_enum"> 27909 <li> 27910 <span class="entry_type_enum_name">OFF (v3.2)</span> 27911 </li> 27912 <li> 27913 <span class="entry_type_enum_name">ON (v3.2)</span> 27914 </li> 27915 </ul> 27916 27917 </td> <!-- entry_type --> 27918 27919 <td class="entry_description"> 27920 <p>This LED is nominally used to indicate to the user 27921that the camera is powered on and may be streaming images back to the 27922Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 27923disable this when video is processed locally and not transmitted to 27924any untrusted applications.<wbr/></p> 27925<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 27926transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 27927data is stored locally on the device.<wbr/></p> 27928<p>The LED <em>may</em> be off if a trusted application is using the data that 27929doesn't violate the above rules.<wbr/></p> 27930 </td> 27931 27932 <td class="entry_units"> 27933 </td> 27934 27935 <td class="entry_range"> 27936 </td> 27937 27938 <td class="entry_hal_version"> 27939 <p>3.<wbr/>2</p> 27940 </td> 27941 27942 <td class="entry_tags"> 27943 </td> 27944 27945 </tr> 27946 27947 27948 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 27949 <!-- end of entry --> 27950 27951 27952 27953 <!-- end of kind --> 27954 </tbody> 27955 <tr><td colspan="7" class="kind">dynamic</td></tr> 27956 27957 <thead class="entries_header"> 27958 <tr> 27959 <th class="th_name">Property Name</th> 27960 <th class="th_type">Type</th> 27961 <th class="th_description">Description</th> 27962 <th class="th_units">Units</th> 27963 <th class="th_range">Range</th> 27964 <th class="th_hal_version">Initial HIDL HAL version</th> 27965 <th class="th_tags">Tags</th> 27966 </tr> 27967 </thead> 27968 27969 <tbody> 27970 27971 27972 27973 27974 27975 27976 27977 27978 27979 27980 <tr class="entry" id="dynamic_android.led.transmit"> 27981 <td class="entry_name 27982 " rowspan="1"> 27983 android.<wbr/>led.<wbr/>transmit 27984 </td> 27985 <td class="entry_type"> 27986 <span class="entry_type_name entry_type_name_enum">byte</span> 27987 27988 <span class="entry_type_visibility"> [hidden as boolean]</span> 27989 27990 27991 27992 27993 27994 <ul class="entry_type_enum"> 27995 <li> 27996 <span class="entry_type_enum_name">OFF (v3.2)</span> 27997 </li> 27998 <li> 27999 <span class="entry_type_enum_name">ON (v3.2)</span> 28000 </li> 28001 </ul> 28002 28003 </td> <!-- entry_type --> 28004 28005 <td class="entry_description"> 28006 <p>This LED is nominally used to indicate to the user 28007that the camera is powered on and may be streaming images back to the 28008Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 28009disable this when video is processed locally and not transmitted to 28010any untrusted applications.<wbr/></p> 28011<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 28012transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 28013data is stored locally on the device.<wbr/></p> 28014<p>The LED <em>may</em> be off if a trusted application is using the data that 28015doesn't violate the above rules.<wbr/></p> 28016 </td> 28017 28018 <td class="entry_units"> 28019 </td> 28020 28021 <td class="entry_range"> 28022 </td> 28023 28024 <td class="entry_hal_version"> 28025 <p>3.<wbr/>2</p> 28026 </td> 28027 28028 <td class="entry_tags"> 28029 </td> 28030 28031 </tr> 28032 28033 28034 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28035 <!-- end of entry --> 28036 28037 28038 28039 <!-- end of kind --> 28040 </tbody> 28041 <tr><td colspan="7" class="kind">static</td></tr> 28042 28043 <thead class="entries_header"> 28044 <tr> 28045 <th class="th_name">Property Name</th> 28046 <th class="th_type">Type</th> 28047 <th class="th_description">Description</th> 28048 <th class="th_units">Units</th> 28049 <th class="th_range">Range</th> 28050 <th class="th_hal_version">Initial HIDL HAL version</th> 28051 <th class="th_tags">Tags</th> 28052 </tr> 28053 </thead> 28054 28055 <tbody> 28056 28057 28058 28059 28060 28061 28062 28063 28064 28065 28066 <tr class="entry" id="static_android.led.availableLeds"> 28067 <td class="entry_name 28068 " rowspan="1"> 28069 android.<wbr/>led.<wbr/>available<wbr/>Leds 28070 </td> 28071 <td class="entry_type"> 28072 <span class="entry_type_name entry_type_name_enum">byte</span> 28073 <span class="entry_type_container">x</span> 28074 28075 <span class="entry_type_array"> 28076 n 28077 </span> 28078 <span class="entry_type_visibility"> [hidden]</span> 28079 28080 28081 28082 28083 28084 <ul class="entry_type_enum"> 28085 <li> 28086 <span class="entry_type_enum_name">TRANSMIT (v3.2)</span> 28087 <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> 28088 </li> 28089 </ul> 28090 28091 </td> <!-- entry_type --> 28092 28093 <td class="entry_description"> 28094 <p>A list of camera LEDs that are available on this system.<wbr/></p> 28095 </td> 28096 28097 <td class="entry_units"> 28098 </td> 28099 28100 <td class="entry_range"> 28101 </td> 28102 28103 <td class="entry_hal_version"> 28104 <p>3.<wbr/>2</p> 28105 </td> 28106 28107 <td class="entry_tags"> 28108 </td> 28109 28110 </tr> 28111 28112 28113 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28114 <!-- end of entry --> 28115 28116 28117 28118 <!-- end of kind --> 28119 </tbody> 28120 28121 <!-- end of section --> 28122 <tr><td colspan="7" id="section_info" class="section">info</td></tr> 28123 28124 28125 <tr><td colspan="7" class="kind">static</td></tr> 28126 28127 <thead class="entries_header"> 28128 <tr> 28129 <th class="th_name">Property Name</th> 28130 <th class="th_type">Type</th> 28131 <th class="th_description">Description</th> 28132 <th class="th_units">Units</th> 28133 <th class="th_range">Range</th> 28134 <th class="th_hal_version">Initial HIDL HAL version</th> 28135 <th class="th_tags">Tags</th> 28136 </tr> 28137 </thead> 28138 28139 <tbody> 28140 28141 28142 28143 28144 28145 28146 28147 28148 28149 28150 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 28151 <td class="entry_name 28152 " rowspan="5"> 28153 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 28154 </td> 28155 <td class="entry_type"> 28156 <span class="entry_type_name entry_type_name_enum">byte</span> 28157 28158 <span class="entry_type_visibility"> [public]</span> 28159 28160 28161 <span class="entry_type_hwlevel">[legacy] </span> 28162 28163 28164 28165 <ul class="entry_type_enum"> 28166 <li> 28167 <span class="entry_type_enum_name">LIMITED (v3.2)</span> 28168 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or 28169better.<wbr/></p> 28170<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the 28171<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> 28172<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic 28173support for color image capture.<wbr/> The only exception is that the device may 28174alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth 28175measurements and not color images.<wbr/></p> 28176<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> 28177to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before 28178capturing a high-quality still image.<wbr/></p> 28179<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only 28180required to support full-automatic operation and post-processing (<code>OFF</code> is not 28181supported 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 28182<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p> 28183<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and 28184can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span> 28185 </li> 28186 <li> 28187 <span class="entry_type_enum_name">FULL (v3.2)</span> 28188 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p> 28189<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the 28190<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> 28191<p>A <code>FULL</code> device will support below capabilities:</p> 28192<ul> 28193<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 28194 <code>BURST_<wbr/>CAPTURE</code>)</li> 28195<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> 28196<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> 28197<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 28198 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li> 28199<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> 28200<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> 28201</ul> 28202<p>Note: 28203Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region 28204(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level 2820523,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span> 28206 </li> 28207 <li> 28208 <span class="entry_type_enum_name">LEGACY (v3.2)</span> 28209 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p> 28210<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> 28211<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual 28212post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/> 28213No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a 28214<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 28215<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> 28216devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated 28217as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may 28218fire the flash for flash power metering during precapture,<wbr/> and then fire the flash 28219for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to 28220enable the flash.<wbr/></p></span> 28221 </li> 28222 <li> 28223 <span class="entry_type_enum_name">3 (v3.2)</span> 28224 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to 28225FULL-level capabilities.<wbr/></p> 28226<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 28227<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> 28228<p>The following additional capabilities are guaranteed to be supported:</p> 28229<ul> 28230<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 28231 <code>YUV_<wbr/>REPROCESSING</code>)</li> 28232<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 28233 <code>RAW</code>)</li> 28234</ul></span> 28235 </li> 28236 <li> 28237 <span class="entry_type_enum_name">EXTERNAL (v3.3)</span> 28238 <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p> 28239<p>The device has capability identical to a LIMITED level device,<wbr/> with the following 28240exceptions:</p> 28241<ul> 28242<li>The device may not report lens/<wbr/>sensor related information such as<ul> 28243<li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li> 28244<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li> 28245<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li> 28246<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li> 28247<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li> 28248<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li> 28249<li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li> 28250</ul> 28251</li> 28252<li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li> 28253<li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends 28254 on the external camera being used.<wbr/></li> 28255</ul></span> 28256 </li> 28257 </ul> 28258 28259 </td> <!-- entry_type --> 28260 28261 <td class="entry_description"> 28262 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 28263 </td> 28264 28265 <td class="entry_units"> 28266 </td> 28267 28268 <td class="entry_range"> 28269 </td> 28270 28271 <td class="entry_hal_version"> 28272 <p>3.<wbr/>2</p> 28273 </td> 28274 28275 <td class="entry_tags"> 28276 </td> 28277 28278 </tr> 28279 <tr class="entries_header"> 28280 <th class="th_details" colspan="6">Details</th> 28281 </tr> 28282 <tr class="entry_cont"> 28283 <td class="entry_details" colspan="6"> 28284 <p>The supported hardware level is a high-level description of the camera device's 28285capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional 28286features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/> 28287The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p> 28288<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing 28289numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/> 28290the following code snippet can be used:</p> 28291<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/> 28292boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) { 28293 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL); 28294 if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) { 28295 return requiredLevel == deviceLevel; 28296 } 28297 //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort 28298 return requiredLevel <= deviceLevel; 28299} 28300</code></pre> 28301<p>At a high level,<wbr/> the levels are:</p> 28302<ul> 28303<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older 28304 Android devices,<wbr/> and have very limited capabilities.<wbr/></li> 28305<li><code>LIMITED</code> devices represent the 28306 baseline feature set,<wbr/> and may also include additional capabilities that are 28307 subsets of <code>FULL</code>.<wbr/></li> 28308<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and 28309 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li> 28310<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along 28311 with additional output stream configurations.<wbr/></li> 28312</ul> 28313<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The 28314<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a 28315finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or 28316ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 28317<p>Some features are not part of any particular hardware level or capability and must be 28318queried separately.<wbr/> These include:</p> 28319<ul> 28320<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li> 28321<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> 28322<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> 28323<li>Optical or electrical image stabilization 28324 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/> 28325 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li> 28326</ul> 28327 </td> 28328 </tr> 28329 28330 <tr class="entries_header"> 28331 <th class="th_details" colspan="6">HAL Implementation Details</th> 28332 </tr> 28333 <tr class="entry_cont"> 28334 <td class="entry_details" colspan="6"> 28335 <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/> 28336FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p> 28337<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited 28338mode has hardware requirements roughly in line with those for a camera HAL device v1 28339implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict 28340superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p> 28341<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 28342<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in 28343the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is 28344implemented by the camera framework code.<wbr/></p> 28345<p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend 28346on the external camera being used and is not fully controlled by the device manufacturer.<wbr/> 28347The ITS test suite is exempted for the same reason.<wbr/></p> 28348 </td> 28349 </tr> 28350 28351 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28352 <!-- end of entry --> 28353 28354 28355 <tr class="entry" id="static_android.info.version"> 28356 <td class="entry_name 28357 " rowspan="5"> 28358 android.<wbr/>info.<wbr/>version 28359 </td> 28360 <td class="entry_type"> 28361 <span class="entry_type_name">byte</span> 28362 28363 <span class="entry_type_visibility"> [public as string]</span> 28364 28365 28366 28367 28368 28369 28370 </td> <!-- entry_type --> 28371 28372 <td class="entry_description"> 28373 <p>A short string for manufacturer version information about the camera device,<wbr/> such as 28374ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p> 28375 </td> 28376 28377 <td class="entry_units"> 28378 </td> 28379 28380 <td class="entry_range"> 28381 </td> 28382 28383 <td class="entry_hal_version"> 28384 <p>3.<wbr/>3</p> 28385 </td> 28386 28387 <td class="entry_tags"> 28388 </td> 28389 28390 </tr> 28391 <tr class="entries_header"> 28392 <th class="th_details" colspan="6">Details</th> 28393 </tr> 28394 <tr class="entry_cont"> 28395 <td class="entry_details" colspan="6"> 28396 <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> 28397in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the 28398device.<wbr/></p> 28399 </td> 28400 </tr> 28401 28402 <tr class="entries_header"> 28403 <th class="th_details" colspan="6">HAL Implementation Details</th> 28404 </tr> 28405 <tr class="entry_cont"> 28406 <td class="entry_details" colspan="6"> 28407 <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and 28408whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/> 28409It must not exceed 256 characters.<wbr/></p> 28410 </td> 28411 </tr> 28412 28413 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28414 <!-- end of entry --> 28415 28416 28417 28418 <!-- end of kind --> 28419 </tbody> 28420 28421 <!-- end of section --> 28422 <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr> 28423 28424 28425 <tr><td colspan="7" class="kind">controls</td></tr> 28426 28427 <thead class="entries_header"> 28428 <tr> 28429 <th class="th_name">Property Name</th> 28430 <th class="th_type">Type</th> 28431 <th class="th_description">Description</th> 28432 <th class="th_units">Units</th> 28433 <th class="th_range">Range</th> 28434 <th class="th_hal_version">Initial HIDL HAL version</th> 28435 <th class="th_tags">Tags</th> 28436 </tr> 28437 </thead> 28438 28439 <tbody> 28440 28441 28442 28443 28444 28445 28446 28447 28448 28449 28450 <tr class="entry" id="controls_android.blackLevel.lock"> 28451 <td class="entry_name 28452 " rowspan="5"> 28453 android.<wbr/>black<wbr/>Level.<wbr/>lock 28454 </td> 28455 <td class="entry_type"> 28456 <span class="entry_type_name entry_type_name_enum">byte</span> 28457 28458 <span class="entry_type_visibility"> [public as boolean]</span> 28459 28460 28461 <span class="entry_type_hwlevel">[full] </span> 28462 28463 28464 28465 <ul class="entry_type_enum"> 28466 <li> 28467 <span class="entry_type_enum_name">OFF (v3.2)</span> 28468 </li> 28469 <li> 28470 <span class="entry_type_enum_name">ON (v3.2)</span> 28471 </li> 28472 </ul> 28473 28474 </td> <!-- entry_type --> 28475 28476 <td class="entry_description"> 28477 <p>Whether black-level compensation is locked 28478to its current values,<wbr/> or is free to vary.<wbr/></p> 28479 </td> 28480 28481 <td class="entry_units"> 28482 </td> 28483 28484 <td class="entry_range"> 28485 </td> 28486 28487 <td class="entry_hal_version"> 28488 <p>3.<wbr/>2</p> 28489 </td> 28490 28491 <td class="entry_tags"> 28492 <ul class="entry_tags"> 28493 <li><a href="#tag_HAL2">HAL2</a></li> 28494 </ul> 28495 </td> 28496 28497 </tr> 28498 <tr class="entries_header"> 28499 <th class="th_details" colspan="6">Details</th> 28500 </tr> 28501 <tr class="entry_cont"> 28502 <td class="entry_details" colspan="6"> 28503 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level 28504compensation will not change until the lock is set to 28505<code>false</code> (OFF).<wbr/></p> 28506<p>Since changes to certain capture parameters (such as 28507exposure time) may require resetting of black level 28508compensation,<wbr/> the camera device must report whether setting 28509the black level lock was successful in the output result 28510metadata.<wbr/></p> 28511<p>For example,<wbr/> if a sequence of requests is as follows:</p> 28512<ul> 28513<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 28514<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 28515<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 28516<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 28517<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 28518<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 28519</ul> 28520<p>And the exposure change in Request 4 requires the camera 28521device to reset the black level offsets,<wbr/> then the output 28522result metadata is expected to be:</p> 28523<ul> 28524<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 28525<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 28526<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 28527<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 28528<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 28529<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 28530</ul> 28531<p>This indicates to the application that on frame 4,<wbr/> black 28532levels were reset due to exposure value changes,<wbr/> and pixel 28533values may not be consistent across captures.<wbr/></p> 28534<p>The camera device will maintain the lock to the extent 28535possible,<wbr/> only overriding the lock to OFF when changes to 28536other request parameters require a black level recalculation 28537or reset.<wbr/></p> 28538 </td> 28539 </tr> 28540 28541 <tr class="entries_header"> 28542 <th class="th_details" colspan="6">HAL Implementation Details</th> 28543 </tr> 28544 <tr class="entry_cont"> 28545 <td class="entry_details" colspan="6"> 28546 <p>If for some reason black level locking is no longer possible 28547(for example,<wbr/> the analog gain has changed,<wbr/> which forces 28548black level offsets to be recalculated),<wbr/> then the HAL must 28549override this request (and it must report 'OFF' when this 28550does happen) until the next capture for which locking is 28551possible again.<wbr/></p> 28552 </td> 28553 </tr> 28554 28555 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28556 <!-- end of entry --> 28557 28558 28559 28560 <!-- end of kind --> 28561 </tbody> 28562 <tr><td colspan="7" class="kind">dynamic</td></tr> 28563 28564 <thead class="entries_header"> 28565 <tr> 28566 <th class="th_name">Property Name</th> 28567 <th class="th_type">Type</th> 28568 <th class="th_description">Description</th> 28569 <th class="th_units">Units</th> 28570 <th class="th_range">Range</th> 28571 <th class="th_hal_version">Initial HIDL HAL version</th> 28572 <th class="th_tags">Tags</th> 28573 </tr> 28574 </thead> 28575 28576 <tbody> 28577 28578 28579 28580 28581 28582 28583 28584 28585 28586 28587 <tr class="entry" id="dynamic_android.blackLevel.lock"> 28588 <td class="entry_name 28589 " rowspan="5"> 28590 android.<wbr/>black<wbr/>Level.<wbr/>lock 28591 </td> 28592 <td class="entry_type"> 28593 <span class="entry_type_name entry_type_name_enum">byte</span> 28594 28595 <span class="entry_type_visibility"> [public as boolean]</span> 28596 28597 28598 <span class="entry_type_hwlevel">[full] </span> 28599 28600 28601 28602 <ul class="entry_type_enum"> 28603 <li> 28604 <span class="entry_type_enum_name">OFF (v3.2)</span> 28605 </li> 28606 <li> 28607 <span class="entry_type_enum_name">ON (v3.2)</span> 28608 </li> 28609 </ul> 28610 28611 </td> <!-- entry_type --> 28612 28613 <td class="entry_description"> 28614 <p>Whether black-level compensation is locked 28615to its current values,<wbr/> or is free to vary.<wbr/></p> 28616 </td> 28617 28618 <td class="entry_units"> 28619 </td> 28620 28621 <td class="entry_range"> 28622 </td> 28623 28624 <td class="entry_hal_version"> 28625 <p>3.<wbr/>2</p> 28626 </td> 28627 28628 <td class="entry_tags"> 28629 <ul class="entry_tags"> 28630 <li><a href="#tag_HAL2">HAL2</a></li> 28631 </ul> 28632 </td> 28633 28634 </tr> 28635 <tr class="entries_header"> 28636 <th class="th_details" colspan="6">Details</th> 28637 </tr> 28638 <tr class="entry_cont"> 28639 <td class="entry_details" colspan="6"> 28640 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 28641ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 28642a change in other capture settings forced the camera device to 28643perform a black level reset.<wbr/></p> 28644 </td> 28645 </tr> 28646 28647 <tr class="entries_header"> 28648 <th class="th_details" colspan="6">HAL Implementation Details</th> 28649 </tr> 28650 <tr class="entry_cont"> 28651 <td class="entry_details" colspan="6"> 28652 <p>If for some reason black level locking is no longer possible 28653(for example,<wbr/> the analog gain has changed,<wbr/> which forces 28654black level offsets to be recalculated),<wbr/> then the HAL must 28655override this request (and it must report 'OFF' when this 28656does happen) until the next capture for which locking is 28657possible again.<wbr/></p> 28658 </td> 28659 </tr> 28660 28661 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28662 <!-- end of entry --> 28663 28664 28665 28666 <!-- end of kind --> 28667 </tbody> 28668 28669 <!-- end of section --> 28670 <tr><td colspan="7" id="section_sync" class="section">sync</td></tr> 28671 28672 28673 <tr><td colspan="7" class="kind">dynamic</td></tr> 28674 28675 <thead class="entries_header"> 28676 <tr> 28677 <th class="th_name">Property Name</th> 28678 <th class="th_type">Type</th> 28679 <th class="th_description">Description</th> 28680 <th class="th_units">Units</th> 28681 <th class="th_range">Range</th> 28682 <th class="th_hal_version">Initial HIDL HAL version</th> 28683 <th class="th_tags">Tags</th> 28684 </tr> 28685 </thead> 28686 28687 <tbody> 28688 28689 28690 28691 28692 28693 28694 28695 28696 28697 28698 <tr class="entry" id="dynamic_android.sync.frameNumber"> 28699 <td class="entry_name 28700 " rowspan="5"> 28701 android.<wbr/>sync.<wbr/>frame<wbr/>Number 28702 </td> 28703 <td class="entry_type"> 28704 <span class="entry_type_name entry_type_name_enum">int64</span> 28705 28706 <span class="entry_type_visibility"> [ndk_public]</span> 28707 28708 28709 <span class="entry_type_hwlevel">[legacy] </span> 28710 28711 28712 28713 <ul class="entry_type_enum"> 28714 <li> 28715 <span class="entry_type_enum_name">CONVERGING (v3.2)</span> 28716 <span class="entry_type_enum_value">-1</span> 28717 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p> 28718<p>Synchronization is in progress,<wbr/> and reading metadata from this 28719result may include a mix of data that have taken effect since the 28720last synchronization time.<wbr/></p> 28721<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 28722this value will update to the actual frame number frame number 28723the result is guaranteed to be synchronized to (as long as the 28724request settings remain constant).<wbr/></p></span> 28725 </li> 28726 <li> 28727 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span> 28728 <span class="entry_type_enum_value">-2</span> 28729 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p> 28730<p>The result may have already converged,<wbr/> or it may be in 28731progress.<wbr/> Reading from this result may include some mix 28732of settings from past requests.<wbr/></p> 28733<p>After a settings change,<wbr/> the new settings will eventually all 28734take effect for the output buffers and results.<wbr/> However,<wbr/> this 28735value will not change when that happens.<wbr/> Altering settings 28736rapidly may provide outcomes using mixes of settings from recent 28737requests.<wbr/></p> 28738<p>This value is intended primarily for backwards compatibility with 28739the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 28740 </li> 28741 </ul> 28742 28743 </td> <!-- entry_type --> 28744 28745 <td class="entry_description"> 28746 <p>The frame number corresponding to the last request 28747with which the output result (metadata + buffers) has been fully 28748synchronized.<wbr/></p> 28749 </td> 28750 28751 <td class="entry_units"> 28752 </td> 28753 28754 <td class="entry_range"> 28755 <p>Either a non-negative value corresponding to a 28756<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 28757 </td> 28758 28759 <td class="entry_hal_version"> 28760 <p>3.<wbr/>2</p> 28761 </td> 28762 28763 <td class="entry_tags"> 28764 <ul class="entry_tags"> 28765 <li><a href="#tag_V1">V1</a></li> 28766 </ul> 28767 </td> 28768 28769 </tr> 28770 <tr class="entries_header"> 28771 <th class="th_details" colspan="6">Details</th> 28772 </tr> 28773 <tr class="entry_cont"> 28774 <td class="entry_details" colspan="6"> 28775 <p>When a request is submitted to the camera device,<wbr/> there is usually a 28776delay of several frames before the controls get applied.<wbr/> A camera 28777device may either choose to account for this delay by implementing a 28778pipeline and carefully submit well-timed atomic control updates,<wbr/> or 28779it may start streaming control changes that span over several frame 28780boundaries.<wbr/></p> 28781<p>In the latter case,<wbr/> whenever a request's settings change relative to 28782the previous submitted request,<wbr/> the full set of changes may take 28783multiple frame durations to fully take effect.<wbr/> Some settings may 28784take effect sooner (in less frame durations) than others.<wbr/></p> 28785<p>While a set of control changes are being propagated,<wbr/> this value 28786will be CONVERGING.<wbr/></p> 28787<p>Once it is fully known that a set of control changes have been 28788finished propagating,<wbr/> and the resulting updated control settings 28789have been read back by the camera device,<wbr/> this value will be set 28790to a non-negative frame number (corresponding to the request to 28791which the results have synchronized to).<wbr/></p> 28792<p>Older camera device implementations may not have a way to detect 28793when all camera controls have been applied,<wbr/> and will always set this 28794value to UNKNOWN.<wbr/></p> 28795<p>FULL capability devices will always have this value set to the 28796frame number of the request corresponding to this result.<wbr/></p> 28797<p><em>Further details</em>:</p> 28798<ul> 28799<li>Whenever a request differs from the last request,<wbr/> any future 28800results not yet returned may have this value set to CONVERGING (this 28801could include any in-progress captures not yet returned by the camera 28802device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 28803<li>Submitting a series of multiple requests that differ from the 28804previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 28805moves the new synchronization frame to the last non-repeating 28806request (using the smallest frame number from the contiguous list of 28807repeating requests).<wbr/></li> 28808<li>Submitting the same request repeatedly will not change this value 28809to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 28810<li>When this value changes to non-negative,<wbr/> that means that all of the 28811metadata controls from the request have been applied,<wbr/> all of the 28812metadata controls from the camera device have been read to the 28813updated values (into the result),<wbr/> and all of the graphics buffers 28814corresponding to this result are also synchronized to the request.<wbr/></li> 28815</ul> 28816<p><em>Pipeline considerations</em>:</p> 28817<p>Submitting a request with updated controls relative to the previously 28818submitted requests may also invalidate the synchronization state 28819of all the results corresponding to currently in-flight requests.<wbr/></p> 28820<p>In other words,<wbr/> results for this current request and up to 28821<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 28822<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 28823 </td> 28824 </tr> 28825 28826 <tr class="entries_header"> 28827 <th class="th_details" colspan="6">HAL Implementation Details</th> 28828 </tr> 28829 <tr class="entry_cont"> 28830 <td class="entry_details" colspan="6"> 28831 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 28832is also UNKNOWN.<wbr/></p> 28833<p>FULL capability devices should simply set this value to the 28834<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 28835 </td> 28836 </tr> 28837 28838 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28839 <!-- end of entry --> 28840 28841 28842 28843 <!-- end of kind --> 28844 </tbody> 28845 <tr><td colspan="7" class="kind">static</td></tr> 28846 28847 <thead class="entries_header"> 28848 <tr> 28849 <th class="th_name">Property Name</th> 28850 <th class="th_type">Type</th> 28851 <th class="th_description">Description</th> 28852 <th class="th_units">Units</th> 28853 <th class="th_range">Range</th> 28854 <th class="th_hal_version">Initial HIDL HAL version</th> 28855 <th class="th_tags">Tags</th> 28856 </tr> 28857 </thead> 28858 28859 <tbody> 28860 28861 28862 28863 28864 28865 28866 28867 28868 28869 28870 <tr class="entry" id="static_android.sync.maxLatency"> 28871 <td class="entry_name 28872 " rowspan="5"> 28873 android.<wbr/>sync.<wbr/>max<wbr/>Latency 28874 </td> 28875 <td class="entry_type"> 28876 <span class="entry_type_name entry_type_name_enum">int32</span> 28877 28878 <span class="entry_type_visibility"> [public]</span> 28879 28880 28881 <span class="entry_type_hwlevel">[legacy] </span> 28882 28883 28884 28885 <ul class="entry_type_enum"> 28886 <li> 28887 <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span> 28888 <span class="entry_type_enum_value">0</span> 28889 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p> 28890<p>Changing controls over multiple requests one after another will 28891produce results that have those controls applied atomically 28892each frame.<wbr/></p> 28893<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 28894 </li> 28895 <li> 28896 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span> 28897 <span class="entry_type_enum_value">-1</span> 28898 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 28899of the past requests applied to the camera settings.<wbr/></p> 28900<p>By submitting a series of identical requests,<wbr/> the camera device 28901will eventually have the camera settings applied,<wbr/> but it is 28902unknown when that exact point will be.<wbr/></p> 28903<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span> 28904 </li> 28905 </ul> 28906 28907 </td> <!-- entry_type --> 28908 28909 <td class="entry_description"> 28910 <p>The maximum number of frames that can occur after a request 28911(different than the previous) has been submitted,<wbr/> and before the 28912result's state becomes synchronized.<wbr/></p> 28913 </td> 28914 28915 <td class="entry_units"> 28916 Frame counts 28917 </td> 28918 28919 <td class="entry_range"> 28920 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p> 28921 </td> 28922 28923 <td class="entry_hal_version"> 28924 <p>3.<wbr/>2</p> 28925 </td> 28926 28927 <td class="entry_tags"> 28928 <ul class="entry_tags"> 28929 <li><a href="#tag_V1">V1</a></li> 28930 </ul> 28931 </td> 28932 28933 </tr> 28934 <tr class="entries_header"> 28935 <th class="th_details" colspan="6">Details</th> 28936 </tr> 28937 <tr class="entry_cont"> 28938 <td class="entry_details" colspan="6"> 28939 <p>This defines the maximum distance (in number of metadata results),<wbr/> 28940between the frame number of the request that has new controls to apply 28941and the frame number of the result that has all the controls applied.<wbr/></p> 28942<p>In other words this acts as an upper boundary for how many frames 28943must occur before the camera device knows for a fact that the new 28944submitted camera settings have been applied in outgoing frames.<wbr/></p> 28945 </td> 28946 </tr> 28947 28948 <tr class="entries_header"> 28949 <th class="th_details" colspan="6">HAL Implementation Details</th> 28950 </tr> 28951 <tr class="entry_cont"> 28952 <td class="entry_details" colspan="6"> 28953 <p>For example if maxLatency was 2,<wbr/></p> 28954<pre><code>initial request = X (repeating) 28955request1 = X 28956request2 = Y 28957request3 = Y 28958request4 = Y 28959 28960where requestN has frameNumber N,<wbr/> and the first of the repeating 28961initial request's has frameNumber F (and F < 1).<wbr/> 28962 28963initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 28964result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 28965result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 28966result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 28967result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 28968 28969where resultN has frameNumber N.<wbr/> 28970</code></pre> 28971<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 28972<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 28973<code>4 - 2 = 2</code>.<wbr/></p> 28974<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 28975<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or 28976<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p> 28977<p>LIMITED devices are strongly encouraged to use a non-negative 28978value.<wbr/> If UNKNOWN is used here then app developers do not have a way 28979to know when sensor settings have been applied.<wbr/></p> 28980 </td> 28981 </tr> 28982 28983 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 28984 <!-- end of entry --> 28985 28986 28987 28988 <!-- end of kind --> 28989 </tbody> 28990 28991 <!-- end of section --> 28992 <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr> 28993 28994 28995 <tr><td colspan="7" class="kind">controls</td></tr> 28996 28997 <thead class="entries_header"> 28998 <tr> 28999 <th class="th_name">Property Name</th> 29000 <th class="th_type">Type</th> 29001 <th class="th_description">Description</th> 29002 <th class="th_units">Units</th> 29003 <th class="th_range">Range</th> 29004 <th class="th_hal_version">Initial HIDL HAL version</th> 29005 <th class="th_tags">Tags</th> 29006 </tr> 29007 </thead> 29008 29009 <tbody> 29010 29011 29012 29013 29014 29015 29016 29017 29018 29019 29020 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor"> 29021 <td class="entry_name 29022 " rowspan="3"> 29023 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 29024 </td> 29025 <td class="entry_type"> 29026 <span class="entry_type_name">float</span> 29027 29028 <span class="entry_type_visibility"> [java_public]</span> 29029 29030 29031 <span class="entry_type_hwlevel">[limited] </span> 29032 29033 29034 29035 29036 </td> <!-- entry_type --> 29037 29038 <td class="entry_description"> 29039 <p>The amount of exposure time increase factor applied to the original output 29040frame by the application processing before sending for reprocessing.<wbr/></p> 29041 </td> 29042 29043 <td class="entry_units"> 29044 Relative exposure time increase factor.<wbr/> 29045 </td> 29046 29047 <td class="entry_range"> 29048 <p>>= 1.<wbr/>0</p> 29049 </td> 29050 29051 <td class="entry_hal_version"> 29052 <p>3.<wbr/>2</p> 29053 </td> 29054 29055 <td class="entry_tags"> 29056 <ul class="entry_tags"> 29057 <li><a href="#tag_REPROC">REPROC</a></li> 29058 </ul> 29059 </td> 29060 29061 </tr> 29062 <tr class="entries_header"> 29063 <th class="th_details" colspan="6">Details</th> 29064 </tr> 29065 <tr class="entry_cont"> 29066 <td class="entry_details" colspan="6"> 29067 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 29068capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 29069<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 29070output frames to effectively reduce the noise to the same level as a frame that was 29071captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 29072images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 29073the camera device is that the amount of noise in the image would be approximately what 29074would be expected if the original capture parameters had been a sensitivity of 29075S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 29076than S and T respectively.<wbr/> If the captured images were processed by the application 29077before being sent for reprocessing,<wbr/> then the application may have used image processing 29078algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 29079application-processed images (input images).<wbr/> By using the effectiveExposureFactor 29080control,<wbr/> the application can communicate to the camera device the actual noise level 29081improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 29082device can select appropriate noise reduction and edge enhancement parameters to avoid 29083excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 29084enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 29085<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 29086multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 29087fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 29088square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 29089adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 29090produce the best quality images.<wbr/></p> 29091<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 29092buffer in a way that affects its effective exposure time.<wbr/></p> 29093<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 29094reduction 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/> 29095Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 29096<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 29097 </td> 29098 </tr> 29099 29100 29101 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29102 <!-- end of entry --> 29103 29104 29105 29106 <!-- end of kind --> 29107 </tbody> 29108 <tr><td colspan="7" class="kind">dynamic</td></tr> 29109 29110 <thead class="entries_header"> 29111 <tr> 29112 <th class="th_name">Property Name</th> 29113 <th class="th_type">Type</th> 29114 <th class="th_description">Description</th> 29115 <th class="th_units">Units</th> 29116 <th class="th_range">Range</th> 29117 <th class="th_hal_version">Initial HIDL HAL version</th> 29118 <th class="th_tags">Tags</th> 29119 </tr> 29120 </thead> 29121 29122 <tbody> 29123 29124 29125 29126 29127 29128 29129 29130 29131 29132 29133 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor"> 29134 <td class="entry_name 29135 " rowspan="3"> 29136 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 29137 </td> 29138 <td class="entry_type"> 29139 <span class="entry_type_name">float</span> 29140 29141 <span class="entry_type_visibility"> [java_public]</span> 29142 29143 29144 <span class="entry_type_hwlevel">[limited] </span> 29145 29146 29147 29148 29149 </td> <!-- entry_type --> 29150 29151 <td class="entry_description"> 29152 <p>The amount of exposure time increase factor applied to the original output 29153frame by the application processing before sending for reprocessing.<wbr/></p> 29154 </td> 29155 29156 <td class="entry_units"> 29157 Relative exposure time increase factor.<wbr/> 29158 </td> 29159 29160 <td class="entry_range"> 29161 <p>>= 1.<wbr/>0</p> 29162 </td> 29163 29164 <td class="entry_hal_version"> 29165 <p>3.<wbr/>2</p> 29166 </td> 29167 29168 <td class="entry_tags"> 29169 <ul class="entry_tags"> 29170 <li><a href="#tag_REPROC">REPROC</a></li> 29171 </ul> 29172 </td> 29173 29174 </tr> 29175 <tr class="entries_header"> 29176 <th class="th_details" colspan="6">Details</th> 29177 </tr> 29178 <tr class="entry_cont"> 29179 <td class="entry_details" colspan="6"> 29180 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 29181capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 29182<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 29183output frames to effectively reduce the noise to the same level as a frame that was 29184captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 29185images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 29186the camera device is that the amount of noise in the image would be approximately what 29187would be expected if the original capture parameters had been a sensitivity of 29188S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 29189than S and T respectively.<wbr/> If the captured images were processed by the application 29190before being sent for reprocessing,<wbr/> then the application may have used image processing 29191algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 29192application-processed images (input images).<wbr/> By using the effectiveExposureFactor 29193control,<wbr/> the application can communicate to the camera device the actual noise level 29194improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 29195device can select appropriate noise reduction and edge enhancement parameters to avoid 29196excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 29197enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 29198<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 29199multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 29200fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 29201square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 29202adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 29203produce the best quality images.<wbr/></p> 29204<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 29205buffer in a way that affects its effective exposure time.<wbr/></p> 29206<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 29207reduction 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/> 29208Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 29209<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 29210 </td> 29211 </tr> 29212 29213 29214 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29215 <!-- end of entry --> 29216 29217 29218 29219 <!-- end of kind --> 29220 </tbody> 29221 <tr><td colspan="7" class="kind">static</td></tr> 29222 29223 <thead class="entries_header"> 29224 <tr> 29225 <th class="th_name">Property Name</th> 29226 <th class="th_type">Type</th> 29227 <th class="th_description">Description</th> 29228 <th class="th_units">Units</th> 29229 <th class="th_range">Range</th> 29230 <th class="th_hal_version">Initial HIDL HAL version</th> 29231 <th class="th_tags">Tags</th> 29232 </tr> 29233 </thead> 29234 29235 <tbody> 29236 29237 29238 29239 29240 29241 29242 29243 29244 29245 29246 <tr class="entry" id="static_android.reprocess.maxCaptureStall"> 29247 <td class="entry_name 29248 " rowspan="3"> 29249 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall 29250 </td> 29251 <td class="entry_type"> 29252 <span class="entry_type_name">int32</span> 29253 29254 <span class="entry_type_visibility"> [java_public]</span> 29255 29256 29257 <span class="entry_type_hwlevel">[limited] </span> 29258 29259 29260 29261 29262 </td> <!-- entry_type --> 29263 29264 <td class="entry_description"> 29265 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a 29266reprocess capture request.<wbr/></p> 29267 </td> 29268 29269 <td class="entry_units"> 29270 Number of frames.<wbr/> 29271 </td> 29272 29273 <td class="entry_range"> 29274 <p><= 4</p> 29275 </td> 29276 29277 <td class="entry_hal_version"> 29278 <p>3.<wbr/>2</p> 29279 </td> 29280 29281 <td class="entry_tags"> 29282 <ul class="entry_tags"> 29283 <li><a href="#tag_REPROC">REPROC</a></li> 29284 </ul> 29285 </td> 29286 29287 </tr> 29288 <tr class="entries_header"> 29289 <th class="th_details" colspan="6">Details</th> 29290 </tr> 29291 <tr class="entry_cont"> 29292 <td class="entry_details" colspan="6"> 29293 <p>The key describes the maximal interference that one reprocess (input) request 29294can introduce to the camera simultaneous streaming of regular (output) capture 29295requests,<wbr/> including repeating requests.<wbr/></p> 29296<p>When a reprocessing capture request is submitted while a camera output repeating request 29297(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture 29298pipeline for at least one frame duration so that the camera device is unable to process 29299the following capture request in time for the next sensor start of exposure boundary.<wbr/> 29300When this happens,<wbr/> the application may observe a capture time gap (longer than one frame 29301duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview 29302glitch if the repeating request output targets include a preview surface.<wbr/> This key gives 29303the worst-case number of frame stall introduced by one reprocess request with any kind of 29304formats/<wbr/>sizes combination.<wbr/></p> 29305<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the 29306ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p> 29307<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing ( 29308i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or 29309YUV_<wbr/>REPROCESSING).<wbr/></p> 29310 </td> 29311 </tr> 29312 29313 29314 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29315 <!-- end of entry --> 29316 29317 29318 29319 <!-- end of kind --> 29320 </tbody> 29321 29322 <!-- end of section --> 29323 <tr><td colspan="7" id="section_depth" class="section">depth</td></tr> 29324 29325 29326 <tr><td colspan="7" class="kind">static</td></tr> 29327 29328 <thead class="entries_header"> 29329 <tr> 29330 <th class="th_name">Property Name</th> 29331 <th class="th_type">Type</th> 29332 <th class="th_description">Description</th> 29333 <th class="th_units">Units</th> 29334 <th class="th_range">Range</th> 29335 <th class="th_hal_version">Initial HIDL HAL version</th> 29336 <th class="th_tags">Tags</th> 29337 </tr> 29338 </thead> 29339 29340 <tbody> 29341 29342 29343 29344 29345 29346 29347 29348 29349 29350 29351 <tr class="entry" id="static_android.depth.maxDepthSamples"> 29352 <td class="entry_name 29353 " rowspan="3"> 29354 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples 29355 </td> 29356 <td class="entry_type"> 29357 <span class="entry_type_name">int32</span> 29358 29359 <span class="entry_type_visibility"> [system]</span> 29360 29361 29362 <span class="entry_type_hwlevel">[limited] </span> 29363 29364 29365 29366 29367 </td> <!-- entry_type --> 29368 29369 <td class="entry_description"> 29370 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p> 29371 </td> 29372 29373 <td class="entry_units"> 29374 </td> 29375 29376 <td class="entry_range"> 29377 </td> 29378 29379 <td class="entry_hal_version"> 29380 <p>3.<wbr/>2</p> 29381 </td> 29382 29383 <td class="entry_tags"> 29384 <ul class="entry_tags"> 29385 <li><a href="#tag_DEPTH">DEPTH</a></li> 29386 </ul> 29387 </td> 29388 29389 </tr> 29390 <tr class="entries_header"> 29391 <th class="th_details" colspan="6">Details</th> 29392 </tr> 29393 <tr class="entry_cont"> 29394 <td class="entry_details" colspan="6"> 29395 <p>If a camera device supports outputting depth range data in the form of a depth point 29396cloud (<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 29397number of points an output buffer may contain.<wbr/></p> 29398<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/> 29399If output in the depth point cloud format is not supported,<wbr/> this entry will 29400not be defined.<wbr/></p> 29401 </td> 29402 </tr> 29403 29404 29405 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29406 <!-- end of entry --> 29407 29408 29409 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations"> 29410 <td class="entry_name 29411 " rowspan="3"> 29412 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations 29413 </td> 29414 <td class="entry_type"> 29415 <span class="entry_type_name entry_type_name_enum">int32</span> 29416 <span class="entry_type_container">x</span> 29417 29418 <span class="entry_type_array"> 29419 n x 4 29420 </span> 29421 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 29422 29423 29424 <span class="entry_type_hwlevel">[limited] </span> 29425 29426 29427 29428 <ul class="entry_type_enum"> 29429 <li> 29430 <span class="entry_type_enum_name">OUTPUT (v3.2)</span> 29431 </li> 29432 <li> 29433 <span class="entry_type_enum_name">INPUT (v3.2)</span> 29434 </li> 29435 </ul> 29436 29437 </td> <!-- entry_type --> 29438 29439 <td class="entry_description"> 29440 <p>The available depth dataspace stream 29441configurations that this camera device supports 29442(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 29443 </td> 29444 29445 <td class="entry_units"> 29446 </td> 29447 29448 <td class="entry_range"> 29449 </td> 29450 29451 <td class="entry_hal_version"> 29452 <p>3.<wbr/>2</p> 29453 </td> 29454 29455 <td class="entry_tags"> 29456 <ul class="entry_tags"> 29457 <li><a href="#tag_DEPTH">DEPTH</a></li> 29458 </ul> 29459 </td> 29460 29461 </tr> 29462 <tr class="entries_header"> 29463 <th class="th_details" colspan="6">Details</th> 29464 </tr> 29465 <tr class="entry_cont"> 29466 <td class="entry_details" colspan="6"> 29467 <p>These are output stream configurations for use with 29468dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are 29469listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 29470<p>Only devices that support depth output for at least 29471the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include 29472this entry.<wbr/></p> 29473<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB 29474sparse depth point cloud must report a single entry for 29475the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/> 29476<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to 29477the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p> 29478 </td> 29479 </tr> 29480 29481 29482 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29483 <!-- end of entry --> 29484 29485 29486 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations"> 29487 <td class="entry_name 29488 " rowspan="3"> 29489 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 29490 </td> 29491 <td class="entry_type"> 29492 <span class="entry_type_name">int64</span> 29493 <span class="entry_type_container">x</span> 29494 29495 <span class="entry_type_array"> 29496 4 x n 29497 </span> 29498 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 29499 29500 29501 <span class="entry_type_hwlevel">[limited] </span> 29502 29503 29504 29505 29506 </td> <!-- entry_type --> 29507 29508 <td class="entry_description"> 29509 <p>This lists the minimum frame duration for each 29510format/<wbr/>size combination for depth output formats.<wbr/></p> 29511 </td> 29512 29513 <td class="entry_units"> 29514 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 29515 </td> 29516 29517 <td class="entry_range"> 29518 </td> 29519 29520 <td class="entry_hal_version"> 29521 <p>3.<wbr/>2</p> 29522 </td> 29523 29524 <td class="entry_tags"> 29525 <ul class="entry_tags"> 29526 <li><a href="#tag_DEPTH">DEPTH</a></li> 29527 </ul> 29528 </td> 29529 29530 </tr> 29531 <tr class="entries_header"> 29532 <th class="th_details" colspan="6">Details</th> 29533 </tr> 29534 <tr class="entry_cont"> 29535 <td class="entry_details" colspan="6"> 29536 <p>This should correspond to the frame duration when only that 29537stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 29538set to either OFF or FAST.<wbr/></p> 29539<p>When multiple streams are used in a request,<wbr/> the minimum frame 29540duration will be max(individual stream min durations).<wbr/></p> 29541<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 29542is the same regardless of whether the stream is input or output.<wbr/></p> 29543<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 29544<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 29545calculating the max frame rate.<wbr/></p> 29546 </td> 29547 </tr> 29548 29549 29550 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29551 <!-- end of entry --> 29552 29553 29554 <tr class="entry" id="static_android.depth.availableDepthStallDurations"> 29555 <td class="entry_name 29556 " rowspan="3"> 29557 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations 29558 </td> 29559 <td class="entry_type"> 29560 <span class="entry_type_name">int64</span> 29561 <span class="entry_type_container">x</span> 29562 29563 <span class="entry_type_array"> 29564 4 x n 29565 </span> 29566 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 29567 29568 29569 <span class="entry_type_hwlevel">[limited] </span> 29570 29571 29572 29573 29574 </td> <!-- entry_type --> 29575 29576 <td class="entry_description"> 29577 <p>This lists the maximum stall duration for each 29578output format/<wbr/>size combination for depth streams.<wbr/></p> 29579 </td> 29580 29581 <td class="entry_units"> 29582 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 29583 </td> 29584 29585 <td class="entry_range"> 29586 </td> 29587 29588 <td class="entry_hal_version"> 29589 <p>3.<wbr/>2</p> 29590 </td> 29591 29592 <td class="entry_tags"> 29593 <ul class="entry_tags"> 29594 <li><a href="#tag_DEPTH">DEPTH</a></li> 29595 </ul> 29596 </td> 29597 29598 </tr> 29599 <tr class="entries_header"> 29600 <th class="th_details" colspan="6">Details</th> 29601 </tr> 29602 <tr class="entry_cont"> 29603 <td class="entry_details" colspan="6"> 29604 <p>A stall duration is how much extra time would get added 29605to the normal minimum frame duration for a repeating request 29606that has streams with non-zero stall.<wbr/></p> 29607<p>This functions similarly to 29608<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth 29609streams.<wbr/></p> 29610<p>All depth output stream formats may have a nonzero stall 29611duration.<wbr/></p> 29612 </td> 29613 </tr> 29614 29615 29616 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29617 <!-- end of entry --> 29618 29619 29620 <tr class="entry" id="static_android.depth.depthIsExclusive"> 29621 <td class="entry_name 29622 " rowspan="3"> 29623 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive 29624 </td> 29625 <td class="entry_type"> 29626 <span class="entry_type_name entry_type_name_enum">byte</span> 29627 29628 <span class="entry_type_visibility"> [public as boolean]</span> 29629 29630 29631 <span class="entry_type_hwlevel">[limited] </span> 29632 29633 29634 29635 <ul class="entry_type_enum"> 29636 <li> 29637 <span class="entry_type_enum_name">FALSE (v3.2)</span> 29638 </li> 29639 <li> 29640 <span class="entry_type_enum_name">TRUE (v3.2)</span> 29641 </li> 29642 </ul> 29643 29644 </td> <!-- entry_type --> 29645 29646 <td class="entry_description"> 29647 <p>Indicates whether a capture request may target both a 29648DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as 29649YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p> 29650 </td> 29651 29652 <td class="entry_units"> 29653 </td> 29654 29655 <td class="entry_range"> 29656 </td> 29657 29658 <td class="entry_hal_version"> 29659 <p>3.<wbr/>2</p> 29660 </td> 29661 29662 <td class="entry_tags"> 29663 </td> 29664 29665 </tr> 29666 <tr class="entries_header"> 29667 <th class="th_details" colspan="6">Details</th> 29668 </tr> 29669 <tr class="entry_cont"> 29670 <td class="entry_details" colspan="6"> 29671 <p>If TRUE,<wbr/> including both depth and color outputs in a single 29672capture request is not supported.<wbr/> An application must interleave color 29673and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types 29674of output.<wbr/></p> 29675<p>Typically,<wbr/> this restriction exists on camera devices that 29676need to emit a specific pattern or wavelength of light to 29677measure depth values,<wbr/> which causes the color image to be 29678corrupted during depth measurement.<wbr/></p> 29679 </td> 29680 </tr> 29681 29682 29683 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29684 <!-- end of entry --> 29685 29686 29687 29688 <!-- end of kind --> 29689 </tbody> 29690 29691 <!-- end of section --> 29692 <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr> 29693 29694 29695 <tr><td colspan="7" class="kind">static</td></tr> 29696 29697 <thead class="entries_header"> 29698 <tr> 29699 <th class="th_name">Property Name</th> 29700 <th class="th_type">Type</th> 29701 <th class="th_description">Description</th> 29702 <th class="th_units">Units</th> 29703 <th class="th_range">Range</th> 29704 <th class="th_hal_version">Initial HIDL HAL version</th> 29705 <th class="th_tags">Tags</th> 29706 </tr> 29707 </thead> 29708 29709 <tbody> 29710 29711 29712 29713 29714 29715 29716 29717 29718 29719 29720 <tr class="entry" id="static_android.logicalMultiCamera.physicalIds"> 29721 <td class="entry_name 29722 " rowspan="3"> 29723 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids 29724 </td> 29725 <td class="entry_type"> 29726 <span class="entry_type_name">byte</span> 29727 <span class="entry_type_container">x</span> 29728 29729 <span class="entry_type_array"> 29730 n 29731 </span> 29732 <span class="entry_type_visibility"> [hidden]</span> 29733 29734 29735 <span class="entry_type_hwlevel">[limited] </span> 29736 29737 29738 29739 29740 </td> <!-- entry_type --> 29741 29742 <td class="entry_description"> 29743 <p>String containing the ids of the underlying physical cameras.<wbr/></p> 29744 </td> 29745 29746 <td class="entry_units"> 29747 UTF-8 null-terminated string 29748 </td> 29749 29750 <td class="entry_range"> 29751 </td> 29752 29753 <td class="entry_hal_version"> 29754 <p>3.<wbr/>3</p> 29755 </td> 29756 29757 <td class="entry_tags"> 29758 <ul class="entry_tags"> 29759 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> 29760 </ul> 29761 </td> 29762 29763 </tr> 29764 <tr class="entries_header"> 29765 <th class="th_details" colspan="6">Details</th> 29766 </tr> 29767 <tr class="entry_cont"> 29768 <td class="entry_details" colspan="6"> 29769 <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera ids.<wbr/> 29770The null terminator for physical camera id must be preserved so that the whole string 29771can be tokenized using '\0' to generate list of physical camera ids.<wbr/></p> 29772<p>For example,<wbr/> if the physical camera ids of the logical camera are "2" and "3",<wbr/> the 29773value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p> 29774<p>The number of physical camera ids must be no less than 2.<wbr/></p> 29775 </td> 29776 </tr> 29777 29778 29779 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29780 <!-- end of entry --> 29781 29782 29783 <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType"> 29784 <td class="entry_name 29785 " rowspan="3"> 29786 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type 29787 </td> 29788 <td class="entry_type"> 29789 <span class="entry_type_name entry_type_name_enum">byte</span> 29790 29791 <span class="entry_type_visibility"> [public]</span> 29792 29793 29794 <span class="entry_type_hwlevel">[limited] </span> 29795 29796 29797 29798 <ul class="entry_type_enum"> 29799 <li> 29800 <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span> 29801 <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/> 29802the timestamp of an image from a physical stream is only an approximation of the 29803image sensor start-of-exposure time.<wbr/></p></span> 29804 </li> 29805 <li> 29806 <span class="entry_type_enum_name">CALIBRATED (v3.3)</span> 29807 <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/> 29808and the timestamp of a physical stream image accurately reflects its 29809start-of-exposure time.<wbr/></p></span> 29810 </li> 29811 </ul> 29812 29813 </td> <!-- entry_type --> 29814 29815 <td class="entry_description"> 29816 <p>The accuracy of frame timestamp synchronization between physical cameras</p> 29817 </td> 29818 29819 <td class="entry_units"> 29820 </td> 29821 29822 <td class="entry_range"> 29823 </td> 29824 29825 <td class="entry_hal_version"> 29826 <p>3.<wbr/>3</p> 29827 </td> 29828 29829 <td class="entry_tags"> 29830 <ul class="entry_tags"> 29831 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> 29832 </ul> 29833 </td> 29834 29835 </tr> 29836 <tr class="entries_header"> 29837 <th class="th_details" colspan="6">Details</th> 29838 </tr> 29839 <tr class="entry_cont"> 29840 <td class="entry_details" colspan="6"> 29841 <p>The accuracy of the frame timestamp synchronization determines the physical cameras' 29842ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/> 29843the physical camera sensors usually run in master-slave mode so that their shutter 29844time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in 29845master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p> 29846<p>In both cases,<wbr/> all images generated for a particular capture request still carry the same 29847timestamps,<wbr/> so that they can be used to look up the matching frame number and 29848onCaptureStarted callback.<wbr/></p> 29849 </td> 29850 </tr> 29851 29852 29853 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29854 <!-- end of entry --> 29855 29856 29857 29858 <!-- end of kind --> 29859 </tbody> 29860 29861 <!-- end of section --> 29862 <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr> 29863 29864 29865 <tr><td colspan="7" class="kind">controls</td></tr> 29866 29867 <thead class="entries_header"> 29868 <tr> 29869 <th class="th_name">Property Name</th> 29870 <th class="th_type">Type</th> 29871 <th class="th_description">Description</th> 29872 <th class="th_units">Units</th> 29873 <th class="th_range">Range</th> 29874 <th class="th_hal_version">Initial HIDL HAL version</th> 29875 <th class="th_tags">Tags</th> 29876 </tr> 29877 </thead> 29878 29879 <tbody> 29880 29881 29882 29883 29884 29885 29886 29887 29888 29889 29890 <tr class="entry" id="controls_android.distortionCorrection.mode"> 29891 <td class="entry_name 29892 " rowspan="3"> 29893 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode 29894 </td> 29895 <td class="entry_type"> 29896 <span class="entry_type_name entry_type_name_enum">byte</span> 29897 29898 <span class="entry_type_visibility"> [public]</span> 29899 29900 29901 29902 29903 29904 <ul class="entry_type_enum"> 29905 <li> 29906 <span class="entry_type_enum_name">OFF (v3.3)</span> 29907 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span> 29908 </li> 29909 <li> 29910 <span class="entry_type_enum_name">FAST (v3.3)</span> 29911 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate 29912relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would 29913reduce frame rate relative to sensor.<wbr/></p></span> 29914 </li> 29915 <li> 29916 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span> 29917 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of 29918possibly reduced frame rate relative to sensor output.<wbr/></p></span> 29919 </li> 29920 </ul> 29921 29922 </td> <!-- entry_type --> 29923 29924 <td class="entry_description"> 29925 <p>Mode of operation for the lens distortion correction block.<wbr/></p> 29926 </td> 29927 29928 <td class="entry_units"> 29929 </td> 29930 29931 <td class="entry_range"> 29932 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p> 29933 </td> 29934 29935 <td class="entry_hal_version"> 29936 <p>3.<wbr/>3</p> 29937 </td> 29938 29939 <td class="entry_tags"> 29940 </td> 29941 29942 </tr> 29943 <tr class="entries_header"> 29944 <th class="th_details" colspan="6">Details</th> 29945 </tr> 29946 <tr class="entry_cont"> 29947 <td class="entry_details" colspan="6"> 29948 <p>The lens distortion correction block attempts to improve image quality by fixing 29949radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If 29950available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p> 29951<p>OFF means no distortion correction is done.<wbr/></p> 29952<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be 29953applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality 29954correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device 29955will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if 29956any correction at all would slow down capture rate.<wbr/> Every output stream will have a 29957similar amount of enhancement applied.<wbr/></p> 29958<p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not 29959applied to any RAW output.<wbr/> Metadata coordinates such as face rectangles or metering 29960regions are also not affected by correction.<wbr/></p> 29961<p>Applications enabling distortion correction need to pay extra attention when converting 29962image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if 29963the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion 29964model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly 29965calculate the tap position on the sensor active array to be used with 29966<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/> The same applies in reverse to detected face rectangles if 29967they need to be drawn on top of the corrected output buffers.<wbr/></p> 29968 </td> 29969 </tr> 29970 29971 29972 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 29973 <!-- end of entry --> 29974 29975 29976 29977 <!-- end of kind --> 29978 </tbody> 29979 <tr><td colspan="7" class="kind">static</td></tr> 29980 29981 <thead class="entries_header"> 29982 <tr> 29983 <th class="th_name">Property Name</th> 29984 <th class="th_type">Type</th> 29985 <th class="th_description">Description</th> 29986 <th class="th_units">Units</th> 29987 <th class="th_range">Range</th> 29988 <th class="th_hal_version">Initial HIDL HAL version</th> 29989 <th class="th_tags">Tags</th> 29990 </tr> 29991 </thead> 29992 29993 <tbody> 29994 29995 29996 29997 29998 29999 30000 30001 30002 30003 30004 <tr class="entry" id="static_android.distortionCorrection.availableModes"> 30005 <td class="entry_name 30006 " rowspan="5"> 30007 android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes 30008 </td> 30009 <td class="entry_type"> 30010 <span class="entry_type_name">byte</span> 30011 <span class="entry_type_container">x</span> 30012 30013 <span class="entry_type_array"> 30014 n 30015 </span> 30016 <span class="entry_type_visibility"> [public as enumList]</span> 30017 30018 30019 30020 30021 <div class="entry_type_notes">list of enums</div> 30022 30023 30024 </td> <!-- entry_type --> 30025 30026 <td class="entry_description"> 30027 <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are 30028supported by this camera device.<wbr/></p> 30029 </td> 30030 30031 <td class="entry_units"> 30032 </td> 30033 30034 <td class="entry_range"> 30035 <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p> 30036 </td> 30037 30038 <td class="entry_hal_version"> 30039 <p>3.<wbr/>3</p> 30040 </td> 30041 30042 <td class="entry_tags"> 30043 <ul class="entry_tags"> 30044 <li><a href="#tag_V1">V1</a></li> 30045 <li><a href="#tag_REPROC">REPROC</a></li> 30046 </ul> 30047 </td> 30048 30049 </tr> 30050 <tr class="entries_header"> 30051 <th class="th_details" colspan="6">Details</th> 30052 </tr> 30053 <tr class="entry_cont"> 30054 <td class="entry_details" colspan="6"> 30055 <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/> 30056All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p> 30057 </td> 30058 </tr> 30059 30060 <tr class="entries_header"> 30061 <th class="th_details" colspan="6">HAL Implementation Details</th> 30062 </tr> 30063 <tr class="entry_cont"> 30064 <td class="entry_details" colspan="6"> 30065 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available 30066on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 30067That is,<wbr/> if the highest quality implementation on the camera device does not slow down 30068capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 30069 </td> 30070 </tr> 30071 30072 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30073 <!-- end of entry --> 30074 30075 30076 30077 <!-- end of kind --> 30078 </tbody> 30079 <tr><td colspan="7" class="kind">dynamic</td></tr> 30080 30081 <thead class="entries_header"> 30082 <tr> 30083 <th class="th_name">Property Name</th> 30084 <th class="th_type">Type</th> 30085 <th class="th_description">Description</th> 30086 <th class="th_units">Units</th> 30087 <th class="th_range">Range</th> 30088 <th class="th_hal_version">Initial HIDL HAL version</th> 30089 <th class="th_tags">Tags</th> 30090 </tr> 30091 </thead> 30092 30093 <tbody> 30094 30095 30096 30097 30098 30099 30100 30101 30102 30103 30104 <tr class="entry" id="dynamic_android.distortionCorrection.mode"> 30105 <td class="entry_name 30106 " rowspan="3"> 30107 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode 30108 </td> 30109 <td class="entry_type"> 30110 <span class="entry_type_name entry_type_name_enum">byte</span> 30111 30112 <span class="entry_type_visibility"> [public]</span> 30113 30114 30115 30116 30117 30118 <ul class="entry_type_enum"> 30119 <li> 30120 <span class="entry_type_enum_name">OFF (v3.3)</span> 30121 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span> 30122 </li> 30123 <li> 30124 <span class="entry_type_enum_name">FAST (v3.3)</span> 30125 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate 30126relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would 30127reduce frame rate relative to sensor.<wbr/></p></span> 30128 </li> 30129 <li> 30130 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span> 30131 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of 30132possibly reduced frame rate relative to sensor output.<wbr/></p></span> 30133 </li> 30134 </ul> 30135 30136 </td> <!-- entry_type --> 30137 30138 <td class="entry_description"> 30139 <p>Mode of operation for the lens distortion correction block.<wbr/></p> 30140 </td> 30141 30142 <td class="entry_units"> 30143 </td> 30144 30145 <td class="entry_range"> 30146 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p> 30147 </td> 30148 30149 <td class="entry_hal_version"> 30150 <p>3.<wbr/>3</p> 30151 </td> 30152 30153 <td class="entry_tags"> 30154 </td> 30155 30156 </tr> 30157 <tr class="entries_header"> 30158 <th class="th_details" colspan="6">Details</th> 30159 </tr> 30160 <tr class="entry_cont"> 30161 <td class="entry_details" colspan="6"> 30162 <p>The lens distortion correction block attempts to improve image quality by fixing 30163radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If 30164available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p> 30165<p>OFF means no distortion correction is done.<wbr/></p> 30166<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be 30167applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality 30168correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device 30169will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if 30170any correction at all would slow down capture rate.<wbr/> Every output stream will have a 30171similar amount of enhancement applied.<wbr/></p> 30172<p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not 30173applied to any RAW output.<wbr/> Metadata coordinates such as face rectangles or metering 30174regions are also not affected by correction.<wbr/></p> 30175<p>Applications enabling distortion correction need to pay extra attention when converting 30176image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if 30177the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion 30178model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly 30179calculate the tap position on the sensor active array to be used with 30180<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/> The same applies in reverse to detected face rectangles if 30181they need to be drawn on top of the corrected output buffers.<wbr/></p> 30182 </td> 30183 </tr> 30184 30185 30186 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> 30187 <!-- end of entry --> 30188 30189 30190 30191 <!-- end of kind --> 30192 </tbody> 30193 30194 <!-- end of section --> 30195<!-- </namespace> --> 30196 </table> 30197 30198 <div class="tags" id="tag_index"> 30199 <h2>Tags</h2> 30200 <ul> 30201 <li id="tag_BC">BC - 30202 Needed for backwards compatibility with old Java API 30203 30204 <ul class="tags_entries"> 30205 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 30206 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 30207 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 30208 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 30209 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 30210 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 30211 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 30212 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 30213 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 30214 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 30215 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 30216 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 30217 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 30218 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 30219 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 30220 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 30221 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 30222 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 30223 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> 30224 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 30225 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> 30226 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 30227 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 30228 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 30229 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 30230 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 30231 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 30232 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 30233 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 30234 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 30235 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li> 30236 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li> 30237 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 30238 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 30239 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 30240 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 30241 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 30242 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 30243 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 30244 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 30245 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 30246 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 30247 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 30248 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 30249 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 30250 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 30251 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 30252 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 30253 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 30254 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 30255 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 30256 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 30257 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 30258 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 30259 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 30260 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 30261 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 30262 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 30263 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 30264 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 30265 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> 30266 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 30267 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 30268 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 30269 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 30270 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 30271 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 30272 </ul> 30273 </li> <!-- tag_BC --> 30274 <li id="tag_V1">V1 - 30275 New features for first camera 2 release (API1) 30276 30277 <ul class="tags_entries"> 30278 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li> 30279 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li> 30280 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 30281 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 30282 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 30283 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 30284 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 30285 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 30286 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 30287 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 30288 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 30289 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 30290 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 30291 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 30292 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 30293 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 30294 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 30295 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 30296 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 30297 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 30298 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 30299 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 30300 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 30301 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 30302 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 30303 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 30304 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 30305 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 30306 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 30307 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 30308 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 30309 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li> 30310 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 30311 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li> 30312 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 30313 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 30314 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 30315 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 30316 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 30317 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li> 30318 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 30319 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 30320 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 30321 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 30322 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 30323 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 30324 </ul> 30325 </li> <!-- tag_V1 --> 30326 <li id="tag_RAW">RAW - 30327 Needed for useful RAW image processing and DNG file support 30328 30329 <ul class="tags_entries"> 30330 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 30331 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 30332 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 30333 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 30334 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 30335 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 30336 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li> 30337 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 30338 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> 30339 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 30340 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 30341 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 30342 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 30343 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 30344 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 30345 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 30346 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 30347 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 30348 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li> 30349 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 30350 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 30351 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 30352 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li> 30353 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li> 30354 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 30355 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 30356 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 30357 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li> 30358 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 30359 </ul> 30360 </li> <!-- tag_RAW --> 30361 <li id="tag_HAL2">HAL2 - 30362 Entry is only used by camera device legacy HAL 2.x 30363 30364 <ul class="tags_entries"> 30365 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 30366 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 30367 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 30368 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 30369 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 30370 </ul> 30371 </li> <!-- tag_HAL2 --> 30372 <li id="tag_FULL">FULL - 30373 Entry is required for full hardware level devices, and optional for other hardware levels 30374 30375 <ul class="tags_entries"> 30376 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 30377 </ul> 30378 </li> <!-- tag_FULL --> 30379 <li id="tag_DEPTH">DEPTH - 30380 Entry is required for the depth capability. 30381 30382 <ul class="tags_entries"> 30383 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li> 30384 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li> 30385 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li> 30386 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li> 30387 <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li> 30388 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li> 30389 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li> 30390 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li> 30391 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li> 30392 </ul> 30393 </li> <!-- tag_DEPTH --> 30394 <li id="tag_REPROC">REPROC - 30395 Entry is required for the YUV or PRIVATE reprocessing capability. 30396 30397 <ul class="tags_entries"> 30398 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 30399 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 30400 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 30401 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 30402 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li> 30403 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li> 30404 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li> 30405 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li> 30406 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li> 30407 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 30408 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 30409 </ul> 30410 </li> <!-- tag_REPROC --> 30411 <li id="tag_LOGICALCAMERA">LOGICALCAMERA - 30412 Entry is required for logical multi-camera capability. 30413 30414 <ul class="tags_entries"> 30415 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li> 30416 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li> 30417 </ul> 30418 </li> <!-- tag_LOGICALCAMERA --> 30419 <li id="tag_FUTURE">FUTURE - 30420 Entry is under-specified and is not required for now. This is for book-keeping purpose, 30421 do not implement or use it, it may be revised for future. 30422 30423 <ul class="tags_entries"> 30424 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 30425 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 30426 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 30427 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 30428 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 30429 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 30430 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 30431 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> 30432 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> 30433 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> 30434 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 30435 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 30436 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 30437 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 30438 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 30439 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> 30440 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> 30441 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> 30442 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> 30443 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 30444 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 30445 </ul> 30446 </li> <!-- tag_FUTURE --> 30447 </ul> 30448 </div> 30449 30450 [ <a href="#">top</a> ] 30451 30452</body> 30453</html> 30454