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 1280 and <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 1282 by 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 1284 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1285 this 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 1290 capture rate relative to sensor raw output.<wbr/></p> 1291 <p>Advanced white balance adjustments above and beyond 1292 the 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 1294 the 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 1300 quality but the capture rate might be reduced (relative to sensor 1301 raw output rate)</p> 1302 <p>Advanced white balance adjustments above and beyond 1303 the 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 1305 the 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 1314 sensor'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 1337 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1338 application controls how the color mapping is performed.<wbr/></p> 1339 <p>We define the expected processing pipeline below.<wbr/> For consistency 1340 across 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 1342 do 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 1344 camera device (in the results) and be roughly correct.<wbr/></p> 1345 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1346 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1347 as 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 1351 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1352 matrix (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 1357 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1358 These may be identical for a given camera device implementation; if 1359 the camera device does not support a separate gain for even/<wbr/>odd green 1360 channels,<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/> 1366 to 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 1369 g' = I3r + I4g + I5b 1370 b' = I6r + I7g + I8b 1371 </code></pre> 1372 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1373 values 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 1383 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1384 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1385 capture 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 1418 from 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 1443 directly 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 1446 for precision issues; the final rounded matrix should be reported back 1447 in this matrix result metadata.<wbr/> The transform should keep the magnitude 1448 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1449 values 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 1451 values 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 1485 white-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 1509 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1510 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1511 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1512 TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1513 <p>The gains in the result metadata are the gains actually 1514 applied by the camera device to the current frame.<wbr/></p> 1515 <p>The valid range of gains varies on different devices,<wbr/> but gains 1516 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1517 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1518 this 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 1528 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1529 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1530 is 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 1532 channels,<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 1564 relative 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 1569 reduced (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 1600 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1601 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1602 minimize the chromatic artifacts that may occur along the object boundaries in an 1603 image.<wbr/></p> 1604 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1605 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1606 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1607 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1608 applying 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 1665 and <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 1667 by 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 1669 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1670 this 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 1675 capture rate relative to sensor raw output.<wbr/></p> 1676 <p>Advanced white balance adjustments above and beyond 1677 the 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 1679 the 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 1685 quality but the capture rate might be reduced (relative to sensor 1686 raw output rate)</p> 1687 <p>Advanced white balance adjustments above and beyond 1688 the 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 1690 the 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 1699 sensor'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 1722 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1723 application controls how the color mapping is performed.<wbr/></p> 1724 <p>We define the expected processing pipeline below.<wbr/> For consistency 1725 across 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 1727 do 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 1729 camera device (in the results) and be roughly correct.<wbr/></p> 1730 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1731 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1732 as 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 1736 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1737 matrix (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 1742 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1743 These may be identical for a given camera device implementation; if 1744 the camera device does not support a separate gain for even/<wbr/>odd green 1745 channels,<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/> 1751 to 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 1754 g' = I3r + I4g + I5b 1755 b' = I6r + I7g + I8b 1756 </code></pre> 1757 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1758 values 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 1768 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1769 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1770 capture 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 1803 from 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 1828 directly 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 1831 for precision issues; the final rounded matrix should be reported back 1832 in this matrix result metadata.<wbr/> The transform should keep the magnitude 1833 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1834 values 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 1836 values 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 1870 white-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 1894 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1895 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1896 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1897 TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1898 <p>The gains in the result metadata are the gains actually 1899 applied by the camera device to the current frame.<wbr/></p> 1900 <p>The valid range of gains varies on different devices,<wbr/> but gains 1901 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1902 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1903 this 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 1913 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1914 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1915 is 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 1917 channels,<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 1949 relative 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 1954 reduced (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 1985 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1986 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1987 minimize the chromatic artifacts that may occur along the object boundaries in an 1988 image.<wbr/></p> 1989 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1990 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1991 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1992 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1993 applying 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 2056 supported 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 2083 aberration correction modes are available for a device,<wbr/> this list will solely include 2084 OFF 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 2086 OFF 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 2097 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 2098 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 2099 capture 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 2159 avoid 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 2164 avoid 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 2169 avoid banding problems with 60Hz illumination 2170 sources.<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 2175 antibanding routine to the current illumination 2176 condition.<wbr/> This is the default mode if AUTO is 2177 available 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 2185 algorithm'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 2212 lights,<wbr/> flicker at the rate of the power supply frequency 2213 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 2214 typically not noticeable to a person,<wbr/> it can be visible to 2215 a camera device.<wbr/> If a camera sets its exposure time to the 2216 wrong value,<wbr/> the flicker may become visible in the 2217 viewfinder as flicker or in a final captured image,<wbr/> as a 2218 set of variable-brightness bands across the image.<wbr/></p> 2219 <p>Therefore,<wbr/> the auto-exposure routines of camera devices 2220 include antibanding routines that ensure that the chosen 2221 exposure value will not cause such banding.<wbr/> The choice of 2222 exposure time depends on the rate of flicker,<wbr/> which the 2223 camera device can detect automatically,<wbr/> or the expected 2224 rate can be selected by the application using this 2225 control.<wbr/></p> 2226 <p>A given camera device may not support all of the possible 2227 options 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 2229 the available modes for a given camera device.<wbr/></p> 2230 <p>AUTO mode is the default if it is available on given 2231 camera device.<wbr/> When AUTO mode is not available,<wbr/> the 2232 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 2233 and 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/> 2236 then this setting has no effect,<wbr/> and the application must 2237 ensure it selects exposure times that do not cause banding 2238 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 2239 the 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 2249 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 2250 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 2251 60HZ 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/> 2254 then the exposure values provided by the application must not be 2255 adjusted 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 2283 brightness.<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 2311 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 2312 allowed 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' 2314 will mean an exposure compensation of +2 EV; -3 will mean an 2315 exposure compensation of -1 EV.<wbr/> One EV represents a doubling 2316 of image brightness.<wbr/> Note that this control will only be 2317 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 2318 will 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 2320 may take several frames to reach the newly requested exposure target.<wbr/> 2321 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 2322 state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 2323 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 2324 FLASH_<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 2352 is 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 2357 must not update the exposure and sensitivity parameters 2358 while 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 2360 will still take effect while auto-exposure is locked.<wbr/></p> 2361 <p>Some rare LEGACY devices may not support 2362 this,<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 2370 calculated 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/> 2396 and 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 2398 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 2399 ON_<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 2401 is 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>) 2403 when 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>) 2405 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 2406 is 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/> 2408 Similarly,<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 2410 the AE if AE is locked by the camera device internally during precapture metering 2411 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 2412 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 2413 will never succeed in a sequence of preview requests where AE lock is always set 2414 to <code>false</code>.<wbr/></p> 2415 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 2416 get locked do not necessarily correspond to the settings that were present in the 2417 latest capture result received from the camera device,<wbr/> since additional captures 2418 and AE updates may have occurred even before the result was sent out.<wbr/> If an 2419 application is switching between automatic and manual control and wishes to eliminate 2420 any 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 2459 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 2460 a flash unit for this camera device.<wbr/></p> 2461 <p>Note that auto-white balance (AWB) and auto-focus (AF) 2462 behavior is device dependent when AE is in OFF mode.<wbr/> 2463 To have consistent behavior across different devices,<wbr/> 2464 it is recommended to either set AWB and AF to OFF mode 2465 or lock AWB and AF before setting AE to OFF.<wbr/> 2466 See <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> 2468 for more details.<wbr/></p> 2469 <p>LEGACY devices do not support the OFF mode and will 2470 override 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/> 2475 with 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 2480 application has control over the various 2481 android.<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 2486 the camera's flash unit,<wbr/> firing it in low-light 2487 conditions.<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 2490 may 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 2492 STILL_<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 2497 the camera's flash unit,<wbr/> always firing it for still 2498 captures.<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 2501 will 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 2503 STILL_<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 2508 reduction.<wbr/></p> 2509 <p>If deemed necessary by the camera device,<wbr/> a red eye 2510 reduction flash will fire during the precapture 2511 sequence.<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 2517 metering (and continuous focus if active) should be quickly recaculated to account 2518 for 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 2520 other 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 2522 be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without 2523 flash.<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 2531 auto-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 2558 AUTO.<wbr/></p> 2559 <p>When set to any of the ON modes,<wbr/> the camera device's 2560 auto-exposure routine is enabled,<wbr/> overriding the 2561 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 2562 and 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 2565 is selected,<wbr/> the camera device's flash unit controls are 2566 also overridden.<wbr/></p> 2567 <p>The FLASH modes are only available if the camera device 2568 has 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 2570 ON 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 2572 camera device auto-exposure routine for the overridden 2573 fields for a given capture will be available in its 2574 CaptureResult.<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/> 2634 Otherwise will always be present.<wbr/></p> 2635 <p>The maximum number of regions supported by the device is determined by the value 2636 of <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/> 2638 with (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 2641 bottom-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 2643 for every pixel in the area.<wbr/> This means that a large metering area 2644 with the same weight as a smaller area will have more effect in 2645 the metering result.<wbr/> Metering areas can partially overlap and the 2646 camera 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 2648 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 2649 weight is ignored.<wbr/></p> 2650 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2651 camera 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 2653 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2654 region and output only the intersection rectangle as the metering region in the result 2655 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2656 not 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 2666 int[5 * area_<wbr/>count].<wbr/> 2667 Every five elements represent a metering region of 2668 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2669 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2670 exclusive 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 2702 adjust the capture frame rate to maintain good 2703 exposure.<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 2731 manual 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 2764 by the camera device.<wbr/></p> 2765 <p>The exact effect of the precapture trigger depends on 2766 the 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 2771 precapture metering sequence,<wbr/> the auto-exposure routine will return to its 2772 initial 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 2780 metering 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 2806 included at all in the request settings.<wbr/> When included and 2807 set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 2808 precapture metering sequence.<wbr/></p> 2809 <p>When set to CANCEL,<wbr/> the camera device will cancel any active 2810 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 2811 If a precapture metering sequence is already completed,<wbr/> and the camera 2812 device has implicitly locked the AE for subsequent still capture,<wbr/> the 2813 CANCEL 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 2815 high-quality still capture for final metering decisions to 2816 be made,<wbr/> and for firing pre-capture flash pulses to estimate 2817 scene brightness and required final capture flash power,<wbr/> when 2818 the flash is enabled.<wbr/></p> 2819 <p>Normally,<wbr/> this entry should be set to START for only a 2820 single request,<wbr/> and the application should wait until the 2821 sequence completes before starting a new one.<wbr/></p> 2822 <p>When a precapture metering sequence is finished,<wbr/> the camera device 2823 may lock the auto-exposure routine internally to be able to accurately expose the 2824 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 2825 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 2826 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 2827 submit 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 2828 with <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 2829 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 2830 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 2831 internally locked AE if the application doesn't submit a still capture request after 2832 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 2833 be used in devices that have earlier API levels.<wbr/></p> 2834 <p>The exact effect of auto-exposure (AE) precapture trigger 2835 depends 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 2837 details.<wbr/></p> 2838 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 2839 capturing a high-resolution JPEG image will automatically trigger a 2840 precapture sequence before the high-resolution capture,<wbr/> including 2841 potentially 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> 2843 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 2844 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 2845 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 2846 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 2847 changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 2848 example.<wbr/></p> 2849 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 2850 the 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 2861 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 2862 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 2863 to 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 2891 application.<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 2897 the autofocus trigger action is called.<wbr/> When that trigger 2898 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2899 the 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 2902 is fixed-focus.<wbr/></p> 2903 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 2904 and 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 2910 autofocus trigger action is called.<wbr/> When that trigger is 2911 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2912 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 2913 mode is optimized for focusing on objects very close to 2914 the camera.<wbr/></p> 2915 <p>When that trigger is activated,<wbr/> AF will transition to 2916 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 2917 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 2918 position to default,<wbr/> and sets the AF state to 2919 INACTIVE.<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 2924 position continually to attempt to provide a 2925 constantly-in-focus image stream.<wbr/></p> 2926 <p>The focusing behavior should be suitable for good quality 2927 video recording; typically this means slower focus 2928 movement and no overshoots.<wbr/> When the AF trigger is not 2929 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 2930 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 2931 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 2932 the algorithm should immediately transition into 2933 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2934 lens position until a cancel AF trigger is received.<wbr/></p> 2935 <p>Once cancel is received,<wbr/> the algorithm should transition 2936 back to INACTIVE and resume passive scan.<wbr/> Note that this 2937 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 2938 ongoing PASSIVE_<wbr/>SCAN must immediately be 2939 canceled.<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 2944 position continually to attempt to provide a 2945 constantly-in-focus image stream.<wbr/></p> 2946 <p>The focusing behavior should be suitable for still image 2947 capture; typically this means focusing as fast as 2948 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 2949 algorithm should start in INACTIVE state,<wbr/> and then 2950 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 2951 appropriate as it attempts to maintain focus.<wbr/> When the AF 2952 trigger is activated,<wbr/> the algorithm should finish its 2953 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 2954 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2955 lens position until a cancel AF trigger is received.<wbr/></p> 2956 <p>When the AF cancel trigger is activated,<wbr/> the algorithm 2957 should transition back to INACTIVE and then act as if it 2958 has 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 2964 depth of field automatically; no special focusing 2965 operations need to be done before taking a picture.<wbr/></p> 2966 <p>AF triggers are ignored,<wbr/> and the AF state will always be 2967 INACTIVE.<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 2975 mode 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 3003 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 3004 dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 3005 setting <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/> 3007 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 3008 in 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 3018 request (<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 3019 up 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 3021 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 3022 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 3023 the 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 3025 scan 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 3027 same lock behavior as above.<wbr/></p> 3028 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 3029 focus 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/> 3030 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 3031 manual control.<wbr/></p> 3032 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 3033 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 3034 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 3035 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 3036 that 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/> 3095 Otherwise will always be present.<wbr/></p> 3096 <p>The maximum number of focus areas supported by the device is determined by the value 3097 of <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/> 3099 with (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 3102 bottom-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 3104 for every pixel in the area.<wbr/> This means that a large metering area 3105 with the same weight as a smaller area will have more effect in 3106 the metering result.<wbr/> Metering areas can partially overlap and the 3107 camera 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 3109 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 3110 ignored.<wbr/></p> 3111 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3112 camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or 3113 the 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 3115 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3116 region and output only the intersection rectangle as the metering region in the result 3117 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3118 not 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 3128 int[5 * area_<wbr/>count].<wbr/> 3129 Every five elements represent a metering region of 3130 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3131 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3132 exclusive 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 3167 state,<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 3200 included at all in the request settings.<wbr/></p> 3201 <p>When included and set to START,<wbr/> the camera device will trigger the 3202 autofocus 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/> 3204 and return to its initial AF state.<wbr/></p> 3205 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 3206 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 3207 START for multiple captures in a row means restarting the AF operation over 3208 and 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> 3211 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 3212 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 3213 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 3214 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 3215 changes 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 3226 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 3227 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 3228 to 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 3255 algorithm is free to update its parameters if in AUTO 3256 mode.<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 3261 algorithm will not update its parameters while the lock 3262 is 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 3270 latest 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/> 3296 and 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 3298 get locked do not necessarily correspond to the settings that were present in the 3299 latest capture result received from the camera device,<wbr/> since additional captures 3300 and AWB updates may have occurred even before the result was sent out.<wbr/> If an 3301 application is switching between automatic and manual control and wishes to eliminate 3302 any 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/> 3312 AWB 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 3344 device 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> 3350 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3351 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3352 values used by the camera device for the transform and gains 3353 will 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; 3358 the camera device uses incandescent light as the assumed scene 3359 illumination for white balance.<wbr/></p> 3360 <p>While the exact white balance transforms are up to the 3361 camera device,<wbr/> they will approximately match the CIE 3362 standard 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> 3364 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3365 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3366 values used by the camera device for the transform and gains 3367 will 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; 3372 the camera device uses fluorescent light as the assumed scene 3373 illumination for white balance.<wbr/></p> 3374 <p>While the exact white balance transforms are up to the 3375 camera device,<wbr/> they will approximately match the CIE 3376 standard 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> 3378 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3379 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3380 values used by the camera device for the transform and gains 3381 will 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; 3386 the camera device uses warm fluorescent light as the assumed scene 3387 illumination for white balance.<wbr/></p> 3388 <p>While the exact white balance transforms are up to the 3389 camera device,<wbr/> they will approximately match the CIE 3390 standard 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> 3392 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3393 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3394 values used by the camera device for the transform and gains 3395 will 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; 3400 the camera device uses daylight light as the assumed scene 3401 illumination for white balance.<wbr/></p> 3402 <p>While the exact white balance transforms are up to the 3403 camera device,<wbr/> they will approximately match the CIE 3404 standard 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> 3406 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3407 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3408 values used by the camera device for the transform and gains 3409 will 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; 3414 the camera device uses cloudy daylight light as the assumed scene 3415 illumination 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> 3417 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3418 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3419 values used by the camera device for the transform and gains 3420 will 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; 3425 the camera device uses twilight light as the assumed scene 3426 illumination 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> 3428 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3429 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3430 values used by the camera device for the transform and gains 3431 will 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; 3436 the camera device uses shade light as the assumed scene 3437 illumination 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> 3439 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3440 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3441 values used by the camera device for the transform and gains 3442 will 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 3450 transform fields,<wbr/> and what its illumination target 3451 is.<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 3479 routine 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> 3482 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 3483 also 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 3484 setting AE mode to OFF.<wbr/></p> 3485 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 3486 routine is disabled.<wbr/> The application manually controls the white 3487 balance 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> 3488 and <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 3490 balance routine is disabled.<wbr/> The camera device uses each 3491 particular illumination target for white balance 3492 adjustment.<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 3527 estimation.<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/> 3556 Otherwise will always be present.<wbr/></p> 3557 <p>The maximum number of regions supported by the device is determined by the value 3558 of <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/> 3560 with (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 3563 bottom-right pixel in the active pixel array.<wbr/></p> 3564 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight 3565 for every pixel in the area.<wbr/> This means that a large metering area 3566 with the same weight as a smaller area will have more effect in 3567 the metering result.<wbr/> Metering areas can partially overlap and the 3568 camera 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 3570 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 3571 0 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 3573 camera 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 3575 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3576 region and output only the intersection rectangle as the metering region in the result 3577 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3578 not 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 3588 int[5 * area_<wbr/>count].<wbr/> 3589 Every five elements represent a metering region of 3590 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3591 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3592 exclusive 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 3619 categories.<wbr/> The camera device will default to preview-like 3620 behavior.<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 3626 w/<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 3631 use 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 3637 use 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 3642 image while recording video) use case.<wbr/></p> 3643 <p>The camera device should take the highest-quality image 3644 possible (given the other settings) without disrupting the 3645 frame 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 3650 application will stream full-resolution images and 3651 reprocess one or several later for a final 3652 capture.<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 3657 the 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 3664 the application will use camera and inertial sensor data to 3665 locate and track objects in the world.<wbr/></p> 3666 <p>The camera device auto-exposure routine will limit the exposure time 3667 of 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/> 3675 auto-focus,<wbr/> auto-white balance) routines about the purpose 3676 of this capture,<wbr/> to help the camera device to decide optimal 3A 3677 strategy.<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 3706 PRIVATE_<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 3708 MANUAL_<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 3710 MOTION_<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 3743 a 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 3750 are 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 3756 image is wholly or partially reversed in 3757 tone.<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 3763 gray,<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 3769 discrete regions of tone rather than a continuous 3770 gradient 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 3776 as 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 3782 as 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 3821 to images produced by the camera device.<wbr/> The interpretation 3822 and implementation of these color effects is left to the 3823 implementor of the camera device,<wbr/> and should not be 3824 depended on to be consistent (or present) across all 3825 devices.<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) 3854 routines is disabled,<wbr/> and no other settings in 3855 android.<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 3857 device to select post-processing values for processing 3858 blocks that do not allow for manual control,<wbr/> or are not 3859 exposed by the camera API.<wbr/></p> 3860 <p>However,<wbr/> the camera device's 3A routines may continue to 3861 collect statistics and update their internal state so that 3862 when control is switched to AUTO mode,<wbr/> good control values 3863 can 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 3869 controls in android.<wbr/>control.<wbr/>* besides sceneMode take 3870 effect.<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 3877 control.<wbr/>afMode controls; the camera device will ignore 3878 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 3879 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 3880 This 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> 3882 contain 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 3888 used by camera device background auto-exposure,<wbr/> auto-white balance and 3889 auto-focus algorithms (3A) to update their statistics.<wbr/></p> 3890 <p>Specifically,<wbr/> the 3A routines are locked to the last 3891 values set from a request with AUTO,<wbr/> OFF,<wbr/> or 3892 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 3893 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 3894 discarded 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 3902 routines.<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 3929 by the camera device is disabled.<wbr/> The application must set the fields for 3930 capture parameters itself.<wbr/></p> 3931 <p>When set to AUTO,<wbr/> the individual algorithm controls in 3932 android.<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 3934 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device 3935 implements one of the scene mode settings (such as ACTION,<wbr/> 3936 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode 3937 3A 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 3939 is that this frame will not be used by camera device background 3A statistics 3940 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 3941 where the application doesn't want a 3A manual control capture to affect 3942 the 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 3975 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 3976 auto-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/> 3979 this should still operate correctly (but will not return 3980 face 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> 3983 remain 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 4010 settings.<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 4016 remain 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 4037 device 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 4054 people.<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 4060 is 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 4066 for use by camera applications that wish to read the 4067 barcode 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> 4074 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 4075 for 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 4079 output frame rates,<wbr/> the application is only allowed to select video size 4080 and fps range combinations listed in this static metadata.<wbr/> The fps range 4081 can 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 4083 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 4084 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 4085 and post-processing parameters is possible.<wbr/> All other controls operate the 4086 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 4087 android.<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 4108 be lower than what camera can output,<wbr/> depending on the destination Surfaces for 4109 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 4110 the application need check if the video encoder is capable of supporting the 4111 high frame rate for a given video size,<wbr/> or it will end up with lower recording 4112 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 4113 rate 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>) 4116 in 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 4119 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 4120 min(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/> 4127 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 4128 and the returned capture result metadata will give the fps range choosen 4129 by the camera device.<wbr/></p> 4130 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 4131 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 4132 the 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 4139 that keep a larger range of scene illumination levels 4140 visible in the final image.<wbr/> For example,<wbr/> when taking a 4141 picture of a object in front of a bright window,<wbr/> both 4142 the object and the scene through the window may be 4143 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 4144 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 4145 HDR mode generally takes much longer to capture a single 4146 image,<wbr/> has no user control,<wbr/> and may have other artifacts 4147 depending on the HDR method used.<wbr/></p> 4148 <p>Therefore,<wbr/> HDR captures operate at a much slower rate 4149 than regular captures.<wbr/></p> 4150 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 4151 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 4152 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 4153 using a high dynamic range capture technique.<wbr/> On LEGACY 4154 devices,<wbr/> captures that target a JPEG-format output will 4155 be captured with HDR,<wbr/> and the capture intent is not 4156 relevant.<wbr/></p> 4157 <p>The HDR capture may involve the device capturing a burst 4158 of images internally and combining them into one,<wbr/> or it 4159 may involve the device using specialized high dynamic 4160 range capture hardware.<wbr/> In all cases,<wbr/> a single image is 4161 produced in response to a capture request submitted 4162 while in HDR mode.<wbr/></p> 4163 <p>Since substantial post-processing is generally needed to 4164 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG 4165 outputs are supported for LIMITED/<wbr/>FULL device HDR 4166 captures,<wbr/> and only JPEG outputs are supported for LEGACY 4167 HDR captures.<wbr/> Using a RAW output for HDR capture is not 4168 supported.<wbr/></p> 4169 <p>Some devices may also support always-on HDR,<wbr/> which 4170 applies HDR processing at full frame rate.<wbr/> For these 4171 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also 4172 produce an HDR output with no frame rate impact compared 4173 to normal operation,<wbr/> though the quality may be lower 4174 than for STILL_<wbr/>CAPTURE intents.<wbr/></p> 4175 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types 4176 or capture intents,<wbr/> the images captured will be as if 4177 the 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 4184 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 4185 under low light conditions.<wbr/></p> 4186 <p>The camera device may be tuned to expose the images in a reduced 4187 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 4188 if 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/> 4189 the camera device auto-exposure routine tuning process may limit the actual 4190 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 4191 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 4192 low 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 4194 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 4195 camera device auto-exposure routine to increase the sensitivity up to the max 4196 sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 4197 dark and the max exposure time is reached.<wbr/> The captured images may be noisier 4198 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 4199 recommended that the application only use this scene mode when it is capable of 4200 reducing 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> 4203 remain 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 4212 customized 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 4221 customized 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 4255 capture 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 4258 disable <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> 4259 while in use.<wbr/></p> 4260 <p>The interpretation and implementation of these scene modes is left 4261 to the implementor of the camera device.<wbr/> Their behavior will not be 4262 consistent across all devices,<wbr/> and any given device may only implement 4263 a 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 4273 the 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 4277 HAL 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/> 4279 if the HAL has two different sensor configurations for normal streaming mode and high 4280 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the 4281 HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy 4282 HAL3.<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 4284 capbility 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 4322 active.<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 4348 the 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 4352 frames to initialize,<wbr/> the camera device will report the current mode 4353 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 4354 the video stabilization modes in the first several capture results may 4355 still be "OFF",<wbr/> and it will become "ON" when the initialization is 4356 done.<wbr/></p> 4357 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 4358 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 4359 that an output targeting a MediaRecorder or MediaCodec will be stabilized if 4360 the recording resolution is less than or equal to 1920 x 1080 (width less than 4361 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 4362 frame 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 4364 OFF if the recording output is not stabilized,<wbr/> or if there are no output 4365 Surface 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 4368 produce undesirable interaction,<wbr/> so it is recommended not to enable 4369 both 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 4397 after 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 4422 camera processing pipeline after sensor RAW image is captured.<wbr/> 4423 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not 4424 have 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 4426 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 4427 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 4428 list <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 4430 boost to the nearest supported value.<wbr/> 4431 The 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 4433 of 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> 4435 The 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 4437 OFF; 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 4464 after 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 4469 captured 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 4500 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to 4501 produce 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/> 4503 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order 4504 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other 4505 capture 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 4510 request A,<wbr/> and the result metadata for request B may be older than the result metadata for 4511 request A.<wbr/></p> 4512 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in 4513 the 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 4515 TEMPLATE_<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 4518 capture 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 4529 capture 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 4590 supported 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 4617 supported by a given camera device.<wbr/> This field lists the 4618 valid anti-banding modes that the application may request 4619 for 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 4654 device.<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 4681 given camera device,<wbr/> especially if no flash unit is 4682 available.<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 4685 units 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/> 4687 which enables application control of camera exposure time,<wbr/> 4688 sensitivity,<wbr/> and frame duration.<wbr/></p> 4689 <p>LEGACY mode camera devices never support OFF mode.<wbr/> 4690 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR 4691 capability.<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 4725 this 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 4758 the 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 4760 supported 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 4762 always 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/> 4767 or support at least one 4768 normal <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>) 4775 and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the 4776 maximum 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/> 4811 that 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 4820 compensation 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 4863 can 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 4890 a 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 4891 that 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 4893 of 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 4935 supported 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 4962 given 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 4965 camera 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 4968 focusing 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 5003 device.<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 5030 images produced by the camera device.<wbr/> 5031 Implementations are not expected to be consistent across all devices.<wbr/> 5032 If no color effect modes are available for a device,<wbr/> this will only list 5033 OFF.<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 5037 as 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 5071 device.<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/> 5098 Only scene modes that have been fully implemented for the 5099 camera device may be included here.<wbr/> Implementations are not expected 5100 to be consistent across all devices.<wbr/></p> 5101 <p>If no scene modes are supported by the camera device,<wbr/> this 5102 will 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 5104 supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> > 5105 0</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> 5139 that 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 5199 camera 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 5226 given 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 5230 mode,<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 5232 mode 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 5265 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 5266 this 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/> 5268 and <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 5276 this 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) 5318 routine.<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 5326 value 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 5353 maxRegions 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) 5382 routine.<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 5416 maxRegions 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 5452 value 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 5479 maxRegions 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 5511 settings 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 5519 entries 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 5521 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 5522 where 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 5542 to 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/> 5543 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 5544 that scene mode.<wbr/></p> 5545 <p>The order of this list matches that of availableSceneModes,<wbr/> 5546 with 3 entries for each mode.<wbr/> The overrides listed 5547 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/> 5548 since 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 5550 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 5551 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and 5552 FACE_<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 5555 expects 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/> 5557 ON_<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 5567 in the static metadata of the camera service.<wbr/> The camera service will 5568 use 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 5570 mode 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 5602 supported 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/> 5629 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size 5630 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes 5631 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> 5632 for processed non-stalling formats.<wbr/></p> 5633 <p>For the high speed video use case,<wbr/> the application must 5634 select the video size and fps range from this metadata to configure the recording and 5635 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends 5636 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to 5637 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata 5638 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the 5639 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application 5640 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams 5641 must 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/> 5644 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate 5645 multiple frames together and send to camera device for processing where the request 5646 controls are same for all the frames in this batch.<wbr/> Max batch size indicates 5647 the max possible number of frames the camera device will group together for this high 5648 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed 5649 recording request list by 5650 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/> 5651 The 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/> 5654 if 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 5656 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch 5657 size 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/> 5661 in 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 5663 that 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/> 5665 The fps ranges reported in this metadata must not be used to setup capture requests for 5666 normal 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/> 5677 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum 5678 of 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 5680 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application 5681 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused 5682 stutter when starting recording as much as possible,<wbr/> the application may want to ensure 5683 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise 5684 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/> 5685 For 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 5687 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start 5688 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps 5689 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps 5690 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must 5691 switch 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 5752 list <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 5814 always 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 5848 device.<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/> 5872 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL 5873 devices 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 5906 by 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 5931 post RAW sensitivity boost.<wbr/></p> 5932 <p>This key will be <code>null</code> for devices that do not support any RAW format 5933 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 5934 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 5935 list <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 5945 framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output 5946 formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports 5947 any 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 6004 CAMERA2_<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 6028 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 6029 by HAL.<wbr/> Always updated even if AE algorithm ignores the 6030 trigger</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 6058 avoid 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 6063 avoid 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 6068 avoid banding problems with 60Hz illumination 6069 sources.<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 6074 antibanding routine to the current illumination 6075 condition.<wbr/> This is the default mode if AUTO is 6076 available 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 6084 algorithm'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 6111 lights,<wbr/> flicker at the rate of the power supply frequency 6112 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 6113 typically not noticeable to a person,<wbr/> it can be visible to 6114 a camera device.<wbr/> If a camera sets its exposure time to the 6115 wrong value,<wbr/> the flicker may become visible in the 6116 viewfinder as flicker or in a final captured image,<wbr/> as a 6117 set of variable-brightness bands across the image.<wbr/></p> 6118 <p>Therefore,<wbr/> the auto-exposure routines of camera devices 6119 include antibanding routines that ensure that the chosen 6120 exposure value will not cause such banding.<wbr/> The choice of 6121 exposure time depends on the rate of flicker,<wbr/> which the 6122 camera device can detect automatically,<wbr/> or the expected 6123 rate can be selected by the application using this 6124 control.<wbr/></p> 6125 <p>A given camera device may not support all of the possible 6126 options 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 6128 the available modes for a given camera device.<wbr/></p> 6129 <p>AUTO mode is the default if it is available on given 6130 camera device.<wbr/> When AUTO mode is not available,<wbr/> the 6131 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 6132 and 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/> 6135 then this setting has no effect,<wbr/> and the application must 6136 ensure it selects exposure times that do not cause banding 6137 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 6138 the 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 6148 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 6149 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 6150 60HZ 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/> 6153 then the exposure values provided by the application must not be 6154 adjusted 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 6182 brightness.<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 6210 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 6211 allowed 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' 6213 will mean an exposure compensation of +2 EV; -3 will mean an 6214 exposure compensation of -1 EV.<wbr/> One EV represents a doubling 6215 of image brightness.<wbr/> Note that this control will only be 6216 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 6217 will 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 6219 may take several frames to reach the newly requested exposure target.<wbr/> 6220 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 6221 state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 6222 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 6223 FLASH_<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 6251 is 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 6256 must not update the exposure and sensitivity parameters 6257 while 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 6259 will still take effect while auto-exposure is locked.<wbr/></p> 6260 <p>Some rare LEGACY devices may not support 6261 this,<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 6269 calculated 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/> 6295 and 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 6297 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 6298 ON_<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 6300 is 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>) 6302 when 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>) 6304 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 6305 is 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/> 6307 Similarly,<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 6309 the AE if AE is locked by the camera device internally during precapture metering 6310 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 6311 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 6312 will never succeed in a sequence of preview requests where AE lock is always set 6313 to <code>false</code>.<wbr/></p> 6314 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 6315 get locked do not necessarily correspond to the settings that were present in the 6316 latest capture result received from the camera device,<wbr/> since additional captures 6317 and AE updates may have occurred even before the result was sent out.<wbr/> If an 6318 application is switching between automatic and manual control and wishes to eliminate 6319 any 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 6358 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 6359 a flash unit for this camera device.<wbr/></p> 6360 <p>Note that auto-white balance (AWB) and auto-focus (AF) 6361 behavior is device dependent when AE is in OFF mode.<wbr/> 6362 To have consistent behavior across different devices,<wbr/> 6363 it is recommended to either set AWB and AF to OFF mode 6364 or lock AWB and AF before setting AE to OFF.<wbr/> 6365 See <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> 6367 for more details.<wbr/></p> 6368 <p>LEGACY devices do not support the OFF mode and will 6369 override 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/> 6374 with 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 6379 application has control over the various 6380 android.<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 6385 the camera's flash unit,<wbr/> firing it in low-light 6386 conditions.<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 6389 may 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 6391 STILL_<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 6396 the camera's flash unit,<wbr/> always firing it for still 6397 captures.<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 6400 will 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 6402 STILL_<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 6407 reduction.<wbr/></p> 6408 <p>If deemed necessary by the camera device,<wbr/> a red eye 6409 reduction flash will fire during the precapture 6410 sequence.<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 6416 metering (and continuous focus if active) should be quickly recaculated to account 6417 for 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 6419 other 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 6421 be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without 6422 flash.<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 6430 auto-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 6457 AUTO.<wbr/></p> 6458 <p>When set to any of the ON modes,<wbr/> the camera device's 6459 auto-exposure routine is enabled,<wbr/> overriding the 6460 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 6461 and 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 6464 is selected,<wbr/> the camera device's flash unit controls are 6465 also overridden.<wbr/></p> 6466 <p>The FLASH modes are only available if the camera device 6467 has 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 6469 ON 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 6471 camera device auto-exposure routine for the overridden 6472 fields for a given capture will be available in its 6473 CaptureResult.<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/> 6533 Otherwise will always be present.<wbr/></p> 6534 <p>The maximum number of regions supported by the device is determined by the value 6535 of <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/> 6537 with (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 6540 bottom-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 6542 for every pixel in the area.<wbr/> This means that a large metering area 6543 with the same weight as a smaller area will have more effect in 6544 the metering result.<wbr/> Metering areas can partially overlap and the 6545 camera 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 6547 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 6548 weight is ignored.<wbr/></p> 6549 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 6550 camera 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 6552 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 6553 region and output only the intersection rectangle as the metering region in the result 6554 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 6555 not 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 6565 int[5 * area_<wbr/>count].<wbr/> 6566 Every five elements represent a metering region of 6567 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 6568 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 6569 exclusive 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 6601 adjust the capture frame rate to maintain good 6602 exposure.<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 6630 manual 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 6663 by the camera device.<wbr/></p> 6664 <p>The exact effect of the precapture trigger depends on 6665 the 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 6670 precapture metering sequence,<wbr/> the auto-exposure routine will return to its 6671 initial 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 6679 metering 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 6705 included at all in the request settings.<wbr/> When included and 6706 set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 6707 precapture metering sequence.<wbr/></p> 6708 <p>When set to CANCEL,<wbr/> the camera device will cancel any active 6709 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 6710 If a precapture metering sequence is already completed,<wbr/> and the camera 6711 device has implicitly locked the AE for subsequent still capture,<wbr/> the 6712 CANCEL 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 6714 high-quality still capture for final metering decisions to 6715 be made,<wbr/> and for firing pre-capture flash pulses to estimate 6716 scene brightness and required final capture flash power,<wbr/> when 6717 the flash is enabled.<wbr/></p> 6718 <p>Normally,<wbr/> this entry should be set to START for only a 6719 single request,<wbr/> and the application should wait until the 6720 sequence completes before starting a new one.<wbr/></p> 6721 <p>When a precapture metering sequence is finished,<wbr/> the camera device 6722 may lock the auto-exposure routine internally to be able to accurately expose the 6723 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 6724 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 6725 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 6726 submit 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 6727 with <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 6728 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 6729 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 6730 internally locked AE if the application doesn't submit a still capture request after 6731 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 6732 be used in devices that have earlier API levels.<wbr/></p> 6733 <p>The exact effect of auto-exposure (AE) precapture trigger 6734 depends 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 6736 details.<wbr/></p> 6737 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 6738 capturing a high-resolution JPEG image will automatically trigger a 6739 precapture sequence before the high-resolution capture,<wbr/> including 6740 potentially 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> 6742 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 6743 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 6744 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 6745 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 6746 changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 6747 example.<wbr/></p> 6748 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 6749 the 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 6760 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 6761 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 6762 to 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 6790 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 6791 this 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 6796 for the current scene.<wbr/></p> 6797 <p>This is a transient state,<wbr/> the camera device may skip 6798 reporting 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 6803 current 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 6812 needs to be fired for good quality still 6813 capture.<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 6818 and 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 6821 active and completed (if it causes camera device internal AE lock) precapture 6822 metering 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 6825 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient 6826 state,<wbr/> the camera device may skip reporting this state in 6827 capture 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 6857 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6858 or <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 6859 the algorithm states to INACTIVE.<wbr/></p> 6860 <p>The camera device can do several state transitions between two results,<wbr/> if it is 6861 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6862 seen in a result.<wbr/></p> 6863 <p>The state in the result is the state for this image (in sync with this image): if 6864 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 6865 be 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 7008 the 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 7010 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7011 can 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 7013 listed in above table,<wbr/> it is also legal for the camera device to skip one or more 7014 transient 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 7097 application.<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 7103 the autofocus trigger action is called.<wbr/> When that trigger 7104 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 7105 the 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 7108 is fixed-focus.<wbr/></p> 7109 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 7110 and 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 7116 autofocus trigger action is called.<wbr/> When that trigger is 7117 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 7118 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 7119 mode is optimized for focusing on objects very close to 7120 the camera.<wbr/></p> 7121 <p>When that trigger is activated,<wbr/> AF will transition to 7122 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 7123 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 7124 position to default,<wbr/> and sets the AF state to 7125 INACTIVE.<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 7130 position continually to attempt to provide a 7131 constantly-in-focus image stream.<wbr/></p> 7132 <p>The focusing behavior should be suitable for good quality 7133 video recording; typically this means slower focus 7134 movement and no overshoots.<wbr/> When the AF trigger is not 7135 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 7136 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 7137 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 7138 the algorithm should immediately transition into 7139 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 7140 lens position until a cancel AF trigger is received.<wbr/></p> 7141 <p>Once cancel is received,<wbr/> the algorithm should transition 7142 back to INACTIVE and resume passive scan.<wbr/> Note that this 7143 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 7144 ongoing PASSIVE_<wbr/>SCAN must immediately be 7145 canceled.<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 7150 position continually to attempt to provide a 7151 constantly-in-focus image stream.<wbr/></p> 7152 <p>The focusing behavior should be suitable for still image 7153 capture; typically this means focusing as fast as 7154 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 7155 algorithm should start in INACTIVE state,<wbr/> and then 7156 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 7157 appropriate as it attempts to maintain focus.<wbr/> When the AF 7158 trigger is activated,<wbr/> the algorithm should finish its 7159 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 7160 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 7161 lens position until a cancel AF trigger is received.<wbr/></p> 7162 <p>When the AF cancel trigger is activated,<wbr/> the algorithm 7163 should transition back to INACTIVE and then act as if it 7164 has 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 7170 depth of field automatically; no special focusing 7171 operations need to be done before taking a picture.<wbr/></p> 7172 <p>AF triggers are ignored,<wbr/> and the AF state will always be 7173 INACTIVE.<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 7181 mode 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 7209 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 7210 dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 7211 setting <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/> 7213 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 7214 in 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 7224 request (<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 7225 up 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 7227 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 7228 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 7229 the 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 7231 scan 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 7233 same lock behavior as above.<wbr/></p> 7234 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 7235 focus 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/> 7236 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 7237 manual control.<wbr/></p> 7238 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 7239 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 7240 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 7241 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 7242 that 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/> 7301 Otherwise will always be present.<wbr/></p> 7302 <p>The maximum number of focus areas supported by the device is determined by the value 7303 of <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/> 7305 with (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 7308 bottom-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 7310 for every pixel in the area.<wbr/> This means that a large metering area 7311 with the same weight as a smaller area will have more effect in 7312 the metering result.<wbr/> Metering areas can partially overlap and the 7313 camera 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 7315 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 7316 ignored.<wbr/></p> 7317 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 7318 camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or 7319 the 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 7321 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 7322 region and output only the intersection rectangle as the metering region in the result 7323 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 7324 not 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 7334 int[5 * area_<wbr/>count].<wbr/> 7335 Every five elements represent a metering region of 7336 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 7337 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 7338 exclusive 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 7373 state,<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 7406 included at all in the request settings.<wbr/></p> 7407 <p>When included and set to START,<wbr/> the camera device will trigger the 7408 autofocus 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/> 7410 and return to its initial AF state.<wbr/></p> 7411 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 7412 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 7413 START for multiple captures in a row means restarting the AF operation over 7414 and 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> 7417 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 7418 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 7419 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 7420 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 7421 changes 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 7432 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 7433 AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 7434 to 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 7461 to scan.<wbr/></p> 7462 <p>When a camera device is opened,<wbr/> it starts in this 7463 state.<wbr/> This is a transient state,<wbr/> the camera device may 7464 skip reporting this state in capture 7465 result.<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 7470 camera device in a continuous autofocus mode.<wbr/></p> 7471 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 7472 state,<wbr/> the camera device may skip reporting this state in 7473 capture 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 7478 restart scanning at any time.<wbr/></p> 7479 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 7480 state,<wbr/> the camera device may skip reporting this state in 7481 capture 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 7486 triggered by AF trigger.<wbr/></p> 7487 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient 7488 state,<wbr/> the camera device may skip reporting this state in 7489 capture 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 7494 focus.<wbr/></p> 7495 <p>This state is reached only after an explicit START AF trigger has been 7496 sent (<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 7498 a 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 7503 focus.<wbr/></p> 7504 <p>This state is reached only after an explicit START AF trigger has been 7505 sent (<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 7507 a 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/> 7512 and 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 7514 device may skip reporting this state in capture result.<wbr/></p> 7515 <p>LEGACY camera devices do not support this state.<wbr/> When a passive 7516 scan 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 7546 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 7547 or <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 7548 the algorithm states to INACTIVE.<wbr/></p> 7549 <p>The camera device can do several state transitions between two results,<wbr/> if it is 7550 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 7551 seen in a result.<wbr/></p> 7552 <p>The state in the result is the state for this image (in sync with this image): if 7553 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 7554 be 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 7643 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7644 can 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 7646 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 7647 one 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 7892 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 7893 will be evaluated in the context of the new mode in the request.<wbr/> 7894 See 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 7954 CAMERA2_<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 7978 received yet by HAL.<wbr/> Always updated even if AF algorithm 7979 ignores 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 8007 algorithm is free to update its parameters if in AUTO 8008 mode.<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 8013 algorithm will not update its parameters while the lock 8014 is 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 8022 latest 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/> 8048 and 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 8050 get locked do not necessarily correspond to the settings that were present in the 8051 latest capture result received from the camera device,<wbr/> since additional captures 8052 and AWB updates may have occurred even before the result was sent out.<wbr/> If an 8053 application is switching between automatic and manual control and wishes to eliminate 8054 any 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/> 8064 AWB 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 8096 device 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> 8102 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8103 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8104 values used by the camera device for the transform and gains 8105 will 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; 8110 the camera device uses incandescent light as the assumed scene 8111 illumination for white balance.<wbr/></p> 8112 <p>While the exact white balance transforms are up to the 8113 camera device,<wbr/> they will approximately match the CIE 8114 standard 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> 8116 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8117 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8118 values used by the camera device for the transform and gains 8119 will 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; 8124 the camera device uses fluorescent light as the assumed scene 8125 illumination for white balance.<wbr/></p> 8126 <p>While the exact white balance transforms are up to the 8127 camera device,<wbr/> they will approximately match the CIE 8128 standard 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> 8130 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8131 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8132 values used by the camera device for the transform and gains 8133 will 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; 8138 the camera device uses warm fluorescent light as the assumed scene 8139 illumination for white balance.<wbr/></p> 8140 <p>While the exact white balance transforms are up to the 8141 camera device,<wbr/> they will approximately match the CIE 8142 standard 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> 8144 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8145 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8146 values used by the camera device for the transform and gains 8147 will 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; 8152 the camera device uses daylight light as the assumed scene 8153 illumination for white balance.<wbr/></p> 8154 <p>While the exact white balance transforms are up to the 8155 camera device,<wbr/> they will approximately match the CIE 8156 standard 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> 8158 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8159 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8160 values used by the camera device for the transform and gains 8161 will 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; 8166 the camera device uses cloudy daylight light as the assumed scene 8167 illumination 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> 8169 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8170 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8171 values used by the camera device for the transform and gains 8172 will 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; 8177 the camera device uses twilight light as the assumed scene 8178 illumination 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> 8180 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8181 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8182 values used by the camera device for the transform and gains 8183 will 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; 8188 the camera device uses shade light as the assumed scene 8189 illumination 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> 8191 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 8192 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 8193 values used by the camera device for the transform and gains 8194 will 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 8202 transform fields,<wbr/> and what its illumination target 8203 is.<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 8231 routine 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> 8234 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 8235 also 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 8236 setting AE mode to OFF.<wbr/></p> 8237 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 8238 routine is disabled.<wbr/> The application manually controls the white 8239 balance 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> 8240 and <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 8242 balance routine is disabled.<wbr/> The camera device uses each 8243 particular illumination target for white balance 8244 adjustment.<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 8279 estimation.<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/> 8308 Otherwise will always be present.<wbr/></p> 8309 <p>The maximum number of regions supported by the device is determined by the value 8310 of <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/> 8312 with (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 8315 bottom-right pixel in the active pixel array.<wbr/></p> 8316 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight 8317 for every pixel in the area.<wbr/> This means that a large metering area 8318 with the same weight as a smaller area will have more effect in 8319 the metering result.<wbr/> Metering areas can partially overlap and the 8320 camera 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 8322 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 8323 0 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 8325 camera 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 8327 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 8328 region and output only the intersection rectangle as the metering region in the result 8329 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 8330 not 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 8340 int[5 * area_<wbr/>count].<wbr/> 8341 Every five elements represent a metering region of 8342 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 8343 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 8344 exclusive 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 8371 categories.<wbr/> The camera device will default to preview-like 8372 behavior.<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 8378 w/<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 8383 use 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 8389 use 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 8394 image while recording video) use case.<wbr/></p> 8395 <p>The camera device should take the highest-quality image 8396 possible (given the other settings) without disrupting the 8397 frame 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 8402 application will stream full-resolution images and 8403 reprocess one or several later for a final 8404 capture.<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 8409 the 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 8416 the application will use camera and inertial sensor data to 8417 locate and track objects in the world.<wbr/></p> 8418 <p>The camera device auto-exposure routine will limit the exposure time 8419 of 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/> 8427 auto-focus,<wbr/> auto-white balance) routines about the purpose 8428 of this capture,<wbr/> to help the camera device to decide optimal 3A 8429 strategy.<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 8458 PRIVATE_<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 8460 MANUAL_<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 8462 MOTION_<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 8491 state.<wbr/> This is a transient state,<wbr/> the camera device may 8492 skip reporting this state in capture 8493 result.<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 8498 values for the current scene.<wbr/></p> 8499 <p>This is a transient state,<wbr/> the camera device 8500 may 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 8505 current 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 8539 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 8540 or <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 8541 the algorithm states to INACTIVE.<wbr/></p> 8542 <p>The camera device can do several state transitions between two results,<wbr/> if it is 8543 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 8544 a result.<wbr/></p> 8545 <p>The state in the result is the state for this image (in sync with this image): if 8546 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 8547 be 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 8624 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 8625 can 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 8627 listed in above table,<wbr/> it is also legal for the camera device to skip one or more 8628 transient 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 8685 a 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 8692 are 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 8698 image is wholly or partially reversed in 8699 tone.<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 8705 gray,<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 8711 discrete regions of tone rather than a continuous 8712 gradient 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 8718 as 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 8724 as 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 8763 to images produced by the camera device.<wbr/> The interpretation 8764 and implementation of these color effects is left to the 8765 implementor of the camera device,<wbr/> and should not be 8766 depended on to be consistent (or present) across all 8767 devices.<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) 8796 routines is disabled,<wbr/> and no other settings in 8797 android.<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 8799 device to select post-processing values for processing 8800 blocks that do not allow for manual control,<wbr/> or are not 8801 exposed by the camera API.<wbr/></p> 8802 <p>However,<wbr/> the camera device's 3A routines may continue to 8803 collect statistics and update their internal state so that 8804 when control is switched to AUTO mode,<wbr/> good control values 8805 can 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 8811 controls in android.<wbr/>control.<wbr/>* besides sceneMode take 8812 effect.<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 8819 control.<wbr/>afMode controls; the camera device will ignore 8820 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 8821 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 8822 This 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> 8824 contain 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 8830 used by camera device background auto-exposure,<wbr/> auto-white balance and 8831 auto-focus algorithms (3A) to update their statistics.<wbr/></p> 8832 <p>Specifically,<wbr/> the 3A routines are locked to the last 8833 values set from a request with AUTO,<wbr/> OFF,<wbr/> or 8834 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 8835 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 8836 discarded 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 8844 routines.<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 8871 by the camera device is disabled.<wbr/> The application must set the fields for 8872 capture parameters itself.<wbr/></p> 8873 <p>When set to AUTO,<wbr/> the individual algorithm controls in 8874 android.<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 8876 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device 8877 implements one of the scene mode settings (such as ACTION,<wbr/> 8878 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode 8879 3A 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 8881 is that this frame will not be used by camera device background 3A statistics 8882 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 8883 where the application doesn't want a 3A manual control capture to affect 8884 the 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 8917 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 8918 auto-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/> 8921 this should still operate correctly (but will not return 8922 face 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> 8925 remain 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 8952 settings.<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 8958 remain 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 8979 device 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 8996 people.<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 9002 is 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 9008 for use by camera applications that wish to read the 9009 barcode 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> 9016 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 9017 for 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 9021 output frame rates,<wbr/> the application is only allowed to select video size 9022 and fps range combinations listed in this static metadata.<wbr/> The fps range 9023 can 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 9025 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 9026 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 9027 and post-processing parameters is possible.<wbr/> All other controls operate the 9028 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 9029 android.<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 9050 be lower than what camera can output,<wbr/> depending on the destination Surfaces for 9051 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 9052 the application need check if the video encoder is capable of supporting the 9053 high frame rate for a given video size,<wbr/> or it will end up with lower recording 9054 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 9055 rate 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>) 9058 in 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 9061 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 9062 min(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/> 9069 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 9070 and the returned capture result metadata will give the fps range choosen 9071 by the camera device.<wbr/></p> 9072 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 9073 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 9074 the 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 9081 that keep a larger range of scene illumination levels 9082 visible in the final image.<wbr/> For example,<wbr/> when taking a 9083 picture of a object in front of a bright window,<wbr/> both 9084 the object and the scene through the window may be 9085 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 9086 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 9087 HDR mode generally takes much longer to capture a single 9088 image,<wbr/> has no user control,<wbr/> and may have other artifacts 9089 depending on the HDR method used.<wbr/></p> 9090 <p>Therefore,<wbr/> HDR captures operate at a much slower rate 9091 than regular captures.<wbr/></p> 9092 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 9093 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 9094 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 9095 using a high dynamic range capture technique.<wbr/> On LEGACY 9096 devices,<wbr/> captures that target a JPEG-format output will 9097 be captured with HDR,<wbr/> and the capture intent is not 9098 relevant.<wbr/></p> 9099 <p>The HDR capture may involve the device capturing a burst 9100 of images internally and combining them into one,<wbr/> or it 9101 may involve the device using specialized high dynamic 9102 range capture hardware.<wbr/> In all cases,<wbr/> a single image is 9103 produced in response to a capture request submitted 9104 while in HDR mode.<wbr/></p> 9105 <p>Since substantial post-processing is generally needed to 9106 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG 9107 outputs are supported for LIMITED/<wbr/>FULL device HDR 9108 captures,<wbr/> and only JPEG outputs are supported for LEGACY 9109 HDR captures.<wbr/> Using a RAW output for HDR capture is not 9110 supported.<wbr/></p> 9111 <p>Some devices may also support always-on HDR,<wbr/> which 9112 applies HDR processing at full frame rate.<wbr/> For these 9113 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also 9114 produce an HDR output with no frame rate impact compared 9115 to normal operation,<wbr/> though the quality may be lower 9116 than for STILL_<wbr/>CAPTURE intents.<wbr/></p> 9117 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types 9118 or capture intents,<wbr/> the images captured will be as if 9119 the 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 9126 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 9127 under low light conditions.<wbr/></p> 9128 <p>The camera device may be tuned to expose the images in a reduced 9129 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 9130 if 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/> 9131 the camera device auto-exposure routine tuning process may limit the actual 9132 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 9133 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 9134 low 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 9136 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 9137 camera device auto-exposure routine to increase the sensitivity up to the max 9138 sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 9139 dark and the max exposure time is reached.<wbr/> The captured images may be noisier 9140 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 9141 recommended that the application only use this scene mode when it is capable of 9142 reducing 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> 9145 remain 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 9154 customized 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 9163 customized 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 9197 capture 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 9200 disable <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> 9201 while in use.<wbr/></p> 9202 <p>The interpretation and implementation of these scene modes is left 9203 to the implementor of the camera device.<wbr/> Their behavior will not be 9204 consistent across all devices,<wbr/> and any given device may only implement 9205 a 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 9215 the 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 9219 HAL 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/> 9221 if the HAL has two different sensor configurations for normal streaming mode and high 9222 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the 9223 HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy 9224 HAL3.<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 9226 capbility 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 9264 active.<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 9290 the 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 9294 frames to initialize,<wbr/> the camera device will report the current mode 9295 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 9296 the video stabilization modes in the first several capture results may 9297 still be "OFF",<wbr/> and it will become "ON" when the initialization is 9298 done.<wbr/></p> 9299 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 9300 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 9301 that an output targeting a MediaRecorder or MediaCodec will be stabilized if 9302 the recording resolution is less than or equal to 1920 x 1080 (width less than 9303 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 9304 frame 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 9306 OFF if the recording output is not stabilized,<wbr/> or if there are no output 9307 Surface 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 9310 produce undesirable interaction,<wbr/> so it is recommended not to enable 9311 both 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 9339 after 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 9364 camera processing pipeline after sensor RAW image is captured.<wbr/> 9365 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not 9366 have 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 9368 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 9369 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 9370 list <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 9372 boost to the nearest supported value.<wbr/> 9373 The 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 9375 of 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> 9377 The 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 9379 OFF; 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 9406 after 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 9411 captured 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 9442 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to 9443 produce 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/> 9445 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order 9446 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other 9447 capture 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 9452 request A,<wbr/> and the result metadata for request B may be older than the result metadata for 9453 request A.<wbr/></p> 9454 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in 9455 the 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 9457 TEMPLATE_<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 9460 capture 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 9471 capture 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 9508 region(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/> 9531 such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a 9532 significant illumination change,<wbr/> this value will be set to DETECTED for a single capture 9533 result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar 9534 to 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 9595 Bayer 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 9600 relative 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 9608 processing.<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 9690 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 9691 slow 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 9701 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording 9702 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) 9703 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge 9704 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned 9705 so 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 9708 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 9709 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 9710 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 9711 high-resolution buffers must not have edge enhancement applied to maximize efficiency of 9712 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 9713 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 9714 reasonable preview quality.<wbr/></p> 9715 <p>This mode is guaranteed to be supported by devices that support either the 9716 YUV_<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 9718 be 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 9726 enhancement.<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 9754 no enhancement will be applied by the camera device.<wbr/></p> 9755 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 9756 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 9757 camera device will use the highest-quality enhancement algorithms,<wbr/> 9758 even if it slows down capture rate.<wbr/> FAST means the camera device will 9759 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 9760 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 9761 amount of enhancement applied.<wbr/></p> 9762 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 9763 buffer of high-resolution images during preview and reprocess image(s) from that buffer 9764 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 9765 edge enhancement to low-resolution streams (below maximum recording resolution) to 9766 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 9767 since 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 9769 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 9770 The camera device may adjust its internal edge enhancement parameters for best 9771 image 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 9781 adjust the internal edge enhancement reduction parameters appropriately to get the best 9782 quality 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 9809 applied 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 9889 device.<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 9917 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will 9918 list 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 9928 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 9929 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 9930 capture 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 9989 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 9990 slow 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 10000 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording 10001 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) 10002 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge 10003 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned 10004 so 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 10007 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 10008 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 10009 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 10010 high-resolution buffers must not have edge enhancement applied to maximize efficiency of 10011 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 10012 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 10013 reasonable preview quality.<wbr/></p> 10014 <p>This mode is guaranteed to be supported by devices that support either the 10015 YUV_<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 10017 be 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 10025 enhancement.<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 10053 no enhancement will be applied by the camera device.<wbr/></p> 10054 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 10055 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 10056 camera device will use the highest-quality enhancement algorithms,<wbr/> 10057 even if it slows down capture rate.<wbr/> FAST means the camera device will 10058 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 10059 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 10060 amount of enhancement applied.<wbr/></p> 10061 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 10062 buffer of high-resolution images during preview and reprocess image(s) from that buffer 10063 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 10064 edge enhancement to low-resolution streams (below maximum recording resolution) to 10065 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 10066 since 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 10068 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 10069 The camera device may adjust its internal edge enhancement parameters for best 10070 image 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 10080 adjust the internal edge enhancement reduction parameters appropriately to get the best 10081 quality 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 10168 for torch mode.<wbr/> Only one entry for torch mode will be 10169 used</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 10197 exposure</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 10225 duration).<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 10257 for 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/> 10296 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 10297 ON_<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 10300 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 10301 control 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 10304 for 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 10372 flash 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 10399 anything.<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 10427 again</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 10455 this 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 10486 flash</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 10533 power 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 10635 for torch mode.<wbr/> Only one entry for torch mode will be 10636 used</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 10664 exposure</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 10692 duration).<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 10724 for 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/> 10763 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 10764 ON_<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 10767 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 10768 control 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 10771 for 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 10817 the flash fire,<wbr/> and the flash spilling into this capture 10818 due 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 10826 unit.<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/> 10850 Other 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 10860 LEGACY 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 10921 for 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 10927 rate 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 10933 of 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 10969 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 10970 are 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 11031 camera 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 11068 pixels than actual pixels on the camera sensor.<wbr/> 11069 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available 11070 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 11071 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 11072 capture 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 11127 for 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 11133 rate 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 11139 of 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 11175 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 11176 are 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 11261 into any JPEG images captured based on the request.<wbr/> These coordinates can then be 11262 viewed 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 11296 EXIF.<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 11343 include 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 11390 EXIF.<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 11464 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 11465 upright.<wbr/></p> 11466 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 11467 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 11468 the 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 11470 by <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 11472 sensors 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 11492 also 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 11521 image.<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 11576 thumbnail.<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/> 11653 but 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 11655 should 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 11657 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 11658 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 11659 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 11660 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 11661 Of 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/> 11663 the 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/> 11683 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 11684 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 11685 thumbnail 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 11745 camera 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 11771 thumbnail 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/> 11775 If 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 11777 aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 11778 The largest size is defined as the size that has the largest pixel area 11779 in 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 11781 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 11782 and 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 11812 JPEG 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 11820 the 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 11837 JPEG</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 11917 into any JPEG images captured based on the request.<wbr/> These coordinates can then be 11918 viewed 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 11952 EXIF.<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 11999 include 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 12046 EXIF.<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 12120 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 12121 upright.<wbr/></p> 12122 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 12123 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 12124 the 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 12126 by <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 12128 sensors 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 12148 also 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 12177 image.<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 12231 bytes</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/> 12258 this must be 0.<wbr/></p> 12259 <p>Otherwise,<wbr/> this describes the real size of the compressed 12260 JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 12261 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 12262 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 12263 the JPEG stream will be 1000000 bytes,<wbr/> of which the first 12264 500000 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 12293 thumbnail.<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/> 12370 but 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 12372 should 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 12374 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 12375 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 12376 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 12377 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 12378 Of 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/> 12380 the 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/> 12400 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 12401 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 12402 thumbnail 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 12463 effective 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 12491 aperture 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/> 12493 this 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> 12495 to achieve manual exposure control.<wbr/></p> 12496 <p>The requested aperture value may take several frames to reach the 12497 requested value; the camera device will report the current (intermediate) 12498 aperture size in capture result metadata while the aperture is changing.<wbr/> 12499 While 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 12501 the ON modes,<wbr/> this will be overridden by the camera device 12502 auto-exposure algorithm,<wbr/> the overridden values are then provided 12503 back 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 12560 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 12561 step is the standard logarithmic representation,<wbr/> which are 12562 non-negative,<wbr/> and inversely proportional to the amount of light 12563 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 12564 in no reduction of the incoming light,<wbr/> and setting this to 2 would 12565 mean 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 12568 to 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 12625 device's lens.<wbr/> Changing the focal length changes the field of 12626 view 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 12628 setting won't be applied instantaneously,<wbr/> and it may take several 12629 frames before the lens can change to the requested focal length.<wbr/> 12630 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 12631 be 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/> 12661 measured 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 12690 the 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 12695 instantaneously,<wbr/> and it may take several frames before the lens 12696 can 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> 12699 for 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) 12739 when 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 12766 movements of the camera during capture.<wbr/> Unlike digital image 12767 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 12768 makes use of mechanical elements to stabilize the camera 12769 sensor,<wbr/> and thus allows for longer exposure times before 12770 camera shake becomes apparent.<wbr/></p> 12771 <p>Switching between different optical stabilization modes may take several 12772 frames to initialize,<wbr/> the camera device will report the current mode in 12773 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 12774 optical stabilization modes in the first several capture results may still 12775 be "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 12778 interaction,<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 12781 available 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 12844 supported 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/> 12871 this 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 12873 in 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/> 12934 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every 12935 filter 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 12969 device.<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 12998 a single value corresponding to the fixed focal length of the 12999 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported 13000 by 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 13061 contain 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 13098 within <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 13115 field 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 13144 of 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 13172 0.<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 13182 must always set this value to 0 for fixed-focus; and may omit 13183 the minimum focus distance otherwise.<wbr/></p> 13184 <p>This field is also mandatory for all devices advertising 13185 the 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 13244 must 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 13274 result in a different real focus distance,<wbr/> depending on factors such 13275 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 13276 and the device temperature.<wbr/> The focus distance value will still be 13277 in 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 13278 represents 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 13284 on separate occasions may result in a different real 13285 focus distance,<wbr/> depending on factors such as the 13286 orientation of the device,<wbr/> the age of the focusing 13287 mechanism,<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 13292 is calibrated.<wbr/></p> 13293 <p>The lens mechanism is calibrated so that setting the 13294 same focus distance is repeatable on multiple 13295 occasions with good accuracy,<wbr/> and the focus distance 13296 corresponds to the real physical distance to the plane 13297 of 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 13330 focus 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 13334 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> 13335 and increasing positive numbers represent focusing closer and closer 13336 to the camera device.<wbr/> The focus distance control also uses diopters 13337 on these devices.<wbr/></p> 13338 <p>UNCALIBRATED devices do not use units that are directly comparable 13339 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest 13340 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the 13341 nearest 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 13351 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) 13352 and 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 13354 and is stably focused at infinity even if the device tilts.<wbr/> It may take the 13355 lens some time to move; during the move the lens state should be MOVING and 13356 the 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 13394 device'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 13402 device 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 13448 coordinate 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 13477 rotation from the Android sensor coordinate system to a 13478 camera-aligned coordinate system where the X-axis is 13479 aligned with the long side of the image sensor,<wbr/> the Y-axis 13480 is aligned with the short side of the image sensor,<wbr/> and 13481 the 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> 13483 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 13484 amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 13485 <pre><code> theta = 2 * acos(w) 13486 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 13487 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 13488 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 13489 </code></pre> 13490 <p>To create a 3x3 rotation matrix that applies the rotation 13491 defined by this quaternion,<wbr/> the following matrix can be 13492 used:</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/> 13559 as 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 13561 is relative to the optical center of the largest camera device facing in the same 13562 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor 13563 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor 13564 coordinate 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 13566 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm 13567 from the main sensor along the +X axis (to the right from the user's perspective) will 13568 report <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 13570 the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source 13571 camera <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 13573 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination 13574 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination 13575 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel 13576 coordinates.<wbr/></p> 13577 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera 13578 image 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 13580 the 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 13612 calibration.<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 13643 transform from camera-centric 3D coordinates to sensor 13644 pixel 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 13648 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 13649 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 13650 being 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 13659 complete transform from world coordinates to pixel 13660 coordinates:</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 13665 and <code>p_<wbr/>s</code> being a point in the camera active pixel array 13666 coordinate system,<wbr/> and with the mapping including the 13667 homogeneous 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 13669 p_<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 13672 point,<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/> 13676 where <code>(0,<wbr/>0)</code> is the top-left of the 13677 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 13678 intrinsic calibration transforms have been applied to a 13679 world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> 13680 transform needs to be applied,<wbr/> and the result adjusted to 13681 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 13682 system (where <code>(0,<wbr/> 0)</code> is the top-left of the 13683 activeArraySize rectangle),<wbr/> to determine the final pixel 13684 coordinate of the world point for processed (non-RAW) 13685 output 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 13719 radial 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/> 13749 kappa_<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 13751 lens'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 13758 input image that correspond to the pixel values in the 13759 corrected 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 13763 coordinate system related to the 13764 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 13765 Both <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 13766 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 13767 of both x and y coordinates are normalized to be 1 at the 13768 edge further from the optical center,<wbr/> so the range 13769 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 13770 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the 13771 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 13772 is 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 13800 the 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 13806 primary 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 13836 depending 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 13868 radial 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 13870 inconsistently 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/> 13899 kappa_<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 13901 lens'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 13908 input image that correspond to the pixel values in the 13909 corrected 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 13913 related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 13914 calibration fields; see that entry for details of the mapping stages.<wbr/> 13915 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> 13916 have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and 13917 the range of the coordinates depends on the focal length 13918 terms of the intrinsic calibration.<wbr/></p> 13919 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the 13920 optical 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 13978 effective 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 14006 aperture 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/> 14008 this 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> 14010 to achieve manual exposure control.<wbr/></p> 14011 <p>The requested aperture value may take several frames to reach the 14012 requested value; the camera device will report the current (intermediate) 14013 aperture size in capture result metadata while the aperture is changing.<wbr/> 14014 While 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 14016 the ON modes,<wbr/> this will be overridden by the camera device 14017 auto-exposure algorithm,<wbr/> the overridden values are then provided 14018 back 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 14075 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 14076 step is the standard logarithmic representation,<wbr/> which are 14077 non-negative,<wbr/> and inversely proportional to the amount of light 14078 hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 14079 in no reduction of the incoming light,<wbr/> and setting this to 2 would 14080 mean 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 14083 to 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 14140 device's lens.<wbr/> Changing the focal length changes the field of 14141 view 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 14143 setting won't be applied instantaneously,<wbr/> and it may take several 14144 frames before the lens can change to the requested focal length.<wbr/> 14145 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 14146 be 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/> 14176 measured 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 14237 sharp 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 14266 fixed 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) 14306 when 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 14333 movements of the camera during capture.<wbr/> Unlike digital image 14334 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 14335 makes use of mechanical elements to stabilize the camera 14336 sensor,<wbr/> and thus allows for longer exposure times before 14337 camera shake becomes apparent.<wbr/></p> 14338 <p>Switching between different optical stabilization modes may take several 14339 frames to initialize,<wbr/> the camera device will report the current mode in 14340 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 14341 optical stabilization modes in the first several capture results may still 14342 be "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 14345 interaction,<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 14348 available 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 14383 currently 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/> 14417 they may take several frames to reach the requested values.<wbr/> This state indicates 14418 the 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 14420 either because the parameters are all fixed,<wbr/> or because the lens has had enough 14421 time to reach the most recently-requested values.<wbr/> 14422 If 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/> 14427 which 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 14433 is 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 14465 coordinate 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 14494 rotation from the Android sensor coordinate system to a 14495 camera-aligned coordinate system where the X-axis is 14496 aligned with the long side of the image sensor,<wbr/> the Y-axis 14497 is aligned with the short side of the image sensor,<wbr/> and 14498 the 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> 14500 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 14501 amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 14502 <pre><code> theta = 2 * acos(w) 14503 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 14504 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 14505 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 14506 </code></pre> 14507 <p>To create a 3x3 rotation matrix that applies the rotation 14508 defined by this quaternion,<wbr/> the following matrix can be 14509 used:</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/> 14576 as 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 14578 is relative to the optical center of the largest camera device facing in the same 14579 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor 14580 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor 14581 coordinate 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 14583 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm 14584 from the main sensor along the +X axis (to the right from the user's perspective) will 14585 report <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 14587 the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source 14588 camera <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 14590 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination 14591 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination 14592 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel 14593 coordinates.<wbr/></p> 14594 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera 14595 image 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 14597 the 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 14629 calibration.<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 14660 transform from camera-centric 3D coordinates to sensor 14661 pixel 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 14665 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 14666 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 14667 being 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 14676 complete transform from world coordinates to pixel 14677 coordinates:</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 14682 and <code>p_<wbr/>s</code> being a point in the camera active pixel array 14683 coordinate system,<wbr/> and with the mapping including the 14684 homogeneous 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 14686 p_<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 14689 point,<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/> 14693 where <code>(0,<wbr/>0)</code> is the top-left of the 14694 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 14695 intrinsic calibration transforms have been applied to a 14696 world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> 14697 transform needs to be applied,<wbr/> and the result adjusted to 14698 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 14699 system (where <code>(0,<wbr/> 0)</code> is the top-left of the 14700 activeArraySize rectangle),<wbr/> to determine the final pixel 14701 coordinate of the world point for processed (non-RAW) 14702 output 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 14736 radial 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/> 14766 kappa_<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 14768 lens'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 14775 input image that correspond to the pixel values in the 14776 corrected 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 14780 coordinate system related to the 14781 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 14782 Both <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 14783 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 14784 of both x and y coordinates are normalized to be 1 at the 14785 edge further from the optical center,<wbr/> so the range 14786 for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 14787 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the 14788 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 14789 is 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 14822 radial 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 14824 inconsistently 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/> 14853 kappa_<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 14855 lens'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 14862 input image that correspond to the pixel values in the 14863 corrected 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 14867 related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 14868 calibration fields; see that entry for details of the mapping stages.<wbr/> 14869 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> 14870 have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and 14871 the range of the coordinates depends on the focal length 14872 terms of the intrinsic calibration.<wbr/></p> 14873 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the 14874 optical 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 14940 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 14941 relative 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 14946 rate 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 14952 sensor 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/> 14958 based 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>) 14959 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if 14960 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of 14961 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> 14962 and the quality is equal to or better than FAST (since it is only applied to 14963 lower-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 14965 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 14966 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 14967 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 14968 high-resolution buffers must not have noise reduction applied to maximize efficiency of 14969 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 14970 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 14971 applied for reasonable preview quality.<wbr/></p> 14972 <p>This mode is guaranteed to be supported by devices that support either the 14973 YUV_<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 14975 be 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 15010 excessive 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 15012 YUV domain.<wbr/></p> 15013 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 15014 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 15015 This 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 15018 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 15019 will use the highest-quality noise filtering algorithms,<wbr/> 15020 even if it slows down capture rate.<wbr/> FAST means the camera device will not 15021 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 15022 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 15023 Every 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 15025 buffer of high-resolution images during preview and reprocess image(s) from that buffer 15026 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 15027 noise reduction to low-resolution streams (below maximum recording resolution) to maximize 15028 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 15029 those 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 15031 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 15032 may 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 15043 adjust the internal noise reduction parameters appropriately to get the best quality 15044 images.<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 15071 applied 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 15152 by 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 15181 ZERO_<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 15192 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 15193 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 15194 capture 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 15253 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 15254 relative 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 15259 rate 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 15265 sensor 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/> 15271 based 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>) 15272 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if 15273 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of 15274 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> 15275 and the quality is equal to or better than FAST (since it is only applied to 15276 lower-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 15278 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 15279 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 15280 produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 15281 high-resolution buffers must not have noise reduction applied to maximize efficiency of 15282 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 15283 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 15284 applied for reasonable preview quality.<wbr/></p> 15285 <p>This mode is guaranteed to be supported by devices that support either the 15286 YUV_<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 15288 be 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 15323 excessive 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 15325 YUV domain.<wbr/></p> 15326 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 15327 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 15328 This 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 15331 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 15332 will use the highest-quality noise filtering algorithms,<wbr/> 15333 even if it slows down capture rate.<wbr/> FAST means the camera device will not 15334 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 15335 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 15336 Every 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 15338 buffer of high-resolution images during preview and reprocess image(s) from that buffer 15339 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 15340 noise reduction to low-resolution streams (below maximum recording resolution) to maximize 15341 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 15342 those 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 15344 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 15345 may 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 15356 adjust the internal noise reduction parameters appropriately to get the best quality 15357 images.<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 15419 scale 'normalized' coordinates with respect to the crop 15420 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 15421 and 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 15446 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 15447 <p>HAL implementations should instead always use and emit 15448 sensor array-relative coordinates for all region data.<wbr/> Does 15449 not need to be listed in static metadata.<wbr/> Support will be 15450 removed 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 15480 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 15481 trigger.<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 15505 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 15506 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 15507 not need to be listed in static metadata.<wbr/> Support will be 15508 removed 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 15538 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 15539 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 15540 shutter 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 15564 to determine that a stream will be used for 15565 zero-shutter-lag,<wbr/> instead of relying on an explicit 15566 format setting.<wbr/> Does not need to be listed in static 15567 metadata.<wbr/> Support will be removed in future versions of 15568 camera 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 15598 metadata for a single capture into multiple buffers,<wbr/> 15599 returned 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 15623 metadata.<wbr/> Support for partial results will be reworked in 15624 future versions of camera service.<wbr/> This quirk will stop 15625 working at that point; DO NOT USE without careful 15626 consideration 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> 15636 for 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 15692 for 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 15697 capture.<wbr/> More result buffers for this capture will be sent 15698 by the camera device,<wbr/> the last of which will be marked 15699 FINAL.<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 15707 final one for the capture,<wbr/> or only a partial that contains a 15708 subset of the full set of dynamic metadata 15709 values.<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 15734 single capture may not overlap,<wbr/> except for this entry.<wbr/> The 15735 FINAL buffers must retain FIFO ordering relative to the 15736 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 15737 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 15738 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 15739 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 15740 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 15741 only 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> 15751 for 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 15813 be maintained unchanged in output frame.<wbr/> This value monotonically 15814 increases with every new result (that is,<wbr/> each new result has a unique 15815 frameCount 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 15860 request.<wbr/> Must be maintained unchanged in output 15861 frame</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 15914 for 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> == 15943 REPROCESS.<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 15970 for application-bound buffer data.<wbr/> If no 15971 application-bound streams exist,<wbr/> no frame should be 15972 placed in the output frame queue.<wbr/> If such streams 15973 exist,<wbr/> a frame should be placed on the output queue 15974 with null metadata but with the necessary output buffer 15975 information.<wbr/> Timestamp information should still be 15976 included 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 15981 only be produced if they are separately 15982 enabled</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 15990 output</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 16041 from 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 16051 created</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 16071 data should simply be discarded.<wbr/> The image data must 16072 still be captured for metadata and statistics production,<wbr/> 16073 and 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/> 16102 and process it according to the 16103 settings</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 16109 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 16110 needed 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 16118 REPROCESS.<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 16197 that 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 16207 for 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 16228 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 16229 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 16230 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 16231 number 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 16233 the camera device.<wbr/> Using more streams simultaneously may require more hardware and 16234 CPU resources that will consume more power.<wbr/> The image format for an output stream can 16235 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 16236 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized 16237 into 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 16276 that can be configured and used simultaneously by a camera device 16277 for 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 16301 streams from the raw sensor.<wbr/></p> 16302 <p>This lists the upper bound of the number of output streams supported by 16303 the camera device.<wbr/> Using more streams simultaneously may require more hardware and 16304 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 16305 be 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) 16313 never 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 16343 that can be configured and used simultaneously by a camera device 16344 for 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 16352 for 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 16370 streams for any processed (but not-stalling) formats.<wbr/></p> 16371 <p>This lists the upper bound of the number of output streams supported by 16372 the camera device.<wbr/> Using more streams simultaneously may require more hardware and 16373 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 16374 be 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/> 16376 Typically:</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 16384 processed 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 16415 that can be configured and used simultaneously by a camera device 16416 for 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 16440 streams for any processed (but not-stalling) formats.<wbr/></p> 16441 <p>This lists the upper bound of the number of output streams supported by 16442 the camera device.<wbr/> Using more streams simultaneously may require more hardware and 16443 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 16444 be 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 16448 processed 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 16483 can 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 16540 that 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 16568 input stream,<wbr/> there must be at least one output stream configured to to receive the 16569 reprocessed images.<wbr/></p> 16570 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/> 16571 only the input buffer will be used to produce these output stream buffers,<wbr/> and a 16572 new 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 16574 stream image format will be PRIVATE,<wbr/> the associated output stream image format 16575 should 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 16585 hardware/<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 16613 has to go through from when it's exposed to when it's available 16614 to 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/> 16637 one stage to readout) from the sensor.<wbr/> The ISP then usually adds 16638 its own stages to do custom HW processing.<wbr/> Further stages may be 16639 added by SW processing.<wbr/></p> 16640 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 16641 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 16642 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 16643 the max pipeline depth.<wbr/></p> 16644 <p>A pipeline depth of X stages is equivalent to a pipeline latency of 16645 X frame intervals.<wbr/></p> 16646 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/> 16647 the 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 16657 max 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 16684 a 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 16708 may be delivered to the application layer from the camera device as 16709 soon as they are available.<wbr/></p> 16710 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial 16711 results are not supported,<wbr/> and only the final TotalCaptureResult will 16712 be produced by the camera device.<wbr/></p> 16713 <p>A typical use case for this might be: after requesting an 16714 auto-focus (AF) lock the new AF state might be available 50% 16715 of the way through the pipeline.<wbr/> The camera device could 16716 then immediately dispatch this state via a partial result to 16717 the application,<wbr/> and the rest of the metadata via later 16718 partial 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 16750 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 16751 supports.<wbr/></p> 16752 <p>This capability is listed by all normal devices,<wbr/> and 16753 indicates that the camera device has a feature set 16754 that's comparable to the baseline requirements for the 16755 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 16756 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this 16757 capability,<wbr/> indicating that they support only depth measurement,<wbr/> 16758 not 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 16764 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> 16765 The camera device supports basic manual control of the sensor image 16766 acquisition related stages.<wbr/> This means the following controls are 16767 guaranteed 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 16802 device will accurately report the values applied by 3A in the 16803 result.<wbr/></p> 16804 <p>A given camera device may also support additional manual sensor controls,<wbr/> 16805 but 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 16807 additionally return a min frame duration that is greater than 16808 zero 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/> 16814 The camera device supports basic manual control of the image post-processing 16815 stages.<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 16852 will accurately report the values applied by AWB in the result.<wbr/></p> 16853 <p>A given camera device may also support additional post-processing 16854 controls,<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 16860 metadata for interpreting them.<wbr/></p> 16861 <p>Devices supporting the RAW capability allow both for 16862 saving DNG files,<wbr/> and for direct application processing of 16863 raw 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 16911 the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows 16912 reporting 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 16914 in 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 16931 always 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 16937 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set 16938 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames 16939 per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum 16940 resolution 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 16946 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the 16947 following:</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/> 17002 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that 17003 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/> 17004 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/> 17005 using a repeating burst is recommended,<wbr/> where a depth-output target is only included 17006 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output 17007 rate,<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 17013 case.<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 17014 only 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 17016 speed 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 17017 normal capture request per frame control and synchronization requirements will apply 17018 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability 17019 describes the capability of a specialized operating mode with many limitations (see 17020 below),<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/> 17022 To get desired output frame rates,<wbr/> the application is only allowed to select video 17023 size 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 17024 fps range can be controlled via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 17025 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 17026 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 17027 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 17028 and post-processing parameters is possible.<wbr/> All other controls operate the 17029 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 17030 android.<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 17046 work 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 17052 be lower than what camera can output,<wbr/> depending on the destination Surfaces for 17053 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 17054 the application need check if the video encoder is capable of supporting the 17055 high frame rate for a given video size,<wbr/> or it will end up with lower recording 17056 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame 17057 rate 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 17060 if 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 17064 targeted 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 17065 surface(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> 17072 will fail.<wbr/></p> 17073 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device 17074 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 17075 the application avoids unnecessary maximum target FPS changes as much as possible 17076 during 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 17084 results 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 17090 also exposed to the application.<wbr/></p> 17091 <p>Camera application shouldn't assume that there are at most 1 rear camera and 1 front 17092 camera in the system.<wbr/> For an application that switches between front and back cameras,<wbr/> 17093 the recommendation is to switch between the first rear camera and the first front 17094 camera 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 17116 mandatory 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 17131 not slow down the frame rate of the capture,<wbr/> as long as the minimum frame duration 17132 of 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/> 17138 and 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 17146 advertises 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 17169 to be able to satisfy one or more use cases.<wbr/></p> 17170 <p>Listing a capability guarantees that the whole set of features 17171 required to support a common use will all be available.<wbr/></p> 17172 <p>Using a subset of the functionality provided by an unsupported 17173 capability may be possible on a specific camera device implementation; 17174 to 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 17184 devices,<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 17194 in the Compatibility Test Suite.<wbr/></p> 17195 <p>Minimum baseline requirements required for the 17196 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> 17197 Instead refer to "BC" tags and the camera CTS tests in the 17198 android.<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 17201 request and the result in order to be considered to be 17202 capability-compliant.<wbr/></p> 17203 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 17204 then exposure time must be configurable via the request <em>and</em> 17205 the actual exposure applied must be available via 17206 the 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 17210 hardware/<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 17212 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p> 17213 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the 17214 YUV_<wbr/>REPROCESSING capability must support the 17215 CAMERA3_<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 17220 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT 17221 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available 17222 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace 17223 DEPTH).<wbr/></p> 17224 <p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the 17225 same way as a physical camera device based on its hardware level and capabilities.<wbr/> 17226 It'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/> 17230 physical_<wbr/>camera_<wbr/>1_<wbr/>id,<wbr/> physical_<wbr/>camera_<wbr/>2_<wbr/>id,<wbr/> ...<wbr/>} combination,<wbr/> where logical_<wbr/>camera_<wbr/>id 17231 is 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/> 17236 power,<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 17240 it 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 17244 BACKWARD_<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 17245 AUTO,<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 17254 be 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/> 17258 CurveGreen 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 17292 to 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 17315 listed here will result in an invalid request and will be rejected 17316 by the camera device.<wbr/></p> 17317 <p>This field can be used to query the feature set of a camera device 17318 at a more granular level than capabilities.<wbr/> This is especially 17319 important for optional keys that are not listed under any capability 17320 in <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 17330 use 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 17332 vendor extensions API and not against this field.<wbr/></p> 17333 <p>The HAL must not consume any request tags that are not listed either 17334 here or in the vendor tag list.<wbr/></p> 17335 <p>The public camera2 API will always make the vendor tags visible 17336 via 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 17391 listed here will always return a <code>null</code> value.<wbr/> Getting a key from 17392 a CaptureResult that is listed here will generally never return a <code>null</code> 17393 value.<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 17399 if they are available.<wbr/>)</p> 17400 <p>This field can be used to query the feature set of a camera device 17401 at a more granular level than capabilities.<wbr/> This is especially 17402 important for optional keys that are not listed under any capability 17403 in <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/> 17413 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 17414 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 17415 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 17416 use 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 17418 vendor extensions API and not against this field.<wbr/></p> 17419 <p>The HAL must not produce any result tags that are not listed either 17420 here 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 17476 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 17477 details.<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/> 17487 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 17488 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 17489 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use 17490 the 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 17492 vendor 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 17494 either here or in the vendor tag list.<wbr/></p> 17495 <p>The public camera2 API will always make the vendor tags visible 17496 via <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 17528 can 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 17551 contains a list of keys that are difficult to apply per-frame and 17552 can result in unexpected delays when modified during the capture session 17553 lifetime.<wbr/> Typical examples include parameters that require a 17554 time-consuming hardware re-configuration or internal camera pipeline 17555 change.<wbr/> For performance reasons we advise clients to pass their initial 17556 values as part of 17557 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/> 17558 Once the camera capture session is enabled it is also recommended to avoid 17559 changing them from their initial values set in 17560 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/> 17561 Control over session parameters can still be exerted in capture requests 17562 but clients should be aware and expect delays during their application.<wbr/> 17563 An 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 17596 speed mode is enabled,<wbr/> then only modifications of the maximum framerate value will be 17597 monitored by the framework and can trigger camera re-configuration.<wbr/> For more information 17598 about 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/> 17600 Vendor tags can be listed here.<wbr/> Vendor tag metadata should also 17601 use the extensions C api (refer to 17602 android.<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 17604 vendor extensions API and not against this field.<wbr/></p> 17605 <p>The HAL must not consume any request tags in the session parameters that 17606 are 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 17608 via 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 17641 physical 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 17664 of keys that can be overriden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/> 17665 The 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 17667 individual 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 17678 use the extensions C api (refer to 17679 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more 17680 details).<wbr/></p> 17681 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata 17682 vendor extensions API and not against this field.<wbr/></p> 17683 <p>The HAL must not consume any request tags in the session parameters that 17684 are 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 17687 with 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 17689 via 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 17747 increases with every new result (that is,<wbr/> each new result has a unique 17748 frameCount 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 17801 request.<wbr/> Must be maintained unchanged in output 17802 frame</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 17848 for application-bound buffer data.<wbr/> If no 17849 application-bound streams exist,<wbr/> no frame should be 17850 placed in the output frame queue.<wbr/> If such streams 17851 exist,<wbr/> a frame should be placed on the output queue 17852 with null metadata but with the necessary output buffer 17853 information.<wbr/> Timestamp information should still be 17854 included 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 17859 only be produced if they are separately 17860 enabled</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 17868 output</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 17919 from 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 17929 created</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 17949 data should simply be discarded.<wbr/> The image data must 17950 still be captured for metadata and statistics production,<wbr/> 17951 and 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 17980 through from when it was exposed to when the final completed result 17981 was 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 18005 what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 18006 and 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 18017 pipeline 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 18111 top-left corner of the sensor active array.<wbr/></p> 18112 <p>Output streams use this rectangle to produce their output,<wbr/> 18113 cropping to a smaller region if necessary to maintain the 18114 stream's aspect ratio,<wbr/> then scaling the sensor input to 18115 match the output's configured resolution.<wbr/></p> 18116 <p>The crop region is applied after the RAW to other color 18117 space (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 18119 croppable.<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 18121 be 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 18123 ratio,<wbr/> then 4:3 streams will use the exact crop 18124 region.<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 18127 outputs will crop horizontally (pillarbox),<wbr/> and 16:9 18128 streams will match exactly.<wbr/> These additional crops will 18129 be centered within the crop region.<wbr/></p> 18130 <p>The width and height of the crop region cannot 18131 be 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 18135 for rounding and other hardware requirements; the final 18136 crop region used will be included in the output capture 18137 result.<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 18147 times,<wbr/> no matter what the relative aspect ratios of the 18148 crop region and the stream are.<wbr/> Negative values for 18149 corner are allowed for raw output if full pixel array is 18150 larger than active pixel array.<wbr/> Width and height may be 18151 rounded to nearest larger supportable width,<wbr/> especially 18152 for raw output,<wbr/> where only a few fixed scales may be 18153 possible.<wbr/></p> 18154 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 18155 size 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 18159 array 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 18163 cropped pixel area by (tx,<wbr/> ty),<wbr/> 18164 where <code>ty = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 18165 and <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 18169 sensor<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 18170 respectively.<wbr/> 18171 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 18172 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 18173 follow the general cropping rule for this new cropRegion and effective active 18174 array 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/> 18179 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 18180 The reported cropRegion may be slightly different with the requested cropRegion since 18181 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 18182 hardware 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 18247 buffers with 16-bit pixels.<wbr/></p> 18248 <p>Buffers of this format are typically expected to have a 18249 Bayer 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 18251 CFAs 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 18253 use this format.<wbr/></p> 18254 <p>Buffers of this format will also follow the constraints given for 18255 RAW_<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 18257 of the buffers coming directly from the image sensor prior to any 18258 cropping or scaling operations,<wbr/> and all coordinate systems for 18259 metadata used for this format are relative to the size of the 18260 active region of the image sensor before any geometric distortion 18261 correction 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 18263 dimensions for this format are limited to the full dimensions of 18264 the 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 18266 only 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 18268 the 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> 18276 as referred in public API) is a format for raw image buffers 18277 coming from an image sensor.<wbr/></p> 18278 <p>The actual structure of buffers of this format is 18279 platform-specific,<wbr/> but must follow several constraints:</p> 18280 <ol> 18281 <li>No image post-processing operations may have been applied to 18282 buffers of this type.<wbr/> These buffers contain raw image data coming 18283 directly from the image sensor.<wbr/></li> 18284 <li>If a buffer of this format is passed to the camera device for 18285 reprocessing,<wbr/> the resulting images will be identical to the images 18286 produced if the buffer had come directly from the sensor and was 18287 processed with the same settings.<wbr/></li> 18288 </ol> 18289 <p>The intended use for this format is to allow access to the native 18290 raw format buffers coming directly from the camera sensor without 18291 any 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 18293 performance 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 18328 camera 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 18365 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 18366 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 18367 gralloc module will select a format based on the usage flags provided 18368 by the camera HAL device and the other endpoint of the stream.<wbr/> It is 18369 usually used by preview and recording streams,<wbr/> where the application doesn't 18370 need 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 18372 needs 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 18375 recommended that any information used by the camera device when 18376 processing images is fully expressed by the result metadata 18377 for 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 18410 for 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 18439 that JPEG stream is active and captured in a burst,<wbr/> with all 18440 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 18441 <p>When multiple streams are configured,<wbr/> the minimum 18442 frame duration will be >= max(individual stream min 18443 durations)</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 18504 sensor 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/> 18515 and 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 18543 and crop region width,<wbr/> and active area height and 18544 crop 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 18572 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping 18573 window size.<wbr/></p> 18574 <p>Crop regions that have a width or height that is smaller 18575 than this ratio allows will be rounded up to the minimum 18576 allowed 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 18611 minimum 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 18639 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 18640 set to FAST.<wbr/></p> 18641 <p>When multiple streams are configured,<wbr/> the minimum frame duration will 18642 be >= 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 18676 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 18677 platform opaque YUV/<wbr/>RGB streams to the GPU or video 18678 encoders.<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 18706 may be lower than what is listed here,<wbr/> depending on the destination 18707 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 18708 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 18709 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 18710 can provide.<wbr/></p> 18711 <p>Please reference the documentation for the image data destination to 18712 check 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/> 18722 the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 18723 and each below resolution if it is smaller than or equal to the sensor 18724 maximum 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/> 18732 the 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 18766 supportable 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 18794 active.<wbr/></p> 18795 <p>When multiple streams are configured,<wbr/> the minimum 18796 frame duration will be >= max(individual stream min 18797 durations)</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 18831 sensor output streams,<wbr/> listed as width,<wbr/> 18832 height</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 18875 camera 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 18902 available input format.<wbr/></p> 18903 <p>The camera device will support the following map of formats,<wbr/> 18904 if 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 18937 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a> 18938 with <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 18940 or 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 18942 listed 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 18952 of the image format enumerations.<wbr/> The PRIVATE format refers to the 18953 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine 18954 the actual format by using the gralloc usage flags.<wbr/> 18955 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially 18956 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/> 18957 See camera3.<wbr/>h for more details.<wbr/></p> 18958 <p>This value is encoded as a variable-size array-of-arrays.<wbr/> 18959 The 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 18961 inner 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 18963 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 18964 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 18965 <pre><code>//<wbr/> reading 18966 int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 18967 for (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) 18977 int32_<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 }; 18981 update_<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 18985 above details,<wbr/> then it must also support all the input-output 18986 combinations listed for that capability.<wbr/> It can optionally support 18987 additional 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 19027 camera 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> 19051 tuples.<wbr/></p> 19052 <p>For a given use case,<wbr/> the actual maximum supported resolution 19053 may be lower than what is listed here,<wbr/> depending on the destination 19054 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 19055 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 19056 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 19057 can provide.<wbr/></p> 19058 <p>Please reference the documentation for the image data destination to 19059 check if it limits the maximum size for image data.<wbr/></p> 19060 <p>Not all output formats may be supported in a configuration with 19061 an 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 19064 configurations 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 19127 mandatory 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 19137 of sensor maximum resolution for JPEG formats (regardless of hardware 19138 level).<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/> 19145 it 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 19147 the 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/> 19150 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 19151 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 19152 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 19153 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 19154 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 19155 3264x2448.<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/> 19157 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 19158 here as output streams.<wbr/></p> 19159 <p>It must also include each below resolution if it is smaller than or 19160 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 19161 formats),<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/> 19170 the HAL only has to list up to the maximum video size 19171 supported by the device.<wbr/></p> 19172 <p>Regardless of hardware level,<wbr/> every output resolution available for 19173 YUV_<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 19210 format/<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 19237 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 19238 set to either OFF or FAST.<wbr/></p> 19239 <p>When multiple streams are used in a request,<wbr/> the minimum frame 19240 duration will be max(individual stream min durations).<wbr/></p> 19241 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 19242 is 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 19245 calculating 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 19278 output 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 19305 to the normal minimum frame duration for a repeating request 19306 that has streams with non-zero stall.<wbr/></p> 19307 <p>For example,<wbr/> consider JPEG captures which have the following 19308 characteristics:</p> 19309 <ul> 19310 <li>JPEG streams act like processed YUV streams in requests for which 19311 they are not included; in requests in which they are directly 19312 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 19313 JPEG stream requires the underlying YUV data to always be ready for 19314 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 19315 frame 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 19317 pipeline,<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 19320 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 19321 JPEG request is submitted periodically,<wbr/> the frame rate will stay 19322 at 30 FPS (as long as we wait for the previous JPEG to return each 19323 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 19324 the frame rate will drop from 30 FPS.<wbr/></p> 19325 <p>In general,<wbr/> submitting a new request with a non-0 stall time 19326 stream will <em>not</em> cause a frame rate drop unless there are still 19327 outstanding buffers for that stream from previous requests.<wbr/></p> 19328 <p>Submitting a repeating request with streams (call this <code>S</code>) 19329 is the same as setting the minimum frame duration from 19330 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 19331 the maximum stall duration for <code>S</code>.<wbr/></p> 19332 <p>If interleaving requests with and without a stall duration,<wbr/> 19333 a request will stall by the maximum of the remaining times 19334 for each can-stall stream with outstanding buffers.<wbr/></p> 19335 <p>This means that a stalling request will not have an exposure start 19336 until the stall has completed.<wbr/></p> 19337 <p>This should correspond to the stall duration when only that stream is 19338 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 19339 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 19340 effectively results in an indeterminate stall duration for all 19341 streams in a request (the regular stall calculation rules are 19342 ignored).<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 19355 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 19356 for 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 19358 calculating 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 19369 and 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 19398 camera device supports; also includes the minimum frame durations 19399 and 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 19424 may be lower than what is listed here,<wbr/> depending on the destination 19425 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 19426 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 19427 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 19428 can provide.<wbr/></p> 19429 <p>Please reference the documentation for the image data destination to 19430 check if it limits the maximum size for image data.<wbr/></p> 19431 <p>The following table describes the minimum required output stream 19432 configurations 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 19495 stream 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/> 19501 it 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 19503 the dimensions being a multiple of 16.<wbr/> 19504 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 19505 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum 19506 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 19507 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 19508 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 19509 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 19510 3264x2448.<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); 19522 set 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 19524 an 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 19527 of sensor maximum resolution for JPEG formats (regardless of hardware 19528 level).<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/> 19533 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 19534 here as output streams.<wbr/></p> 19535 <p>It must also include each below resolution if it is smaller than or 19536 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 19537 formats),<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/> 19546 the HAL only has to list up to the maximum video size 19547 supported by the device.<wbr/></p> 19548 <p>Regardless of hardware level,<wbr/> every output resolution available for 19549 YUV_<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 19614 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 19615 crop 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>) 19616 and keep the crop region width and height unchanged.<wbr/> The camera device will return the 19617 final 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 19619 is inside of the active array.<wbr/> The camera device will apply the same crop region and 19620 return 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 19711 top-left corner of the sensor active array.<wbr/></p> 19712 <p>Output streams use this rectangle to produce their output,<wbr/> 19713 cropping to a smaller region if necessary to maintain the 19714 stream's aspect ratio,<wbr/> then scaling the sensor input to 19715 match the output's configured resolution.<wbr/></p> 19716 <p>The crop region is applied after the RAW to other color 19717 space (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 19719 croppable.<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 19721 be 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 19723 ratio,<wbr/> then 4:3 streams will use the exact crop 19724 region.<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 19727 outputs will crop horizontally (pillarbox),<wbr/> and 16:9 19728 streams will match exactly.<wbr/> These additional crops will 19729 be centered within the crop region.<wbr/></p> 19730 <p>The width and height of the crop region cannot 19731 be 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 19735 for rounding and other hardware requirements; the final 19736 crop region used will be included in the output capture 19737 result.<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 19747 times,<wbr/> no matter what the relative aspect ratios of the 19748 crop region and the stream are.<wbr/> Negative values for 19749 corner are allowed for raw output if full pixel array is 19750 larger than active pixel array.<wbr/> Width and height may be 19751 rounded to nearest larger supportable width,<wbr/> especially 19752 for raw output,<wbr/> where only a few fixed scales may be 19753 possible.<wbr/></p> 19754 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 19755 size 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 19759 array 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 19763 cropped pixel area by (tx,<wbr/> ty),<wbr/> 19764 where <code>ty = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 19765 and <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 19769 sensor<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 19770 respectively.<wbr/> 19771 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 19772 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 19773 follow the general cropping rule for this new cropRegion and effective active 19774 array 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/> 19779 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 19780 The reported cropRegion may be slightly different with the requested cropRegion since 19781 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 19782 hardware 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 19846 light.<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 19874 duration exposed to the nearest possible value (rather than expose longer).<wbr/> 19875 The 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 19877 OFF; 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 19906 start 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/> 19915 The 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 19935 a 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 19943 sensors,<wbr/> the camera abstraction tries to represent the bandwidth 19944 restrictions 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 19948 resolution possible given the application's requested output stream 19949 sizes.<wbr/> The smallest resolution is defined as being at least as large 19950 as the largest requested output stream size; the camera pipeline must 19951 never digitally upsample sensor data when the crop region covers the 19952 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 19953 resolutions are configured,<wbr/> the sensor can provide a higher frame 19954 rate.<wbr/></li> 19955 <li>Since any request may use any or all the currently configured 19956 output streams,<wbr/> the sensor and ISP must be configured to support 19957 scaling a single capture to all the streams at the same time.<wbr/> This 19958 means the camera pipeline must be ready to produce the largest 19959 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 19960 frame rate of a given configured stream set is governed only by the 19961 largest requested stream resolution.<wbr/></li> 19962 <li>Using more than one output stream in a request does not affect the 19963 frame duration.<wbr/></li> 19964 <li>Certain format-streams may need to do additional background processing 19965 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 19966 can run concurrently to the rest of the camera pipeline,<wbr/> but 19967 cannot 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/> 19971 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is 19972 possible for a given stream configuration.<wbr/></p> 19973 <p>Specifically,<wbr/> the application can use the following rules to 19974 determine the minimum frame duration it can request from the camera 19975 device:</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 19981 out 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> 19984 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady 19985 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let 19986 this 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 19988 new 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 19990 buffers 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 19993 OFF; 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 20031 before 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/> 20059 as 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 20061 if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 20062 is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 20063 <p>If the camera device cannot apply the exact sensitivity 20064 requested,<wbr/> it will reduce the gain to the nearest supported 20065 value.<wbr/> The final sensitivity used will be available in the 20066 output 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 20068 OFF; 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 20108 when <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/> 20131 The camera device then uses the most significant X bits 20132 that correspond to how many bits are in its Bayer raw sensor 20133 output.<wbr/></p> 20134 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 20135 10 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 20170 device 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 20176 respective 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 20185 are 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 20203 W Y C G M R B K 20204 W Y C G M R B K 20205 W Y C G M R B K 20206 W 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/> 20214 When this is not possible,<wbr/> the bar size should be rounded 20215 down to the nearest integer and the pattern can repeat 20216 on the right side.<wbr/></p> 20217 <p>Each bar's height must always take up the full sensor 20218 pixel array height.<wbr/></p> 20219 <p>Each pixel in this test pattern must be set to either 20220 0% 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 20225 each bar should start at its specified color at the top,<wbr/> 20226 and fade to gray at the bottom.<wbr/></p> 20227 <p>Furthermore each bar is further subdivided into a left and 20228 right half.<wbr/> The left half should have a smooth gradient,<wbr/> 20229 and 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 20231 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 20232 <p>The least significant bits in the quantized gradient should 20233 be 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/> 20235 When this is not the case,<wbr/> the pattern should repeat at the bottom 20236 of 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 20241 generated from a PN9 512-bit sequence (typically implemented 20242 in hardware with a linear feedback shift register).<wbr/></p> 20243 <p>The generator should be reset at the beginning of each frame,<wbr/> 20244 and thus each subsequent raw frame with this test pattern should 20245 be 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 20251 available only on this camera device are at least this numeric 20252 value.<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 20262 doing 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 20286 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 20287 work as normal.<wbr/></p> 20288 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 20289 occur (and that the test pattern remain unmodified,<wbr/> since the flash 20290 would 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 20302 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 20303 indistinguishable to the ISP whether the data came from the 20304 sensor 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 20367 distortion 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/> 20394 the region that actually receives light from the scene) after any geometric correction 20395 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the 20396 image 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 20398 the 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 20402 this 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 20404 include black calibration pixels or other inactive regions,<wbr/> and geometric correction 20405 resulting 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/> 20416 The <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 20449 camera 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/> 20477 as 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 20517 values for each pixel,<wbr/> instead of just 1 16-bit value 20518 per 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; 20526 represents the colors in the top-left 2x2 section of 20527 the 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 20578 by 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 20587 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 20588 the 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/> 20609 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least 20610 100ms.<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 20667 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame 20668 durations.<wbr/></p> 20669 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 20670 for 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/> 20680 The maximum of the range SHOULD be at least 20681 1 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 20683 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 20684 value (since exposure time overrides frame duration).<wbr/></p> 20685 <p>Available minimum frame durations for JPEG must be no greater 20686 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 20687 minimum frame durations (for that respective size).<wbr/></p> 20688 <p>Since JPEG processing is considered offline and can take longer than 20689 a single uncompressed capture,<wbr/> refer to 20690 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 20691 for 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 20724 array.<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 20752 array 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 20793 including 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 20822 the 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 20825 output 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 20827 are 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/> 20829 or 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 20830 defines the rectangle of active pixels that will be included in processed image 20831 formats.<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 20885 sample values from the sensor.<wbr/> This is typically caused by the 20886 sensor becoming highly non-linear or clipping.<wbr/> The minimum for 20887 each 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 20891 becomes too non-linear to be useful.<wbr/> The default value for this is 20892 maximum 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 20894 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 20895 represents a coarse approximation for such case.<wbr/> It is recommended 20896 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported 20897 by 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/> 20907 so the value for linear sensors should not be significantly lower 20908 than 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/> 20935 but 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 20937 camera devices in the same system.<wbr/> Timestamps between streams and results for 20938 a single camera instance are comparable,<wbr/> and the timestamps for all buffers 20939 and 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/> 20945 and 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 20978 may 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 20980 can 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 20990 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera 20991 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See 20992 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and 20993 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video 20994 recording might suffer unexpected behavior.<wbr/></p> 20995 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which 20996 tests 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 21031 lens 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 21054 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will 21055 not be adjusted for lens shading correction.<wbr/> 21056 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 formats.<wbr/></p> 21057 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/> 21058 Devices 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 21092 application 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/> 21119 the region that actually receives light from the scene) before any geometric correction 21120 has been applied,<wbr/> and should be treated as the active region rectangle for any of the 21121 raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading 21122 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as 21123 the 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 21125 pixels that an image from this sensor can contain,<wbr/> prior to the application of 21126 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a 21127 post-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> 21128 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image 21129 can be calculated by applying the geometric distortion correction fields to this 21130 rectangle,<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 21132 dimensions 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 21138 to 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 21141 buffers 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 21145 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/> 21146 when 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> 21149 is (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 21151 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in 21152 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer 21153 with 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) 21154 relative 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 21161 as 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 21164 the 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 21167 full 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/> 21178 The <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 21180 the 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 21294 calculating 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 21322 EXIF LightSource tag.<wbr/> These illuminants are standard light sources 21323 that 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 21328 information 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>) 21339 and corresponding matrices must be present to support the RAW capability 21340 and DNG output.<wbr/></p> 21341 <p>When producing raw images with a color profile that has only been 21342 calibrated 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/> 21345 and <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 21347 chosen so that it is representative of typical scene lighting.<wbr/> In 21348 general,<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 21351 chosen to represent the typical range of scene lighting conditions.<wbr/> 21352 In general,<wbr/> low color temperature illuminant such as Standard-A will 21353 be chosen for the first reference illuminant and a higher color 21354 temperature illuminant such as D65 will be chosen for the second 21355 reference 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 21382 calculating 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 21446 reference 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 21472 sensor 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 21474 contains a per-device calibration transform that maps colors 21475 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 21476 colorspace) into this camera device's native sensor color 21477 space 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 21511 reference 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 21538 sensor 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 21540 contains a per-device calibration transform that maps colors 21541 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 21542 colorspace) into this camera device's native sensor color 21543 space 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 21546 illuminant 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 21579 reference 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 21605 space to the reference sensor colorspace,<wbr/> and is used when processing 21606 raw buffer data.<wbr/></p> 21607 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 21608 contains a color transform matrix that maps colors from the CIE 21609 XYZ 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 21613 and the CIE XYZ colorspace when calculating this transform will 21614 match 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 21648 reference 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 21674 space to the reference sensor colorspace,<wbr/> and is used when processing 21675 raw buffer data.<wbr/></p> 21676 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 21677 contains a color transform matrix that maps colors from the CIE 21678 XYZ 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 21682 and the CIE XYZ colorspace when calculating this transform will 21683 match 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 21686 illuminant 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 21719 sensor 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 21745 is 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 21747 a color transform matrix that maps white balanced colors from the 21748 reference sensor color space to the CIE XYZ color space with a D50 white 21749 point.<wbr/></p> 21750 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 21751 this matrix is chosen so that the standard white point for this reference 21752 illuminant in the reference sensor colorspace is mapped to D50 in the 21753 CIE 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 21786 sensor 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 21812 is 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 21814 a color transform matrix that maps white balanced colors from the 21815 reference sensor color space to the CIE XYZ color space with a D50 white 21816 point.<wbr/></p> 21817 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 21818 this matrix is chosen so that the standard white point for this reference 21819 illuminant in the reference sensor colorspace is mapped to D50 in the 21820 CIE XYZ colorspace.<wbr/></p> 21821 <p>This matrix will only be present if the second reference 21822 illuminant 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 21850 ISO=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 21927 channels in the camera sensor.<wbr/> The maximal value output by the 21928 sensor 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 21930 layout 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 21931 nth value given corresponds to the black level offset for the nth 21932 color channel listed in the CFA.<wbr/></p> 21933 <p>The black level values of captured images may vary for different 21934 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 21935 represents a coarse approximation for such case.<wbr/> It is recommended to 21936 use <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 21938 supported by the camera device,<wbr/> which provides more accurate black 21939 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use 21940 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black 21941 level 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 21951 corresponding 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 21979 purely 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 22006 equal to this,<wbr/> all applied gain must be analog.<wbr/> For 22007 values above this,<wbr/> the gain applied can be a mix of analog and 22008 digital.<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 22037 upright 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 22066 the 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/> 22107 Saturation >= 2,<wbr/> 22108 Value >= 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 22128 dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 22129 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 22130 element.<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> 22163 supported 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 22226 optically 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 22249 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels 22250 provides a reliable black reference for black level compensation 22251 in active array region.<wbr/></p> 22252 <p>This key provides a list of disjoint rectangles specifying the 22253 regions of optically shielded (with metal shield) black pixel 22254 regions if the camera device is capable of reading out these black 22255 pixels in the output raw images.<wbr/> In comparison to the fixed black 22256 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key 22257 may provide a more accurate way for the application to calculate 22258 black 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) 22270 must 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 22273 outside 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 22276 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can 22277 be covered by one rectangle,<wbr/> the HAL must not split this region into 22278 multiple 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 22316 the 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/> 22333 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/> 22334 All 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 22336 this 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 22347 key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera 22348 framework will derive this key by assuming each pixel takes two bytes and no padding bytes 22349 between 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 22405 light.<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 22433 duration exposed to the nearest possible value (rather than expose longer).<wbr/> 22434 The 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 22436 OFF; 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 22465 start 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/> 22474 The 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 22494 a 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 22502 sensors,<wbr/> the camera abstraction tries to represent the bandwidth 22503 restrictions 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 22507 resolution possible given the application's requested output stream 22508 sizes.<wbr/> The smallest resolution is defined as being at least as large 22509 as the largest requested output stream size; the camera pipeline must 22510 never digitally upsample sensor data when the crop region covers the 22511 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 22512 resolutions are configured,<wbr/> the sensor can provide a higher frame 22513 rate.<wbr/></li> 22514 <li>Since any request may use any or all the currently configured 22515 output streams,<wbr/> the sensor and ISP must be configured to support 22516 scaling a single capture to all the streams at the same time.<wbr/> This 22517 means the camera pipeline must be ready to produce the largest 22518 requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 22519 frame rate of a given configured stream set is governed only by the 22520 largest requested stream resolution.<wbr/></li> 22521 <li>Using more than one output stream in a request does not affect the 22522 frame duration.<wbr/></li> 22523 <li>Certain format-streams may need to do additional background processing 22524 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 22525 can run concurrently to the rest of the camera pipeline,<wbr/> but 22526 cannot 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/> 22530 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is 22531 possible for a given stream configuration.<wbr/></p> 22532 <p>Specifically,<wbr/> the application can use the following rules to 22533 determine the minimum frame duration it can request from the camera 22534 device:</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 22540 out 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> 22543 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady 22544 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let 22545 this 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 22547 new 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 22549 buffers 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 22552 OFF; 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 22590 before 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/> 22618 as 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 22620 if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 22621 is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 22622 <p>If the camera device cannot apply the exact sensitivity 22623 requested,<wbr/> it will reduce the gain to the nearest supported 22624 value.<wbr/> The final sensitivity used will be available in the 22625 output 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 22627 OFF; 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 22664 row 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 22692 buffers produced for the same capture,<wbr/> and will be identical 22693 on 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/> 22695 the timestamps measure time since an unspecified starting point,<wbr/> 22696 and are monotonically increasing.<wbr/> They can be compared with the 22697 timestamps for other captures from the same camera device,<wbr/> but are 22698 not 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 22700 timestamps 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 22701 be compared to other timestamps from other subsystems that 22702 are using that base.<wbr/></p> 22703 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of 22704 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the 22705 timestamp</a> in the TotalCaptureResult that was used to create the 22706 reprocess 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 22716 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for 22717 time spent asleep.<wbr/> This allows for synchronization with 22718 sensors that continue to operate while the system is 22719 otherwise 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/> 22721 The timestamp must be synchronized with the timestamps from other 22722 sensor 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 22724 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the 22725 capture 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 22752 exposure began for this frame.<wbr/></p> 22753 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 22754 somewhere 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 22805 the 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 22831 native sensor color space.<wbr/> The neutral color point indicates the 22832 currently estimated white point of the scene illumination.<wbr/> It can be 22833 used to interpolate between the provided color transforms when 22834 processing 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 22893 corresponding to the sensor amplification (S) and sensor readout 22894 noise (O).<wbr/> These are given as pairs of coefficients for each channel 22895 in 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 22897 represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where 22898 the first member of the Pair at index n is the S coefficient and the 22899 second 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 22901 the amount of noise present in the image for each CFA channel.<wbr/> The 22902 noise 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 22905 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for 22906 that channel.<wbr/></p> 22907 <p>A more detailed description of the noise model can be found in the 22908 Adobe 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 22918 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients 22919 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green 22920 channel,<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 22952 for 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 22984 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 22985 hue shift has the lowest index.<wbr/> The map entries are stored in the key 22986 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 22987 hue divisions in the middle loop,<wbr/> and the saturation divisions in the 22988 inner loop.<wbr/> All zero input saturation entries are required to have a 22989 value 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 23030 sample 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 23050 processing the image as a starting point for user adjustments.<wbr/> 23051 The curve is specified as a list of value pairs in linear gamma.<wbr/> 23052 The 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 23106 Bayer green channels in the red and blue rows in the sensor color 23107 filter 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 23111 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 23112 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 23113 chosen is implementation defined,<wbr/> and should be chosen to provide a 23114 green split estimate that is both representative of the entire image 23115 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 23116 <li>The arithmetic mean of the green channels from the red 23117 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 23118 <li>The arithmetic mean of the green channels from the blue 23119 rows (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/> 23124 which represents how much the green channels differ in the mosaic 23125 pattern.<wbr/> This value is typically used to determine the treatment of 23126 the 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 23131 correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 23132 <li>R > 1.<wbr/>20 will require strong software correction to produce 23133 a 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 23144 characterization of the camera sensor using the green split 23145 calculation method given here over a large,<wbr/> representative,<wbr/> sample 23146 set of images.<wbr/> Other methods of calculation that produce equivalent 23147 results,<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 23178 when <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/> 23201 The camera device then uses the most significant X bits 23202 that correspond to how many bits are in its Bayer raw sensor 23203 output.<wbr/></p> 23204 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 23205 10 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 23240 device 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 23246 respective 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 23255 are 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 23273 W Y C G M R B K 23274 W Y C G M R B K 23275 W Y C G M R B K 23276 W 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/> 23284 When this is not possible,<wbr/> the bar size should be rounded 23285 down to the nearest integer and the pattern can repeat 23286 on the right side.<wbr/></p> 23287 <p>Each bar's height must always take up the full sensor 23288 pixel array height.<wbr/></p> 23289 <p>Each pixel in this test pattern must be set to either 23290 0% 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 23295 each bar should start at its specified color at the top,<wbr/> 23296 and fade to gray at the bottom.<wbr/></p> 23297 <p>Furthermore each bar is further subdivided into a left and 23298 right half.<wbr/> The left half should have a smooth gradient,<wbr/> 23299 and 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 23301 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 23302 <p>The least significant bits in the quantized gradient should 23303 be 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/> 23305 When this is not the case,<wbr/> the pattern should repeat at the bottom 23306 of 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 23311 generated from a PN9 512-bit sequence (typically implemented 23312 in hardware with a linear feedback shift register).<wbr/></p> 23313 <p>The generator should be reset at the beginning of each frame,<wbr/> 23314 and thus each subsequent raw frame with this test pattern should 23315 be 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 23321 available only on this camera device are at least this numeric 23322 value.<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 23332 doing 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 23356 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 23357 work as normal.<wbr/></p> 23358 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 23359 occur (and that the test pattern remain unmodified,<wbr/> since the flash 23360 would 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 23372 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 23373 indistinguishable to the ISP whether the data came from the 23374 sensor 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 23402 and 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 23431 row exposure start times.<wbr/> The first row and the last row are 23432 the 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 23435 to 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 23445 exposure 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 23477 arrangement (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 23504 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black 23505 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too 23506 inaccurate to represent the actual value on a per-frame basis.<wbr/> The 23507 camera device internal pipeline relies on reliable black level values 23508 to process the raw images appropriately.<wbr/> To get the best image 23509 quality,<wbr/> the camera device may choose to estimate the per frame black 23510 level 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 23513 value 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 23515 approximation of the actual black level values.<wbr/> This value is the 23516 black level used in camera device internal image processing pipeline 23517 and generally more accurate than the fixed black level values.<wbr/> 23518 However,<wbr/> since they are estimated values by the camera device,<wbr/> they 23519 may not be as accurate as the black level values calculated from the 23520 optical 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 23522 layout 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 23523 nth value given corresponds to the black level offset for the nth 23524 color 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 23526 camera 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 23536 corresponding 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 23589 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white 23590 level 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 23592 estimated 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 23594 available 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/> 23605 so the value for linear sensors should not be significantly lower 23606 than 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 23670 frame 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 23675 cost 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 23683 to 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 23707 camera device,<wbr/> and an identity lens shading map data will be provided 23708 if <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 23709 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 23710 the 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 23711 map 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 23720 device.<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 23722 shading 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 23723 data 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 23725 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 23726 AWB 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> 23727 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 23728 to 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 23756 applied 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 23835 frame 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 23840 cost 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 23848 to 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 23872 camera device,<wbr/> and an identity lens shading map data will be provided 23873 if <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 23874 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 23875 the 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 23876 map 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 23885 device.<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 23887 shading 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 23888 data 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 23890 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 23891 AWB 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> 23892 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 23893 to 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/> 23978 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always 23979 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/> 23980 LEGACY 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 23990 available on the camera device,<wbr/> but the underlying implementation can be the same for 23991 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not 23992 slow 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 24052 results.<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 24063 metadata.<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 24072 unit.<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 24099 should output just the basic fields or the full set of 24100 fields.<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/> 24111 FULL 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 24147 generation</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 24200 generation</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/> 24282 If 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 24321 shading 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 24349 the 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 24388 result 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 24467 supported 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 24518 supported</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 24565 faces.<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 24613 bucket</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 24658 region.<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 24708 map</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 24759 supported 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 24821 are 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 24845 contain only OFF.<wbr/></p> 24846 <p>ON is always supported on devices with the RAW capability.<wbr/> 24847 LEGACY 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 24880 are 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 24904 contain 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 24963 results.<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 24974 metadata.<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 24983 unit.<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 25010 should output just the basic fields or the full set of 25011 fields.<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/> 25022 FULL 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 25080 to the camera device.<wbr/> A face that leaves the field of view and later returns may be 25081 assigned 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 25116 faces.<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 25177 faces.<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 25237 detected 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 25273 all 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 25306 in 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 25361 sensor 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 25389 supported,<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 25425 generation</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 25475 sensor 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/> 25501 all 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 25537 generation</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 25583 that lists the coefficients used to correct for vignetting,<wbr/> for each 25584 Bayer 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 25608 correct both color shading and vignetting for output non-RAW images.<wbr/></p> 25609 <p>When there is no lens shading correction applied to RAW 25610 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> 25611 false),<wbr/> this map is the complete lens shading correction 25612 map; when there is some lens shading correction applied to 25613 the 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 25614 correction map that needs to be applied to get shading 25615 corrected images that match the camera device's output for 25616 non-RAW formats.<wbr/></p> 25617 <p>For a complete shading correction map,<wbr/> the least shaded 25618 section of the image will have a gain factor of 1; all 25619 other 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 25621 will take into account the colorCorrection settings.<wbr/></p> 25622 <p>The shading map is for the entire active pixel array,<wbr/> and is not 25623 affected by the crop region specified in the request.<wbr/> Each shading map 25624 entry is the value of the shading compensation map over a specific 25625 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 25626 map,<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 25628 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 25629 The 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 25631 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 25632 The 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/> 25634 and 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 ] 25637 values = 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 25652 image 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 25687 that lists the coefficients used to correct for vignetting and color shading,<wbr/> 25688 for 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 25712 correct both color shading and vignetting for output non-RAW images.<wbr/></p> 25713 <p>When there is no lens shading correction applied to RAW 25714 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> 25715 false),<wbr/> this map is the complete lens shading correction 25716 map; when there is some lens shading correction applied to 25717 the 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 25718 correction map that needs to be applied to get shading 25719 corrected images that match the camera device's output for 25720 non-RAW formats.<wbr/></p> 25721 <p>For a complete shading correction map,<wbr/> the least shaded 25722 section of the image will have a gain factor of 1; all 25723 other 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 25725 will take into account the colorCorrection settings.<wbr/></p> 25726 <p>The shading map is for the entire active pixel array,<wbr/> and is not 25727 affected by the crop region specified in the request.<wbr/> Each shading map 25728 entry is the value of the shading compensation map over a specific 25729 pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 25730 map,<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 25732 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 25733 The 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 25735 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 25736 The shading map is stored in a fully interleaved format,<wbr/> and its size 25737 is 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/> 25739 and 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 25757 image of a gray wall (using bicubic interpolation for visual quality) 25758 as 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 25761 correction 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 25763 to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> 25764 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading 25765 correction.<wbr/> In the case full lens shading correction is applied to RAW 25766 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/> 25767 In other words,<wbr/> the map reported in this key is the remaining lens shading 25768 that needs to be applied on the RAW image to get images without lens shading 25769 artifacts.<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 25770 formats.<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/> 25780 When 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 25782 may have all the information it need to generate most accurate lens shading map.<wbr/> When 25783 AE 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 25785 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 25786 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 25787 the 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 25821 by 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/> 25845 since statistics processing on data from a new frame 25846 typically completes after the transform has already been 25847 applied to that frame.<wbr/></p> 25848 <p>The 4 channel gains are defined in Bayer domain,<wbr/> 25849 see <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/> 25851 regardless 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 25886 calculated by the camera device's statistics units for the current 25887 output 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 25911 statistics unit on the white balance transforms to use 25912 for the next frame.<wbr/> These are the values the camera device believes 25913 are the best fit for the current output frame.<wbr/> This may 25914 be different than the transform used for this frame,<wbr/> since 25915 statistics processing on data from a new frame typically 25916 completes after the transform has already been applied to 25917 that frame.<wbr/></p> 25918 <p>These estimates must be provided for all frames,<wbr/> even if 25919 capture 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/> 25921 regardless 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 25949 in 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 25954 in 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 25959 in 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 25967 frequency.<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 25990 that depends on the local utility power standards.<wbr/> This flicker must be 25991 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 25992 The camera device uses this entry to tell the application what the scene 25993 illuminant 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> == 25996 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform 25997 antibanding,<wbr/> and the application can ensure it selects 25998 exposure times that do not cause banding issues by looking 25999 into 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/> 26066 If 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/> 26106 The <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 26129 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 26130 height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 26131 This may include hot pixels that lie outside of the active array 26132 bounds 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 26142 sensor that do report valid values (usually due to defects in 26143 the camera sensor).<wbr/> This includes pixels that are stuck at certain 26144 values,<wbr/> or have a response that does not accuractly encode the 26145 incoming light from the scene.<wbr/></p> 26146 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot 26147 pixels 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 26185 shading 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 26213 the 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 26252 result 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 26322 timebase 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/> 26377 A positive value is a shift from left to right in active array coordinate system.<wbr/> For 26378 example,<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/> 26436 A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For 26437 example,<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/> 26495 in 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 26497 coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array 26498 coordinates,<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 26500 coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array 26501 coordinates,<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 26568 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 26569 CONTRAST_<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 26625 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 26626 CONTRAST_<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 26682 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 26683 CONTRAST_<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 26691 as 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 ] 26710 2 <= 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 26712 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 26713 define a complete mapping.<wbr/> For input values between control points,<wbr/> 26714 the camera device must linearly interpolate between the control 26715 points.<wbr/></p> 26716 <p>Each curve can have an independent number of points,<wbr/> and the number 26717 of points can be less than max (that is,<wbr/> the request doesn't have to 26718 always 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 26721 are ignored.<wbr/></p> 26722 <p>A few examples,<wbr/> and their corresponding graphical mappings; these 26723 only specify the red channel and the precision is limited to 4 26724 digits,<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 26758 preferred.<wbr/></p> 26759 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 26760 control 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> 26789 is 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 26812 channels respectively.<wbr/> The following example uses the red channel as an 26813 example.<wbr/> The same logic applies to green and blue channel.<wbr/> 26814 Each 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) ] 26817 2 <= 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 26819 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 26820 define a complete mapping.<wbr/> For input values between control points,<wbr/> 26821 the camera device must linearly interpolate between the control 26822 points.<wbr/></p> 26823 <p>Each curve can have an independent number of points,<wbr/> and the number 26824 of points can be less than max (that is,<wbr/> the request doesn't have to 26825 always 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 26828 are ignored.<wbr/></p> 26829 <p>A few examples,<wbr/> and their corresponding graphical mappings; these 26830 only specify the red channel and the precision is limited to 4 26831 digits,<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 26865 curveBlue 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 26892 the <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 26894 for 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 26897 sensor 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 26902 reducing 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 26907 the 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 26912 tonemapping.<wbr/></p> 26913 <p>All color enhancement and tonemapping must be disabled,<wbr/> except 26914 for 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 26922 for 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 26956 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 26957 mapping from input high-bit-depth pixel value to the output 26958 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 26959 and output may change depending on the camera pipeline,<wbr/> the values 26960 are specified by normalized floating-point numbers.<wbr/></p> 26961 <p>More-complex color mapping operations such as 3D color look-up 26962 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 26963 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 26964 CONTRAST_<wbr/>CURVE.<wbr/></p> 26965 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 26966 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 26967 These values are always available,<wbr/> and as close as possible to the 26968 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 26969 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 26970 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 26971 roughly 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 26999 GAMMA_<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) 27023 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 27024 pow is the power function and gamma is the gamma value specified by this 27025 key.<wbr/></p> 27026 <p>The same curve will be applied to all color channels.<wbr/> The camera device 27027 may clip the input gamma value to its supported range.<wbr/> The actual applied 27028 value will be returned in capture result.<wbr/></p> 27029 <p>The valid range of gamma value varies on different devices,<wbr/> but values 27030 within [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 27068 PRESET_<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 27096 curves.<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 27153 tonemap 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 27176 less than this maximum,<wbr/> the camera device will resample the curve to its internal 27177 representation,<wbr/> using linear interpolation.<wbr/></p> 27178 <p>The output curves in the result metadata may have a different number 27179 of points than the input curves,<wbr/> and will represent the actual 27180 hardware 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 27222 device.<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 27246 at 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 27261 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 27262 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 27263 capture 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 27324 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27325 CONTRAST_<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 27381 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27382 CONTRAST_<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 27438 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27439 CONTRAST_<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 27447 as 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 ] 27466 2 <= 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 27468 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 27469 define a complete mapping.<wbr/> For input values between control points,<wbr/> 27470 the camera device must linearly interpolate between the control 27471 points.<wbr/></p> 27472 <p>Each curve can have an independent number of points,<wbr/> and the number 27473 of points can be less than max (that is,<wbr/> the request doesn't have to 27474 always 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 27477 are ignored.<wbr/></p> 27478 <p>A few examples,<wbr/> and their corresponding graphical mappings; these 27479 only specify the red channel and the precision is limited to 4 27480 digits,<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 27514 preferred.<wbr/></p> 27515 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 27516 control 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> 27545 is 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 27568 channels respectively.<wbr/> The following example uses the red channel as an 27569 example.<wbr/> The same logic applies to green and blue channel.<wbr/> 27570 Each 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) ] 27573 2 <= 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 27575 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 27576 define a complete mapping.<wbr/> For input values between control points,<wbr/> 27577 the camera device must linearly interpolate between the control 27578 points.<wbr/></p> 27579 <p>Each curve can have an independent number of points,<wbr/> and the number 27580 of points can be less than max (that is,<wbr/> the request doesn't have to 27581 always 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 27584 are ignored.<wbr/></p> 27585 <p>A few examples,<wbr/> and their corresponding graphical mappings; these 27586 only specify the red channel and the precision is limited to 4 27587 digits,<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 27621 curveBlue 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 27648 the <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 27650 for 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 27653 sensor 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 27658 reducing 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 27663 the 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 27668 tonemapping.<wbr/></p> 27669 <p>All color enhancement and tonemapping must be disabled,<wbr/> except 27670 for 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 27678 for 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 27712 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 27713 mapping from input high-bit-depth pixel value to the output 27714 low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 27715 and output may change depending on the camera pipeline,<wbr/> the values 27716 are specified by normalized floating-point numbers.<wbr/></p> 27717 <p>More-complex color mapping operations such as 3D color look-up 27718 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 27719 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 27720 CONTRAST_<wbr/>CURVE.<wbr/></p> 27721 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 27722 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 27723 These values are always available,<wbr/> and as close as possible to the 27724 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 27725 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 27726 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 27727 roughly 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 27755 GAMMA_<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) 27779 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 27780 pow is the power function and gamma is the gamma value specified by this 27781 key.<wbr/></p> 27782 <p>The same curve will be applied to all color channels.<wbr/> The camera device 27783 may clip the input gamma value to its supported range.<wbr/> The actual applied 27784 value will be returned in capture result.<wbr/></p> 27785 <p>The valid range of gamma value varies on different devices,<wbr/> but values 27786 within [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 27824 PRESET_<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 27852 curves.<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 27921 that the camera is powered on and may be streaming images back to the 27922 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 27923 disable this when video is processed locally and not transmitted to 27924 any untrusted applications.<wbr/></p> 27925 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 27926 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 27927 data 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 27929 doesn'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 28007 that the camera is powered on and may be streaming images back to the 28008 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 28009 disable this when video is processed locally and not transmitted to 28010 any untrusted applications.<wbr/></p> 28011 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 28012 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 28013 data 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 28015 doesn'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 28169 better.<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 28173 support for color image capture.<wbr/> The only exception is that the device may 28174 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth 28175 measurements 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> 28177 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before 28178 capturing 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 28180 required to support full-automatic operation and post-processing (<code>OFF</code> is not 28181 supported 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 28184 can 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: 28203 Pre-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 28205 23,<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 28212 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/> 28213 No 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> 28216 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated 28217 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may 28218 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash 28219 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to 28220 enable 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 28225 FULL-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 28240 exceptions:</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 28285 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional 28286 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/> 28287 The 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 28289 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/> 28290 the 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/> 28292 boolean 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 28315 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or 28316 ranges 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 28318 queried 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/> 28336 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p> 28337 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited 28338 mode has hardware requirements roughly in line with those for a camera HAL device v1 28339 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict 28340 superset 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 28343 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is 28344 implemented by the camera framework code.<wbr/></p> 28345 <p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend 28346 on the external camera being used and is not fully controlled by the device manufacturer.<wbr/> 28347 The 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 28374 ISP 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> 28397 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the 28398 device.<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 28408 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/> 28409 It 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 28478 to 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 28504 compensation 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 28507 exposure time) may require resetting of black level 28508 compensation,<wbr/> the camera device must report whether setting 28509 the black level lock was successful in the output result 28510 metadata.<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 28521 device to reset the black level offsets,<wbr/> then the output 28522 result 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 28532 levels were reset due to exposure value changes,<wbr/> and pixel 28533 values may not be consistent across captures.<wbr/></p> 28534 <p>The camera device will maintain the lock to the extent 28535 possible,<wbr/> only overriding the lock to OFF when changes to 28536 other request parameters require a black level recalculation 28537 or 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 28548 black level offsets to be recalculated),<wbr/> then the HAL must 28549 override this request (and it must report 'OFF' when this 28550 does happen) until the next capture for which locking is 28551 possible 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 28615 to 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 28641 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 28642 a change in other capture settings forced the camera device to 28643 perform 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 28654 black level offsets to be recalculated),<wbr/> then the HAL must 28655 override this request (and it must report 'OFF' when this 28656 does happen) until the next capture for which locking is 28657 possible 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 28719 result may include a mix of data that have taken effect since the 28720 last 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/> 28722 this value will update to the actual frame number frame number 28723 the result is guaranteed to be synchronized to (as long as the 28724 request 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 28731 progress.<wbr/> Reading from this result may include some mix 28732 of settings from past requests.<wbr/></p> 28733 <p>After a settings change,<wbr/> the new settings will eventually all 28734 take effect for the output buffers and results.<wbr/> However,<wbr/> this 28735 value will not change when that happens.<wbr/> Altering settings 28736 rapidly may provide outcomes using mixes of settings from recent 28737 requests.<wbr/></p> 28738 <p>This value is intended primarily for backwards compatibility with 28739 the 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 28747 with which the output result (metadata + buffers) has been fully 28748 synchronized.<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 28776 delay of several frames before the controls get applied.<wbr/> A camera 28777 device may either choose to account for this delay by implementing a 28778 pipeline and carefully submit well-timed atomic control updates,<wbr/> or 28779 it may start streaming control changes that span over several frame 28780 boundaries.<wbr/></p> 28781 <p>In the latter case,<wbr/> whenever a request's settings change relative to 28782 the previous submitted request,<wbr/> the full set of changes may take 28783 multiple frame durations to fully take effect.<wbr/> Some settings may 28784 take effect sooner (in less frame durations) than others.<wbr/></p> 28785 <p>While a set of control changes are being propagated,<wbr/> this value 28786 will be CONVERGING.<wbr/></p> 28787 <p>Once it is fully known that a set of control changes have been 28788 finished propagating,<wbr/> and the resulting updated control settings 28789 have been read back by the camera device,<wbr/> this value will be set 28790 to a non-negative frame number (corresponding to the request to 28791 which the results have synchronized to).<wbr/></p> 28792 <p>Older camera device implementations may not have a way to detect 28793 when all camera controls have been applied,<wbr/> and will always set this 28794 value to UNKNOWN.<wbr/></p> 28795 <p>FULL capability devices will always have this value set to the 28796 frame 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 28800 results not yet returned may have this value set to CONVERGING (this 28801 could include any in-progress captures not yet returned by the camera 28802 device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 28803 <li>Submitting a series of multiple requests that differ from the 28804 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 28805 moves the new synchronization frame to the last non-repeating 28806 request (using the smallest frame number from the contiguous list of 28807 repeating requests).<wbr/></li> 28808 <li>Submitting the same request repeatedly will not change this value 28809 to 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 28811 metadata controls from the request have been applied,<wbr/> all of the 28812 metadata controls from the camera device have been read to the 28813 updated values (into the result),<wbr/> and all of the graphics buffers 28814 corresponding 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 28818 submitted requests may also invalidate the synchronization state 28819 of 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> 28832 is 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 28891 produce results that have those controls applied atomically 28892 each 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) 28899 of the past requests applied to the camera settings.<wbr/></p> 28900 <p>By submitting a series of identical requests,<wbr/> the camera device 28901 will eventually have the camera settings applied,<wbr/> but it is 28902 unknown 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 28912 result'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/> 28940 between the frame number of the request that has new controls to apply 28941 and 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 28943 must occur before the camera device knows for a fact that the new 28944 submitted 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) 28955 request1 = X 28956 request2 = Y 28957 request3 = Y 28958 request4 = Y 28959 28960 where requestN has frameNumber N,<wbr/> and the first of the repeating 28961 initial request's has frameNumber F (and F < 1).<wbr/> 28962 28963 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 28964 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 28965 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 28966 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 28967 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 28968 28969 where 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 28978 value.<wbr/> If UNKNOWN is used here then app developers do not have a way 28979 to 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 29040 frame 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 29068 capability (<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 29070 output frames to effectively reduce the noise to the same level as a frame that was 29071 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 29072 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 29073 the camera device is that the amount of noise in the image would be approximately what 29074 would be expected if the original capture parameters had been a sensitivity of 29075 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 29076 than S and T respectively.<wbr/> If the captured images were processed by the application 29077 before being sent for reprocessing,<wbr/> then the application may have used image processing 29078 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 29079 application-processed images (input images).<wbr/> By using the effectiveExposureFactor 29080 control,<wbr/> the application can communicate to the camera device the actual noise level 29081 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 29082 device can select appropriate noise reduction and edge enhancement parameters to avoid 29083 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 29084 enhancement (<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 29086 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 29087 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 29088 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 29089 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 29090 produce the best quality images.<wbr/></p> 29091 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 29092 buffer 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 29094 reduction 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/> 29095 Similarly,<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 29153 frame 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 29181 capability (<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 29183 output frames to effectively reduce the noise to the same level as a frame that was 29184 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 29185 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 29186 the camera device is that the amount of noise in the image would be approximately what 29187 would be expected if the original capture parameters had been a sensitivity of 29188 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 29189 than S and T respectively.<wbr/> If the captured images were processed by the application 29190 before being sent for reprocessing,<wbr/> then the application may have used image processing 29191 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 29192 application-processed images (input images).<wbr/> By using the effectiveExposureFactor 29193 control,<wbr/> the application can communicate to the camera device the actual noise level 29194 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 29195 device can select appropriate noise reduction and edge enhancement parameters to avoid 29196 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 29197 enhancement (<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 29199 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 29200 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 29201 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 29202 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 29203 produce the best quality images.<wbr/></p> 29204 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 29205 buffer 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 29207 reduction 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/> 29208 Similarly,<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 29266 reprocess 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 29294 can introduce to the camera simultaneous streaming of regular (output) capture 29295 requests,<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 29298 pipeline for at least one frame duration so that the camera device is unable to process 29299 the following capture request in time for the next sensor start of exposure boundary.<wbr/> 29300 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame 29301 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview 29302 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives 29303 the worst-case number of frame stall introduced by one reprocess request with any kind of 29304 formats/<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 29306 ongoing 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 ( 29308 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or 29309 YUV_<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 29396 cloud (<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 29397 number of points an output buffer may contain.<wbr/></p> 29398 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/> 29399 If output in the depth point cloud format is not supported,<wbr/> this entry will 29400 not 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 29441 configurations 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 29468 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are 29469 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 29470 <p>Only devices that support depth output for at least 29471 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include 29472 this entry.<wbr/></p> 29473 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB 29474 sparse depth point cloud must report a single entry for 29475 the 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 29477 the 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 29510 format/<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 29537 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 29538 set to either OFF or FAST.<wbr/></p> 29539 <p>When multiple streams are used in a request,<wbr/> the minimum frame 29540 duration will be max(individual stream min durations).<wbr/></p> 29541 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 29542 is 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 29545 calculating 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 29578 output 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 29605 to the normal minimum frame duration for a repeating request 29606 that 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 29609 streams.<wbr/></p> 29610 <p>All depth output stream formats may have a nonzero stall 29611 duration.<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 29648 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as 29649 YUV_<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 29672 capture request is not supported.<wbr/> An application must interleave color 29673 and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types 29674 of output.<wbr/></p> 29675 <p>Typically,<wbr/> this restriction exists on camera devices that 29676 need to emit a specific pattern or wavelength of light to 29677 measure depth values,<wbr/> which causes the color image to be 29678 corrupted 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/> 29770 The null terminator for physical camera id must be preserved so that the whole string 29771 can 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 29773 value 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/> 29802 the timestamp of an image from a physical stream is only an approximation of the 29803 image 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/> 29808 and the timestamp of a physical stream image accurately reflects its 29809 start-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' 29842 ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/> 29843 the physical camera sensors usually run in master-slave mode so that their shutter 29844 time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in 29845 master-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 29847 timestamps,<wbr/> so that they can be used to look up the matching frame number and 29848 onCaptureStarted 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 29912 relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would 29913 reduce 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 29918 possibly 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 29949 radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If 29950 available,<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 29953 applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality 29954 correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device 29955 will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if 29956 any correction at all would slow down capture rate.<wbr/> Every output stream will have a 29957 similar 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 29959 applied to any RAW output.<wbr/> Metadata coordinates such as face rectangles or metering 29960 regions are also not affected by correction.<wbr/></p> 29961 <p>Applications enabling distortion correction need to pay extra attention when converting 29962 image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if 29963 the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion 29964 model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly 29965 calculate 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 29967 they 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 30028 supported 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/> 30056 All 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 30066 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 30067 That is,<wbr/> if the highest quality implementation on the camera device does not slow down 30068 capture 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 30126 relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would 30127 reduce 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 30132 possibly 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 30163 radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If 30164 available,<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 30167 applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality 30168 correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device 30169 will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if 30170 any correction at all would slow down capture rate.<wbr/> Every output stream will have a 30171 similar 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 30173 applied to any RAW output.<wbr/> Metadata coordinates such as face rectangles or metering 30174 regions are also not affected by correction.<wbr/></p> 30175 <p>Applications enabling distortion correction need to pay extra attention when converting 30176 image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if 30177 the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion 30178 model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly 30179 calculate 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 30181 they 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