docs.html revision 796e574d0d0bff63c00fd9dacd68912f3da50e14
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.2 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: 20% } 47 .th_description { width: 20% } 48 .th_range { width: 10% } 49 td { font-size: 0.9em; } 50 51 /* hide the first thead, we need it there only to enforce column sizes */ 52 .thead_dummy { visibility: hidden; } 53 54 /* Entry flair */ 55 .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; } 56 .entry_name_deprecated { text-decoration:line-through; } 57 58 /* Entry type flair */ 59 .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;} 60 .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" } 61 .entry_type_visibility { font-weight: bolder; padding-left:1em} 62 .entry_type_synthetic { font-weight: bolder; color: #996600; } 63 .entry_type_hwlevel { font-weight: bolder; color: #000066; } 64 .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; } 65 .entry_type_enum_name { font-family: monospace; font-weight: bolder; } 66 .entry_type_enum_notes:before { content:" - " } 67 .entry_type_enum_notes>p:first-child { display:inline; } 68 .entry_type_enum_value:before { content:" = " } 69 .entry_type_enum_value { font-family: monospace; } 70 .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; } 71 .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;} 72 .entry_range_deprecated { font-weight: bolder; } 73 74 /* Entry tags flair */ 75 .entry_tags ul { list-style-type: none; } 76 77 /* Entry details (full docs) flair */ 78 .entry_details_header { font-weight: bold; background-color: #dddddd; 79 text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; } 80 81 /* Entry spacer flair */ 82 .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; } 83 84 /* TODO: generate abbr element for each tag link? */ 85 /* TODO for each x.y.z try to link it to the entry */ 86 87 </style> 88 89 <style> 90 91 { 92 /* broken... 93 supposedly there is a bug in chrome that it lays out tables before 94 it knows its being printed, so the page-break-* styles are ignored 95 */ 96 tr { page-break-after: always; page-break-inside: avoid; } 97 } 98 99 </style> 100</head> 101 102 103 104<body> 105 <h1>Android Camera HAL3.2 Properties</h1> 106 107 108 <h2>Table of Contents</h2> 109 <ul class="toc"> 110 <li><a href="#tag_index" class="toc_section_header">Tags</a></li> 111 <li> 112 <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span> 113 <ul class="toc_section"> 114 <li> 115 <span class="toc_kind_header">controls</span> 116 <ul class="toc_section"> 117 <li 118 ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 119 <li 120 ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 121 <li 122 ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 123 <li 124 ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li> 125 </ul> 126 </li> 127 <li> 128 <span class="toc_kind_header">dynamic</span> 129 <ul class="toc_section"> 130 <li 131 ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 132 <li 133 ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 134 <li 135 ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 136 <li 137 ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li> 138 </ul> 139 </li> 140 <li> 141 <span class="toc_kind_header">static</span> 142 <ul class="toc_section"> 143 <li 144 ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li> 145 </ul> 146 </li> 147 </ul> <!-- toc_section --> 148 </li> 149 <li> 150 <span class="toc_section_header"><a href="#section_control">control</a></span> 151 <ul class="toc_section"> 152 <li> 153 <span class="toc_kind_header">controls</span> 154 <ul class="toc_section"> 155 <li 156 ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 157 <li 158 ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 159 <li 160 ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li> 161 <li 162 ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li> 163 <li 164 ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li> 165 <li 166 ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 167 <li 168 ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 169 <li 170 ><a href="#controls_android.control.afMode">android.control.afMode</a></li> 171 <li 172 ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li> 173 <li 174 ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li> 175 <li 176 ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li> 177 <li 178 ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li> 179 <li 180 ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li> 181 <li 182 ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li> 183 <li 184 ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li> 185 <li 186 ><a href="#controls_android.control.mode">android.control.mode</a></li> 187 <li 188 ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li> 189 <li 190 ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 191 </ul> 192 </li> 193 <li> 194 <span class="toc_kind_header">static</span> 195 <ul class="toc_section"> 196 <li 197 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li> 198 <li 199 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li> 200 <li 201 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li> 202 <li 203 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li> 204 <li 205 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li> 206 <li 207 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li> 208 <li 209 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li> 210 <li 211 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li> 212 <li 213 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li> 214 <li 215 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li> 216 <li 217 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li> 218 <li 219 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li> 220 <li 221 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li> 222 <li 223 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li> 224 <li 225 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li> 226 <li 227 ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li> 228 <li 229 ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li> 230 <li 231 ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li> 232 <li 233 ><a href="#static_android.control.availableModes">android.control.availableModes</a></li> 234 </ul> 235 </li> 236 <li> 237 <span class="toc_kind_header">dynamic</span> 238 <ul class="toc_section"> 239 <li 240 class="toc_deprecated" 241 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li> 242 <li 243 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 244 <li 245 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 246 <li 247 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li> 248 <li 249 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li> 250 <li 251 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li> 252 <li 253 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 254 <li 255 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 256 <li 257 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li> 258 <li 259 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li> 260 <li 261 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li> 262 <li 263 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li> 264 <li 265 ><a href="#dynamic_android.control.afState">android.control.afState</a></li> 266 <li 267 class="toc_deprecated" 268 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li> 269 <li 270 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li> 271 <li 272 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li> 273 <li 274 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li> 275 <li 276 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li> 277 <li 278 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li> 279 <li 280 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li> 281 <li 282 ><a href="#dynamic_android.control.mode">android.control.mode</a></li> 283 <li 284 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li> 285 <li 286 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 287 </ul> 288 </li> 289 </ul> <!-- toc_section --> 290 </li> 291 <li> 292 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span> 293 <ul class="toc_section"> 294 <li> 295 <span class="toc_kind_header">controls</span> 296 <ul class="toc_section"> 297 <li 298 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li> 299 </ul> 300 </li> 301 </ul> <!-- toc_section --> 302 </li> 303 <li> 304 <span class="toc_section_header"><a href="#section_edge">edge</a></span> 305 <ul class="toc_section"> 306 <li> 307 <span class="toc_kind_header">controls</span> 308 <ul class="toc_section"> 309 <li 310 ><a href="#controls_android.edge.mode">android.edge.mode</a></li> 311 <li 312 ><a href="#controls_android.edge.strength">android.edge.strength</a></li> 313 </ul> 314 </li> 315 <li> 316 <span class="toc_kind_header">static</span> 317 <ul class="toc_section"> 318 <li 319 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li> 320 </ul> 321 </li> 322 <li> 323 <span class="toc_kind_header">dynamic</span> 324 <ul class="toc_section"> 325 <li 326 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> 327 </ul> 328 </li> 329 </ul> <!-- toc_section --> 330 </li> 331 <li> 332 <span class="toc_section_header"><a href="#section_flash">flash</a></span> 333 <ul class="toc_section"> 334 <li> 335 <span class="toc_kind_header">controls</span> 336 <ul class="toc_section"> 337 <li 338 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> 339 <li 340 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> 341 <li 342 ><a href="#controls_android.flash.mode">android.flash.mode</a></li> 343 </ul> 344 </li> 345 <li> 346 <span class="toc_kind_header">static</span> 347 <ul class="toc_section"> 348 349 <li 350 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li> 351 <li 352 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> 353 354 <li 355 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> 356 <li 357 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> 358 </ul> 359 </li> 360 <li> 361 <span class="toc_kind_header">dynamic</span> 362 <ul class="toc_section"> 363 <li 364 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> 365 <li 366 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> 367 <li 368 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> 369 <li 370 ><a href="#dynamic_android.flash.state">android.flash.state</a></li> 371 </ul> 372 </li> 373 </ul> <!-- toc_section --> 374 </li> 375 <li> 376 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span> 377 <ul class="toc_section"> 378 <li> 379 <span class="toc_kind_header">controls</span> 380 <ul class="toc_section"> 381 <li 382 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li> 383 </ul> 384 </li> 385 <li> 386 <span class="toc_kind_header">static</span> 387 <ul class="toc_section"> 388 <li 389 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li> 390 </ul> 391 </li> 392 <li> 393 <span class="toc_kind_header">dynamic</span> 394 <ul class="toc_section"> 395 <li 396 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li> 397 </ul> 398 </li> 399 </ul> <!-- toc_section --> 400 </li> 401 <li> 402 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span> 403 <ul class="toc_section"> 404 <li> 405 <span class="toc_kind_header">controls</span> 406 <ul class="toc_section"> 407 <li 408 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 409 <li 410 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 411 <li 412 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 413 <li 414 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 415 <li 416 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li> 417 <li 418 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li> 419 <li 420 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 421 <li 422 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 423 </ul> 424 </li> 425 <li> 426 <span class="toc_kind_header">static</span> 427 <ul class="toc_section"> 428 <li 429 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li> 430 <li 431 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li> 432 </ul> 433 </li> 434 <li> 435 <span class="toc_kind_header">dynamic</span> 436 <ul class="toc_section"> 437 <li 438 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 439 <li 440 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 441 <li 442 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 443 <li 444 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 445 <li 446 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li> 447 <li 448 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li> 449 <li 450 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li> 451 <li 452 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 453 <li 454 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 455 </ul> 456 </li> 457 </ul> <!-- toc_section --> 458 </li> 459 <li> 460 <span class="toc_section_header"><a href="#section_lens">lens</a></span> 461 <ul class="toc_section"> 462 <li> 463 <span class="toc_kind_header">controls</span> 464 <ul class="toc_section"> 465 <li 466 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li> 467 <li 468 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li> 469 <li 470 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li> 471 <li 472 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li> 473 <li 474 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 475 </ul> 476 </li> 477 <li> 478 <span class="toc_kind_header">static</span> 479 <ul class="toc_section"> 480 481 <li 482 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li> 483 <li 484 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li> 485 <li 486 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li> 487 <li 488 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li> 489 <li 490 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li> 491 <li 492 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li> 493 <li 494 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li> 495 <li 496 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li> 497 498 <li 499 ><a href="#static_android.lens.facing">android.lens.facing</a></li> 500 <li 501 ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li> 502 <li 503 ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 504 <li 505 ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 506 <li 507 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 508 </ul> 509 </li> 510 <li> 511 <span class="toc_kind_header">dynamic</span> 512 <ul class="toc_section"> 513 <li 514 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li> 515 <li 516 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li> 517 <li 518 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li> 519 <li 520 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li> 521 <li 522 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li> 523 <li 524 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 525 <li 526 ><a href="#dynamic_android.lens.state">android.lens.state</a></li> 527 <li 528 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li> 529 <li 530 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 531 <li 532 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 533 <li 534 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 535 </ul> 536 </li> 537 </ul> <!-- toc_section --> 538 </li> 539 <li> 540 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span> 541 <ul class="toc_section"> 542 <li> 543 <span class="toc_kind_header">controls</span> 544 <ul class="toc_section"> 545 <li 546 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 547 <li 548 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li> 549 </ul> 550 </li> 551 <li> 552 <span class="toc_kind_header">static</span> 553 <ul class="toc_section"> 554 <li 555 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li> 556 </ul> 557 </li> 558 <li> 559 <span class="toc_kind_header">dynamic</span> 560 <ul class="toc_section"> 561 <li 562 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 563 </ul> 564 </li> 565 </ul> <!-- toc_section --> 566 </li> 567 <li> 568 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span> 569 <ul class="toc_section"> 570 <li> 571 <span class="toc_kind_header">static</span> 572 <ul class="toc_section"> 573 <li 574 class="toc_deprecated" 575 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> 576 <li 577 class="toc_deprecated" 578 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> 579 <li 580 class="toc_deprecated" 581 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> 582 <li 583 class="toc_deprecated" 584 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li> 585 </ul> 586 </li> 587 <li> 588 <span class="toc_kind_header">dynamic</span> 589 <ul class="toc_section"> 590 <li 591 class="toc_deprecated" 592 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li> 593 </ul> 594 </li> 595 </ul> <!-- toc_section --> 596 </li> 597 <li> 598 <span class="toc_section_header"><a href="#section_request">request</a></span> 599 <ul class="toc_section"> 600 <li> 601 <span class="toc_kind_header">controls</span> 602 <ul class="toc_section"> 603 <li 604 class="toc_deprecated" 605 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> 606 <li 607 ><a href="#controls_android.request.id">android.request.id</a></li> 608 <li 609 class="toc_deprecated" 610 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> 611 <li 612 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> 613 <li 614 class="toc_deprecated" 615 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> 616 <li 617 class="toc_deprecated" 618 ><a href="#controls_android.request.type">android.request.type</a></li> 619 </ul> 620 </li> 621 <li> 622 <span class="toc_kind_header">static</span> 623 <ul class="toc_section"> 624 <li 625 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li> 626 <li 627 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li> 628 <li 629 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li> 630 <li 631 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li> 632 <li 633 class="toc_deprecated" 634 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li> 635 <li 636 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li> 637 <li 638 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li> 639 <li 640 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li> 641 <li 642 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li> 643 <li 644 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li> 645 <li 646 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li> 647 <li 648 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li> 649 </ul> 650 </li> 651 <li> 652 <span class="toc_kind_header">dynamic</span> 653 <ul class="toc_section"> 654 <li 655 class="toc_deprecated" 656 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li> 657 <li 658 ><a href="#dynamic_android.request.id">android.request.id</a></li> 659 <li 660 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li> 661 <li 662 class="toc_deprecated" 663 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li> 664 <li 665 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li> 666 </ul> 667 </li> 668 </ul> <!-- toc_section --> 669 </li> 670 <li> 671 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span> 672 <ul class="toc_section"> 673 <li> 674 <span class="toc_kind_header">controls</span> 675 <ul class="toc_section"> 676 <li 677 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 678 </ul> 679 </li> 680 <li> 681 <span class="toc_kind_header">static</span> 682 <ul class="toc_section"> 683 <li 684 class="toc_deprecated" 685 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li> 686 <li 687 class="toc_deprecated" 688 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li> 689 <li 690 class="toc_deprecated" 691 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li> 692 <li 693 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li> 694 <li 695 class="toc_deprecated" 696 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li> 697 <li 698 class="toc_deprecated" 699 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li> 700 <li 701 class="toc_deprecated" 702 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li> 703 <li 704 class="toc_deprecated" 705 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li> 706 <li 707 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li> 708 <li 709 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li> 710 <li 711 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li> 712 <li 713 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li> 714 <li 715 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li> 716 <li 717 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li> 718 </ul> 719 </li> 720 <li> 721 <span class="toc_kind_header">dynamic</span> 722 <ul class="toc_section"> 723 <li 724 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 725 </ul> 726 </li> 727 </ul> <!-- toc_section --> 728 </li> 729 <li> 730 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> 731 <ul class="toc_section"> 732 <li> 733 <span class="toc_kind_header">controls</span> 734 <ul class="toc_section"> 735 <li 736 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 737 <li 738 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 739 <li 740 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 741 <li 742 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 743 <li 744 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 745 </ul> 746 </li> 747 <li> 748 <span class="toc_kind_header">static</span> 749 <ul class="toc_section"> 750 751 <li 752 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> 753 <li 754 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> 755 <li 756 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> 757 <li 758 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> 759 <li 760 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> 761 <li 762 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> 763 <li 764 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> 765 <li 766 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> 767 <li 768 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li> 769 <li 770 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li> 771 772 <li 773 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li> 774 <li 775 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li> 776 <li 777 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li> 778 <li 779 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li> 780 <li 781 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li> 782 <li 783 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li> 784 <li 785 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li> 786 <li 787 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li> 788 <li 789 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> 790 <li 791 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> 792 <li 793 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> 794 <li 795 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> 796 <li 797 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li> 798 <li 799 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> 800 </ul> 801 </li> 802 <li> 803 <span class="toc_kind_header">dynamic</span> 804 <ul class="toc_section"> 805 <li 806 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 807 <li 808 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 809 <li 810 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 811 <li 812 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 813 <li 814 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 815 <li 816 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> 817 <li 818 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li> 819 <li 820 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> 821 <li 822 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> 823 <li 824 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> 825 <li 826 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 827 <li 828 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 829 <li 830 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li> 831 </ul> 832 </li> 833 </ul> <!-- toc_section --> 834 </li> 835 <li> 836 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 837 <ul class="toc_section"> 838 <li> 839 <span class="toc_kind_header">controls</span> 840 <ul class="toc_section"> 841 <li 842 ><a href="#controls_android.shading.mode">android.shading.mode</a></li> 843 <li 844 ><a href="#controls_android.shading.strength">android.shading.strength</a></li> 845 </ul> 846 </li> 847 <li> 848 <span class="toc_kind_header">dynamic</span> 849 <ul class="toc_section"> 850 <li 851 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 852 </ul> 853 </li> 854 <li> 855 <span class="toc_kind_header">static</span> 856 <ul class="toc_section"> 857 <li 858 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li> 859 </ul> 860 </li> 861 </ul> <!-- toc_section --> 862 </li> 863 <li> 864 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> 865 <ul class="toc_section"> 866 <li> 867 <span class="toc_kind_header">controls</span> 868 <ul class="toc_section"> 869 <li 870 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 871 <li 872 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 873 <li 874 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 875 <li 876 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 877 <li 878 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 879 </ul> 880 </li> 881 <li> 882 <span class="toc_kind_header">static</span> 883 <ul class="toc_section"> 884 885 <li 886 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 887 <li 888 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 889 <li 890 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 891 <li 892 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 893 <li 894 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 895 <li 896 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 897 <li 898 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> 899 <li 900 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li> 901 902 </ul> 903 </li> 904 <li> 905 <span class="toc_kind_header">dynamic</span> 906 <ul class="toc_section"> 907 <li 908 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 909 <li 910 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 911 <li 912 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 913 <li 914 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 915 <li 916 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 917 <li 918 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li> 919 <li 920 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 921 <li 922 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 923 <li 924 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 925 <li 926 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 927 <li 928 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li> 929 <li 930 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 931 <li 932 class="toc_deprecated" 933 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 934 <li 935 class="toc_deprecated" 936 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 937 <li 938 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 939 <li 940 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 941 <li 942 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> 943 <li 944 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 945 </ul> 946 </li> 947 </ul> <!-- toc_section --> 948 </li> 949 <li> 950 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 951 <ul class="toc_section"> 952 <li> 953 <span class="toc_kind_header">controls</span> 954 <ul class="toc_section"> 955 <li 956 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 957 <li 958 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 959 <li 960 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 961 <li 962 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li> 963 <li 964 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 965 <li 966 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li> 967 <li 968 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 969 </ul> 970 </li> 971 <li> 972 <span class="toc_kind_header">static</span> 973 <ul class="toc_section"> 974 <li 975 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 976 <li 977 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> 978 </ul> 979 </li> 980 <li> 981 <span class="toc_kind_header">dynamic</span> 982 <ul class="toc_section"> 983 <li 984 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 985 <li 986 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 987 <li 988 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 989 <li 990 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li> 991 <li 992 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 993 <li 994 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li> 995 <li 996 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 997 </ul> 998 </li> 999 </ul> <!-- toc_section --> 1000 </li> 1001 <li> 1002 <span class="toc_section_header"><a href="#section_led">led</a></span> 1003 <ul class="toc_section"> 1004 <li> 1005 <span class="toc_kind_header">controls</span> 1006 <ul class="toc_section"> 1007 <li 1008 ><a href="#controls_android.led.transmit">android.led.transmit</a></li> 1009 </ul> 1010 </li> 1011 <li> 1012 <span class="toc_kind_header">dynamic</span> 1013 <ul class="toc_section"> 1014 <li 1015 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 1016 </ul> 1017 </li> 1018 <li> 1019 <span class="toc_kind_header">static</span> 1020 <ul class="toc_section"> 1021 <li 1022 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 1023 </ul> 1024 </li> 1025 </ul> <!-- toc_section --> 1026 </li> 1027 <li> 1028 <span class="toc_section_header"><a href="#section_info">info</a></span> 1029 <ul class="toc_section"> 1030 <li> 1031 <span class="toc_kind_header">static</span> 1032 <ul class="toc_section"> 1033 <li 1034 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 1035 </ul> 1036 </li> 1037 </ul> <!-- toc_section --> 1038 </li> 1039 <li> 1040 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 1041 <ul class="toc_section"> 1042 <li> 1043 <span class="toc_kind_header">controls</span> 1044 <ul class="toc_section"> 1045 <li 1046 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 1047 </ul> 1048 </li> 1049 <li> 1050 <span class="toc_kind_header">dynamic</span> 1051 <ul class="toc_section"> 1052 <li 1053 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 1054 </ul> 1055 </li> 1056 </ul> <!-- toc_section --> 1057 </li> 1058 <li> 1059 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 1060 <ul class="toc_section"> 1061 <li> 1062 <span class="toc_kind_header">dynamic</span> 1063 <ul class="toc_section"> 1064 <li 1065 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 1066 </ul> 1067 </li> 1068 <li> 1069 <span class="toc_kind_header">static</span> 1070 <ul class="toc_section"> 1071 <li 1072 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 1073 </ul> 1074 </li> 1075 </ul> <!-- toc_section --> 1076 </li> 1077 <li> 1078 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span> 1079 <ul class="toc_section"> 1080 <li> 1081 <span class="toc_kind_header">controls</span> 1082 <ul class="toc_section"> 1083 <li 1084 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1085 </ul> 1086 </li> 1087 <li> 1088 <span class="toc_kind_header">dynamic</span> 1089 <ul class="toc_section"> 1090 <li 1091 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1092 </ul> 1093 </li> 1094 </ul> <!-- toc_section --> 1095 </li> 1096 <li> 1097 <span class="toc_section_header"><a href="#section_depth">depth</a></span> 1098 <ul class="toc_section"> 1099 <li> 1100 <span class="toc_kind_header">static</span> 1101 <ul class="toc_section"> 1102 <li 1103 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li> 1104 <li 1105 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li> 1106 <li 1107 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li> 1108 <li 1109 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li> 1110 </ul> 1111 </li> 1112 </ul> <!-- toc_section --> 1113 </li> 1114 </ul> 1115 1116 1117 <h1>Properties</h1> 1118 <table class="properties"> 1119 1120 <thead class="thead_dummy"> 1121 <tr> 1122 <th class="th_name">Property Name</th> 1123 <th class="th_type">Type</th> 1124 <th class="th_description">Description</th> 1125 <th class="th_units">Units</th> 1126 <th class="th_range">Range</th> 1127 <th class="th_tags">Tags</th> 1128 </tr> 1129 </thead> <!-- so that the first occurrence of thead is not 1130 above the first occurrence of tr --> 1131<!-- <namespace name="android"> --> 1132 <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr> 1133 1134 1135 <tr><td colspan="6" class="kind">controls</td></tr> 1136 1137 <thead class="entries_header"> 1138 <tr> 1139 <th class="th_name">Property Name</th> 1140 <th class="th_type">Type</th> 1141 <th class="th_description">Description</th> 1142 <th class="th_units">Units</th> 1143 <th class="th_range">Range</th> 1144 <th class="th_tags">Tags</th> 1145 </tr> 1146 </thead> 1147 1148 <tbody> 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 <tr class="entry" id="controls_android.colorCorrection.mode"> 1160 <td class="entry_name 1161 " rowspan="5"> 1162 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1163 </td> 1164 <td class="entry_type"> 1165 <span class="entry_type_name entry_type_name_enum">byte</span> 1166 1167 <span class="entry_type_visibility"> [public]</span> 1168 1169 1170 <span class="entry_type_hwlevel">[full] </span> 1171 1172 1173 1174 <ul class="entry_type_enum"> 1175 <li> 1176 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1177 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1178and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1179<p>All advanced white balance adjustments (not specified 1180by our white balance pipeline) must be disabled.<wbr/></p> 1181<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 1182TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1183this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1184 </li> 1185 <li> 1186 <span class="entry_type_enum_name">FAST</span> 1187 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1188capture rate relative to sensor raw output.<wbr/></p> 1189<p>Advanced white balance adjustments above and beyond 1190the specified white balance pipeline may be applied.<wbr/></p> 1191<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 1192the camera device uses the last frame's AWB values 1193(or defaults if AWB has never been run).<wbr/></p></span> 1194 </li> 1195 <li> 1196 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1197 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1198quality but the capture rate might be reduced (relative to sensor 1199raw output rate)</p> 1200<p>Advanced white balance adjustments above and beyond 1201the specified white balance pipeline may be applied.<wbr/></p> 1202<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 1203the camera device uses the last frame's AWB values 1204(or defaults if AWB has never been run).<wbr/></p></span> 1205 </li> 1206 </ul> 1207 1208 </td> <!-- entry_type --> 1209 1210 <td class="entry_description"> 1211 <p>The mode control selects how the image data is converted from the 1212sensor's native color into linear sRGB color.<wbr/></p> 1213 </td> 1214 1215 <td class="entry_units"> 1216 </td> 1217 1218 <td class="entry_range"> 1219 </td> 1220 1221 <td class="entry_tags"> 1222 </td> 1223 1224 </tr> 1225 <tr class="entries_header"> 1226 <th class="th_details" colspan="5">Details</th> 1227 </tr> 1228 <tr class="entry_cont"> 1229 <td class="entry_details" colspan="5"> 1230 <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 1231control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1232application controls how the color mapping is performed.<wbr/></p> 1233<p>We define the expected processing pipeline below.<wbr/> For consistency 1234across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1235<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1236do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1237<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1238camera device (in the results) and be roughly correct.<wbr/></p> 1239<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1240FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1241as what was produced by the camera device in the earlier frame.<wbr/></p> 1242<p>The expected processing pipeline is as follows:</p> 1243<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1244<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1245gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1246matrix (applied after demosaic).<wbr/></p> 1247<p>The 4-channel white-balance gains are defined as:</p> 1248<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1249</code></pre> 1250<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1251output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1252These may be identical for a given camera device implementation; if 1253the camera device does not support a separate gain for even/<wbr/>odd green 1254channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1255<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1256<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1257<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 ] 1258</code></pre> 1259<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1260to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1261<p>with colors as follows:</p> 1262<pre><code>r' = I0r + I1g + I2b 1263g' = I3r + I4g + I5b 1264b' = I6r + I7g + I8b 1265</code></pre> 1266<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1267values are clipped to fit within the range.<wbr/></p> 1268 </td> 1269 </tr> 1270 1271 <tr class="entries_header"> 1272 <th class="th_details" colspan="5">HAL Implementation Details</th> 1273 </tr> 1274 <tr class="entry_cont"> 1275 <td class="entry_details" colspan="5"> 1276 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1277on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1278That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1279capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1280 </td> 1281 </tr> 1282 1283 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1284 <!-- end of entry --> 1285 1286 1287 <tr class="entry" id="controls_android.colorCorrection.transform"> 1288 <td class="entry_name 1289 " rowspan="3"> 1290 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1291 </td> 1292 <td class="entry_type"> 1293 <span class="entry_type_name">rational</span> 1294 <span class="entry_type_container">x</span> 1295 1296 <span class="entry_type_array"> 1297 3 x 3 1298 </span> 1299 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1300 1301 1302 <span class="entry_type_hwlevel">[full] </span> 1303 1304 1305 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1306 1307 1308 </td> <!-- entry_type --> 1309 1310 <td class="entry_description"> 1311 <p>A color transform matrix to use to transform 1312from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1313 </td> 1314 1315 <td class="entry_units"> 1316 Unitless scale factors 1317 </td> 1318 1319 <td class="entry_range"> 1320 </td> 1321 1322 <td class="entry_tags"> 1323 </td> 1324 1325 </tr> 1326 <tr class="entries_header"> 1327 <th class="th_details" colspan="5">Details</th> 1328 </tr> 1329 <tr class="entry_cont"> 1330 <td class="entry_details" colspan="5"> 1331 <p>This matrix is either set by the camera device when the request 1332<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1333directly by the application in the request when the 1334<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1335<p>In the latter case,<wbr/> the camera device may round the matrix to account 1336for precision issues; the final rounded matrix should be reported back 1337in this matrix result metadata.<wbr/> The transform should keep the magnitude 1338of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1339values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1340<p>The valid range of each matrix element varies on different devices,<wbr/> but 1341values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1342 </td> 1343 </tr> 1344 1345 1346 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1347 <!-- end of entry --> 1348 1349 1350 <tr class="entry" id="controls_android.colorCorrection.gains"> 1351 <td class="entry_name 1352 " rowspan="5"> 1353 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1354 </td> 1355 <td class="entry_type"> 1356 <span class="entry_type_name">float</span> 1357 <span class="entry_type_container">x</span> 1358 1359 <span class="entry_type_array"> 1360 4 1361 </span> 1362 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1363 1364 1365 <span class="entry_type_hwlevel">[full] </span> 1366 1367 1368 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1369 1370 1371 </td> <!-- entry_type --> 1372 1373 <td class="entry_description"> 1374 <p>Gains applying to Bayer raw color channels for 1375white-balance.<wbr/></p> 1376 </td> 1377 1378 <td class="entry_units"> 1379 Unitless gain factors 1380 </td> 1381 1382 <td class="entry_range"> 1383 </td> 1384 1385 <td class="entry_tags"> 1386 </td> 1387 1388 </tr> 1389 <tr class="entries_header"> 1390 <th class="th_details" colspan="5">Details</th> 1391 </tr> 1392 <tr class="entry_cont"> 1393 <td class="entry_details" colspan="5"> 1394 <p>These per-channel gains are either set by the camera device 1395when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1396TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1397request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1398TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1399<p>The gains in the result metadata are the gains actually 1400applied by the camera device to the current frame.<wbr/></p> 1401<p>The valid range of gains varies on different devices,<wbr/> but gains 1402between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1403device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1404this can create color artifacts.<wbr/></p> 1405 </td> 1406 </tr> 1407 1408 <tr class="entries_header"> 1409 <th class="th_details" colspan="5">HAL Implementation Details</th> 1410 </tr> 1411 <tr class="entry_cont"> 1412 <td class="entry_details" colspan="5"> 1413 <p>The 4-channel white-balance gains are defined in 1414the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1415for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1416is the gain for green pixels on the odd rows.<wbr/></p> 1417<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1418channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1419<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1420 </td> 1421 </tr> 1422 1423 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1424 <!-- end of entry --> 1425 1426 1427 <tr class="entry" id="controls_android.colorCorrection.aberrationMode"> 1428 <td class="entry_name 1429 " rowspan="3"> 1430 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1431 </td> 1432 <td class="entry_type"> 1433 <span class="entry_type_name entry_type_name_enum">byte</span> 1434 1435 <span class="entry_type_visibility"> [public]</span> 1436 1437 1438 <span class="entry_type_hwlevel">[legacy] </span> 1439 1440 1441 1442 <ul class="entry_type_enum"> 1443 <li> 1444 <span class="entry_type_enum_name">OFF</span> 1445 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1446 </li> 1447 <li> 1448 <span class="entry_type_enum_name">FAST</span> 1449 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1450relative to sensor raw output.<wbr/></p></span> 1451 </li> 1452 <li> 1453 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1454 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1455reduced (relative to sensor raw output rate)</p></span> 1456 </li> 1457 </ul> 1458 1459 </td> <!-- entry_type --> 1460 1461 <td class="entry_description"> 1462 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1463 </td> 1464 1465 <td class="entry_units"> 1466 </td> 1467 1468 <td class="entry_range"> 1469 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1470 </td> 1471 1472 <td class="entry_tags"> 1473 </td> 1474 1475 </tr> 1476 <tr class="entries_header"> 1477 <th class="th_details" colspan="5">Details</th> 1478 </tr> 1479 <tr class="entry_cont"> 1480 <td class="entry_details" colspan="5"> 1481 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1482can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1483the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1484minimize the chromatic artifacts that may occur along the object boundaries in an 1485image.<wbr/></p> 1486<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1487correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1488use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1489capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1490applying aberration correction.<wbr/></p> 1491<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1492 </td> 1493 </tr> 1494 1495 1496 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1497 <!-- end of entry --> 1498 1499 1500 1501 <!-- end of kind --> 1502 </tbody> 1503 <tr><td colspan="6" class="kind">dynamic</td></tr> 1504 1505 <thead class="entries_header"> 1506 <tr> 1507 <th class="th_name">Property Name</th> 1508 <th class="th_type">Type</th> 1509 <th class="th_description">Description</th> 1510 <th class="th_units">Units</th> 1511 <th class="th_range">Range</th> 1512 <th class="th_tags">Tags</th> 1513 </tr> 1514 </thead> 1515 1516 <tbody> 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 <tr class="entry" id="dynamic_android.colorCorrection.mode"> 1528 <td class="entry_name 1529 " rowspan="5"> 1530 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1531 </td> 1532 <td class="entry_type"> 1533 <span class="entry_type_name entry_type_name_enum">byte</span> 1534 1535 <span class="entry_type_visibility"> [public]</span> 1536 1537 1538 <span class="entry_type_hwlevel">[full] </span> 1539 1540 1541 1542 <ul class="entry_type_enum"> 1543 <li> 1544 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1545 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1546and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1547<p>All advanced white balance adjustments (not specified 1548by our white balance pipeline) must be disabled.<wbr/></p> 1549<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 1550TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1551this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1552 </li> 1553 <li> 1554 <span class="entry_type_enum_name">FAST</span> 1555 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1556capture rate relative to sensor raw output.<wbr/></p> 1557<p>Advanced white balance adjustments above and beyond 1558the specified white balance pipeline may be applied.<wbr/></p> 1559<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 1560the camera device uses the last frame's AWB values 1561(or defaults if AWB has never been run).<wbr/></p></span> 1562 </li> 1563 <li> 1564 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1565 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1566quality but the capture rate might be reduced (relative to sensor 1567raw output rate)</p> 1568<p>Advanced white balance adjustments above and beyond 1569the specified white balance pipeline may be applied.<wbr/></p> 1570<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 1571the camera device uses the last frame's AWB values 1572(or defaults if AWB has never been run).<wbr/></p></span> 1573 </li> 1574 </ul> 1575 1576 </td> <!-- entry_type --> 1577 1578 <td class="entry_description"> 1579 <p>The mode control selects how the image data is converted from the 1580sensor's native color into linear sRGB color.<wbr/></p> 1581 </td> 1582 1583 <td class="entry_units"> 1584 </td> 1585 1586 <td class="entry_range"> 1587 </td> 1588 1589 <td class="entry_tags"> 1590 </td> 1591 1592 </tr> 1593 <tr class="entries_header"> 1594 <th class="th_details" colspan="5">Details</th> 1595 </tr> 1596 <tr class="entry_cont"> 1597 <td class="entry_details" colspan="5"> 1598 <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 1599control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1600application controls how the color mapping is performed.<wbr/></p> 1601<p>We define the expected processing pipeline below.<wbr/> For consistency 1602across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1603<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1604do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1605<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1606camera device (in the results) and be roughly correct.<wbr/></p> 1607<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1608FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1609as what was produced by the camera device in the earlier frame.<wbr/></p> 1610<p>The expected processing pipeline is as follows:</p> 1611<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1612<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1613gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1614matrix (applied after demosaic).<wbr/></p> 1615<p>The 4-channel white-balance gains are defined as:</p> 1616<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1617</code></pre> 1618<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1619output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1620These may be identical for a given camera device implementation; if 1621the camera device does not support a separate gain for even/<wbr/>odd green 1622channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1623<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1624<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1625<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 ] 1626</code></pre> 1627<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1628to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1629<p>with colors as follows:</p> 1630<pre><code>r' = I0r + I1g + I2b 1631g' = I3r + I4g + I5b 1632b' = I6r + I7g + I8b 1633</code></pre> 1634<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1635values are clipped to fit within the range.<wbr/></p> 1636 </td> 1637 </tr> 1638 1639 <tr class="entries_header"> 1640 <th class="th_details" colspan="5">HAL Implementation Details</th> 1641 </tr> 1642 <tr class="entry_cont"> 1643 <td class="entry_details" colspan="5"> 1644 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1645on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1646That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1647capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1648 </td> 1649 </tr> 1650 1651 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1652 <!-- end of entry --> 1653 1654 1655 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 1656 <td class="entry_name 1657 " rowspan="3"> 1658 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1659 </td> 1660 <td class="entry_type"> 1661 <span class="entry_type_name">rational</span> 1662 <span class="entry_type_container">x</span> 1663 1664 <span class="entry_type_array"> 1665 3 x 3 1666 </span> 1667 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1668 1669 1670 <span class="entry_type_hwlevel">[full] </span> 1671 1672 1673 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1674 1675 1676 </td> <!-- entry_type --> 1677 1678 <td class="entry_description"> 1679 <p>A color transform matrix to use to transform 1680from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1681 </td> 1682 1683 <td class="entry_units"> 1684 Unitless scale factors 1685 </td> 1686 1687 <td class="entry_range"> 1688 </td> 1689 1690 <td class="entry_tags"> 1691 </td> 1692 1693 </tr> 1694 <tr class="entries_header"> 1695 <th class="th_details" colspan="5">Details</th> 1696 </tr> 1697 <tr class="entry_cont"> 1698 <td class="entry_details" colspan="5"> 1699 <p>This matrix is either set by the camera device when the request 1700<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1701directly by the application in the request when the 1702<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1703<p>In the latter case,<wbr/> the camera device may round the matrix to account 1704for precision issues; the final rounded matrix should be reported back 1705in this matrix result metadata.<wbr/> The transform should keep the magnitude 1706of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1707values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1708<p>The valid range of each matrix element varies on different devices,<wbr/> but 1709values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1710 </td> 1711 </tr> 1712 1713 1714 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1715 <!-- end of entry --> 1716 1717 1718 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 1719 <td class="entry_name 1720 " rowspan="5"> 1721 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1722 </td> 1723 <td class="entry_type"> 1724 <span class="entry_type_name">float</span> 1725 <span class="entry_type_container">x</span> 1726 1727 <span class="entry_type_array"> 1728 4 1729 </span> 1730 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1731 1732 1733 <span class="entry_type_hwlevel">[full] </span> 1734 1735 1736 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1737 1738 1739 </td> <!-- entry_type --> 1740 1741 <td class="entry_description"> 1742 <p>Gains applying to Bayer raw color channels for 1743white-balance.<wbr/></p> 1744 </td> 1745 1746 <td class="entry_units"> 1747 Unitless gain factors 1748 </td> 1749 1750 <td class="entry_range"> 1751 </td> 1752 1753 <td class="entry_tags"> 1754 </td> 1755 1756 </tr> 1757 <tr class="entries_header"> 1758 <th class="th_details" colspan="5">Details</th> 1759 </tr> 1760 <tr class="entry_cont"> 1761 <td class="entry_details" colspan="5"> 1762 <p>These per-channel gains are either set by the camera device 1763when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1764TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1765request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1766TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1767<p>The gains in the result metadata are the gains actually 1768applied by the camera device to the current frame.<wbr/></p> 1769<p>The valid range of gains varies on different devices,<wbr/> but gains 1770between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1771device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1772this can create color artifacts.<wbr/></p> 1773 </td> 1774 </tr> 1775 1776 <tr class="entries_header"> 1777 <th class="th_details" colspan="5">HAL Implementation Details</th> 1778 </tr> 1779 <tr class="entry_cont"> 1780 <td class="entry_details" colspan="5"> 1781 <p>The 4-channel white-balance gains are defined in 1782the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1783for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1784is the gain for green pixels on the odd rows.<wbr/></p> 1785<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1786channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1787<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1788 </td> 1789 </tr> 1790 1791 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1792 <!-- end of entry --> 1793 1794 1795 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode"> 1796 <td class="entry_name 1797 " rowspan="3"> 1798 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1799 </td> 1800 <td class="entry_type"> 1801 <span class="entry_type_name entry_type_name_enum">byte</span> 1802 1803 <span class="entry_type_visibility"> [public]</span> 1804 1805 1806 <span class="entry_type_hwlevel">[legacy] </span> 1807 1808 1809 1810 <ul class="entry_type_enum"> 1811 <li> 1812 <span class="entry_type_enum_name">OFF</span> 1813 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1814 </li> 1815 <li> 1816 <span class="entry_type_enum_name">FAST</span> 1817 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1818relative to sensor raw output.<wbr/></p></span> 1819 </li> 1820 <li> 1821 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1822 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1823reduced (relative to sensor raw output rate)</p></span> 1824 </li> 1825 </ul> 1826 1827 </td> <!-- entry_type --> 1828 1829 <td class="entry_description"> 1830 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1831 </td> 1832 1833 <td class="entry_units"> 1834 </td> 1835 1836 <td class="entry_range"> 1837 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1838 </td> 1839 1840 <td class="entry_tags"> 1841 </td> 1842 1843 </tr> 1844 <tr class="entries_header"> 1845 <th class="th_details" colspan="5">Details</th> 1846 </tr> 1847 <tr class="entry_cont"> 1848 <td class="entry_details" colspan="5"> 1849 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1850can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1851the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1852minimize the chromatic artifacts that may occur along the object boundaries in an 1853image.<wbr/></p> 1854<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1855correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1856use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1857capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1858applying aberration correction.<wbr/></p> 1859<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1860 </td> 1861 </tr> 1862 1863 1864 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1865 <!-- end of entry --> 1866 1867 1868 1869 <!-- end of kind --> 1870 </tbody> 1871 <tr><td colspan="6" class="kind">static</td></tr> 1872 1873 <thead class="entries_header"> 1874 <tr> 1875 <th class="th_name">Property Name</th> 1876 <th class="th_type">Type</th> 1877 <th class="th_description">Description</th> 1878 <th class="th_units">Units</th> 1879 <th class="th_range">Range</th> 1880 <th class="th_tags">Tags</th> 1881 </tr> 1882 </thead> 1883 1884 <tbody> 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes"> 1896 <td class="entry_name 1897 " rowspan="5"> 1898 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes 1899 </td> 1900 <td class="entry_type"> 1901 <span class="entry_type_name">byte</span> 1902 <span class="entry_type_container">x</span> 1903 1904 <span class="entry_type_array"> 1905 n 1906 </span> 1907 <span class="entry_type_visibility"> [public as enumList]</span> 1908 1909 1910 <span class="entry_type_hwlevel">[legacy] </span> 1911 1912 1913 <div class="entry_type_notes">list of enums</div> 1914 1915 1916 </td> <!-- entry_type --> 1917 1918 <td class="entry_description"> 1919 <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 1920supported by this camera device.<wbr/></p> 1921 </td> 1922 1923 <td class="entry_units"> 1924 </td> 1925 1926 <td class="entry_range"> 1927 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p> 1928 </td> 1929 1930 <td class="entry_tags"> 1931 <ul class="entry_tags"> 1932 <li><a href="#tag_V1">V1</a></li> 1933 </ul> 1934 </td> 1935 1936 </tr> 1937 <tr class="entries_header"> 1938 <th class="th_details" colspan="5">Details</th> 1939 </tr> 1940 <tr class="entry_cont"> 1941 <td class="entry_details" colspan="5"> 1942 <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 1943aberration correction modes are available for a device,<wbr/> this list will solely include 1944OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p> 1945<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list 1946OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p> 1947<p>LEGACY devices will always only support FAST mode.<wbr/></p> 1948 </td> 1949 </tr> 1950 1951 <tr class="entries_header"> 1952 <th class="th_details" colspan="5">HAL Implementation Details</th> 1953 </tr> 1954 <tr class="entry_cont"> 1955 <td class="entry_details" colspan="5"> 1956 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available 1957on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1958That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1959capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 1960 </td> 1961 </tr> 1962 1963 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1964 <!-- end of entry --> 1965 1966 1967 1968 <!-- end of kind --> 1969 </tbody> 1970 1971 <!-- end of section --> 1972 <tr><td colspan="6" id="section_control" class="section">control</td></tr> 1973 1974 1975 <tr><td colspan="6" class="kind">controls</td></tr> 1976 1977 <thead class="entries_header"> 1978 <tr> 1979 <th class="th_name">Property Name</th> 1980 <th class="th_type">Type</th> 1981 <th class="th_description">Description</th> 1982 <th class="th_units">Units</th> 1983 <th class="th_range">Range</th> 1984 <th class="th_tags">Tags</th> 1985 </tr> 1986 </thead> 1987 1988 <tbody> 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 2000 <td class="entry_name 2001 " rowspan="5"> 2002 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 2003 </td> 2004 <td class="entry_type"> 2005 <span class="entry_type_name entry_type_name_enum">byte</span> 2006 2007 <span class="entry_type_visibility"> [public]</span> 2008 2009 2010 <span class="entry_type_hwlevel">[legacy] </span> 2011 2012 2013 2014 <ul class="entry_type_enum"> 2015 <li> 2016 <span class="entry_type_enum_name">OFF</span> 2017 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 2018avoid banding problems.<wbr/></p></span> 2019 </li> 2020 <li> 2021 <span class="entry_type_enum_name">50HZ</span> 2022 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2023avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 2024 </li> 2025 <li> 2026 <span class="entry_type_enum_name">60HZ</span> 2027 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2028avoid banding problems with 60Hz illumination 2029sources.<wbr/></p></span> 2030 </li> 2031 <li> 2032 <span class="entry_type_enum_name">AUTO</span> 2033 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 2034antibanding routine to the current illumination 2035condition.<wbr/> This is the default mode if AUTO is 2036available on given camera device.<wbr/></p></span> 2037 </li> 2038 </ul> 2039 2040 </td> <!-- entry_type --> 2041 2042 <td class="entry_description"> 2043 <p>The desired setting for the camera device's auto-exposure 2044algorithm's antibanding compensation.<wbr/></p> 2045 </td> 2046 2047 <td class="entry_units"> 2048 </td> 2049 2050 <td class="entry_range"> 2051 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 2052 </td> 2053 2054 <td class="entry_tags"> 2055 <ul class="entry_tags"> 2056 <li><a href="#tag_BC">BC</a></li> 2057 </ul> 2058 </td> 2059 2060 </tr> 2061 <tr class="entries_header"> 2062 <th class="th_details" colspan="5">Details</th> 2063 </tr> 2064 <tr class="entry_cont"> 2065 <td class="entry_details" colspan="5"> 2066 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 2067lights,<wbr/> flicker at the rate of the power supply frequency 2068(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 2069typically not noticeable to a person,<wbr/> it can be visible to 2070a camera device.<wbr/> If a camera sets its exposure time to the 2071wrong value,<wbr/> the flicker may become visible in the 2072viewfinder as flicker or in a final captured image,<wbr/> as a 2073set of variable-brightness bands across the image.<wbr/></p> 2074<p>Therefore,<wbr/> the auto-exposure routines of camera devices 2075include antibanding routines that ensure that the chosen 2076exposure value will not cause such banding.<wbr/> The choice of 2077exposure time depends on the rate of flicker,<wbr/> which the 2078camera device can detect automatically,<wbr/> or the expected 2079rate can be selected by the application using this 2080control.<wbr/></p> 2081<p>A given camera device may not support all of the possible 2082options for the antibanding mode.<wbr/> The 2083<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 2084the available modes for a given camera device.<wbr/></p> 2085<p>AUTO mode is the default if it is available on given 2086camera device.<wbr/> When AUTO mode is not available,<wbr/> the 2087default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 2088and 60HZ will be available.<wbr/></p> 2089<p>If manual exposure control is enabled (by setting 2090<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/> 2091then this setting has no effect,<wbr/> and the application must 2092ensure it selects exposure times that do not cause banding 2093issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 2094the application in this.<wbr/></p> 2095 </td> 2096 </tr> 2097 2098 <tr class="entries_header"> 2099 <th class="th_details" colspan="5">HAL Implementation Details</th> 2100 </tr> 2101 <tr class="entry_cont"> 2102 <td class="entry_details" colspan="5"> 2103 <p>For all capture request templates,<wbr/> this field must be set 2104to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 2105the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 210660HZ must be available.<wbr/></p> 2107<p>If manual exposure control is enabled (by setting 2108<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/> 2109then the exposure values provided by the application must not be 2110adjusted for antibanding.<wbr/></p> 2111 </td> 2112 </tr> 2113 2114 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2115 <!-- end of entry --> 2116 2117 2118 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 2119 <td class="entry_name 2120 " rowspan="3"> 2121 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 2122 </td> 2123 <td class="entry_type"> 2124 <span class="entry_type_name">int32</span> 2125 2126 <span class="entry_type_visibility"> [public]</span> 2127 2128 2129 <span class="entry_type_hwlevel">[legacy] </span> 2130 2131 2132 2133 2134 </td> <!-- entry_type --> 2135 2136 <td class="entry_description"> 2137 <p>Adjustment to auto-exposure (AE) target image 2138brightness.<wbr/></p> 2139 </td> 2140 2141 <td class="entry_units"> 2142 Compensation steps 2143 </td> 2144 2145 <td class="entry_range"> 2146 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 2147 </td> 2148 2149 <td class="entry_tags"> 2150 <ul class="entry_tags"> 2151 <li><a href="#tag_BC">BC</a></li> 2152 </ul> 2153 </td> 2154 2155 </tr> 2156 <tr class="entries_header"> 2157 <th class="th_details" colspan="5">Details</th> 2158 </tr> 2159 <tr class="entry_cont"> 2160 <td class="entry_details" colspan="5"> 2161 <p>The adjustment is measured as a count of steps,<wbr/> with the 2162step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 2163allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 2164<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 2165will mean an exposure compensation of +2 EV; -3 will mean an 2166exposure compensation of -1 EV.<wbr/> One EV represents a doubling 2167of image brightness.<wbr/> Note that this control will only be 2168effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 2169will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 2170<p>In the event of exposure compensation value being changed,<wbr/> camera device 2171may take several frames to reach the newly requested exposure target.<wbr/> 2172During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 2173state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 2174change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 2175FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 2176 </td> 2177 </tr> 2178 2179 2180 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2181 <!-- end of entry --> 2182 2183 2184 <tr class="entry" id="controls_android.control.aeLock"> 2185 <td class="entry_name 2186 " rowspan="3"> 2187 android.<wbr/>control.<wbr/>ae<wbr/>Lock 2188 </td> 2189 <td class="entry_type"> 2190 <span class="entry_type_name entry_type_name_enum">byte</span> 2191 2192 <span class="entry_type_visibility"> [public as boolean]</span> 2193 2194 2195 <span class="entry_type_hwlevel">[legacy] </span> 2196 2197 2198 2199 <ul class="entry_type_enum"> 2200 <li> 2201 <span class="entry_type_enum_name">OFF</span> 2202 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 2203is free to update its parameters.<wbr/></p></span> 2204 </li> 2205 <li> 2206 <span class="entry_type_enum_name">ON</span> 2207 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 2208must not update the exposure and sensitivity parameters 2209while the lock is active.<wbr/></p> 2210<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 2211will still take effect while auto-exposure is locked.<wbr/></p> 2212<p>Some rare LEGACY devices may not support 2213this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 2214 </li> 2215 </ul> 2216 2217 </td> <!-- entry_type --> 2218 2219 <td class="entry_description"> 2220 <p>Whether auto-exposure (AE) is currently locked to its latest 2221calculated values.<wbr/></p> 2222 </td> 2223 2224 <td class="entry_units"> 2225 </td> 2226 2227 <td class="entry_range"> 2228 </td> 2229 2230 <td class="entry_tags"> 2231 <ul class="entry_tags"> 2232 <li><a href="#tag_BC">BC</a></li> 2233 </ul> 2234 </td> 2235 2236 </tr> 2237 <tr class="entries_header"> 2238 <th class="th_details" colspan="5">Details</th> 2239 </tr> 2240 <tr class="entry_cont"> 2241 <td class="entry_details" colspan="5"> 2242 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 2243and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 2244<p>Note that even when AE is locked,<wbr/> the flash may be fired if 2245the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 2246ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 2247<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 2248is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 2249<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 2250when AE is already locked,<wbr/> the camera device will not change the exposure time 2251(<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>) 2252parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 2253is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 2254<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/> 2255Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 2256<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 2257the AE if AE is locked by the camera device internally during precapture metering 2258sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 2259ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 2260will never succeed in a sequence of preview requests where AE lock is always set 2261to <code>false</code>.<wbr/></p> 2262<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 2263get locked do not necessarily correspond to the settings that were present in the 2264latest capture result received from the camera device,<wbr/> since additional captures 2265and AE updates may have occurred even before the result was sent out.<wbr/> If an 2266application is switching between automatic and manual control and wishes to eliminate 2267any flicker during the switch,<wbr/> the following procedure is recommended:</p> 2268<ol> 2269<li>Starting in auto-AE mode:</li> 2270<li>Lock AE</li> 2271<li>Wait for the first result to be output that has the AE locked</li> 2272<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 2273<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 2274</ol> 2275<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> 2276 </td> 2277 </tr> 2278 2279 2280 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2281 <!-- end of entry --> 2282 2283 2284 <tr class="entry" id="controls_android.control.aeMode"> 2285 <td class="entry_name 2286 " rowspan="3"> 2287 android.<wbr/>control.<wbr/>ae<wbr/>Mode 2288 </td> 2289 <td class="entry_type"> 2290 <span class="entry_type_name entry_type_name_enum">byte</span> 2291 2292 <span class="entry_type_visibility"> [public]</span> 2293 2294 2295 <span class="entry_type_hwlevel">[legacy] </span> 2296 2297 2298 2299 <ul class="entry_type_enum"> 2300 <li> 2301 <span class="entry_type_enum_name">OFF</span> 2302 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 2303<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2304<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 2305<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 2306device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 2307a flash unit for this camera device.<wbr/></p> 2308<p>Note that auto-white balance (AWB) and auto-focus (AF) 2309behavior is device dependent when AE is in OFF mode.<wbr/> 2310To have consistent behavior across different devices,<wbr/> 2311it is recommended to either set AWB and AF to OFF mode 2312or lock AWB and AF before setting AE to OFF.<wbr/> 2313See <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/> 2314<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> 2315for more details.<wbr/></p> 2316<p>LEGACY devices do not support the OFF mode and will 2317override attempts to use this value to ON.<wbr/></p></span> 2318 </li> 2319 <li> 2320 <span class="entry_type_enum_name">ON</span> 2321 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 2322with no flash control.<wbr/></p> 2323<p>The application's values for 2324<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2325<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2326<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 2327application has control over the various 2328android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 2329 </li> 2330 <li> 2331 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 2332 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2333the camera's flash unit,<wbr/> firing it in low-light 2334conditions.<wbr/></p> 2335<p>The flash may be fired during a precapture sequence 2336(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2337may be fired for captures for which the 2338<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2339STILL_<wbr/>CAPTURE</p></span> 2340 </li> 2341 <li> 2342 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 2343 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2344the camera's flash unit,<wbr/> always firing it for still 2345captures.<wbr/></p> 2346<p>The flash may be fired during a precapture sequence 2347(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2348will always be fired for captures for which the 2349<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2350STILL_<wbr/>CAPTURE</p></span> 2351 </li> 2352 <li> 2353 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 2354 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 2355reduction.<wbr/></p> 2356<p>If deemed necessary by the camera device,<wbr/> a red eye 2357reduction flash will fire during the precapture 2358sequence.<wbr/></p></span> 2359 </li> 2360 </ul> 2361 2362 </td> <!-- entry_type --> 2363 2364 <td class="entry_description"> 2365 <p>The desired mode for the camera device's 2366auto-exposure routine.<wbr/></p> 2367 </td> 2368 2369 <td class="entry_units"> 2370 </td> 2371 2372 <td class="entry_range"> 2373 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 2374 </td> 2375 2376 <td class="entry_tags"> 2377 <ul class="entry_tags"> 2378 <li><a href="#tag_BC">BC</a></li> 2379 </ul> 2380 </td> 2381 2382 </tr> 2383 <tr class="entries_header"> 2384 <th class="th_details" colspan="5">Details</th> 2385 </tr> 2386 <tr class="entry_cont"> 2387 <td class="entry_details" colspan="5"> 2388 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 2389AUTO.<wbr/></p> 2390<p>When set to any of the ON modes,<wbr/> the camera device's 2391auto-exposure routine is enabled,<wbr/> overriding the 2392application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 2393and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2394<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2395<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 2396is selected,<wbr/> the camera device's flash unit controls are 2397also overridden.<wbr/></p> 2398<p>The FLASH modes are only available if the camera device 2399has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 2400<p>If flash TORCH mode is desired,<wbr/> this field must be set to 2401ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 2402<p>When set to any of the ON modes,<wbr/> the values chosen by the 2403camera device auto-exposure routine for the overridden 2404fields for a given capture will be available in its 2405CaptureResult.<wbr/></p> 2406 </td> 2407 </tr> 2408 2409 2410 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2411 <!-- end of entry --> 2412 2413 2414 <tr class="entry" id="controls_android.control.aeRegions"> 2415 <td class="entry_name 2416 " rowspan="5"> 2417 android.<wbr/>control.<wbr/>ae<wbr/>Regions 2418 </td> 2419 <td class="entry_type"> 2420 <span class="entry_type_name">int32</span> 2421 <span class="entry_type_container">x</span> 2422 2423 <span class="entry_type_array"> 2424 5 x area_count 2425 </span> 2426 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2427 2428 2429 2430 2431 2432 2433 </td> <!-- entry_type --> 2434 2435 <td class="entry_description"> 2436 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 2437 </td> 2438 2439 <td class="entry_units"> 2440 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2441 </td> 2442 2443 <td class="entry_range"> 2444 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2445<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2446 </td> 2447 2448 <td class="entry_tags"> 2449 <ul class="entry_tags"> 2450 <li><a href="#tag_BC">BC</a></li> 2451 </ul> 2452 </td> 2453 2454 </tr> 2455 <tr class="entries_header"> 2456 <th class="th_details" colspan="5">Details</th> 2457 </tr> 2458 <tr class="entry_cont"> 2459 <td class="entry_details" colspan="5"> 2460 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 2461Otherwise will always be present.<wbr/></p> 2462<p>The maximum number of regions supported by the device is determined by the value 2463of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 2464<p>The coordinate system is based on the active pixel array,<wbr/> 2465with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2466(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2467<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2468bottom-right pixel in the active pixel array.<wbr/></p> 2469<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2470for every pixel in the area.<wbr/> This means that a large metering area 2471with the same weight as a smaller area will have more effect in 2472the metering result.<wbr/> Metering areas can partially overlap and the 2473camera device will add the weights in the overlap region.<wbr/></p> 2474<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 2475region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 2476weight is ignored.<wbr/></p> 2477<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2478camera device.<wbr/></p> 2479<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 2480capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2481region and output only the intersection rectangle as the metering region in the result 2482metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2483not reported in the result metadata.<wbr/></p> 2484 </td> 2485 </tr> 2486 2487 <tr class="entries_header"> 2488 <th class="th_details" colspan="5">HAL Implementation Details</th> 2489 </tr> 2490 <tr class="entry_cont"> 2491 <td class="entry_details" colspan="5"> 2492 <p>The HAL level representation of MeteringRectangle[] is a 2493int[5 * area_<wbr/>count].<wbr/> 2494Every five elements represent a metering region of 2495(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2496The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2497exclusive on xmax and ymax.<wbr/></p> 2498 </td> 2499 </tr> 2500 2501 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2502 <!-- end of entry --> 2503 2504 2505 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 2506 <td class="entry_name 2507 " rowspan="3"> 2508 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 2509 </td> 2510 <td class="entry_type"> 2511 <span class="entry_type_name">int32</span> 2512 <span class="entry_type_container">x</span> 2513 2514 <span class="entry_type_array"> 2515 2 2516 </span> 2517 <span class="entry_type_visibility"> [public as rangeInt]</span> 2518 2519 2520 <span class="entry_type_hwlevel">[legacy] </span> 2521 2522 2523 2524 2525 </td> <!-- entry_type --> 2526 2527 <td class="entry_description"> 2528 <p>Range over which the auto-exposure routine can 2529adjust the capture frame rate to maintain good 2530exposure.<wbr/></p> 2531 </td> 2532 2533 <td class="entry_units"> 2534 Frames per second (FPS) 2535 </td> 2536 2537 <td class="entry_range"> 2538 <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> 2539 </td> 2540 2541 <td class="entry_tags"> 2542 <ul class="entry_tags"> 2543 <li><a href="#tag_BC">BC</a></li> 2544 </ul> 2545 </td> 2546 2547 </tr> 2548 <tr class="entries_header"> 2549 <th class="th_details" colspan="5">Details</th> 2550 </tr> 2551 <tr class="entry_cont"> 2552 <td class="entry_details" colspan="5"> 2553 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 2554manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 2555<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 2556 </td> 2557 </tr> 2558 2559 2560 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2561 <!-- end of entry --> 2562 2563 2564 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 2565 <td class="entry_name 2566 " rowspan="3"> 2567 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 2568 </td> 2569 <td class="entry_type"> 2570 <span class="entry_type_name entry_type_name_enum">byte</span> 2571 2572 <span class="entry_type_visibility"> [public]</span> 2573 2574 2575 <span class="entry_type_hwlevel">[limited] </span> 2576 2577 2578 2579 <ul class="entry_type_enum"> 2580 <li> 2581 <span class="entry_type_enum_name">IDLE</span> 2582 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2583 </li> 2584 <li> 2585 <span class="entry_type_enum_name">START</span> 2586 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 2587by the camera device.<wbr/></p> 2588<p>The exact effect of the precapture trigger depends on 2589the current AE mode and state.<wbr/></p></span> 2590 </li> 2591 <li> 2592 <span class="entry_type_enum_name">CANCEL</span> 2593 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 2594precapture metering sequence,<wbr/> the auto-exposure routine will return to its 2595initial state.<wbr/></p></span> 2596 </li> 2597 </ul> 2598 2599 </td> <!-- entry_type --> 2600 2601 <td class="entry_description"> 2602 <p>Whether the camera device will trigger a precapture 2603metering sequence when it processes this request.<wbr/></p> 2604 </td> 2605 2606 <td class="entry_units"> 2607 </td> 2608 2609 <td class="entry_range"> 2610 </td> 2611 2612 <td class="entry_tags"> 2613 <ul class="entry_tags"> 2614 <li><a href="#tag_BC">BC</a></li> 2615 </ul> 2616 </td> 2617 2618 </tr> 2619 <tr class="entries_header"> 2620 <th class="th_details" colspan="5">Details</th> 2621 </tr> 2622 <tr class="entry_cont"> 2623 <td class="entry_details" colspan="5"> 2624 <p>This entry is normally set to IDLE,<wbr/> or is not 2625included at all in the request settings.<wbr/> When included and 2626set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 2627precapture metering sequence.<wbr/></p> 2628<p>When set to CANCEL,<wbr/> the camera device will cancel any active 2629precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 2630If a precapture metering sequence is already completed,<wbr/> and the camera 2631device has implicitly locked the AE for subsequent still capture,<wbr/> the 2632CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 2633<p>The precapture sequence should be triggered before starting a 2634high-quality still capture for final metering decisions to 2635be made,<wbr/> and for firing pre-capture flash pulses to estimate 2636scene brightness and required final capture flash power,<wbr/> when 2637the flash is enabled.<wbr/></p> 2638<p>Normally,<wbr/> this entry should be set to START for only a 2639single request,<wbr/> and the application should wait until the 2640sequence completes before starting a new one.<wbr/></p> 2641<p>When a precapture metering sequence is finished,<wbr/> the camera device 2642may lock the auto-exposure routine internally to be able to accurately expose the 2643subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 2644For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 2645submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 2646submit 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 2647with <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 2648still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 2649API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 2650internally locked AE if the application doesn't submit a still capture request after 2651the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 2652be used in devices that have earlier API levels.<wbr/></p> 2653<p>The exact effect of auto-exposure (AE) precapture trigger 2654depends on the current AE mode and state; see 2655<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 2656details.<wbr/></p> 2657<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 2658capturing a high-resolution JPEG image will automatically trigger a 2659precapture sequence before the high-resolution capture,<wbr/> including 2660potentially firing a pre-capture flash.<wbr/></p> 2661 </td> 2662 </tr> 2663 2664 2665 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2666 <!-- end of entry --> 2667 2668 2669 <tr class="entry" id="controls_android.control.afMode"> 2670 <td class="entry_name 2671 " rowspan="5"> 2672 android.<wbr/>control.<wbr/>af<wbr/>Mode 2673 </td> 2674 <td class="entry_type"> 2675 <span class="entry_type_name entry_type_name_enum">byte</span> 2676 2677 <span class="entry_type_visibility"> [public]</span> 2678 2679 2680 <span class="entry_type_hwlevel">[legacy] </span> 2681 2682 2683 2684 <ul class="entry_type_enum"> 2685 <li> 2686 <span class="entry_type_enum_name">OFF</span> 2687 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 2688<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 2689application.<wbr/></p></span> 2690 </li> 2691 <li> 2692 <span class="entry_type_enum_name">AUTO</span> 2693 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 2694<p>In this mode,<wbr/> the lens does not move unless 2695the autofocus trigger action is called.<wbr/> When that trigger 2696is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2697the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 2698<p>Always supported if lens is not fixed focus.<wbr/></p> 2699<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 2700is fixed-focus.<wbr/></p> 2701<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 2702and sets the AF state to INACTIVE.<wbr/></p></span> 2703 </li> 2704 <li> 2705 <span class="entry_type_enum_name">MACRO</span> 2706 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 2707<p>In this mode,<wbr/> the lens does not move unless the 2708autofocus trigger action is called.<wbr/> When that trigger is 2709activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2710the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 2711mode is optimized for focusing on objects very close to 2712the camera.<wbr/></p> 2713<p>When that trigger is activated,<wbr/> AF will transition to 2714ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 2715NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 2716position to default,<wbr/> and sets the AF state to 2717INACTIVE.<wbr/></p></span> 2718 </li> 2719 <li> 2720 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 2721 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2722position continually to attempt to provide a 2723constantly-in-focus image stream.<wbr/></p> 2724<p>The focusing behavior should be suitable for good quality 2725video recording; typically this means slower focus 2726movement and no overshoots.<wbr/> When the AF trigger is not 2727involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 2728and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 2729states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 2730the algorithm should immediately transition into 2731AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2732lens position until a cancel AF trigger is received.<wbr/></p> 2733<p>Once cancel is received,<wbr/> the algorithm should transition 2734back to INACTIVE and resume passive scan.<wbr/> Note that this 2735behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 2736ongoing PASSIVE_<wbr/>SCAN must immediately be 2737canceled.<wbr/></p></span> 2738 </li> 2739 <li> 2740 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 2741 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2742position continually to attempt to provide a 2743constantly-in-focus image stream.<wbr/></p> 2744<p>The focusing behavior should be suitable for still image 2745capture; typically this means focusing as fast as 2746possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 2747algorithm should start in INACTIVE state,<wbr/> and then 2748transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 2749appropriate as it attempts to maintain focus.<wbr/> When the AF 2750trigger is activated,<wbr/> the algorithm should finish its 2751PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 2752AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2753lens position until a cancel AF trigger is received.<wbr/></p> 2754<p>When the AF cancel trigger is activated,<wbr/> the algorithm 2755should transition back to INACTIVE and then act as if it 2756has just been started.<wbr/></p></span> 2757 </li> 2758 <li> 2759 <span class="entry_type_enum_name">EDOF</span> 2760 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 2761<p>The camera device will produce images with an extended 2762depth of field automatically; no special focusing 2763operations need to be done before taking a picture.<wbr/></p> 2764<p>AF triggers are ignored,<wbr/> and the AF state will always be 2765INACTIVE.<wbr/></p></span> 2766 </li> 2767 </ul> 2768 2769 </td> <!-- entry_type --> 2770 2771 <td class="entry_description"> 2772 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 2773mode it is set to.<wbr/></p> 2774 </td> 2775 2776 <td class="entry_units"> 2777 </td> 2778 2779 <td class="entry_range"> 2780 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 2781 </td> 2782 2783 <td class="entry_tags"> 2784 <ul class="entry_tags"> 2785 <li><a href="#tag_BC">BC</a></li> 2786 </ul> 2787 </td> 2788 2789 </tr> 2790 <tr class="entries_header"> 2791 <th class="th_details" colspan="5">Details</th> 2792 </tr> 2793 <tr class="entry_cont"> 2794 <td class="entry_details" colspan="5"> 2795 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 2796(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 2797when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 2798dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 2799setting <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> 2800<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 2801the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 2802in result metadata.<wbr/></p> 2803 </td> 2804 </tr> 2805 2806 <tr class="entries_header"> 2807 <th class="th_details" colspan="5">HAL Implementation Details</th> 2808 </tr> 2809 <tr class="entry_cont"> 2810 <td class="entry_details" colspan="5"> 2811 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 2812request (<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 2813up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 2814<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 2815locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 2816after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 2817the same focal plane remains in focus.<wbr/></p> 2818<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 2819scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 2820(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 2821same lock behavior as above.<wbr/></p> 2822<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 2823focus 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/> 2824However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 2825manual control.<wbr/></p> 2826<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 2827camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 2828remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 2829by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 2830that will arise on camera modules with open-loop VCMs.<wbr/></p> 2831 </td> 2832 </tr> 2833 2834 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2835 <!-- end of entry --> 2836 2837 2838 <tr class="entry" id="controls_android.control.afRegions"> 2839 <td class="entry_name 2840 " rowspan="5"> 2841 android.<wbr/>control.<wbr/>af<wbr/>Regions 2842 </td> 2843 <td class="entry_type"> 2844 <span class="entry_type_name">int32</span> 2845 <span class="entry_type_container">x</span> 2846 2847 <span class="entry_type_array"> 2848 5 x area_count 2849 </span> 2850 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2851 2852 2853 2854 2855 2856 2857 </td> <!-- entry_type --> 2858 2859 <td class="entry_description"> 2860 <p>List of metering areas to use for auto-focus.<wbr/></p> 2861 </td> 2862 2863 <td class="entry_units"> 2864 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2865 </td> 2866 2867 <td class="entry_range"> 2868 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2869<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2870 </td> 2871 2872 <td class="entry_tags"> 2873 <ul class="entry_tags"> 2874 <li><a href="#tag_BC">BC</a></li> 2875 </ul> 2876 </td> 2877 2878 </tr> 2879 <tr class="entries_header"> 2880 <th class="th_details" colspan="5">Details</th> 2881 </tr> 2882 <tr class="entry_cont"> 2883 <td class="entry_details" colspan="5"> 2884 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 2885Otherwise will always be present.<wbr/></p> 2886<p>The maximum number of focus areas supported by the device is determined by the value 2887of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 2888<p>The coordinate system is based on the active pixel array,<wbr/> 2889with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2890(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2891<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2892bottom-right pixel in the active pixel array.<wbr/></p> 2893<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2894for every pixel in the area.<wbr/> This means that a large metering area 2895with the same weight as a smaller area will have more effect in 2896the metering result.<wbr/> Metering areas can partially overlap and the 2897camera device will add the weights in the overlap region.<wbr/></p> 2898<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 2899is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 2900ignored.<wbr/></p> 2901<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2902camera device.<wbr/></p> 2903<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 2904capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2905region and output only the intersection rectangle as the metering region in the result 2906metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2907not reported in the result metadata.<wbr/></p> 2908 </td> 2909 </tr> 2910 2911 <tr class="entries_header"> 2912 <th class="th_details" colspan="5">HAL Implementation Details</th> 2913 </tr> 2914 <tr class="entry_cont"> 2915 <td class="entry_details" colspan="5"> 2916 <p>The HAL level representation of MeteringRectangle[] is a 2917int[5 * area_<wbr/>count].<wbr/> 2918Every five elements represent a metering region of 2919(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2920The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2921exclusive on xmax and ymax.<wbr/></p> 2922 </td> 2923 </tr> 2924 2925 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2926 <!-- end of entry --> 2927 2928 2929 <tr class="entry" id="controls_android.control.afTrigger"> 2930 <td class="entry_name 2931 " rowspan="3"> 2932 android.<wbr/>control.<wbr/>af<wbr/>Trigger 2933 </td> 2934 <td class="entry_type"> 2935 <span class="entry_type_name entry_type_name_enum">byte</span> 2936 2937 <span class="entry_type_visibility"> [public]</span> 2938 2939 2940 <span class="entry_type_hwlevel">[legacy] </span> 2941 2942 2943 2944 <ul class="entry_type_enum"> 2945 <li> 2946 <span class="entry_type_enum_name">IDLE</span> 2947 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2948 </li> 2949 <li> 2950 <span class="entry_type_enum_name">START</span> 2951 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 2952 </li> 2953 <li> 2954 <span class="entry_type_enum_name">CANCEL</span> 2955 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 2956state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 2957 </li> 2958 </ul> 2959 2960 </td> <!-- entry_type --> 2961 2962 <td class="entry_description"> 2963 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 2964 </td> 2965 2966 <td class="entry_units"> 2967 </td> 2968 2969 <td class="entry_range"> 2970 </td> 2971 2972 <td class="entry_tags"> 2973 <ul class="entry_tags"> 2974 <li><a href="#tag_BC">BC</a></li> 2975 </ul> 2976 </td> 2977 2978 </tr> 2979 <tr class="entries_header"> 2980 <th class="th_details" colspan="5">Details</th> 2981 </tr> 2982 <tr class="entry_cont"> 2983 <td class="entry_details" colspan="5"> 2984 <p>This entry is normally set to IDLE,<wbr/> or is not 2985included at all in the request settings.<wbr/></p> 2986<p>When included and set to START,<wbr/> the camera device will trigger the 2987autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 2988<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 2989and return to its initial AF state.<wbr/></p> 2990<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 2991single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 2992START for multiple captures in a row means restarting the AF operation over 2993and over again.<wbr/></p> 2994<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> 2995 </td> 2996 </tr> 2997 2998 2999 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3000 <!-- end of entry --> 3001 3002 3003 <tr class="entry" id="controls_android.control.awbLock"> 3004 <td class="entry_name 3005 " rowspan="3"> 3006 android.<wbr/>control.<wbr/>awb<wbr/>Lock 3007 </td> 3008 <td class="entry_type"> 3009 <span class="entry_type_name entry_type_name_enum">byte</span> 3010 3011 <span class="entry_type_visibility"> [public as boolean]</span> 3012 3013 3014 <span class="entry_type_hwlevel">[legacy] </span> 3015 3016 3017 3018 <ul class="entry_type_enum"> 3019 <li> 3020 <span class="entry_type_enum_name">OFF</span> 3021 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 3022algorithm is free to update its parameters if in AUTO 3023mode.<wbr/></p></span> 3024 </li> 3025 <li> 3026 <span class="entry_type_enum_name">ON</span> 3027 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 3028algorithm will not update its parameters while the lock 3029is active.<wbr/></p></span> 3030 </li> 3031 </ul> 3032 3033 </td> <!-- entry_type --> 3034 3035 <td class="entry_description"> 3036 <p>Whether auto-white balance (AWB) is currently locked to its 3037latest calculated values.<wbr/></p> 3038 </td> 3039 3040 <td class="entry_units"> 3041 </td> 3042 3043 <td class="entry_range"> 3044 </td> 3045 3046 <td class="entry_tags"> 3047 <ul class="entry_tags"> 3048 <li><a href="#tag_BC">BC</a></li> 3049 </ul> 3050 </td> 3051 3052 </tr> 3053 <tr class="entries_header"> 3054 <th class="th_details" colspan="5">Details</th> 3055 </tr> 3056 <tr class="entry_cont"> 3057 <td class="entry_details" colspan="5"> 3058 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 3059and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 3060<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 3061get locked do not necessarily correspond to the settings that were present in the 3062latest capture result received from the camera device,<wbr/> since additional captures 3063and AWB updates may have occurred even before the result was sent out.<wbr/> If an 3064application is switching between automatic and manual control and wishes to eliminate 3065any flicker during the switch,<wbr/> the following procedure is recommended:</p> 3066<ol> 3067<li>Starting in auto-AWB mode:</li> 3068<li>Lock AWB</li> 3069<li>Wait for the first result to be output that has the AWB locked</li> 3070<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 3071<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 3072</ol> 3073<p>Note that AWB lock is only meaningful when 3074<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 3075AWB is already fixed to a specific setting.<wbr/></p> 3076<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 3077 </td> 3078 </tr> 3079 3080 3081 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3082 <!-- end of entry --> 3083 3084 3085 <tr class="entry" id="controls_android.control.awbMode"> 3086 <td class="entry_name 3087 " rowspan="3"> 3088 android.<wbr/>control.<wbr/>awb<wbr/>Mode 3089 </td> 3090 <td class="entry_type"> 3091 <span class="entry_type_name entry_type_name_enum">byte</span> 3092 3093 <span class="entry_type_visibility"> [public]</span> 3094 3095 3096 <span class="entry_type_hwlevel">[legacy] </span> 3097 3098 3099 3100 <ul class="entry_type_enum"> 3101 <li> 3102 <span class="entry_type_enum_name">OFF</span> 3103 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 3104<p>The application-selected color transform matrix 3105(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 3106(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 3107device for manual white balance control.<wbr/></p></span> 3108 </li> 3109 <li> 3110 <span class="entry_type_enum_name">AUTO</span> 3111 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 3112<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3113and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3114For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3115values used by the camera device for the transform and gains 3116will be available in the capture result for this request.<wbr/></p></span> 3117 </li> 3118 <li> 3119 <span class="entry_type_enum_name">INCANDESCENT</span> 3120 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3121the camera device uses incandescent light as the assumed scene 3122illumination for white balance.<wbr/></p> 3123<p>While the exact white balance transforms are up to the 3124camera device,<wbr/> they will approximately match the CIE 3125standard illuminant A.<wbr/></p> 3126<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3127and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3128For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3129values used by the camera device for the transform and gains 3130will be available in the capture result for this request.<wbr/></p></span> 3131 </li> 3132 <li> 3133 <span class="entry_type_enum_name">FLUORESCENT</span> 3134 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3135the camera device uses fluorescent light as the assumed scene 3136illumination for white balance.<wbr/></p> 3137<p>While the exact white balance transforms are up to the 3138camera device,<wbr/> they will approximately match the CIE 3139standard illuminant F2.<wbr/></p> 3140<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3141and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3142For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3143values used by the camera device for the transform and gains 3144will be available in the capture result for this request.<wbr/></p></span> 3145 </li> 3146 <li> 3147 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 3148 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3149the camera device uses warm fluorescent light as the assumed scene 3150illumination for white balance.<wbr/></p> 3151<p>While the exact white balance transforms are up to the 3152camera device,<wbr/> they will approximately match the CIE 3153standard illuminant F4.<wbr/></p> 3154<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3155and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3156For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3157values used by the camera device for the transform and gains 3158will be available in the capture result for this request.<wbr/></p></span> 3159 </li> 3160 <li> 3161 <span class="entry_type_enum_name">DAYLIGHT</span> 3162 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3163the camera device uses daylight light as the assumed scene 3164illumination for white balance.<wbr/></p> 3165<p>While the exact white balance transforms are up to the 3166camera device,<wbr/> they will approximately match the CIE 3167standard illuminant D65.<wbr/></p> 3168<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3169and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3170For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3171values used by the camera device for the transform and gains 3172will be available in the capture result for this request.<wbr/></p></span> 3173 </li> 3174 <li> 3175 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 3176 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3177the camera device uses cloudy daylight light as the assumed scene 3178illumination for white balance.<wbr/></p> 3179<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3180and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3181For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3182values used by the camera device for the transform and gains 3183will be available in the capture result for this request.<wbr/></p></span> 3184 </li> 3185 <li> 3186 <span class="entry_type_enum_name">TWILIGHT</span> 3187 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3188the camera device uses twilight light as the assumed scene 3189illumination for white balance.<wbr/></p> 3190<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3191and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3192For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3193values used by the camera device for the transform and gains 3194will be available in the capture result for this request.<wbr/></p></span> 3195 </li> 3196 <li> 3197 <span class="entry_type_enum_name">SHADE</span> 3198 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3199the camera device uses shade light as the assumed scene 3200illumination for white balance.<wbr/></p> 3201<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3202and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3203For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3204values used by the camera device for the transform and gains 3205will be available in the capture result for this request.<wbr/></p></span> 3206 </li> 3207 </ul> 3208 3209 </td> <!-- entry_type --> 3210 3211 <td class="entry_description"> 3212 <p>Whether auto-white balance (AWB) is currently setting the color 3213transform fields,<wbr/> and what its illumination target 3214is.<wbr/></p> 3215 </td> 3216 3217 <td class="entry_units"> 3218 </td> 3219 3220 <td class="entry_range"> 3221 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 3222 </td> 3223 3224 <td class="entry_tags"> 3225 <ul class="entry_tags"> 3226 <li><a href="#tag_BC">BC</a></li> 3227 </ul> 3228 </td> 3229 3230 </tr> 3231 <tr class="entries_header"> 3232 <th class="th_details" colspan="5">Details</th> 3233 </tr> 3234 <tr class="entry_cont"> 3235 <td class="entry_details" colspan="5"> 3236 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 3237<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 3238routine is enabled,<wbr/> overriding the application's selected 3239<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 3240<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> 3241is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 3242also 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 3243setting AE mode to OFF.<wbr/></p> 3244<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 3245routine is disabled.<wbr/> The application manually controls the white 3246balance 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> 3247and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 3248<p>When set to any other modes,<wbr/> the camera device's auto-white 3249balance routine is disabled.<wbr/> The camera device uses each 3250particular illumination target for white balance 3251adjustment.<wbr/> The application's values for 3252<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 3253<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 3254<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 3255 </td> 3256 </tr> 3257 3258 3259 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3260 <!-- end of entry --> 3261 3262 3263 <tr class="entry" id="controls_android.control.awbRegions"> 3264 <td class="entry_name 3265 " rowspan="5"> 3266 android.<wbr/>control.<wbr/>awb<wbr/>Regions 3267 </td> 3268 <td class="entry_type"> 3269 <span class="entry_type_name">int32</span> 3270 <span class="entry_type_container">x</span> 3271 3272 <span class="entry_type_array"> 3273 5 x area_count 3274 </span> 3275 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3276 3277 3278 3279 3280 3281 3282 </td> <!-- entry_type --> 3283 3284 <td class="entry_description"> 3285 <p>List of metering areas to use for auto-white-balance illuminant 3286estimation.<wbr/></p> 3287 </td> 3288 3289 <td class="entry_units"> 3290 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 3291 </td> 3292 3293 <td class="entry_range"> 3294 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3295<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 3296 </td> 3297 3298 <td class="entry_tags"> 3299 <ul class="entry_tags"> 3300 <li><a href="#tag_BC">BC</a></li> 3301 </ul> 3302 </td> 3303 3304 </tr> 3305 <tr class="entries_header"> 3306 <th class="th_details" colspan="5">Details</th> 3307 </tr> 3308 <tr class="entry_cont"> 3309 <td class="entry_details" colspan="5"> 3310 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 3311Otherwise will always be present.<wbr/></p> 3312<p>The maximum number of regions supported by the device is determined by the value 3313of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 3314<p>The coordinate system is based on the active pixel array,<wbr/> 3315with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 3316(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3317<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 3318bottom-right pixel in the active pixel array.<wbr/></p> 3319<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 3320for every pixel in the area.<wbr/> This means that a large metering area 3321with the same weight as a smaller area will have more effect in 3322the metering result.<wbr/> Metering areas can partially overlap and the 3323camera device will add the weights in the overlap region.<wbr/></p> 3324<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 3325only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 33260 weight is ignored.<wbr/></p> 3327<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3328camera device.<wbr/></p> 3329<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 3330capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3331region and output only the intersection rectangle as the metering region in the result 3332metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3333not reported in the result metadata.<wbr/></p> 3334 </td> 3335 </tr> 3336 3337 <tr class="entries_header"> 3338 <th class="th_details" colspan="5">HAL Implementation Details</th> 3339 </tr> 3340 <tr class="entry_cont"> 3341 <td class="entry_details" colspan="5"> 3342 <p>The HAL level representation of MeteringRectangle[] is a 3343int[5 * area_<wbr/>count].<wbr/> 3344Every five elements represent a metering region of 3345(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3346The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3347exclusive on xmax and ymax.<wbr/></p> 3348 </td> 3349 </tr> 3350 3351 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3352 <!-- end of entry --> 3353 3354 3355 <tr class="entry" id="controls_android.control.captureIntent"> 3356 <td class="entry_name 3357 " rowspan="3"> 3358 android.<wbr/>control.<wbr/>capture<wbr/>Intent 3359 </td> 3360 <td class="entry_type"> 3361 <span class="entry_type_name entry_type_name_enum">byte</span> 3362 3363 <span class="entry_type_visibility"> [public]</span> 3364 3365 3366 <span class="entry_type_hwlevel">[legacy] </span> 3367 3368 3369 3370 <ul class="entry_type_enum"> 3371 <li> 3372 <span class="entry_type_enum_name">CUSTOM</span> 3373 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 3374categories.<wbr/> The camera device will default to preview-like 3375behavior.<wbr/></p></span> 3376 </li> 3377 <li> 3378 <span class="entry_type_enum_name">PREVIEW</span> 3379 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 3380<p>The precapture trigger may be used to start off a metering 3381w/<wbr/>flash sequence.<wbr/></p></span> 3382 </li> 3383 <li> 3384 <span class="entry_type_enum_name">STILL_CAPTURE</span> 3385 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 3386use case.<wbr/></p> 3387<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 3388 </li> 3389 <li> 3390 <span class="entry_type_enum_name">VIDEO_RECORD</span> 3391 <span class="entry_type_enum_notes"><p>This request is for a video recording 3392use case.<wbr/></p></span> 3393 </li> 3394 <li> 3395 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 3396 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 3397image while recording video) use case.<wbr/></p> 3398<p>The camera device should take the highest-quality image 3399possible (given the other settings) without disrupting the 3400frame rate of video recording.<wbr/> </p></span> 3401 </li> 3402 <li> 3403 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 3404 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 3405application will stream full-resolution images and 3406reprocess one or several later for a final 3407capture.<wbr/></p></span> 3408 </li> 3409 <li> 3410 <span class="entry_type_enum_name">MANUAL</span> 3411 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 3412the applications want to directly control the capture parameters.<wbr/></p> 3413<p>For example,<wbr/> the application may wish to manually control 3414<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> 3415 </li> 3416 </ul> 3417 3418 </td> <!-- entry_type --> 3419 3420 <td class="entry_description"> 3421 <p>Information to the camera device 3A (auto-exposure,<wbr/> 3422auto-focus,<wbr/> auto-white balance) routines about the purpose 3423of this capture,<wbr/> to help the camera device to decide optimal 3A 3424strategy.<wbr/></p> 3425 </td> 3426 3427 <td class="entry_units"> 3428 </td> 3429 3430 <td class="entry_range"> 3431 </td> 3432 3433 <td class="entry_tags"> 3434 <ul class="entry_tags"> 3435 <li><a href="#tag_BC">BC</a></li> 3436 </ul> 3437 </td> 3438 3439 </tr> 3440 <tr class="entries_header"> 3441 <th class="th_details" colspan="5">Details</th> 3442 </tr> 3443 <tr class="entry_cont"> 3444 <td class="entry_details" colspan="5"> 3445 <p>This control (except for MANUAL) is only effective if 3446<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 3447<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 3448contains OPAQUE_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 3449contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are always supported.<wbr/></p> 3450 </td> 3451 </tr> 3452 3453 3454 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3455 <!-- end of entry --> 3456 3457 3458 <tr class="entry" id="controls_android.control.effectMode"> 3459 <td class="entry_name 3460 " rowspan="3"> 3461 android.<wbr/>control.<wbr/>effect<wbr/>Mode 3462 </td> 3463 <td class="entry_type"> 3464 <span class="entry_type_name entry_type_name_enum">byte</span> 3465 3466 <span class="entry_type_visibility"> [public]</span> 3467 3468 3469 <span class="entry_type_hwlevel">[legacy] </span> 3470 3471 3472 3473 <ul class="entry_type_enum"> 3474 <li> 3475 <span class="entry_type_enum_name">OFF</span> 3476 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 3477 </li> 3478 <li> 3479 <span class="entry_type_enum_name">MONO</span> 3480 <span class="entry_type_enum_optional">[optional]</span> 3481 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 3482a single color.<wbr/></p> 3483<p>This will typically be grayscale.<wbr/></p></span> 3484 </li> 3485 <li> 3486 <span class="entry_type_enum_name">NEGATIVE</span> 3487 <span class="entry_type_enum_optional">[optional]</span> 3488 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 3489are inverted.<wbr/></p></span> 3490 </li> 3491 <li> 3492 <span class="entry_type_enum_name">SOLARIZE</span> 3493 <span class="entry_type_enum_optional">[optional]</span> 3494 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 3495image is wholly or partially reversed in 3496tone.<wbr/></p></span> 3497 </li> 3498 <li> 3499 <span class="entry_type_enum_name">SEPIA</span> 3500 <span class="entry_type_enum_optional">[optional]</span> 3501 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 3502gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 3503 </li> 3504 <li> 3505 <span class="entry_type_enum_name">POSTERIZE</span> 3506 <span class="entry_type_enum_optional">[optional]</span> 3507 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 3508discrete regions of tone rather than a continuous 3509gradient of tones.<wbr/></p></span> 3510 </li> 3511 <li> 3512 <span class="entry_type_enum_name">WHITEBOARD</span> 3513 <span class="entry_type_enum_optional">[optional]</span> 3514 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 3515as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 3516 </li> 3517 <li> 3518 <span class="entry_type_enum_name">BLACKBOARD</span> 3519 <span class="entry_type_enum_optional">[optional]</span> 3520 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 3521as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 3522 </li> 3523 <li> 3524 <span class="entry_type_enum_name">AQUA</span> 3525 <span class="entry_type_enum_optional">[optional]</span> 3526 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 3527 </li> 3528 </ul> 3529 3530 </td> <!-- entry_type --> 3531 3532 <td class="entry_description"> 3533 <p>A special color effect to apply.<wbr/></p> 3534 </td> 3535 3536 <td class="entry_units"> 3537 </td> 3538 3539 <td class="entry_range"> 3540 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></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="5">Details</th> 3552 </tr> 3553 <tr class="entry_cont"> 3554 <td class="entry_details" colspan="5"> 3555 <p>When this mode is set,<wbr/> a color effect will be applied 3556to images produced by the camera device.<wbr/> The interpretation 3557and implementation of these color effects is left to the 3558implementor of the camera device,<wbr/> and should not be 3559depended on to be consistent (or present) across all 3560devices.<wbr/></p> 3561 </td> 3562 </tr> 3563 3564 3565 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3566 <!-- end of entry --> 3567 3568 3569 <tr class="entry" id="controls_android.control.mode"> 3570 <td class="entry_name 3571 " rowspan="3"> 3572 android.<wbr/>control.<wbr/>mode 3573 </td> 3574 <td class="entry_type"> 3575 <span class="entry_type_name entry_type_name_enum">byte</span> 3576 3577 <span class="entry_type_visibility"> [public]</span> 3578 3579 3580 <span class="entry_type_hwlevel">[legacy] </span> 3581 3582 3583 3584 <ul class="entry_type_enum"> 3585 <li> 3586 <span class="entry_type_enum_name">OFF</span> 3587 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 3588<p>All control by the device's metering and focusing (3A) 3589routines is disabled,<wbr/> and no other settings in 3590android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 3591<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 3592device to select post-processing values for processing 3593blocks that do not allow for manual control,<wbr/> or are not 3594exposed by the camera API.<wbr/></p> 3595<p>However,<wbr/> the camera device's 3A routines may continue to 3596collect statistics and update their internal state so that 3597when control is switched to AUTO mode,<wbr/> good control values 3598can be immediately applied.<wbr/></p></span> 3599 </li> 3600 <li> 3601 <span class="entry_type_enum_name">AUTO</span> 3602 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 3603<p>Manual control of capture parameters is disabled.<wbr/> All 3604controls in android.<wbr/>control.<wbr/>* besides sceneMode take 3605effect.<wbr/></p></span> 3606 </li> 3607 <li> 3608 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 3609 <span class="entry_type_enum_optional">[optional]</span> 3610 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 3611<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 3612control.<wbr/>afMode controls; the camera device will ignore 3613those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 3614FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still 3615active.<wbr/> This setting can only be used if scene mode is 3616supported (i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 3617contain some modes other than DISABLED).<wbr/></p></span> 3618 </li> 3619 <li> 3620 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 3621 <span class="entry_type_enum_optional">[optional]</span> 3622 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 3623used by camera device background auto-exposure,<wbr/> auto-white balance and 3624auto-focus algorithms (3A) to update their statistics.<wbr/></p> 3625<p>Specifically,<wbr/> the 3A routines are locked to the last 3626values set from a request with AUTO,<wbr/> OFF,<wbr/> or 3627USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 3628collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 3629discarded by the camera device.<wbr/></p></span> 3630 </li> 3631 </ul> 3632 3633 </td> <!-- entry_type --> 3634 3635 <td class="entry_description"> 3636 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 3637routines.<wbr/></p> 3638 </td> 3639 3640 <td class="entry_units"> 3641 </td> 3642 3643 <td class="entry_range"> 3644 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 3645 </td> 3646 3647 <td class="entry_tags"> 3648 <ul class="entry_tags"> 3649 <li><a href="#tag_BC">BC</a></li> 3650 </ul> 3651 </td> 3652 3653 </tr> 3654 <tr class="entries_header"> 3655 <th class="th_details" colspan="5">Details</th> 3656 </tr> 3657 <tr class="entry_cont"> 3658 <td class="entry_details" colspan="5"> 3659 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 3660by the camera device is disabled.<wbr/> The application must set the fields for 3661capture parameters itself.<wbr/></p> 3662<p>When set to AUTO,<wbr/> the individual algorithm controls in 3663android.<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> 3664<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 3665android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 3666one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 3667as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 3668<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 3669<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 3670is that this frame will not be used by camera device background 3A statistics 3671update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 3672where the application doesn't want a 3A manual control capture to affect 3673the subsequent auto 3A capture results.<wbr/></p> 3674 </td> 3675 </tr> 3676 3677 3678 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3679 <!-- end of entry --> 3680 3681 3682 <tr class="entry" id="controls_android.control.sceneMode"> 3683 <td class="entry_name 3684 " rowspan="5"> 3685 android.<wbr/>control.<wbr/>scene<wbr/>Mode 3686 </td> 3687 <td class="entry_type"> 3688 <span class="entry_type_name entry_type_name_enum">byte</span> 3689 3690 <span class="entry_type_visibility"> [public]</span> 3691 3692 3693 <span class="entry_type_hwlevel">[legacy] </span> 3694 3695 3696 3697 <ul class="entry_type_enum"> 3698 <li> 3699 <span class="entry_type_enum_name">DISABLED</span> 3700 <span class="entry_type_enum_value">0</span> 3701 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 3702 </li> 3703 <li> 3704 <span class="entry_type_enum_name">FACE_PRIORITY</span> 3705 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 3706detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 3707auto-exposure routines.<wbr/></p> 3708<p>If face detection statistics are disabled 3709(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/> 3710this should still operate correctly (but will not return 3711face detection statistics to the framework).<wbr/></p> 3712<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3713<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> 3714remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 3715 </li> 3716 <li> 3717 <span class="entry_type_enum_name">ACTION</span> 3718 <span class="entry_type_enum_optional">[optional]</span> 3719 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 3720<p>Similar to SPORTS.<wbr/></p></span> 3721 </li> 3722 <li> 3723 <span class="entry_type_enum_name">PORTRAIT</span> 3724 <span class="entry_type_enum_optional">[optional]</span> 3725 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 3726 </li> 3727 <li> 3728 <span class="entry_type_enum_name">LANDSCAPE</span> 3729 <span class="entry_type_enum_optional">[optional]</span> 3730 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 3731 </li> 3732 <li> 3733 <span class="entry_type_enum_name">NIGHT</span> 3734 <span class="entry_type_enum_optional">[optional]</span> 3735 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 3736 </li> 3737 <li> 3738 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 3739 <span class="entry_type_enum_optional">[optional]</span> 3740 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 3741settings.<wbr/></p></span> 3742 </li> 3743 <li> 3744 <span class="entry_type_enum_name">THEATRE</span> 3745 <span class="entry_type_enum_optional">[optional]</span> 3746 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 3747remain off.<wbr/></p></span> 3748 </li> 3749 <li> 3750 <span class="entry_type_enum_name">BEACH</span> 3751 <span class="entry_type_enum_optional">[optional]</span> 3752 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 3753 </li> 3754 <li> 3755 <span class="entry_type_enum_name">SNOW</span> 3756 <span class="entry_type_enum_optional">[optional]</span> 3757 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 3758 </li> 3759 <li> 3760 <span class="entry_type_enum_name">SUNSET</span> 3761 <span class="entry_type_enum_optional">[optional]</span> 3762 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 3763 </li> 3764 <li> 3765 <span class="entry_type_enum_name">STEADYPHOTO</span> 3766 <span class="entry_type_enum_optional">[optional]</span> 3767 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 3768device motion (for example: due to hand shake).<wbr/></p></span> 3769 </li> 3770 <li> 3771 <span class="entry_type_enum_name">FIREWORKS</span> 3772 <span class="entry_type_enum_optional">[optional]</span> 3773 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 3774 </li> 3775 <li> 3776 <span class="entry_type_enum_name">SPORTS</span> 3777 <span class="entry_type_enum_optional">[optional]</span> 3778 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 3779<p>Similar to ACTION.<wbr/></p></span> 3780 </li> 3781 <li> 3782 <span class="entry_type_enum_name">PARTY</span> 3783 <span class="entry_type_enum_optional">[optional]</span> 3784 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 3785people.<wbr/></p></span> 3786 </li> 3787 <li> 3788 <span class="entry_type_enum_name">CANDLELIGHT</span> 3789 <span class="entry_type_enum_optional">[optional]</span> 3790 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 3791is a flame.<wbr/></p></span> 3792 </li> 3793 <li> 3794 <span class="entry_type_enum_name">BARCODE</span> 3795 <span class="entry_type_enum_optional">[optional]</span> 3796 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 3797for use by camera applications that wish to read the 3798barcode value.<wbr/></p></span> 3799 </li> 3800 <li> 3801 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 3802 <span class="entry_type_enum_optional">[optional]</span> 3803 <span class="entry_type_enum_notes"><p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 3804<p>The supported high speed video sizes and fps ranges are specified in 3805<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 3806output frame rates,<wbr/> the application is only allowed to select video size 3807and fps range combinations listed in this static metadata.<wbr/> The fps range 3808can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 3809<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 3810ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 3811controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 3812and post-processing parameters is possible.<wbr/> All other controls operate the 3813same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 3814android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 3815<ul> 3816<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 3817<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 3818<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 3819<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 3820<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 3821<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 3822<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 3823<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 3824<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 3825<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 3826</ul> 3827<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 3828<ul> 3829<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> 3830<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 3831<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 3832<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 3833</ul> 3834<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 3835be lower than what camera can output,<wbr/> depending on the destination Surfaces for 3836the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 3837the application need check if the video encoder is capable of supporting the 3838high frame rate for a given video size,<wbr/> or it will end up with lower recording 3839frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 3840rate will be bounded by the screen refresh rate.<wbr/></p> 3841<p>The camera device will only support up to 2 output high speed streams 3842(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 3843in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 3844<ul> 3845<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 3846format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 3847min(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> 3848<li>The stream sizes are selected from the sizes reported by 3849<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 3850<li>No processed non-stalling or raw streams are configured.<wbr/></li> 3851</ul> 3852<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 3853<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/> 3854the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 3855and the returned capture result metadata will give the fps range choosen 3856by the camera device.<wbr/></p> 3857<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 3858reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 3859the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 3860 </li> 3861 <li> 3862 <span class="entry_type_enum_name">HDR</span> 3863 <span class="entry_type_enum_optional">[optional]</span> 3864 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 3865<p>In this scene mode,<wbr/> the camera device captures images 3866that keep a larger range of scene illumination levels 3867visible in the final image.<wbr/> For example,<wbr/> when taking a 3868picture of a object in front of a bright window,<wbr/> both 3869the object and the scene through the window may be 3870visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 3871one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 3872HDR mode generally takes much longer to capture a single 3873image,<wbr/> has no user control,<wbr/> and may have other artifacts 3874depending on the HDR method used.<wbr/></p> 3875<p>Therefore,<wbr/> HDR captures operate at a much slower rate 3876than regular captures.<wbr/></p> 3877<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 3878is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 3879STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 3880using a high dynamic range capture technique.<wbr/> On LEGACY 3881devices,<wbr/> captures that target a JPEG-format output will 3882be captured with HDR,<wbr/> and the capture intent is not 3883relevant.<wbr/></p> 3884<p>The HDR capture may involve the device capturing a burst 3885of images internally and combining them into one,<wbr/> or it 3886may involve the device using specialized high dynamic 3887range capture hardware.<wbr/> In all cases,<wbr/> a single image is 3888produced in response to a capture request submitted 3889while in HDR mode.<wbr/></p> 3890<p>Since substantial post-processing is generally needed to 3891produce an HDR image,<wbr/> only YUV and JPEG outputs are 3892supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only 3893JPEG outputs are supported for LEGACY HDR 3894captures.<wbr/> Using a RAW output for HDR capture is not 3895supported.<wbr/></p></span> 3896 </li> 3897 </ul> 3898 3899 </td> <!-- entry_type --> 3900 3901 <td class="entry_description"> 3902 <p>Control for which scene mode is currently active.<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.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 3910 </td> 3911 3912 <td class="entry_tags"> 3913 <ul class="entry_tags"> 3914 <li><a href="#tag_BC">BC</a></li> 3915 </ul> 3916 </td> 3917 3918 </tr> 3919 <tr class="entries_header"> 3920 <th class="th_details" colspan="5">Details</th> 3921 </tr> 3922 <tr class="entry_cont"> 3923 <td class="entry_details" colspan="5"> 3924 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 3925capture settings.<wbr/></p> 3926<p>This is the mode that that is active when 3927<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/> 3928these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3929<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> while in use.<wbr/></p> 3930<p>The interpretation and implementation of these scene modes is left 3931to the implementor of the camera device.<wbr/> Their behavior will not be 3932consistent across all devices,<wbr/> and any given device may only implement 3933a subset of these modes.<wbr/></p> 3934 </td> 3935 </tr> 3936 3937 <tr class="entries_header"> 3938 <th class="th_details" colspan="5">HAL Implementation Details</th> 3939 </tr> 3940 <tr class="entry_cont"> 3941 <td class="entry_details" colspan="5"> 3942 <p>HAL implementations that include scene modes are expected to provide 3943the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3944<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 3945<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 3946<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/> 3947the HAL must list supported video size and fps range in 3948<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/> 39491280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 3950mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 3951requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/></p> 3952 </td> 3953 </tr> 3954 3955 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3956 <!-- end of entry --> 3957 3958 3959 <tr class="entry" id="controls_android.control.videoStabilizationMode"> 3960 <td class="entry_name 3961 " rowspan="3"> 3962 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 3963 </td> 3964 <td class="entry_type"> 3965 <span class="entry_type_name entry_type_name_enum">byte</span> 3966 3967 <span class="entry_type_visibility"> [public]</span> 3968 3969 3970 <span class="entry_type_hwlevel">[legacy] </span> 3971 3972 3973 3974 <ul class="entry_type_enum"> 3975 <li> 3976 <span class="entry_type_enum_name">OFF</span> 3977 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 3978 </li> 3979 <li> 3980 <span class="entry_type_enum_name">ON</span> 3981 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 3982 </li> 3983 </ul> 3984 3985 </td> <!-- entry_type --> 3986 3987 <td class="entry_description"> 3988 <p>Whether video stabilization is 3989active.<wbr/></p> 3990 </td> 3991 3992 <td class="entry_units"> 3993 </td> 3994 3995 <td class="entry_range"> 3996 </td> 3997 3998 <td class="entry_tags"> 3999 <ul class="entry_tags"> 4000 <li><a href="#tag_BC">BC</a></li> 4001 </ul> 4002 </td> 4003 4004 </tr> 4005 <tr class="entries_header"> 4006 <th class="th_details" colspan="5">Details</th> 4007 </tr> 4008 <tr class="entry_cont"> 4009 <td class="entry_details" colspan="5"> 4010 <p>Video stabilization automatically translates and scales images from 4011the camera in order to stabilize motion between consecutive frames.<wbr/></p> 4012<p>If enabled,<wbr/> video stabilization can modify the 4013<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 4014<p>Switching between different video stabilization modes may take several 4015frames to initialize,<wbr/> the camera device will report the current mode 4016in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 4017the video stabilization modes in the first several capture results may 4018still be "OFF",<wbr/> and it will become "ON" when the initialization is 4019done.<wbr/></p> 4020<p>If a camera device supports both this mode and OIS 4021(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 4022produce undesirable interaction,<wbr/> so it is recommended not to enable 4023both at the same time.<wbr/></p> 4024 </td> 4025 </tr> 4026 4027 4028 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4029 <!-- end of entry --> 4030 4031 4032 4033 <!-- end of kind --> 4034 </tbody> 4035 <tr><td colspan="6" class="kind">static</td></tr> 4036 4037 <thead class="entries_header"> 4038 <tr> 4039 <th class="th_name">Property Name</th> 4040 <th class="th_type">Type</th> 4041 <th class="th_description">Description</th> 4042 <th class="th_units">Units</th> 4043 <th class="th_range">Range</th> 4044 <th class="th_tags">Tags</th> 4045 </tr> 4046 </thead> 4047 4048 <tbody> 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 4060 <td class="entry_name 4061 " rowspan="3"> 4062 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 4063 </td> 4064 <td class="entry_type"> 4065 <span class="entry_type_name">byte</span> 4066 <span class="entry_type_container">x</span> 4067 4068 <span class="entry_type_array"> 4069 n 4070 </span> 4071 <span class="entry_type_visibility"> [public as enumList]</span> 4072 4073 4074 <span class="entry_type_hwlevel">[legacy] </span> 4075 4076 4077 <div class="entry_type_notes">list of enums</div> 4078 4079 4080 </td> <!-- entry_type --> 4081 4082 <td class="entry_description"> 4083 <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 4084supported by this camera device.<wbr/></p> 4085 </td> 4086 4087 <td class="entry_units"> 4088 </td> 4089 4090 <td class="entry_range"> 4091 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p> 4092 </td> 4093 4094 <td class="entry_tags"> 4095 <ul class="entry_tags"> 4096 <li><a href="#tag_BC">BC</a></li> 4097 </ul> 4098 </td> 4099 4100 </tr> 4101 <tr class="entries_header"> 4102 <th class="th_details" colspan="5">Details</th> 4103 </tr> 4104 <tr class="entry_cont"> 4105 <td class="entry_details" colspan="5"> 4106 <p>Not all of the auto-exposure anti-banding modes may be 4107supported by a given camera device.<wbr/> This field lists the 4108valid anti-banding modes that the application may request 4109for this camera device with the 4110<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p> 4111 </td> 4112 </tr> 4113 4114 4115 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4116 <!-- end of entry --> 4117 4118 4119 <tr class="entry" id="static_android.control.aeAvailableModes"> 4120 <td class="entry_name 4121 " rowspan="3"> 4122 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 4123 </td> 4124 <td class="entry_type"> 4125 <span class="entry_type_name">byte</span> 4126 <span class="entry_type_container">x</span> 4127 4128 <span class="entry_type_array"> 4129 n 4130 </span> 4131 <span class="entry_type_visibility"> [public as enumList]</span> 4132 4133 4134 <span class="entry_type_hwlevel">[legacy] </span> 4135 4136 4137 <div class="entry_type_notes">list of enums</div> 4138 4139 4140 </td> <!-- entry_type --> 4141 4142 <td class="entry_description"> 4143 <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 4144device.<wbr/></p> 4145 </td> 4146 4147 <td class="entry_units"> 4148 </td> 4149 4150 <td class="entry_range"> 4151 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p> 4152 </td> 4153 4154 <td class="entry_tags"> 4155 <ul class="entry_tags"> 4156 <li><a href="#tag_BC">BC</a></li> 4157 </ul> 4158 </td> 4159 4160 </tr> 4161 <tr class="entries_header"> 4162 <th class="th_details" colspan="5">Details</th> 4163 </tr> 4164 <tr class="entry_cont"> 4165 <td class="entry_details" colspan="5"> 4166 <p>Not all the auto-exposure modes may be supported by a 4167given camera device,<wbr/> especially if no flash unit is 4168available.<wbr/> This entry lists the valid modes for 4169<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 4170<p>All camera devices support ON,<wbr/> and all camera devices with flash 4171units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 4172<p>FULL mode camera devices always support OFF mode,<wbr/> 4173which enables application control of camera exposure time,<wbr/> 4174sensitivity,<wbr/> and frame duration.<wbr/></p> 4175<p>LEGACY mode camera devices never support OFF mode.<wbr/> 4176LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR 4177capability.<wbr/></p> 4178 </td> 4179 </tr> 4180 4181 4182 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4183 <!-- end of entry --> 4184 4185 4186 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 4187 <td class="entry_name 4188 " rowspan="3"> 4189 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 4190 </td> 4191 <td class="entry_type"> 4192 <span class="entry_type_name">int32</span> 4193 <span class="entry_type_container">x</span> 4194 4195 <span class="entry_type_array"> 4196 2 x n 4197 </span> 4198 <span class="entry_type_visibility"> [public as rangeInt]</span> 4199 4200 4201 <span class="entry_type_hwlevel">[legacy] </span> 4202 4203 4204 <div class="entry_type_notes">list of pairs of frame rates</div> 4205 4206 4207 </td> <!-- entry_type --> 4208 4209 <td class="entry_description"> 4210 <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 4211this camera device.<wbr/></p> 4212 </td> 4213 4214 <td class="entry_units"> 4215 Frames per second (FPS) 4216 </td> 4217 4218 <td class="entry_range"> 4219 </td> 4220 4221 <td class="entry_tags"> 4222 <ul class="entry_tags"> 4223 <li><a href="#tag_BC">BC</a></li> 4224 </ul> 4225 </td> 4226 4227 </tr> 4228 <tr class="entries_header"> 4229 <th class="th_details" colspan="5">Details</th> 4230 </tr> 4231 <tr class="entry_cont"> 4232 <td class="entry_details" colspan="5"> 4233 <p>For devices at the LIMITED level or above,<wbr/> this list will include at least (30,<wbr/> 30) for 4234constant-framerate recording.<wbr/></p> 4235 </td> 4236 </tr> 4237 4238 4239 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4240 <!-- end of entry --> 4241 4242 4243 <tr class="entry" id="static_android.control.aeCompensationRange"> 4244 <td class="entry_name 4245 " rowspan="1"> 4246 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 4247 </td> 4248 <td class="entry_type"> 4249 <span class="entry_type_name">int32</span> 4250 <span class="entry_type_container">x</span> 4251 4252 <span class="entry_type_array"> 4253 2 4254 </span> 4255 <span class="entry_type_visibility"> [public as rangeInt]</span> 4256 4257 4258 <span class="entry_type_hwlevel">[legacy] </span> 4259 4260 4261 4262 4263 </td> <!-- entry_type --> 4264 4265 <td class="entry_description"> 4266 <p>Maximum and minimum exposure compensation values for 4267<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/> 4268that are supported by this camera device.<wbr/></p> 4269 </td> 4270 4271 <td class="entry_units"> 4272 </td> 4273 4274 <td class="entry_range"> 4275 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> 4276<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure 4277compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> 4278<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> 4279<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> 4280<p>LEGACY devices may support a smaller range than this.<wbr/></p> 4281 </td> 4282 4283 <td class="entry_tags"> 4284 <ul class="entry_tags"> 4285 <li><a href="#tag_BC">BC</a></li> 4286 </ul> 4287 </td> 4288 4289 </tr> 4290 4291 4292 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4293 <!-- end of entry --> 4294 4295 4296 <tr class="entry" id="static_android.control.aeCompensationStep"> 4297 <td class="entry_name 4298 " rowspan="5"> 4299 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 4300 </td> 4301 <td class="entry_type"> 4302 <span class="entry_type_name">rational</span> 4303 4304 <span class="entry_type_visibility"> [public]</span> 4305 4306 4307 <span class="entry_type_hwlevel">[legacy] </span> 4308 4309 4310 4311 4312 </td> <!-- entry_type --> 4313 4314 <td class="entry_description"> 4315 <p>Smallest step by which the exposure compensation 4316can be changed.<wbr/></p> 4317 </td> 4318 4319 <td class="entry_units"> 4320 Exposure Value (EV) 4321 </td> 4322 4323 <td class="entry_range"> 4324 </td> 4325 4326 <td class="entry_tags"> 4327 <ul class="entry_tags"> 4328 <li><a href="#tag_BC">BC</a></li> 4329 </ul> 4330 </td> 4331 4332 </tr> 4333 <tr class="entries_header"> 4334 <th class="th_details" colspan="5">Details</th> 4335 </tr> 4336 <tr class="entry_cont"> 4337 <td class="entry_details" colspan="5"> 4338 <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 4339a 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 4340that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> 4341<p>One unit of EV compensation changes the brightness of the captured image by a factor 4342of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p> 4343 </td> 4344 </tr> 4345 4346 <tr class="entries_header"> 4347 <th class="th_details" colspan="5">HAL Implementation Details</th> 4348 </tr> 4349 <tr class="entry_cont"> 4350 <td class="entry_details" colspan="5"> 4351 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p> 4352 </td> 4353 </tr> 4354 4355 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4356 <!-- end of entry --> 4357 4358 4359 <tr class="entry" id="static_android.control.afAvailableModes"> 4360 <td class="entry_name 4361 " rowspan="3"> 4362 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 4363 </td> 4364 <td class="entry_type"> 4365 <span class="entry_type_name">byte</span> 4366 <span class="entry_type_container">x</span> 4367 4368 <span class="entry_type_array"> 4369 n 4370 </span> 4371 <span class="entry_type_visibility"> [public as enumList]</span> 4372 4373 4374 <span class="entry_type_hwlevel">[legacy] </span> 4375 4376 4377 <div class="entry_type_notes">List of enums</div> 4378 4379 4380 </td> <!-- entry_type --> 4381 4382 <td class="entry_description"> 4383 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are 4384supported by this camera device.<wbr/></p> 4385 </td> 4386 4387 <td class="entry_units"> 4388 </td> 4389 4390 <td class="entry_range"> 4391 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p> 4392 </td> 4393 4394 <td class="entry_tags"> 4395 <ul class="entry_tags"> 4396 <li><a href="#tag_BC">BC</a></li> 4397 </ul> 4398 </td> 4399 4400 </tr> 4401 <tr class="entries_header"> 4402 <th class="th_details" colspan="5">Details</th> 4403 </tr> 4404 <tr class="entry_cont"> 4405 <td class="entry_details" colspan="5"> 4406 <p>Not all the auto-focus modes may be supported by a 4407given camera device.<wbr/> This entry lists the valid modes for 4408<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 4409<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all 4410camera devices with adjustable focuser units 4411(<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> 4412<p>LEGACY devices will support OFF mode only if they support 4413focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to 4414<code>0.<wbr/>0f</code>).<wbr/></p> 4415 </td> 4416 </tr> 4417 4418 4419 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4420 <!-- end of entry --> 4421 4422 4423 <tr class="entry" id="static_android.control.availableEffects"> 4424 <td class="entry_name 4425 " rowspan="3"> 4426 android.<wbr/>control.<wbr/>available<wbr/>Effects 4427 </td> 4428 <td class="entry_type"> 4429 <span class="entry_type_name">byte</span> 4430 <span class="entry_type_container">x</span> 4431 4432 <span class="entry_type_array"> 4433 n 4434 </span> 4435 <span class="entry_type_visibility"> [public as enumList]</span> 4436 4437 4438 <span class="entry_type_hwlevel">[legacy] </span> 4439 4440 4441 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 4442 4443 4444 </td> <!-- entry_type --> 4445 4446 <td class="entry_description"> 4447 <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 4448device.<wbr/></p> 4449 </td> 4450 4451 <td class="entry_units"> 4452 </td> 4453 4454 <td class="entry_range"> 4455 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p> 4456 </td> 4457 4458 <td class="entry_tags"> 4459 <ul class="entry_tags"> 4460 <li><a href="#tag_BC">BC</a></li> 4461 </ul> 4462 </td> 4463 4464 </tr> 4465 <tr class="entries_header"> 4466 <th class="th_details" colspan="5">Details</th> 4467 </tr> 4468 <tr class="entry_cont"> 4469 <td class="entry_details" colspan="5"> 4470 <p>This list contains the color effect modes that can be applied to 4471images produced by the camera device.<wbr/> 4472Implementations are not expected to be consistent across all devices.<wbr/> 4473If no color effect modes are available for a device,<wbr/> this will only list 4474OFF.<wbr/></p> 4475<p>A color effect will only be applied if 4476<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> 4477<p>This control has no effect on the operation of other control routines such 4478as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> 4479 </td> 4480 </tr> 4481 4482 4483 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4484 <!-- end of entry --> 4485 4486 4487 <tr class="entry" id="static_android.control.availableSceneModes"> 4488 <td class="entry_name 4489 " rowspan="3"> 4490 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 4491 </td> 4492 <td class="entry_type"> 4493 <span class="entry_type_name">byte</span> 4494 <span class="entry_type_container">x</span> 4495 4496 <span class="entry_type_array"> 4497 n 4498 </span> 4499 <span class="entry_type_visibility"> [public as enumList]</span> 4500 4501 4502 <span class="entry_type_hwlevel">[legacy] </span> 4503 4504 4505 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 4506 4507 4508 </td> <!-- entry_type --> 4509 4510 <td class="entry_description"> 4511 <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 4512device.<wbr/></p> 4513 </td> 4514 4515 <td class="entry_units"> 4516 </td> 4517 4518 <td class="entry_range"> 4519 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p> 4520 </td> 4521 4522 <td class="entry_tags"> 4523 <ul class="entry_tags"> 4524 <li><a href="#tag_BC">BC</a></li> 4525 </ul> 4526 </td> 4527 4528 </tr> 4529 <tr class="entries_header"> 4530 <th class="th_details" colspan="5">Details</th> 4531 </tr> 4532 <tr class="entry_cont"> 4533 <td class="entry_details" colspan="5"> 4534 <p>This list contains scene modes that can be set for the camera device.<wbr/> 4535Only scene modes that have been fully implemented for the 4536camera device may be included here.<wbr/> Implementations are not expected 4537to be consistent across all devices.<wbr/></p> 4538<p>If no scene modes are supported by the camera device,<wbr/> this 4539will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> 4540<p>FACE_<wbr/>PRIORITY is always listed if face detection is 4541supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> > 45420</code>).<wbr/></p> 4543 </td> 4544 </tr> 4545 4546 4547 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4548 <!-- end of entry --> 4549 4550 4551 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 4552 <td class="entry_name 4553 " rowspan="3"> 4554 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 4555 </td> 4556 <td class="entry_type"> 4557 <span class="entry_type_name">byte</span> 4558 <span class="entry_type_container">x</span> 4559 4560 <span class="entry_type_array"> 4561 n 4562 </span> 4563 <span class="entry_type_visibility"> [public as enumList]</span> 4564 4565 4566 <span class="entry_type_hwlevel">[legacy] </span> 4567 4568 4569 <div class="entry_type_notes">List of enums.<wbr/></div> 4570 4571 4572 </td> <!-- entry_type --> 4573 4574 <td class="entry_description"> 4575 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> 4576that are supported by this camera device.<wbr/></p> 4577 </td> 4578 4579 <td class="entry_units"> 4580 </td> 4581 4582 <td class="entry_range"> 4583 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p> 4584 </td> 4585 4586 <td class="entry_tags"> 4587 <ul class="entry_tags"> 4588 <li><a href="#tag_BC">BC</a></li> 4589 </ul> 4590 </td> 4591 4592 </tr> 4593 <tr class="entries_header"> 4594 <th class="th_details" colspan="5">Details</th> 4595 </tr> 4596 <tr class="entry_cont"> 4597 <td class="entry_details" colspan="5"> 4598 <p>OFF will always be listed.<wbr/></p> 4599 </td> 4600 </tr> 4601 4602 4603 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4604 <!-- end of entry --> 4605 4606 4607 <tr class="entry" id="static_android.control.awbAvailableModes"> 4608 <td class="entry_name 4609 " rowspan="3"> 4610 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 4611 </td> 4612 <td class="entry_type"> 4613 <span class="entry_type_name">byte</span> 4614 <span class="entry_type_container">x</span> 4615 4616 <span class="entry_type_array"> 4617 n 4618 </span> 4619 <span class="entry_type_visibility"> [public as enumList]</span> 4620 4621 4622 <span class="entry_type_hwlevel">[legacy] </span> 4623 4624 4625 <div class="entry_type_notes">List of enums</div> 4626 4627 4628 </td> <!-- entry_type --> 4629 4630 <td class="entry_description"> 4631 <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 4632camera device.<wbr/></p> 4633 </td> 4634 4635 <td class="entry_units"> 4636 </td> 4637 4638 <td class="entry_range"> 4639 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p> 4640 </td> 4641 4642 <td class="entry_tags"> 4643 <ul class="entry_tags"> 4644 <li><a href="#tag_BC">BC</a></li> 4645 </ul> 4646 </td> 4647 4648 </tr> 4649 <tr class="entries_header"> 4650 <th class="th_details" colspan="5">Details</th> 4651 </tr> 4652 <tr class="entry_cont"> 4653 <td class="entry_details" colspan="5"> 4654 <p>Not all the auto-white-balance modes may be supported by a 4655given camera device.<wbr/> This entry lists the valid modes for 4656<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 4657<p>All camera devices will support ON mode.<wbr/></p> 4658<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF 4659mode,<wbr/> which enables application control of white balance,<wbr/> by using 4660<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 4661mode camera devices.<wbr/></p> 4662 </td> 4663 </tr> 4664 4665 4666 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4667 <!-- end of entry --> 4668 4669 4670 <tr class="entry" id="static_android.control.maxRegions"> 4671 <td class="entry_name 4672 " rowspan="1"> 4673 android.<wbr/>control.<wbr/>max<wbr/>Regions 4674 </td> 4675 <td class="entry_type"> 4676 <span class="entry_type_name">int32</span> 4677 <span class="entry_type_container">x</span> 4678 4679 <span class="entry_type_array"> 4680 3 4681 </span> 4682 <span class="entry_type_visibility"> [hidden]</span> 4683 4684 4685 <span class="entry_type_hwlevel">[legacy] </span> 4686 4687 4688 4689 4690 </td> <!-- entry_type --> 4691 4692 <td class="entry_description"> 4693 <p>List of the maximum number of regions that can be used for metering in 4694auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 4695this corresponds to the the maximum number of elements in 4696<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/> 4697and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 4698 </td> 4699 4700 <td class="entry_units"> 4701 </td> 4702 4703 <td class="entry_range"> 4704 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 4705this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 4706<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 4707 </td> 4708 4709 <td class="entry_tags"> 4710 <ul class="entry_tags"> 4711 <li><a href="#tag_BC">BC</a></li> 4712 </ul> 4713 </td> 4714 4715 </tr> 4716 4717 4718 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4719 <!-- end of entry --> 4720 4721 4722 <tr class="entry" id="static_android.control.maxRegionsAe"> 4723 <td class="entry_name 4724 " rowspan="5"> 4725 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae 4726 </td> 4727 <td class="entry_type"> 4728 <span class="entry_type_name">int32</span> 4729 4730 <span class="entry_type_visibility"> [public]</span> 4731 4732 <span class="entry_type_synthetic">[synthetic] </span> 4733 4734 <span class="entry_type_hwlevel">[legacy] </span> 4735 4736 4737 4738 4739 </td> <!-- entry_type --> 4740 4741 <td class="entry_description"> 4742 <p>The maximum number of metering regions that can be used by the auto-exposure (AE) 4743routine.<wbr/></p> 4744 </td> 4745 4746 <td class="entry_units"> 4747 </td> 4748 4749 <td class="entry_range"> 4750 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4751value will be >= 1.<wbr/></p> 4752 </td> 4753 4754 <td class="entry_tags"> 4755 </td> 4756 4757 </tr> 4758 <tr class="entries_header"> 4759 <th class="th_details" colspan="5">Details</th> 4760 </tr> 4761 <tr class="entry_cont"> 4762 <td class="entry_details" colspan="5"> 4763 <p>This corresponds to the the maximum allowed number of elements in 4764<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 4765 </td> 4766 </tr> 4767 4768 <tr class="entries_header"> 4769 <th class="th_details" colspan="5">HAL Implementation Details</th> 4770 </tr> 4771 <tr class="entry_cont"> 4772 <td class="entry_details" colspan="5"> 4773 <p>This entry is private to the framework.<wbr/> Fill in 4774maxRegions to have this entry be automatically populated.<wbr/></p> 4775 </td> 4776 </tr> 4777 4778 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4779 <!-- end of entry --> 4780 4781 4782 <tr class="entry" id="static_android.control.maxRegionsAwb"> 4783 <td class="entry_name 4784 " rowspan="5"> 4785 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb 4786 </td> 4787 <td class="entry_type"> 4788 <span class="entry_type_name">int32</span> 4789 4790 <span class="entry_type_visibility"> [public]</span> 4791 4792 <span class="entry_type_synthetic">[synthetic] </span> 4793 4794 <span class="entry_type_hwlevel">[legacy] </span> 4795 4796 4797 4798 4799 </td> <!-- entry_type --> 4800 4801 <td class="entry_description"> 4802 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) 4803routine.<wbr/></p> 4804 </td> 4805 4806 <td class="entry_units"> 4807 </td> 4808 4809 <td class="entry_range"> 4810 <p>Value will be >= 0.<wbr/></p> 4811 </td> 4812 4813 <td class="entry_tags"> 4814 </td> 4815 4816 </tr> 4817 <tr class="entries_header"> 4818 <th class="th_details" colspan="5">Details</th> 4819 </tr> 4820 <tr class="entry_cont"> 4821 <td class="entry_details" colspan="5"> 4822 <p>This corresponds to the the maximum allowed number of elements in 4823<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 4824 </td> 4825 </tr> 4826 4827 <tr class="entries_header"> 4828 <th class="th_details" colspan="5">HAL Implementation Details</th> 4829 </tr> 4830 <tr class="entry_cont"> 4831 <td class="entry_details" colspan="5"> 4832 <p>This entry is private to the framework.<wbr/> Fill in 4833maxRegions to have this entry be automatically populated.<wbr/></p> 4834 </td> 4835 </tr> 4836 4837 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4838 <!-- end of entry --> 4839 4840 4841 <tr class="entry" id="static_android.control.maxRegionsAf"> 4842 <td class="entry_name 4843 " rowspan="5"> 4844 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af 4845 </td> 4846 <td class="entry_type"> 4847 <span class="entry_type_name">int32</span> 4848 4849 <span class="entry_type_visibility"> [public]</span> 4850 4851 <span class="entry_type_synthetic">[synthetic] </span> 4852 4853 <span class="entry_type_hwlevel">[legacy] </span> 4854 4855 4856 4857 4858 </td> <!-- entry_type --> 4859 4860 <td class="entry_description"> 4861 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> 4862 </td> 4863 4864 <td class="entry_units"> 4865 </td> 4866 4867 <td class="entry_range"> 4868 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4869value will be >= 1.<wbr/></p> 4870 </td> 4871 4872 <td class="entry_tags"> 4873 </td> 4874 4875 </tr> 4876 <tr class="entries_header"> 4877 <th class="th_details" colspan="5">Details</th> 4878 </tr> 4879 <tr class="entry_cont"> 4880 <td class="entry_details" colspan="5"> 4881 <p>This corresponds to the the maximum allowed number of elements in 4882<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 4883 </td> 4884 </tr> 4885 4886 <tr class="entries_header"> 4887 <th class="th_details" colspan="5">HAL Implementation Details</th> 4888 </tr> 4889 <tr class="entry_cont"> 4890 <td class="entry_details" colspan="5"> 4891 <p>This entry is private to the framework.<wbr/> Fill in 4892maxRegions to have this entry be automatically populated.<wbr/></p> 4893 </td> 4894 </tr> 4895 4896 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4897 <!-- end of entry --> 4898 4899 4900 <tr class="entry" id="static_android.control.sceneModeOverrides"> 4901 <td class="entry_name 4902 " rowspan="5"> 4903 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 4904 </td> 4905 <td class="entry_type"> 4906 <span class="entry_type_name">byte</span> 4907 <span class="entry_type_container">x</span> 4908 4909 <span class="entry_type_array"> 4910 3 x length(availableSceneModes) 4911 </span> 4912 <span class="entry_type_visibility"> [system]</span> 4913 4914 4915 <span class="entry_type_hwlevel">[limited] </span> 4916 4917 4918 4919 4920 </td> <!-- entry_type --> 4921 4922 <td class="entry_description"> 4923 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 4924settings to use with each available scene mode.<wbr/></p> 4925 </td> 4926 4927 <td class="entry_units"> 4928 </td> 4929 4930 <td class="entry_range"> 4931 <p>For each available scene mode,<wbr/> the list must contain three 4932entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4933<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 4934by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 4935where aeMode has the lowest index position.<wbr/></p> 4936 </td> 4937 4938 <td class="entry_tags"> 4939 <ul class="entry_tags"> 4940 <li><a href="#tag_BC">BC</a></li> 4941 </ul> 4942 </td> 4943 4944 </tr> 4945 <tr class="entries_header"> 4946 <th class="th_details" colspan="5">Details</th> 4947 </tr> 4948 <tr class="entry_cont"> 4949 <td class="entry_details" colspan="5"> 4950 <p>When a scene mode is enabled,<wbr/> the camera device is expected 4951to 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/> 4952and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 4953that scene mode.<wbr/></p> 4954<p>The order of this list matches that of availableSceneModes,<wbr/> 4955with 3 entries for each mode.<wbr/> The overrides listed 4956for FACE_<wbr/>PRIORITY are ignored,<wbr/> since for that 4957mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4958<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 4959used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 4960is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY 4961overrides should be set to 0.<wbr/></p> 4962<p>For example,<wbr/> if availableSceneModes contains 4963<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 4964expects sceneModeOverrides to have 9 entries formatted like: 4965<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 4966ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 4967 </td> 4968 </tr> 4969 4970 <tr class="entries_header"> 4971 <th class="th_details" colspan="5">HAL Implementation Details</th> 4972 </tr> 4973 <tr class="entry_cont"> 4974 <td class="entry_details" colspan="5"> 4975 <p>To maintain backward compatibility,<wbr/> this list will be made available 4976in the static metadata of the camera service.<wbr/> The camera service will 4977use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4978<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 4979mode other than FACE_<wbr/>PRIORITY.<wbr/></p> 4980 </td> 4981 </tr> 4982 4983 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4984 <!-- end of entry --> 4985 4986 4987 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> 4988 <td class="entry_name 4989 " rowspan="5"> 4990 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations 4991 </td> 4992 <td class="entry_type"> 4993 <span class="entry_type_name">int32</span> 4994 <span class="entry_type_container">x</span> 4995 4996 <span class="entry_type_array"> 4997 4 x n 4998 </span> 4999 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 5000 5001 5002 <span class="entry_type_hwlevel">[limited] </span> 5003 5004 5005 5006 5007 </td> <!-- entry_type --> 5008 5009 <td class="entry_description"> 5010 <p>List of available high speed video size and fps range configurations 5011supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max).<wbr/></p> 5012 </td> 5013 5014 <td class="entry_units"> 5015 </td> 5016 5017 <td class="entry_range"> 5018 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 60fps.<wbr/></p> 5019 </td> 5020 5021 <td class="entry_tags"> 5022 <ul class="entry_tags"> 5023 <li><a href="#tag_V1">V1</a></li> 5024 </ul> 5025 </td> 5026 5027 </tr> 5028 <tr class="entries_header"> 5029 <th class="th_details" colspan="5">Details</th> 5030 </tr> 5031 <tr class="entry_cont"> 5032 <td class="entry_details" colspan="5"> 5033 <p>When HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/> 5034this metadata will list the supported high speed video size and fps range 5035configurations.<wbr/> All the sizes listed in this configuration will be a subset 5036of the sizes reported by StreamConfigurationMap#getOutputSizes for processed 5037non-stalling formats.<wbr/></p> 5038<p>For the high speed video use case,<wbr/> where the application will set 5039<a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> to HIGH_<wbr/>SPEED_<wbr/>VIDEO in capture requests,<wbr/> the application must 5040select the video size and fps range from this metadata to configure the recording and 5041preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends 5042to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to 5043configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata 5044by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the 5045recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application 5046must select one unique size from this metadata to use.<wbr/> Otherwise a request error might 5047occur.<wbr/></p> 5048<p>For normal video recording use case,<wbr/> where some application will NOT set 5049<a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> to HIGH_<wbr/>SPEED_<wbr/>VIDEO in capture requests,<wbr/> the fps ranges 5050reported in this metadata must not be used to setup capture requests,<wbr/> or it will cause 5051request error.<wbr/></p> 5052 </td> 5053 </tr> 5054 5055 <tr class="entries_header"> 5056 <th class="th_details" colspan="5">HAL Implementation Details</th> 5057 </tr> 5058 <tr class="entry_cont"> 5059 <td class="entry_details" colspan="5"> 5060 <p>All the sizes listed in this configuration will be a subset of the sizes reported by 5061<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> 5062Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum 5063of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> 5064<p>Since the HIGH_<wbr/>SPEED_<wbr/>VIDEO mode may be turned on for preview view only case,<wbr/> the preview 5065fps is bounded by device refresh rate (e.<wbr/>g.<wbr/> 60fps).<wbr/> For a given resolution,<wbr/> it is 5066recommended that this list includes some fps ranges (e.<wbr/>g.<wbr/> [30,<wbr/> 60]) that is suitable 5067for preview only streaming case.<wbr/></p> 5068 </td> 5069 </tr> 5070 5071 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5072 <!-- end of entry --> 5073 5074 5075 <tr class="entry" id="static_android.control.aeLockAvailable"> 5076 <td class="entry_name 5077 " rowspan="3"> 5078 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available 5079 </td> 5080 <td class="entry_type"> 5081 <span class="entry_type_name entry_type_name_enum">byte</span> 5082 5083 <span class="entry_type_visibility"> [public as boolean]</span> 5084 5085 5086 <span class="entry_type_hwlevel">[legacy] </span> 5087 5088 5089 5090 <ul class="entry_type_enum"> 5091 <li> 5092 <span class="entry_type_enum_name">FALSE</span> 5093 </li> 5094 <li> 5095 <span class="entry_type_enum_name">TRUE</span> 5096 </li> 5097 </ul> 5098 5099 </td> <!-- entry_type --> 5100 5101 <td class="entry_description"> 5102 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p> 5103 </td> 5104 5105 <td class="entry_units"> 5106 </td> 5107 5108 <td class="entry_range"> 5109 </td> 5110 5111 <td class="entry_tags"> 5112 <ul class="entry_tags"> 5113 <li><a href="#tag_BC">BC</a></li> 5114 </ul> 5115 </td> 5116 5117 </tr> 5118 <tr class="entries_header"> 5119 <th class="th_details" colspan="5">Details</th> 5120 </tr> 5121 <tr class="entry_cont"> 5122 <td class="entry_details" colspan="5"> 5123 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always 5124list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5125 </td> 5126 </tr> 5127 5128 5129 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5130 <!-- end of entry --> 5131 5132 5133 <tr class="entry" id="static_android.control.awbLockAvailable"> 5134 <td class="entry_name 5135 " rowspan="3"> 5136 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available 5137 </td> 5138 <td class="entry_type"> 5139 <span class="entry_type_name entry_type_name_enum">byte</span> 5140 5141 <span class="entry_type_visibility"> [public as boolean]</span> 5142 5143 5144 <span class="entry_type_hwlevel">[legacy] </span> 5145 5146 5147 5148 <ul class="entry_type_enum"> 5149 <li> 5150 <span class="entry_type_enum_name">FALSE</span> 5151 </li> 5152 <li> 5153 <span class="entry_type_enum_name">TRUE</span> 5154 </li> 5155 </ul> 5156 5157 </td> <!-- entry_type --> 5158 5159 <td class="entry_description"> 5160 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p> 5161 </td> 5162 5163 <td class="entry_units"> 5164 </td> 5165 5166 <td class="entry_range"> 5167 </td> 5168 5169 <td class="entry_tags"> 5170 <ul class="entry_tags"> 5171 <li><a href="#tag_BC">BC</a></li> 5172 </ul> 5173 </td> 5174 5175 </tr> 5176 <tr class="entries_header"> 5177 <th class="th_details" colspan="5">Details</th> 5178 </tr> 5179 <tr class="entry_cont"> 5180 <td class="entry_details" colspan="5"> 5181 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will 5182always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5183 </td> 5184 </tr> 5185 5186 5187 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5188 <!-- end of entry --> 5189 5190 5191 <tr class="entry" id="static_android.control.availableModes"> 5192 <td class="entry_name 5193 " rowspan="3"> 5194 android.<wbr/>control.<wbr/>available<wbr/>Modes 5195 </td> 5196 <td class="entry_type"> 5197 <span class="entry_type_name">byte</span> 5198 <span class="entry_type_container">x</span> 5199 5200 <span class="entry_type_array"> 5201 n 5202 </span> 5203 <span class="entry_type_visibility"> [public as enumList]</span> 5204 5205 5206 <span class="entry_type_hwlevel">[legacy] </span> 5207 5208 5209 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div> 5210 5211 5212 </td> <!-- entry_type --> 5213 5214 <td class="entry_description"> 5215 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera 5216device.<wbr/></p> 5217 </td> 5218 5219 <td class="entry_units"> 5220 </td> 5221 5222 <td class="entry_range"> 5223 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p> 5224 </td> 5225 5226 <td class="entry_tags"> 5227 </td> 5228 5229 </tr> 5230 <tr class="entries_header"> 5231 <th class="th_details" colspan="5">Details</th> 5232 </tr> 5233 <tr class="entry_cont"> 5234 <td class="entry_details" colspan="5"> 5235 <p>This list contains control modes that can be set for the camera device.<wbr/> 5236LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL 5237devices will always support OFF,<wbr/> AUTO modes.<wbr/></p> 5238 </td> 5239 </tr> 5240 5241 5242 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5243 <!-- end of entry --> 5244 5245 5246 5247 <!-- end of kind --> 5248 </tbody> 5249 <tr><td colspan="6" class="kind">dynamic</td></tr> 5250 5251 <thead class="entries_header"> 5252 <tr> 5253 <th class="th_name">Property Name</th> 5254 <th class="th_type">Type</th> 5255 <th class="th_description">Description</th> 5256 <th class="th_units">Units</th> 5257 <th class="th_range">Range</th> 5258 <th class="th_tags">Tags</th> 5259 </tr> 5260 </thead> 5261 5262 <tbody> 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 5274 <td class="entry_name 5275 entry_name_deprecated 5276 " rowspan="3"> 5277 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 5278 </td> 5279 <td class="entry_type"> 5280 <span class="entry_type_name">int32</span> 5281 5282 <span class="entry_type_visibility"> [system]</span> 5283 5284 5285 5286 <span class="entry_type_deprecated">[deprecated] </span> 5287 5288 5289 5290 </td> <!-- entry_type --> 5291 5292 <td class="entry_description"> 5293 <p>The ID sent with the latest 5294CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 5295 </td> 5296 5297 <td class="entry_units"> 5298 </td> 5299 5300 <td class="entry_range"> 5301 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 5302 </td> 5303 5304 <td class="entry_tags"> 5305 </td> 5306 5307 </tr> 5308 <tr class="entries_header"> 5309 <th class="th_details" colspan="5">Details</th> 5310 </tr> 5311 <tr class="entry_cont"> 5312 <td class="entry_details" colspan="5"> 5313 <p>Must be 0 if no 5314CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 5315by HAL.<wbr/> Always updated even if AE algorithm ignores the 5316trigger</p> 5317 </td> 5318 </tr> 5319 5320 5321 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5322 <!-- end of entry --> 5323 5324 5325 <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> 5326 <td class="entry_name 5327 " rowspan="5"> 5328 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 5329 </td> 5330 <td class="entry_type"> 5331 <span class="entry_type_name entry_type_name_enum">byte</span> 5332 5333 <span class="entry_type_visibility"> [public]</span> 5334 5335 5336 <span class="entry_type_hwlevel">[legacy] </span> 5337 5338 5339 5340 <ul class="entry_type_enum"> 5341 <li> 5342 <span class="entry_type_enum_name">OFF</span> 5343 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 5344avoid banding problems.<wbr/></p></span> 5345 </li> 5346 <li> 5347 <span class="entry_type_enum_name">50HZ</span> 5348 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5349avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 5350 </li> 5351 <li> 5352 <span class="entry_type_enum_name">60HZ</span> 5353 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5354avoid banding problems with 60Hz illumination 5355sources.<wbr/></p></span> 5356 </li> 5357 <li> 5358 <span class="entry_type_enum_name">AUTO</span> 5359 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 5360antibanding routine to the current illumination 5361condition.<wbr/> This is the default mode if AUTO is 5362available on given camera device.<wbr/></p></span> 5363 </li> 5364 </ul> 5365 5366 </td> <!-- entry_type --> 5367 5368 <td class="entry_description"> 5369 <p>The desired setting for the camera device's auto-exposure 5370algorithm's antibanding compensation.<wbr/></p> 5371 </td> 5372 5373 <td class="entry_units"> 5374 </td> 5375 5376 <td class="entry_range"> 5377 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 5378 </td> 5379 5380 <td class="entry_tags"> 5381 <ul class="entry_tags"> 5382 <li><a href="#tag_BC">BC</a></li> 5383 </ul> 5384 </td> 5385 5386 </tr> 5387 <tr class="entries_header"> 5388 <th class="th_details" colspan="5">Details</th> 5389 </tr> 5390 <tr class="entry_cont"> 5391 <td class="entry_details" colspan="5"> 5392 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 5393lights,<wbr/> flicker at the rate of the power supply frequency 5394(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 5395typically not noticeable to a person,<wbr/> it can be visible to 5396a camera device.<wbr/> If a camera sets its exposure time to the 5397wrong value,<wbr/> the flicker may become visible in the 5398viewfinder as flicker or in a final captured image,<wbr/> as a 5399set of variable-brightness bands across the image.<wbr/></p> 5400<p>Therefore,<wbr/> the auto-exposure routines of camera devices 5401include antibanding routines that ensure that the chosen 5402exposure value will not cause such banding.<wbr/> The choice of 5403exposure time depends on the rate of flicker,<wbr/> which the 5404camera device can detect automatically,<wbr/> or the expected 5405rate can be selected by the application using this 5406control.<wbr/></p> 5407<p>A given camera device may not support all of the possible 5408options for the antibanding mode.<wbr/> The 5409<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 5410the available modes for a given camera device.<wbr/></p> 5411<p>AUTO mode is the default if it is available on given 5412camera device.<wbr/> When AUTO mode is not available,<wbr/> the 5413default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 5414and 60HZ will be available.<wbr/></p> 5415<p>If manual exposure control is enabled (by setting 5416<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/> 5417then this setting has no effect,<wbr/> and the application must 5418ensure it selects exposure times that do not cause banding 5419issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 5420the application in this.<wbr/></p> 5421 </td> 5422 </tr> 5423 5424 <tr class="entries_header"> 5425 <th class="th_details" colspan="5">HAL Implementation Details</th> 5426 </tr> 5427 <tr class="entry_cont"> 5428 <td class="entry_details" colspan="5"> 5429 <p>For all capture request templates,<wbr/> this field must be set 5430to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 5431the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 543260HZ must be available.<wbr/></p> 5433<p>If manual exposure control is enabled (by setting 5434<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/> 5435then the exposure values provided by the application must not be 5436adjusted for antibanding.<wbr/></p> 5437 </td> 5438 </tr> 5439 5440 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5441 <!-- end of entry --> 5442 5443 5444 <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> 5445 <td class="entry_name 5446 " rowspan="3"> 5447 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 5448 </td> 5449 <td class="entry_type"> 5450 <span class="entry_type_name">int32</span> 5451 5452 <span class="entry_type_visibility"> [public]</span> 5453 5454 5455 <span class="entry_type_hwlevel">[legacy] </span> 5456 5457 5458 5459 5460 </td> <!-- entry_type --> 5461 5462 <td class="entry_description"> 5463 <p>Adjustment to auto-exposure (AE) target image 5464brightness.<wbr/></p> 5465 </td> 5466 5467 <td class="entry_units"> 5468 Compensation steps 5469 </td> 5470 5471 <td class="entry_range"> 5472 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 5473 </td> 5474 5475 <td class="entry_tags"> 5476 <ul class="entry_tags"> 5477 <li><a href="#tag_BC">BC</a></li> 5478 </ul> 5479 </td> 5480 5481 </tr> 5482 <tr class="entries_header"> 5483 <th class="th_details" colspan="5">Details</th> 5484 </tr> 5485 <tr class="entry_cont"> 5486 <td class="entry_details" colspan="5"> 5487 <p>The adjustment is measured as a count of steps,<wbr/> with the 5488step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 5489allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 5490<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 5491will mean an exposure compensation of +2 EV; -3 will mean an 5492exposure compensation of -1 EV.<wbr/> One EV represents a doubling 5493of image brightness.<wbr/> Note that this control will only be 5494effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 5495will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 5496<p>In the event of exposure compensation value being changed,<wbr/> camera device 5497may take several frames to reach the newly requested exposure target.<wbr/> 5498During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 5499state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 5500change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 5501FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 5502 </td> 5503 </tr> 5504 5505 5506 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5507 <!-- end of entry --> 5508 5509 5510 <tr class="entry" id="dynamic_android.control.aeLock"> 5511 <td class="entry_name 5512 " rowspan="3"> 5513 android.<wbr/>control.<wbr/>ae<wbr/>Lock 5514 </td> 5515 <td class="entry_type"> 5516 <span class="entry_type_name entry_type_name_enum">byte</span> 5517 5518 <span class="entry_type_visibility"> [public as boolean]</span> 5519 5520 5521 <span class="entry_type_hwlevel">[legacy] </span> 5522 5523 5524 5525 <ul class="entry_type_enum"> 5526 <li> 5527 <span class="entry_type_enum_name">OFF</span> 5528 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 5529is free to update its parameters.<wbr/></p></span> 5530 </li> 5531 <li> 5532 <span class="entry_type_enum_name">ON</span> 5533 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 5534must not update the exposure and sensitivity parameters 5535while the lock is active.<wbr/></p> 5536<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 5537will still take effect while auto-exposure is locked.<wbr/></p> 5538<p>Some rare LEGACY devices may not support 5539this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 5540 </li> 5541 </ul> 5542 5543 </td> <!-- entry_type --> 5544 5545 <td class="entry_description"> 5546 <p>Whether auto-exposure (AE) is currently locked to its latest 5547calculated values.<wbr/></p> 5548 </td> 5549 5550 <td class="entry_units"> 5551 </td> 5552 5553 <td class="entry_range"> 5554 </td> 5555 5556 <td class="entry_tags"> 5557 <ul class="entry_tags"> 5558 <li><a href="#tag_BC">BC</a></li> 5559 </ul> 5560 </td> 5561 5562 </tr> 5563 <tr class="entries_header"> 5564 <th class="th_details" colspan="5">Details</th> 5565 </tr> 5566 <tr class="entry_cont"> 5567 <td class="entry_details" colspan="5"> 5568 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 5569and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 5570<p>Note that even when AE is locked,<wbr/> the flash may be fired if 5571the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 5572ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 5573<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 5574is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 5575<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 5576when AE is already locked,<wbr/> the camera device will not change the exposure time 5577(<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>) 5578parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 5579is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 5580<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/> 5581Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 5582<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 5583the AE if AE is locked by the camera device internally during precapture metering 5584sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 5585ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 5586will never succeed in a sequence of preview requests where AE lock is always set 5587to <code>false</code>.<wbr/></p> 5588<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 5589get locked do not necessarily correspond to the settings that were present in the 5590latest capture result received from the camera device,<wbr/> since additional captures 5591and AE updates may have occurred even before the result was sent out.<wbr/> If an 5592application is switching between automatic and manual control and wishes to eliminate 5593any flicker during the switch,<wbr/> the following procedure is recommended:</p> 5594<ol> 5595<li>Starting in auto-AE mode:</li> 5596<li>Lock AE</li> 5597<li>Wait for the first result to be output that has the AE locked</li> 5598<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 5599<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 5600</ol> 5601<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> 5602 </td> 5603 </tr> 5604 5605 5606 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5607 <!-- end of entry --> 5608 5609 5610 <tr class="entry" id="dynamic_android.control.aeMode"> 5611 <td class="entry_name 5612 " rowspan="3"> 5613 android.<wbr/>control.<wbr/>ae<wbr/>Mode 5614 </td> 5615 <td class="entry_type"> 5616 <span class="entry_type_name entry_type_name_enum">byte</span> 5617 5618 <span class="entry_type_visibility"> [public]</span> 5619 5620 5621 <span class="entry_type_hwlevel">[legacy] </span> 5622 5623 5624 5625 <ul class="entry_type_enum"> 5626 <li> 5627 <span class="entry_type_enum_name">OFF</span> 5628 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 5629<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5630<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 5631<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 5632device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 5633a flash unit for this camera device.<wbr/></p> 5634<p>Note that auto-white balance (AWB) and auto-focus (AF) 5635behavior is device dependent when AE is in OFF mode.<wbr/> 5636To have consistent behavior across different devices,<wbr/> 5637it is recommended to either set AWB and AF to OFF mode 5638or lock AWB and AF before setting AE to OFF.<wbr/> 5639See <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/> 5640<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> 5641for more details.<wbr/></p> 5642<p>LEGACY devices do not support the OFF mode and will 5643override attempts to use this value to ON.<wbr/></p></span> 5644 </li> 5645 <li> 5646 <span class="entry_type_enum_name">ON</span> 5647 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 5648with no flash control.<wbr/></p> 5649<p>The application's values for 5650<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5651<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 5652<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 5653application has control over the various 5654android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 5655 </li> 5656 <li> 5657 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 5658 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 5659the camera's flash unit,<wbr/> firing it in low-light 5660conditions.<wbr/></p> 5661<p>The flash may be fired during a precapture sequence 5662(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 5663may be fired for captures for which the 5664<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 5665STILL_<wbr/>CAPTURE</p></span> 5666 </li> 5667 <li> 5668 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 5669 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 5670the camera's flash unit,<wbr/> always firing it for still 5671captures.<wbr/></p> 5672<p>The flash may be fired during a precapture sequence 5673(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 5674will always be fired for captures for which the 5675<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 5676STILL_<wbr/>CAPTURE</p></span> 5677 </li> 5678 <li> 5679 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 5680 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 5681reduction.<wbr/></p> 5682<p>If deemed necessary by the camera device,<wbr/> a red eye 5683reduction flash will fire during the precapture 5684sequence.<wbr/></p></span> 5685 </li> 5686 </ul> 5687 5688 </td> <!-- entry_type --> 5689 5690 <td class="entry_description"> 5691 <p>The desired mode for the camera device's 5692auto-exposure routine.<wbr/></p> 5693 </td> 5694 5695 <td class="entry_units"> 5696 </td> 5697 5698 <td class="entry_range"> 5699 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 5700 </td> 5701 5702 <td class="entry_tags"> 5703 <ul class="entry_tags"> 5704 <li><a href="#tag_BC">BC</a></li> 5705 </ul> 5706 </td> 5707 5708 </tr> 5709 <tr class="entries_header"> 5710 <th class="th_details" colspan="5">Details</th> 5711 </tr> 5712 <tr class="entry_cont"> 5713 <td class="entry_details" colspan="5"> 5714 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 5715AUTO.<wbr/></p> 5716<p>When set to any of the ON modes,<wbr/> the camera device's 5717auto-exposure routine is enabled,<wbr/> overriding the 5718application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 5719and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5720<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 5721<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 5722is selected,<wbr/> the camera device's flash unit controls are 5723also overridden.<wbr/></p> 5724<p>The FLASH modes are only available if the camera device 5725has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 5726<p>If flash TORCH mode is desired,<wbr/> this field must be set to 5727ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 5728<p>When set to any of the ON modes,<wbr/> the values chosen by the 5729camera device auto-exposure routine for the overridden 5730fields for a given capture will be available in its 5731CaptureResult.<wbr/></p> 5732 </td> 5733 </tr> 5734 5735 5736 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5737 <!-- end of entry --> 5738 5739 5740 <tr class="entry" id="dynamic_android.control.aeRegions"> 5741 <td class="entry_name 5742 " rowspan="5"> 5743 android.<wbr/>control.<wbr/>ae<wbr/>Regions 5744 </td> 5745 <td class="entry_type"> 5746 <span class="entry_type_name">int32</span> 5747 <span class="entry_type_container">x</span> 5748 5749 <span class="entry_type_array"> 5750 5 x area_count 5751 </span> 5752 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 5753 5754 5755 5756 5757 5758 5759 </td> <!-- entry_type --> 5760 5761 <td class="entry_description"> 5762 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 5763 </td> 5764 5765 <td class="entry_units"> 5766 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 5767 </td> 5768 5769 <td class="entry_range"> 5770 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 5771<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 5772 </td> 5773 5774 <td class="entry_tags"> 5775 <ul class="entry_tags"> 5776 <li><a href="#tag_BC">BC</a></li> 5777 </ul> 5778 </td> 5779 5780 </tr> 5781 <tr class="entries_header"> 5782 <th class="th_details" colspan="5">Details</th> 5783 </tr> 5784 <tr class="entry_cont"> 5785 <td class="entry_details" colspan="5"> 5786 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 5787Otherwise will always be present.<wbr/></p> 5788<p>The maximum number of regions supported by the device is determined by the value 5789of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 5790<p>The coordinate system is based on the active pixel array,<wbr/> 5791with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 5792(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 5793<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 5794bottom-right pixel in the active pixel array.<wbr/></p> 5795<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 5796for every pixel in the area.<wbr/> This means that a large metering area 5797with the same weight as a smaller area will have more effect in 5798the metering result.<wbr/> Metering areas can partially overlap and the 5799camera device will add the weights in the overlap region.<wbr/></p> 5800<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 5801region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 5802weight is ignored.<wbr/></p> 5803<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 5804camera device.<wbr/></p> 5805<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 5806capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 5807region and output only the intersection rectangle as the metering region in the result 5808metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 5809not reported in the result metadata.<wbr/></p> 5810 </td> 5811 </tr> 5812 5813 <tr class="entries_header"> 5814 <th class="th_details" colspan="5">HAL Implementation Details</th> 5815 </tr> 5816 <tr class="entry_cont"> 5817 <td class="entry_details" colspan="5"> 5818 <p>The HAL level representation of MeteringRectangle[] is a 5819int[5 * area_<wbr/>count].<wbr/> 5820Every five elements represent a metering region of 5821(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 5822The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 5823exclusive on xmax and ymax.<wbr/></p> 5824 </td> 5825 </tr> 5826 5827 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5828 <!-- end of entry --> 5829 5830 5831 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> 5832 <td class="entry_name 5833 " rowspan="3"> 5834 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 5835 </td> 5836 <td class="entry_type"> 5837 <span class="entry_type_name">int32</span> 5838 <span class="entry_type_container">x</span> 5839 5840 <span class="entry_type_array"> 5841 2 5842 </span> 5843 <span class="entry_type_visibility"> [public as rangeInt]</span> 5844 5845 5846 <span class="entry_type_hwlevel">[legacy] </span> 5847 5848 5849 5850 5851 </td> <!-- entry_type --> 5852 5853 <td class="entry_description"> 5854 <p>Range over which the auto-exposure routine can 5855adjust the capture frame rate to maintain good 5856exposure.<wbr/></p> 5857 </td> 5858 5859 <td class="entry_units"> 5860 Frames per second (FPS) 5861 </td> 5862 5863 <td class="entry_range"> 5864 <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> 5865 </td> 5866 5867 <td class="entry_tags"> 5868 <ul class="entry_tags"> 5869 <li><a href="#tag_BC">BC</a></li> 5870 </ul> 5871 </td> 5872 5873 </tr> 5874 <tr class="entries_header"> 5875 <th class="th_details" colspan="5">Details</th> 5876 </tr> 5877 <tr class="entry_cont"> 5878 <td class="entry_details" colspan="5"> 5879 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 5880manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 5881<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 5882 </td> 5883 </tr> 5884 5885 5886 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5887 <!-- end of entry --> 5888 5889 5890 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> 5891 <td class="entry_name 5892 " rowspan="3"> 5893 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 5894 </td> 5895 <td class="entry_type"> 5896 <span class="entry_type_name entry_type_name_enum">byte</span> 5897 5898 <span class="entry_type_visibility"> [public]</span> 5899 5900 5901 <span class="entry_type_hwlevel">[limited] </span> 5902 5903 5904 5905 <ul class="entry_type_enum"> 5906 <li> 5907 <span class="entry_type_enum_name">IDLE</span> 5908 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 5909 </li> 5910 <li> 5911 <span class="entry_type_enum_name">START</span> 5912 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 5913by the camera device.<wbr/></p> 5914<p>The exact effect of the precapture trigger depends on 5915the current AE mode and state.<wbr/></p></span> 5916 </li> 5917 <li> 5918 <span class="entry_type_enum_name">CANCEL</span> 5919 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 5920precapture metering sequence,<wbr/> the auto-exposure routine will return to its 5921initial state.<wbr/></p></span> 5922 </li> 5923 </ul> 5924 5925 </td> <!-- entry_type --> 5926 5927 <td class="entry_description"> 5928 <p>Whether the camera device will trigger a precapture 5929metering sequence when it processes this request.<wbr/></p> 5930 </td> 5931 5932 <td class="entry_units"> 5933 </td> 5934 5935 <td class="entry_range"> 5936 </td> 5937 5938 <td class="entry_tags"> 5939 <ul class="entry_tags"> 5940 <li><a href="#tag_BC">BC</a></li> 5941 </ul> 5942 </td> 5943 5944 </tr> 5945 <tr class="entries_header"> 5946 <th class="th_details" colspan="5">Details</th> 5947 </tr> 5948 <tr class="entry_cont"> 5949 <td class="entry_details" colspan="5"> 5950 <p>This entry is normally set to IDLE,<wbr/> or is not 5951included at all in the request settings.<wbr/> When included and 5952set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 5953precapture metering sequence.<wbr/></p> 5954<p>When set to CANCEL,<wbr/> the camera device will cancel any active 5955precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 5956If a precapture metering sequence is already completed,<wbr/> and the camera 5957device has implicitly locked the AE for subsequent still capture,<wbr/> the 5958CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 5959<p>The precapture sequence should be triggered before starting a 5960high-quality still capture for final metering decisions to 5961be made,<wbr/> and for firing pre-capture flash pulses to estimate 5962scene brightness and required final capture flash power,<wbr/> when 5963the flash is enabled.<wbr/></p> 5964<p>Normally,<wbr/> this entry should be set to START for only a 5965single request,<wbr/> and the application should wait until the 5966sequence completes before starting a new one.<wbr/></p> 5967<p>When a precapture metering sequence is finished,<wbr/> the camera device 5968may lock the auto-exposure routine internally to be able to accurately expose the 5969subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 5970For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 5971submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 5972submit 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 5973with <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 5974still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 5975API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 5976internally locked AE if the application doesn't submit a still capture request after 5977the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 5978be used in devices that have earlier API levels.<wbr/></p> 5979<p>The exact effect of auto-exposure (AE) precapture trigger 5980depends on the current AE mode and state; see 5981<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 5982details.<wbr/></p> 5983<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 5984capturing a high-resolution JPEG image will automatically trigger a 5985precapture sequence before the high-resolution capture,<wbr/> including 5986potentially firing a pre-capture flash.<wbr/></p> 5987 </td> 5988 </tr> 5989 5990 5991 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5992 <!-- end of entry --> 5993 5994 5995 <tr class="entry" id="dynamic_android.control.aeState"> 5996 <td class="entry_name 5997 " rowspan="3"> 5998 android.<wbr/>control.<wbr/>ae<wbr/>State 5999 </td> 6000 <td class="entry_type"> 6001 <span class="entry_type_name entry_type_name_enum">byte</span> 6002 6003 <span class="entry_type_visibility"> [public]</span> 6004 6005 6006 <span class="entry_type_hwlevel">[limited] </span> 6007 6008 6009 6010 <ul class="entry_type_enum"> 6011 <li> 6012 <span class="entry_type_enum_name">INACTIVE</span> 6013 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> 6014<p>When a camera device is opened,<wbr/> it starts in 6015this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 6016this state in capture result.<wbr/></p></span> 6017 </li> 6018 <li> 6019 <span class="entry_type_enum_name">SEARCHING</span> 6020 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 6021for the current scene.<wbr/></p> 6022<p>This is a transient state,<wbr/> the camera device may skip 6023reporting this state in capture result.<wbr/></p></span> 6024 </li> 6025 <li> 6026 <span class="entry_type_enum_name">CONVERGED</span> 6027 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 6028current scene.<wbr/></p></span> 6029 </li> 6030 <li> 6031 <span class="entry_type_enum_name">LOCKED</span> 6032 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 6033 </li> 6034 <li> 6035 <span class="entry_type_enum_name">FLASH_REQUIRED</span> 6036 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 6037needs to be fired for good quality still 6038capture.<wbr/></p></span> 6039 </li> 6040 <li> 6041 <span class="entry_type_enum_name">PRECAPTURE</span> 6042 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 6043and is currently executing it.<wbr/></p> 6044<p>Precapture can be triggered through setting 6045<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently 6046active and completed (if it causes camera device internal AE lock) precapture 6047metering sequence can be canceled through setting 6048<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p> 6049<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED 6050or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient 6051state,<wbr/> the camera device may skip reporting this state in 6052capture result.<wbr/></p></span> 6053 </li> 6054 </ul> 6055 6056 </td> <!-- entry_type --> 6057 6058 <td class="entry_description"> 6059 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p> 6060 </td> 6061 6062 <td class="entry_units"> 6063 </td> 6064 6065 <td class="entry_range"> 6066 </td> 6067 6068 <td class="entry_tags"> 6069 </td> 6070 6071 </tr> 6072 <tr class="entries_header"> 6073 <th class="th_details" colspan="5">Details</th> 6074 </tr> 6075 <tr class="entry_cont"> 6076 <td class="entry_details" colspan="5"> 6077 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 6078resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6079or <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 6080the algorithm states to INACTIVE.<wbr/></p> 6081<p>The camera device can do several state transitions between two results,<wbr/> if it is 6082allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6083seen in a result.<wbr/></p> 6084<p>The state in the result is the state for this image (in sync with this image): if 6085AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 6086be good to use.<wbr/></p> 6087<p>Below are state transition tables for different AE modes.<wbr/></p> 6088<table> 6089<thead> 6090<tr> 6091<th align="center">State</th> 6092<th align="center">Transition Cause</th> 6093<th align="center">New State</th> 6094<th align="center">Notes</th> 6095</tr> 6096</thead> 6097<tbody> 6098<tr> 6099<td align="center">INACTIVE</td> 6100<td align="center"></td> 6101<td align="center">INACTIVE</td> 6102<td align="center">Camera device auto exposure algorithm is disabled</td> 6103</tr> 6104</tbody> 6105</table> 6106<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p> 6107<table> 6108<thead> 6109<tr> 6110<th align="center">State</th> 6111<th align="center">Transition Cause</th> 6112<th align="center">New State</th> 6113<th align="center">Notes</th> 6114</tr> 6115</thead> 6116<tbody> 6117<tr> 6118<td align="center">INACTIVE</td> 6119<td align="center">Camera device initiates AE scan</td> 6120<td align="center">SEARCHING</td> 6121<td align="center">Values changing</td> 6122</tr> 6123<tr> 6124<td align="center">INACTIVE</td> 6125<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6126<td align="center">LOCKED</td> 6127<td align="center">Values locked</td> 6128</tr> 6129<tr> 6130<td align="center">SEARCHING</td> 6131<td align="center">Camera device finishes AE scan</td> 6132<td align="center">CONVERGED</td> 6133<td align="center">Good values,<wbr/> not changing</td> 6134</tr> 6135<tr> 6136<td align="center">SEARCHING</td> 6137<td align="center">Camera device finishes AE scan</td> 6138<td align="center">FLASH_<wbr/>REQUIRED</td> 6139<td align="center">Converged but too dark w/<wbr/>o flash</td> 6140</tr> 6141<tr> 6142<td align="center">SEARCHING</td> 6143<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6144<td align="center">LOCKED</td> 6145<td align="center">Values locked</td> 6146</tr> 6147<tr> 6148<td align="center">CONVERGED</td> 6149<td align="center">Camera device initiates AE scan</td> 6150<td align="center">SEARCHING</td> 6151<td align="center">Values changing</td> 6152</tr> 6153<tr> 6154<td align="center">CONVERGED</td> 6155<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6156<td align="center">LOCKED</td> 6157<td align="center">Values locked</td> 6158</tr> 6159<tr> 6160<td align="center">FLASH_<wbr/>REQUIRED</td> 6161<td align="center">Camera device initiates AE scan</td> 6162<td align="center">SEARCHING</td> 6163<td align="center">Values changing</td> 6164</tr> 6165<tr> 6166<td align="center">FLASH_<wbr/>REQUIRED</td> 6167<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6168<td align="center">LOCKED</td> 6169<td align="center">Values locked</td> 6170</tr> 6171<tr> 6172<td align="center">LOCKED</td> 6173<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6174<td align="center">SEARCHING</td> 6175<td align="center">Values not good after unlock</td> 6176</tr> 6177<tr> 6178<td align="center">LOCKED</td> 6179<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6180<td align="center">CONVERGED</td> 6181<td align="center">Values good after unlock</td> 6182</tr> 6183<tr> 6184<td align="center">LOCKED</td> 6185<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6186<td align="center">FLASH_<wbr/>REQUIRED</td> 6187<td align="center">Exposure good,<wbr/> but too dark</td> 6188</tr> 6189<tr> 6190<td align="center">PRECAPTURE</td> 6191<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6192<td align="center">CONVERGED</td> 6193<td align="center">Ready for high-quality capture</td> 6194</tr> 6195<tr> 6196<td align="center">PRECAPTURE</td> 6197<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6198<td align="center">LOCKED</td> 6199<td align="center">Ready for high-quality capture</td> 6200</tr> 6201<tr> 6202<td align="center">LOCKED</td> 6203<td align="center">aeLock is ON and aePrecaptureTrigger is START</td> 6204<td align="center">LOCKED</td> 6205<td align="center">Precapture trigger is ignored when AE is already locked</td> 6206</tr> 6207<tr> 6208<td align="center">LOCKED</td> 6209<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td> 6210<td align="center">LOCKED</td> 6211<td align="center">Precapture trigger is ignored when AE is already locked</td> 6212</tr> 6213<tr> 6214<td align="center">Any state (excluding LOCKED)</td> 6215<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 6216<td align="center">PRECAPTURE</td> 6217<td align="center">Start AE precapture metering sequence</td> 6218</tr> 6219<tr> 6220<td align="center">Any state (excluding LOCKED)</td> 6221<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td> 6222<td align="center">INACTIVE</td> 6223<td align="center">Currently active precapture metering sequence is canceled</td> 6224</tr> 6225</tbody> 6226</table> 6227<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 6228without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 6229can be skipped in that manner is called a transient state.<wbr/></p> 6230<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions 6231listed in above table,<wbr/> it is also legal for the camera device to skip one or more 6232transient states between two results.<wbr/> See below table for examples:</p> 6233<table> 6234<thead> 6235<tr> 6236<th align="center">State</th> 6237<th align="center">Transition Cause</th> 6238<th align="center">New State</th> 6239<th align="center">Notes</th> 6240</tr> 6241</thead> 6242<tbody> 6243<tr> 6244<td align="center">INACTIVE</td> 6245<td align="center">Camera device finished AE scan</td> 6246<td align="center">CONVERGED</td> 6247<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 6248</tr> 6249<tr> 6250<td align="center">Any state (excluding LOCKED)</td> 6251<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> 6252<td align="center">FLASH_<wbr/>REQUIRED</td> 6253<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> 6254</tr> 6255<tr> 6256<td align="center">Any state (excluding LOCKED)</td> 6257<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> 6258<td align="center">CONVERGED</td> 6259<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 6260</tr> 6261<tr> 6262<td align="center">Any state (excluding LOCKED)</td> 6263<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 6264<td align="center">FLASH_<wbr/>REQUIRED</td> 6265<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> 6266</tr> 6267<tr> 6268<td align="center">Any state (excluding LOCKED)</td> 6269<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 6270<td align="center">CONVERGED</td> 6271<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> 6272</tr> 6273<tr> 6274<td align="center">CONVERGED</td> 6275<td align="center">Camera device finished AE scan</td> 6276<td align="center">FLASH_<wbr/>REQUIRED</td> 6277<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> 6278</tr> 6279<tr> 6280<td align="center">FLASH_<wbr/>REQUIRED</td> 6281<td align="center">Camera device finished AE scan</td> 6282<td align="center">CONVERGED</td> 6283<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 6284</tr> 6285</tbody> 6286</table> 6287 </td> 6288 </tr> 6289 6290 6291 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6292 <!-- end of entry --> 6293 6294 6295 <tr class="entry" id="dynamic_android.control.afMode"> 6296 <td class="entry_name 6297 " rowspan="5"> 6298 android.<wbr/>control.<wbr/>af<wbr/>Mode 6299 </td> 6300 <td class="entry_type"> 6301 <span class="entry_type_name entry_type_name_enum">byte</span> 6302 6303 <span class="entry_type_visibility"> [public]</span> 6304 6305 6306 <span class="entry_type_hwlevel">[legacy] </span> 6307 6308 6309 6310 <ul class="entry_type_enum"> 6311 <li> 6312 <span class="entry_type_enum_name">OFF</span> 6313 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 6314<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 6315application.<wbr/></p></span> 6316 </li> 6317 <li> 6318 <span class="entry_type_enum_name">AUTO</span> 6319 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 6320<p>In this mode,<wbr/> the lens does not move unless 6321the autofocus trigger action is called.<wbr/> When that trigger 6322is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 6323the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 6324<p>Always supported if lens is not fixed focus.<wbr/></p> 6325<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 6326is fixed-focus.<wbr/></p> 6327<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 6328and sets the AF state to INACTIVE.<wbr/></p></span> 6329 </li> 6330 <li> 6331 <span class="entry_type_enum_name">MACRO</span> 6332 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 6333<p>In this mode,<wbr/> the lens does not move unless the 6334autofocus trigger action is called.<wbr/> When that trigger is 6335activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 6336the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 6337mode is optimized for focusing on objects very close to 6338the camera.<wbr/></p> 6339<p>When that trigger is activated,<wbr/> AF will transition to 6340ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 6341NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 6342position to default,<wbr/> and sets the AF state to 6343INACTIVE.<wbr/></p></span> 6344 </li> 6345 <li> 6346 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 6347 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6348position continually to attempt to provide a 6349constantly-in-focus image stream.<wbr/></p> 6350<p>The focusing behavior should be suitable for good quality 6351video recording; typically this means slower focus 6352movement and no overshoots.<wbr/> When the AF trigger is not 6353involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 6354and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 6355states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 6356the algorithm should immediately transition into 6357AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6358lens position until a cancel AF trigger is received.<wbr/></p> 6359<p>Once cancel is received,<wbr/> the algorithm should transition 6360back to INACTIVE and resume passive scan.<wbr/> Note that this 6361behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 6362ongoing PASSIVE_<wbr/>SCAN must immediately be 6363canceled.<wbr/></p></span> 6364 </li> 6365 <li> 6366 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 6367 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6368position continually to attempt to provide a 6369constantly-in-focus image stream.<wbr/></p> 6370<p>The focusing behavior should be suitable for still image 6371capture; typically this means focusing as fast as 6372possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 6373algorithm should start in INACTIVE state,<wbr/> and then 6374transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 6375appropriate as it attempts to maintain focus.<wbr/> When the AF 6376trigger is activated,<wbr/> the algorithm should finish its 6377PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 6378AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6379lens position until a cancel AF trigger is received.<wbr/></p> 6380<p>When the AF cancel trigger is activated,<wbr/> the algorithm 6381should transition back to INACTIVE and then act as if it 6382has just been started.<wbr/></p></span> 6383 </li> 6384 <li> 6385 <span class="entry_type_enum_name">EDOF</span> 6386 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 6387<p>The camera device will produce images with an extended 6388depth of field automatically; no special focusing 6389operations need to be done before taking a picture.<wbr/></p> 6390<p>AF triggers are ignored,<wbr/> and the AF state will always be 6391INACTIVE.<wbr/></p></span> 6392 </li> 6393 </ul> 6394 6395 </td> <!-- entry_type --> 6396 6397 <td class="entry_description"> 6398 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 6399mode it is set to.<wbr/></p> 6400 </td> 6401 6402 <td class="entry_units"> 6403 </td> 6404 6405 <td class="entry_range"> 6406 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 6407 </td> 6408 6409 <td class="entry_tags"> 6410 <ul class="entry_tags"> 6411 <li><a href="#tag_BC">BC</a></li> 6412 </ul> 6413 </td> 6414 6415 </tr> 6416 <tr class="entries_header"> 6417 <th class="th_details" colspan="5">Details</th> 6418 </tr> 6419 <tr class="entry_cont"> 6420 <td class="entry_details" colspan="5"> 6421 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 6422(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 6423when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 6424dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 6425setting <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> 6426<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 6427the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 6428in result metadata.<wbr/></p> 6429 </td> 6430 </tr> 6431 6432 <tr class="entries_header"> 6433 <th class="th_details" colspan="5">HAL Implementation Details</th> 6434 </tr> 6435 <tr class="entry_cont"> 6436 <td class="entry_details" colspan="5"> 6437 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 6438request (<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 6439up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 6440<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 6441locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 6442after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 6443the same focal plane remains in focus.<wbr/></p> 6444<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 6445scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 6446(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 6447same lock behavior as above.<wbr/></p> 6448<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 6449focus 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/> 6450However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 6451manual control.<wbr/></p> 6452<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 6453camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 6454remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 6455by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 6456that will arise on camera modules with open-loop VCMs.<wbr/></p> 6457 </td> 6458 </tr> 6459 6460 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6461 <!-- end of entry --> 6462 6463 6464 <tr class="entry" id="dynamic_android.control.afRegions"> 6465 <td class="entry_name 6466 " rowspan="5"> 6467 android.<wbr/>control.<wbr/>af<wbr/>Regions 6468 </td> 6469 <td class="entry_type"> 6470 <span class="entry_type_name">int32</span> 6471 <span class="entry_type_container">x</span> 6472 6473 <span class="entry_type_array"> 6474 5 x area_count 6475 </span> 6476 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 6477 6478 6479 6480 6481 6482 6483 </td> <!-- entry_type --> 6484 6485 <td class="entry_description"> 6486 <p>List of metering areas to use for auto-focus.<wbr/></p> 6487 </td> 6488 6489 <td class="entry_units"> 6490 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 6491 </td> 6492 6493 <td class="entry_range"> 6494 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 6495<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 6496 </td> 6497 6498 <td class="entry_tags"> 6499 <ul class="entry_tags"> 6500 <li><a href="#tag_BC">BC</a></li> 6501 </ul> 6502 </td> 6503 6504 </tr> 6505 <tr class="entries_header"> 6506 <th class="th_details" colspan="5">Details</th> 6507 </tr> 6508 <tr class="entry_cont"> 6509 <td class="entry_details" colspan="5"> 6510 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 6511Otherwise will always be present.<wbr/></p> 6512<p>The maximum number of focus areas supported by the device is determined by the value 6513of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 6514<p>The coordinate system is based on the active pixel array,<wbr/> 6515with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 6516(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6517<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 6518bottom-right pixel in the active pixel array.<wbr/></p> 6519<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 6520for every pixel in the area.<wbr/> This means that a large metering area 6521with the same weight as a smaller area will have more effect in 6522the metering result.<wbr/> Metering areas can partially overlap and the 6523camera device will add the weights in the overlap region.<wbr/></p> 6524<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 6525is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 6526ignored.<wbr/></p> 6527<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 6528camera device.<wbr/></p> 6529<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 6530capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 6531region and output only the intersection rectangle as the metering region in the result 6532metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 6533not reported in the result metadata.<wbr/></p> 6534 </td> 6535 </tr> 6536 6537 <tr class="entries_header"> 6538 <th class="th_details" colspan="5">HAL Implementation Details</th> 6539 </tr> 6540 <tr class="entry_cont"> 6541 <td class="entry_details" colspan="5"> 6542 <p>The HAL level representation of MeteringRectangle[] is a 6543int[5 * area_<wbr/>count].<wbr/> 6544Every five elements represent a metering region of 6545(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 6546The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 6547exclusive on xmax and ymax.<wbr/></p> 6548 </td> 6549 </tr> 6550 6551 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6552 <!-- end of entry --> 6553 6554 6555 <tr class="entry" id="dynamic_android.control.afTrigger"> 6556 <td class="entry_name 6557 " rowspan="3"> 6558 android.<wbr/>control.<wbr/>af<wbr/>Trigger 6559 </td> 6560 <td class="entry_type"> 6561 <span class="entry_type_name entry_type_name_enum">byte</span> 6562 6563 <span class="entry_type_visibility"> [public]</span> 6564 6565 6566 <span class="entry_type_hwlevel">[legacy] </span> 6567 6568 6569 6570 <ul class="entry_type_enum"> 6571 <li> 6572 <span class="entry_type_enum_name">IDLE</span> 6573 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6574 </li> 6575 <li> 6576 <span class="entry_type_enum_name">START</span> 6577 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 6578 </li> 6579 <li> 6580 <span class="entry_type_enum_name">CANCEL</span> 6581 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 6582state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 6583 </li> 6584 </ul> 6585 6586 </td> <!-- entry_type --> 6587 6588 <td class="entry_description"> 6589 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 6590 </td> 6591 6592 <td class="entry_units"> 6593 </td> 6594 6595 <td class="entry_range"> 6596 </td> 6597 6598 <td class="entry_tags"> 6599 <ul class="entry_tags"> 6600 <li><a href="#tag_BC">BC</a></li> 6601 </ul> 6602 </td> 6603 6604 </tr> 6605 <tr class="entries_header"> 6606 <th class="th_details" colspan="5">Details</th> 6607 </tr> 6608 <tr class="entry_cont"> 6609 <td class="entry_details" colspan="5"> 6610 <p>This entry is normally set to IDLE,<wbr/> or is not 6611included at all in the request settings.<wbr/></p> 6612<p>When included and set to START,<wbr/> the camera device will trigger the 6613autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 6614<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 6615and return to its initial AF state.<wbr/></p> 6616<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 6617single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 6618START for multiple captures in a row means restarting the AF operation over 6619and over again.<wbr/></p> 6620<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> 6621 </td> 6622 </tr> 6623 6624 6625 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6626 <!-- end of entry --> 6627 6628 6629 <tr class="entry" id="dynamic_android.control.afState"> 6630 <td class="entry_name 6631 " rowspan="3"> 6632 android.<wbr/>control.<wbr/>af<wbr/>State 6633 </td> 6634 <td class="entry_type"> 6635 <span class="entry_type_name entry_type_name_enum">byte</span> 6636 6637 <span class="entry_type_visibility"> [public]</span> 6638 6639 6640 <span class="entry_type_hwlevel">[legacy] </span> 6641 6642 6643 6644 <ul class="entry_type_enum"> 6645 <li> 6646 <span class="entry_type_enum_name">INACTIVE</span> 6647 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked 6648to scan.<wbr/></p> 6649<p>When a camera device is opened,<wbr/> it starts in this 6650state.<wbr/> This is a transient state,<wbr/> the camera device may 6651skip reporting this state in capture 6652result.<wbr/></p></span> 6653 </li> 6654 <li> 6655 <span class="entry_type_enum_name">PASSIVE_SCAN</span> 6656 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the 6657camera device in a continuous autofocus mode.<wbr/></p> 6658<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 6659state,<wbr/> the camera device may skip reporting this state in 6660capture result.<wbr/></p></span> 6661 </li> 6662 <li> 6663 <span class="entry_type_enum_name">PASSIVE_FOCUSED</span> 6664 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may 6665restart scanning at any time.<wbr/></p> 6666<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 6667state,<wbr/> the camera device may skip reporting this state in 6668capture result.<wbr/></p></span> 6669 </li> 6670 <li> 6671 <span class="entry_type_enum_name">ACTIVE_SCAN</span> 6672 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was 6673triggered by AF trigger.<wbr/></p> 6674<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient 6675state,<wbr/> the camera device may skip reporting this state in 6676capture result.<wbr/></p></span> 6677 </li> 6678 <li> 6679 <span class="entry_type_enum_name">FOCUSED_LOCKED</span> 6680 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked 6681focus.<wbr/></p> 6682<p>This state is reached only after an explicit START AF trigger has been 6683sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> 6684<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 6685a 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> 6686 </li> 6687 <li> 6688 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span> 6689 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked 6690focus.<wbr/></p> 6691<p>This state is reached only after an explicit START AF trigger has been 6692sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> 6693<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 6694a 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> 6695 </li> 6696 <li> 6697 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span> 6698 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> 6699and may restart scanning at any time.<wbr/></p> 6700<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera 6701device may skip reporting this state in capture result.<wbr/></p> 6702<p>LEGACY camera devices do not support this state.<wbr/> When a passive 6703scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> 6704 </li> 6705 </ul> 6706 6707 </td> <!-- entry_type --> 6708 6709 <td class="entry_description"> 6710 <p>Current state of auto-focus (AF) algorithm.<wbr/></p> 6711 </td> 6712 6713 <td class="entry_units"> 6714 </td> 6715 6716 <td class="entry_range"> 6717 </td> 6718 6719 <td class="entry_tags"> 6720 </td> 6721 6722 </tr> 6723 <tr class="entries_header"> 6724 <th class="th_details" colspan="5">Details</th> 6725 </tr> 6726 <tr class="entry_cont"> 6727 <td class="entry_details" colspan="5"> 6728 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 6729resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6730or <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 6731the algorithm states to INACTIVE.<wbr/></p> 6732<p>The camera device can do several state transitions between two results,<wbr/> if it is 6733allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6734seen in a result.<wbr/></p> 6735<p>The state in the result is the state for this image (in sync with this image): if 6736AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 6737be sharp.<wbr/></p> 6738<p>Below are state transition tables for different AF modes.<wbr/></p> 6739<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> 6740<table> 6741<thead> 6742<tr> 6743<th align="center">State</th> 6744<th align="center">Transition Cause</th> 6745<th align="center">New State</th> 6746<th align="center">Notes</th> 6747</tr> 6748</thead> 6749<tbody> 6750<tr> 6751<td align="center">INACTIVE</td> 6752<td align="center"></td> 6753<td align="center">INACTIVE</td> 6754<td align="center">Never changes</td> 6755</tr> 6756</tbody> 6757</table> 6758<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> 6759<table> 6760<thead> 6761<tr> 6762<th align="center">State</th> 6763<th align="center">Transition Cause</th> 6764<th align="center">New State</th> 6765<th align="center">Notes</th> 6766</tr> 6767</thead> 6768<tbody> 6769<tr> 6770<td align="center">INACTIVE</td> 6771<td align="center">AF_<wbr/>TRIGGER</td> 6772<td align="center">ACTIVE_<wbr/>SCAN</td> 6773<td align="center">Start AF sweep,<wbr/> Lens now moving</td> 6774</tr> 6775<tr> 6776<td align="center">ACTIVE_<wbr/>SCAN</td> 6777<td align="center">AF sweep done</td> 6778<td align="center">FOCUSED_<wbr/>LOCKED</td> 6779<td align="center">Focused,<wbr/> Lens now locked</td> 6780</tr> 6781<tr> 6782<td align="center">ACTIVE_<wbr/>SCAN</td> 6783<td align="center">AF sweep done</td> 6784<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6785<td align="center">Not focused,<wbr/> Lens now locked</td> 6786</tr> 6787<tr> 6788<td align="center">ACTIVE_<wbr/>SCAN</td> 6789<td align="center">AF_<wbr/>CANCEL</td> 6790<td align="center">INACTIVE</td> 6791<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 6792</tr> 6793<tr> 6794<td align="center">FOCUSED_<wbr/>LOCKED</td> 6795<td align="center">AF_<wbr/>CANCEL</td> 6796<td align="center">INACTIVE</td> 6797<td align="center">Cancel/<wbr/>reset AF</td> 6798</tr> 6799<tr> 6800<td align="center">FOCUSED_<wbr/>LOCKED</td> 6801<td align="center">AF_<wbr/>TRIGGER</td> 6802<td align="center">ACTIVE_<wbr/>SCAN</td> 6803<td align="center">Start new sweep,<wbr/> Lens now moving</td> 6804</tr> 6805<tr> 6806<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6807<td align="center">AF_<wbr/>CANCEL</td> 6808<td align="center">INACTIVE</td> 6809<td align="center">Cancel/<wbr/>reset AF</td> 6810</tr> 6811<tr> 6812<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6813<td align="center">AF_<wbr/>TRIGGER</td> 6814<td align="center">ACTIVE_<wbr/>SCAN</td> 6815<td align="center">Start new sweep,<wbr/> Lens now moving</td> 6816</tr> 6817<tr> 6818<td align="center">Any state</td> 6819<td align="center">Mode change</td> 6820<td align="center">INACTIVE</td> 6821<td align="center"></td> 6822</tr> 6823</tbody> 6824</table> 6825<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 6826without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 6827can be skipped in that manner is called a transient state.<wbr/></p> 6828<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 6829state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 6830one or more transient states between two results.<wbr/> See below table for examples:</p> 6831<table> 6832<thead> 6833<tr> 6834<th align="center">State</th> 6835<th align="center">Transition Cause</th> 6836<th align="center">New State</th> 6837<th align="center">Notes</th> 6838</tr> 6839</thead> 6840<tbody> 6841<tr> 6842<td align="center">INACTIVE</td> 6843<td align="center">AF_<wbr/>TRIGGER</td> 6844<td align="center">FOCUSED_<wbr/>LOCKED</td> 6845<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 6846</tr> 6847<tr> 6848<td align="center">INACTIVE</td> 6849<td align="center">AF_<wbr/>TRIGGER</td> 6850<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6851<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 6852</tr> 6853<tr> 6854<td align="center">FOCUSED_<wbr/>LOCKED</td> 6855<td align="center">AF_<wbr/>TRIGGER</td> 6856<td align="center">FOCUSED_<wbr/>LOCKED</td> 6857<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 6858</tr> 6859<tr> 6860<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6861<td align="center">AF_<wbr/>TRIGGER</td> 6862<td align="center">FOCUSED_<wbr/>LOCKED</td> 6863<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 6864</tr> 6865</tbody> 6866</table> 6867<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> 6868<table> 6869<thead> 6870<tr> 6871<th align="center">State</th> 6872<th align="center">Transition Cause</th> 6873<th align="center">New State</th> 6874<th align="center">Notes</th> 6875</tr> 6876</thead> 6877<tbody> 6878<tr> 6879<td align="center">INACTIVE</td> 6880<td align="center">Camera device initiates new scan</td> 6881<td align="center">PASSIVE_<wbr/>SCAN</td> 6882<td align="center">Start AF scan,<wbr/> Lens now moving</td> 6883</tr> 6884<tr> 6885<td align="center">INACTIVE</td> 6886<td align="center">AF_<wbr/>TRIGGER</td> 6887<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6888<td align="center">AF state query,<wbr/> Lens now locked</td> 6889</tr> 6890<tr> 6891<td align="center">PASSIVE_<wbr/>SCAN</td> 6892<td align="center">Camera device completes current scan</td> 6893<td align="center">PASSIVE_<wbr/>FOCUSED</td> 6894<td align="center">End AF scan,<wbr/> Lens now locked</td> 6895</tr> 6896<tr> 6897<td align="center">PASSIVE_<wbr/>SCAN</td> 6898<td align="center">Camera device fails current scan</td> 6899<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 6900<td align="center">End AF scan,<wbr/> Lens now locked</td> 6901</tr> 6902<tr> 6903<td align="center">PASSIVE_<wbr/>SCAN</td> 6904<td align="center">AF_<wbr/>TRIGGER</td> 6905<td align="center">FOCUSED_<wbr/>LOCKED</td> 6906<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> 6907</tr> 6908<tr> 6909<td align="center">PASSIVE_<wbr/>SCAN</td> 6910<td align="center">AF_<wbr/>TRIGGER</td> 6911<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6912<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> 6913</tr> 6914<tr> 6915<td align="center">PASSIVE_<wbr/>SCAN</td> 6916<td align="center">AF_<wbr/>CANCEL</td> 6917<td align="center">INACTIVE</td> 6918<td align="center">Reset lens position,<wbr/> Lens now locked</td> 6919</tr> 6920<tr> 6921<td align="center">PASSIVE_<wbr/>FOCUSED</td> 6922<td align="center">Camera device initiates new scan</td> 6923<td align="center">PASSIVE_<wbr/>SCAN</td> 6924<td align="center">Start AF scan,<wbr/> Lens now moving</td> 6925</tr> 6926<tr> 6927<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 6928<td align="center">Camera device initiates new scan</td> 6929<td align="center">PASSIVE_<wbr/>SCAN</td> 6930<td align="center">Start AF scan,<wbr/> Lens now moving</td> 6931</tr> 6932<tr> 6933<td align="center">PASSIVE_<wbr/>FOCUSED</td> 6934<td align="center">AF_<wbr/>TRIGGER</td> 6935<td align="center">FOCUSED_<wbr/>LOCKED</td> 6936<td align="center">Immediate transition,<wbr/> lens now locked</td> 6937</tr> 6938<tr> 6939<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 6940<td align="center">AF_<wbr/>TRIGGER</td> 6941<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6942<td align="center">Immediate transition,<wbr/> lens now locked</td> 6943</tr> 6944<tr> 6945<td align="center">FOCUSED_<wbr/>LOCKED</td> 6946<td align="center">AF_<wbr/>TRIGGER</td> 6947<td align="center">FOCUSED_<wbr/>LOCKED</td> 6948<td align="center">No effect</td> 6949</tr> 6950<tr> 6951<td align="center">FOCUSED_<wbr/>LOCKED</td> 6952<td align="center">AF_<wbr/>CANCEL</td> 6953<td align="center">INACTIVE</td> 6954<td align="center">Restart AF scan</td> 6955</tr> 6956<tr> 6957<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6958<td align="center">AF_<wbr/>TRIGGER</td> 6959<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6960<td align="center">No effect</td> 6961</tr> 6962<tr> 6963<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6964<td align="center">AF_<wbr/>CANCEL</td> 6965<td align="center">INACTIVE</td> 6966<td align="center">Restart AF scan</td> 6967</tr> 6968</tbody> 6969</table> 6970<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> 6971<table> 6972<thead> 6973<tr> 6974<th align="center">State</th> 6975<th align="center">Transition Cause</th> 6976<th align="center">New State</th> 6977<th align="center">Notes</th> 6978</tr> 6979</thead> 6980<tbody> 6981<tr> 6982<td align="center">INACTIVE</td> 6983<td align="center">Camera device initiates new scan</td> 6984<td align="center">PASSIVE_<wbr/>SCAN</td> 6985<td align="center">Start AF scan,<wbr/> Lens now moving</td> 6986</tr> 6987<tr> 6988<td align="center">INACTIVE</td> 6989<td align="center">AF_<wbr/>TRIGGER</td> 6990<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6991<td align="center">AF state query,<wbr/> Lens now locked</td> 6992</tr> 6993<tr> 6994<td align="center">PASSIVE_<wbr/>SCAN</td> 6995<td align="center">Camera device completes current scan</td> 6996<td align="center">PASSIVE_<wbr/>FOCUSED</td> 6997<td align="center">End AF scan,<wbr/> Lens now locked</td> 6998</tr> 6999<tr> 7000<td align="center">PASSIVE_<wbr/>SCAN</td> 7001<td align="center">Camera device fails current scan</td> 7002<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7003<td align="center">End AF scan,<wbr/> Lens now locked</td> 7004</tr> 7005<tr> 7006<td align="center">PASSIVE_<wbr/>SCAN</td> 7007<td align="center">AF_<wbr/>TRIGGER</td> 7008<td align="center">FOCUSED_<wbr/>LOCKED</td> 7009<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td> 7010</tr> 7011<tr> 7012<td align="center">PASSIVE_<wbr/>SCAN</td> 7013<td align="center">AF_<wbr/>TRIGGER</td> 7014<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7015<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> 7016</tr> 7017<tr> 7018<td align="center">PASSIVE_<wbr/>SCAN</td> 7019<td align="center">AF_<wbr/>CANCEL</td> 7020<td align="center">INACTIVE</td> 7021<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7022</tr> 7023<tr> 7024<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7025<td align="center">Camera device initiates new scan</td> 7026<td align="center">PASSIVE_<wbr/>SCAN</td> 7027<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7028</tr> 7029<tr> 7030<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7031<td align="center">Camera device initiates new scan</td> 7032<td align="center">PASSIVE_<wbr/>SCAN</td> 7033<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7034</tr> 7035<tr> 7036<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7037<td align="center">AF_<wbr/>TRIGGER</td> 7038<td align="center">FOCUSED_<wbr/>LOCKED</td> 7039<td align="center">Immediate trans.<wbr/> Lens now locked</td> 7040</tr> 7041<tr> 7042<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7043<td align="center">AF_<wbr/>TRIGGER</td> 7044<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7045<td align="center">Immediate trans.<wbr/> Lens now locked</td> 7046</tr> 7047<tr> 7048<td align="center">FOCUSED_<wbr/>LOCKED</td> 7049<td align="center">AF_<wbr/>TRIGGER</td> 7050<td align="center">FOCUSED_<wbr/>LOCKED</td> 7051<td align="center">No effect</td> 7052</tr> 7053<tr> 7054<td align="center">FOCUSED_<wbr/>LOCKED</td> 7055<td align="center">AF_<wbr/>CANCEL</td> 7056<td align="center">INACTIVE</td> 7057<td align="center">Restart AF scan</td> 7058</tr> 7059<tr> 7060<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7061<td align="center">AF_<wbr/>TRIGGER</td> 7062<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7063<td align="center">No effect</td> 7064</tr> 7065<tr> 7066<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7067<td align="center">AF_<wbr/>CANCEL</td> 7068<td align="center">INACTIVE</td> 7069<td align="center">Restart AF scan</td> 7070</tr> 7071</tbody> 7072</table> 7073<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 7074(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 7075camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 7076will be evaluated in the context of the new mode in the request.<wbr/> 7077See below table for examples:</p> 7078<table> 7079<thead> 7080<tr> 7081<th align="center">State</th> 7082<th align="center">Transition Cause</th> 7083<th align="center">New State</th> 7084<th align="center">Notes</th> 7085</tr> 7086</thead> 7087<tbody> 7088<tr> 7089<td align="center">any state</td> 7090<td align="center">CAF-->AUTO mode switch</td> 7091<td align="center">INACTIVE</td> 7092<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 7093</tr> 7094<tr> 7095<td align="center">any state</td> 7096<td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 7097<td align="center">trigger-reachable states from INACTIVE</td> 7098<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 7099</tr> 7100<tr> 7101<td align="center">any state</td> 7102<td align="center">AUTO-->CAF mode switch</td> 7103<td align="center">passively reachable states from INACTIVE</td> 7104<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 7105</tr> 7106</tbody> 7107</table> 7108 </td> 7109 </tr> 7110 7111 7112 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7113 <!-- end of entry --> 7114 7115 7116 <tr class="entry" id="dynamic_android.control.afTriggerId"> 7117 <td class="entry_name 7118 entry_name_deprecated 7119 " rowspan="3"> 7120 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 7121 </td> 7122 <td class="entry_type"> 7123 <span class="entry_type_name">int32</span> 7124 7125 <span class="entry_type_visibility"> [system]</span> 7126 7127 7128 7129 <span class="entry_type_deprecated">[deprecated] </span> 7130 7131 7132 7133 </td> <!-- entry_type --> 7134 7135 <td class="entry_description"> 7136 <p>The ID sent with the latest 7137CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 7138 </td> 7139 7140 <td class="entry_units"> 7141 </td> 7142 7143 <td class="entry_range"> 7144 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 7145 </td> 7146 7147 <td class="entry_tags"> 7148 </td> 7149 7150 </tr> 7151 <tr class="entries_header"> 7152 <th class="th_details" colspan="5">Details</th> 7153 </tr> 7154 <tr class="entry_cont"> 7155 <td class="entry_details" colspan="5"> 7156 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 7157received yet by HAL.<wbr/> Always updated even if AF algorithm 7158ignores the trigger</p> 7159 </td> 7160 </tr> 7161 7162 7163 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7164 <!-- end of entry --> 7165 7166 7167 <tr class="entry" id="dynamic_android.control.awbLock"> 7168 <td class="entry_name 7169 " rowspan="3"> 7170 android.<wbr/>control.<wbr/>awb<wbr/>Lock 7171 </td> 7172 <td class="entry_type"> 7173 <span class="entry_type_name entry_type_name_enum">byte</span> 7174 7175 <span class="entry_type_visibility"> [public as boolean]</span> 7176 7177 7178 <span class="entry_type_hwlevel">[legacy] </span> 7179 7180 7181 7182 <ul class="entry_type_enum"> 7183 <li> 7184 <span class="entry_type_enum_name">OFF</span> 7185 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 7186algorithm is free to update its parameters if in AUTO 7187mode.<wbr/></p></span> 7188 </li> 7189 <li> 7190 <span class="entry_type_enum_name">ON</span> 7191 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 7192algorithm will not update its parameters while the lock 7193is active.<wbr/></p></span> 7194 </li> 7195 </ul> 7196 7197 </td> <!-- entry_type --> 7198 7199 <td class="entry_description"> 7200 <p>Whether auto-white balance (AWB) is currently locked to its 7201latest calculated values.<wbr/></p> 7202 </td> 7203 7204 <td class="entry_units"> 7205 </td> 7206 7207 <td class="entry_range"> 7208 </td> 7209 7210 <td class="entry_tags"> 7211 <ul class="entry_tags"> 7212 <li><a href="#tag_BC">BC</a></li> 7213 </ul> 7214 </td> 7215 7216 </tr> 7217 <tr class="entries_header"> 7218 <th class="th_details" colspan="5">Details</th> 7219 </tr> 7220 <tr class="entry_cont"> 7221 <td class="entry_details" colspan="5"> 7222 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 7223and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 7224<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 7225get locked do not necessarily correspond to the settings that were present in the 7226latest capture result received from the camera device,<wbr/> since additional captures 7227and AWB updates may have occurred even before the result was sent out.<wbr/> If an 7228application is switching between automatic and manual control and wishes to eliminate 7229any flicker during the switch,<wbr/> the following procedure is recommended:</p> 7230<ol> 7231<li>Starting in auto-AWB mode:</li> 7232<li>Lock AWB</li> 7233<li>Wait for the first result to be output that has the AWB locked</li> 7234<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 7235<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 7236</ol> 7237<p>Note that AWB lock is only meaningful when 7238<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 7239AWB is already fixed to a specific setting.<wbr/></p> 7240<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 7241 </td> 7242 </tr> 7243 7244 7245 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7246 <!-- end of entry --> 7247 7248 7249 <tr class="entry" id="dynamic_android.control.awbMode"> 7250 <td class="entry_name 7251 " rowspan="3"> 7252 android.<wbr/>control.<wbr/>awb<wbr/>Mode 7253 </td> 7254 <td class="entry_type"> 7255 <span class="entry_type_name entry_type_name_enum">byte</span> 7256 7257 <span class="entry_type_visibility"> [public]</span> 7258 7259 7260 <span class="entry_type_hwlevel">[legacy] </span> 7261 7262 7263 7264 <ul class="entry_type_enum"> 7265 <li> 7266 <span class="entry_type_enum_name">OFF</span> 7267 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 7268<p>The application-selected color transform matrix 7269(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 7270(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 7271device for manual white balance control.<wbr/></p></span> 7272 </li> 7273 <li> 7274 <span class="entry_type_enum_name">AUTO</span> 7275 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 7276<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7277and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7278For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7279values used by the camera device for the transform and gains 7280will be available in the capture result for this request.<wbr/></p></span> 7281 </li> 7282 <li> 7283 <span class="entry_type_enum_name">INCANDESCENT</span> 7284 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7285the camera device uses incandescent light as the assumed scene 7286illumination for white balance.<wbr/></p> 7287<p>While the exact white balance transforms are up to the 7288camera device,<wbr/> they will approximately match the CIE 7289standard illuminant A.<wbr/></p> 7290<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7291and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7292For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7293values used by the camera device for the transform and gains 7294will be available in the capture result for this request.<wbr/></p></span> 7295 </li> 7296 <li> 7297 <span class="entry_type_enum_name">FLUORESCENT</span> 7298 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7299the camera device uses fluorescent light as the assumed scene 7300illumination for white balance.<wbr/></p> 7301<p>While the exact white balance transforms are up to the 7302camera device,<wbr/> they will approximately match the CIE 7303standard illuminant F2.<wbr/></p> 7304<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7305and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7306For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7307values used by the camera device for the transform and gains 7308will be available in the capture result for this request.<wbr/></p></span> 7309 </li> 7310 <li> 7311 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 7312 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7313the camera device uses warm fluorescent light as the assumed scene 7314illumination for white balance.<wbr/></p> 7315<p>While the exact white balance transforms are up to the 7316camera device,<wbr/> they will approximately match the CIE 7317standard illuminant F4.<wbr/></p> 7318<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7319and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7320For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7321values used by the camera device for the transform and gains 7322will be available in the capture result for this request.<wbr/></p></span> 7323 </li> 7324 <li> 7325 <span class="entry_type_enum_name">DAYLIGHT</span> 7326 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7327the camera device uses daylight light as the assumed scene 7328illumination for white balance.<wbr/></p> 7329<p>While the exact white balance transforms are up to the 7330camera device,<wbr/> they will approximately match the CIE 7331standard illuminant D65.<wbr/></p> 7332<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7333and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7334For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7335values used by the camera device for the transform and gains 7336will be available in the capture result for this request.<wbr/></p></span> 7337 </li> 7338 <li> 7339 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 7340 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7341the camera device uses cloudy daylight light as the assumed scene 7342illumination for white balance.<wbr/></p> 7343<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7344and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7345For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7346values used by the camera device for the transform and gains 7347will be available in the capture result for this request.<wbr/></p></span> 7348 </li> 7349 <li> 7350 <span class="entry_type_enum_name">TWILIGHT</span> 7351 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7352the camera device uses twilight light as the assumed scene 7353illumination for white balance.<wbr/></p> 7354<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7355and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7356For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7357values used by the camera device for the transform and gains 7358will be available in the capture result for this request.<wbr/></p></span> 7359 </li> 7360 <li> 7361 <span class="entry_type_enum_name">SHADE</span> 7362 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7363the camera device uses shade light as the assumed scene 7364illumination for white balance.<wbr/></p> 7365<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7366and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7367For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7368values used by the camera device for the transform and gains 7369will be available in the capture result for this request.<wbr/></p></span> 7370 </li> 7371 </ul> 7372 7373 </td> <!-- entry_type --> 7374 7375 <td class="entry_description"> 7376 <p>Whether auto-white balance (AWB) is currently setting the color 7377transform fields,<wbr/> and what its illumination target 7378is.<wbr/></p> 7379 </td> 7380 7381 <td class="entry_units"> 7382 </td> 7383 7384 <td class="entry_range"> 7385 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 7386 </td> 7387 7388 <td class="entry_tags"> 7389 <ul class="entry_tags"> 7390 <li><a href="#tag_BC">BC</a></li> 7391 </ul> 7392 </td> 7393 7394 </tr> 7395 <tr class="entries_header"> 7396 <th class="th_details" colspan="5">Details</th> 7397 </tr> 7398 <tr class="entry_cont"> 7399 <td class="entry_details" colspan="5"> 7400 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 7401<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 7402routine is enabled,<wbr/> overriding the application's selected 7403<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 7404<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> 7405is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 7406also 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 7407setting AE mode to OFF.<wbr/></p> 7408<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 7409routine is disabled.<wbr/> The application manually controls the white 7410balance 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> 7411and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 7412<p>When set to any other modes,<wbr/> the camera device's auto-white 7413balance routine is disabled.<wbr/> The camera device uses each 7414particular illumination target for white balance 7415adjustment.<wbr/> The application's values for 7416<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 7417<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 7418<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 7419 </td> 7420 </tr> 7421 7422 7423 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7424 <!-- end of entry --> 7425 7426 7427 <tr class="entry" id="dynamic_android.control.awbRegions"> 7428 <td class="entry_name 7429 " rowspan="5"> 7430 android.<wbr/>control.<wbr/>awb<wbr/>Regions 7431 </td> 7432 <td class="entry_type"> 7433 <span class="entry_type_name">int32</span> 7434 <span class="entry_type_container">x</span> 7435 7436 <span class="entry_type_array"> 7437 5 x area_count 7438 </span> 7439 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 7440 7441 7442 7443 7444 7445 7446 </td> <!-- entry_type --> 7447 7448 <td class="entry_description"> 7449 <p>List of metering areas to use for auto-white-balance illuminant 7450estimation.<wbr/></p> 7451 </td> 7452 7453 <td class="entry_units"> 7454 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 7455 </td> 7456 7457 <td class="entry_range"> 7458 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 7459<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 7460 </td> 7461 7462 <td class="entry_tags"> 7463 <ul class="entry_tags"> 7464 <li><a href="#tag_BC">BC</a></li> 7465 </ul> 7466 </td> 7467 7468 </tr> 7469 <tr class="entries_header"> 7470 <th class="th_details" colspan="5">Details</th> 7471 </tr> 7472 <tr class="entry_cont"> 7473 <td class="entry_details" colspan="5"> 7474 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 7475Otherwise will always be present.<wbr/></p> 7476<p>The maximum number of regions supported by the device is determined by the value 7477of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 7478<p>The coordinate system is based on the active pixel array,<wbr/> 7479with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 7480(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7481<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 7482bottom-right pixel in the active pixel array.<wbr/></p> 7483<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 7484for every pixel in the area.<wbr/> This means that a large metering area 7485with the same weight as a smaller area will have more effect in 7486the metering result.<wbr/> Metering areas can partially overlap and the 7487camera device will add the weights in the overlap region.<wbr/></p> 7488<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 7489only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 74900 weight is ignored.<wbr/></p> 7491<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 7492camera device.<wbr/></p> 7493<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 7494capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 7495region and output only the intersection rectangle as the metering region in the result 7496metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 7497not reported in the result metadata.<wbr/></p> 7498 </td> 7499 </tr> 7500 7501 <tr class="entries_header"> 7502 <th class="th_details" colspan="5">HAL Implementation Details</th> 7503 </tr> 7504 <tr class="entry_cont"> 7505 <td class="entry_details" colspan="5"> 7506 <p>The HAL level representation of MeteringRectangle[] is a 7507int[5 * area_<wbr/>count].<wbr/> 7508Every five elements represent a metering region of 7509(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 7510The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 7511exclusive on xmax and ymax.<wbr/></p> 7512 </td> 7513 </tr> 7514 7515 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7516 <!-- end of entry --> 7517 7518 7519 <tr class="entry" id="dynamic_android.control.captureIntent"> 7520 <td class="entry_name 7521 " rowspan="3"> 7522 android.<wbr/>control.<wbr/>capture<wbr/>Intent 7523 </td> 7524 <td class="entry_type"> 7525 <span class="entry_type_name entry_type_name_enum">byte</span> 7526 7527 <span class="entry_type_visibility"> [public]</span> 7528 7529 7530 <span class="entry_type_hwlevel">[legacy] </span> 7531 7532 7533 7534 <ul class="entry_type_enum"> 7535 <li> 7536 <span class="entry_type_enum_name">CUSTOM</span> 7537 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 7538categories.<wbr/> The camera device will default to preview-like 7539behavior.<wbr/></p></span> 7540 </li> 7541 <li> 7542 <span class="entry_type_enum_name">PREVIEW</span> 7543 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 7544<p>The precapture trigger may be used to start off a metering 7545w/<wbr/>flash sequence.<wbr/></p></span> 7546 </li> 7547 <li> 7548 <span class="entry_type_enum_name">STILL_CAPTURE</span> 7549 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 7550use case.<wbr/></p> 7551<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 7552 </li> 7553 <li> 7554 <span class="entry_type_enum_name">VIDEO_RECORD</span> 7555 <span class="entry_type_enum_notes"><p>This request is for a video recording 7556use case.<wbr/></p></span> 7557 </li> 7558 <li> 7559 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 7560 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 7561image while recording video) use case.<wbr/></p> 7562<p>The camera device should take the highest-quality image 7563possible (given the other settings) without disrupting the 7564frame rate of video recording.<wbr/> </p></span> 7565 </li> 7566 <li> 7567 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 7568 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 7569application will stream full-resolution images and 7570reprocess one or several later for a final 7571capture.<wbr/></p></span> 7572 </li> 7573 <li> 7574 <span class="entry_type_enum_name">MANUAL</span> 7575 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 7576the applications want to directly control the capture parameters.<wbr/></p> 7577<p>For example,<wbr/> the application may wish to manually control 7578<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> 7579 </li> 7580 </ul> 7581 7582 </td> <!-- entry_type --> 7583 7584 <td class="entry_description"> 7585 <p>Information to the camera device 3A (auto-exposure,<wbr/> 7586auto-focus,<wbr/> auto-white balance) routines about the purpose 7587of this capture,<wbr/> to help the camera device to decide optimal 3A 7588strategy.<wbr/></p> 7589 </td> 7590 7591 <td class="entry_units"> 7592 </td> 7593 7594 <td class="entry_range"> 7595 </td> 7596 7597 <td class="entry_tags"> 7598 <ul class="entry_tags"> 7599 <li><a href="#tag_BC">BC</a></li> 7600 </ul> 7601 </td> 7602 7603 </tr> 7604 <tr class="entries_header"> 7605 <th class="th_details" colspan="5">Details</th> 7606 </tr> 7607 <tr class="entry_cont"> 7608 <td class="entry_details" colspan="5"> 7609 <p>This control (except for MANUAL) is only effective if 7610<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 7611<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 7612contains OPAQUE_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 7613contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are always supported.<wbr/></p> 7614 </td> 7615 </tr> 7616 7617 7618 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7619 <!-- end of entry --> 7620 7621 7622 <tr class="entry" id="dynamic_android.control.awbState"> 7623 <td class="entry_name 7624 " rowspan="3"> 7625 android.<wbr/>control.<wbr/>awb<wbr/>State 7626 </td> 7627 <td class="entry_type"> 7628 <span class="entry_type_name entry_type_name_enum">byte</span> 7629 7630 <span class="entry_type_visibility"> [public]</span> 7631 7632 7633 <span class="entry_type_hwlevel">[limited] </span> 7634 7635 7636 7637 <ul class="entry_type_enum"> 7638 <li> 7639 <span class="entry_type_enum_name">INACTIVE</span> 7640 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> 7641<p>When a camera device is opened,<wbr/> it starts in this 7642state.<wbr/> This is a transient state,<wbr/> the camera device may 7643skip reporting this state in capture 7644result.<wbr/></p></span> 7645 </li> 7646 <li> 7647 <span class="entry_type_enum_name">SEARCHING</span> 7648 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 7649values for the current scene.<wbr/></p> 7650<p>This is a transient state,<wbr/> the camera device 7651may skip reporting this state in capture result.<wbr/></p></span> 7652 </li> 7653 <li> 7654 <span class="entry_type_enum_name">CONVERGED</span> 7655 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 7656current scene.<wbr/></p></span> 7657 </li> 7658 <li> 7659 <span class="entry_type_enum_name">LOCKED</span> 7660 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 7661 </li> 7662 </ul> 7663 7664 </td> <!-- entry_type --> 7665 7666 <td class="entry_description"> 7667 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p> 7668 </td> 7669 7670 <td class="entry_units"> 7671 </td> 7672 7673 <td class="entry_range"> 7674 </td> 7675 7676 <td class="entry_tags"> 7677 </td> 7678 7679 </tr> 7680 <tr class="entries_header"> 7681 <th class="th_details" colspan="5">Details</th> 7682 </tr> 7683 <tr class="entry_cont"> 7684 <td class="entry_details" colspan="5"> 7685 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 7686resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 7687or <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 7688the algorithm states to INACTIVE.<wbr/></p> 7689<p>The camera device can do several state transitions between two results,<wbr/> if it is 7690allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 7691a result.<wbr/></p> 7692<p>The state in the result is the state for this image (in sync with this image): if 7693AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 7694be good to use.<wbr/></p> 7695<p>Below are state transition tables for different AWB modes.<wbr/></p> 7696<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 7697<table> 7698<thead> 7699<tr> 7700<th align="center">State</th> 7701<th align="center">Transition Cause</th> 7702<th align="center">New State</th> 7703<th align="center">Notes</th> 7704</tr> 7705</thead> 7706<tbody> 7707<tr> 7708<td align="center">INACTIVE</td> 7709<td align="center"></td> 7710<td align="center">INACTIVE</td> 7711<td align="center">Camera device auto white balance algorithm is disabled</td> 7712</tr> 7713</tbody> 7714</table> 7715<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 7716<table> 7717<thead> 7718<tr> 7719<th align="center">State</th> 7720<th align="center">Transition Cause</th> 7721<th align="center">New State</th> 7722<th align="center">Notes</th> 7723</tr> 7724</thead> 7725<tbody> 7726<tr> 7727<td align="center">INACTIVE</td> 7728<td align="center">Camera device initiates AWB scan</td> 7729<td align="center">SEARCHING</td> 7730<td align="center">Values changing</td> 7731</tr> 7732<tr> 7733<td align="center">INACTIVE</td> 7734<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7735<td align="center">LOCKED</td> 7736<td align="center">Values locked</td> 7737</tr> 7738<tr> 7739<td align="center">SEARCHING</td> 7740<td align="center">Camera device finishes AWB scan</td> 7741<td align="center">CONVERGED</td> 7742<td align="center">Good values,<wbr/> not changing</td> 7743</tr> 7744<tr> 7745<td align="center">SEARCHING</td> 7746<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7747<td align="center">LOCKED</td> 7748<td align="center">Values locked</td> 7749</tr> 7750<tr> 7751<td align="center">CONVERGED</td> 7752<td align="center">Camera device initiates AWB scan</td> 7753<td align="center">SEARCHING</td> 7754<td align="center">Values changing</td> 7755</tr> 7756<tr> 7757<td align="center">CONVERGED</td> 7758<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7759<td align="center">LOCKED</td> 7760<td align="center">Values locked</td> 7761</tr> 7762<tr> 7763<td align="center">LOCKED</td> 7764<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 7765<td align="center">SEARCHING</td> 7766<td align="center">Values not good after unlock</td> 7767</tr> 7768</tbody> 7769</table> 7770<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7771without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7772can be skipped in that manner is called a transient state.<wbr/></p> 7773<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 7774listed in above table,<wbr/> it is also legal for the camera device to skip one or more 7775transient states between two results.<wbr/> See below table for examples:</p> 7776<table> 7777<thead> 7778<tr> 7779<th align="center">State</th> 7780<th align="center">Transition Cause</th> 7781<th align="center">New State</th> 7782<th align="center">Notes</th> 7783</tr> 7784</thead> 7785<tbody> 7786<tr> 7787<td align="center">INACTIVE</td> 7788<td align="center">Camera device finished AWB scan</td> 7789<td align="center">CONVERGED</td> 7790<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 7791</tr> 7792<tr> 7793<td align="center">LOCKED</td> 7794<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 7795<td align="center">CONVERGED</td> 7796<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 7797</tr> 7798</tbody> 7799</table> 7800 </td> 7801 </tr> 7802 7803 7804 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7805 <!-- end of entry --> 7806 7807 7808 <tr class="entry" id="dynamic_android.control.effectMode"> 7809 <td class="entry_name 7810 " rowspan="3"> 7811 android.<wbr/>control.<wbr/>effect<wbr/>Mode 7812 </td> 7813 <td class="entry_type"> 7814 <span class="entry_type_name entry_type_name_enum">byte</span> 7815 7816 <span class="entry_type_visibility"> [public]</span> 7817 7818 7819 <span class="entry_type_hwlevel">[legacy] </span> 7820 7821 7822 7823 <ul class="entry_type_enum"> 7824 <li> 7825 <span class="entry_type_enum_name">OFF</span> 7826 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 7827 </li> 7828 <li> 7829 <span class="entry_type_enum_name">MONO</span> 7830 <span class="entry_type_enum_optional">[optional]</span> 7831 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 7832a single color.<wbr/></p> 7833<p>This will typically be grayscale.<wbr/></p></span> 7834 </li> 7835 <li> 7836 <span class="entry_type_enum_name">NEGATIVE</span> 7837 <span class="entry_type_enum_optional">[optional]</span> 7838 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 7839are inverted.<wbr/></p></span> 7840 </li> 7841 <li> 7842 <span class="entry_type_enum_name">SOLARIZE</span> 7843 <span class="entry_type_enum_optional">[optional]</span> 7844 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 7845image is wholly or partially reversed in 7846tone.<wbr/></p></span> 7847 </li> 7848 <li> 7849 <span class="entry_type_enum_name">SEPIA</span> 7850 <span class="entry_type_enum_optional">[optional]</span> 7851 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 7852gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 7853 </li> 7854 <li> 7855 <span class="entry_type_enum_name">POSTERIZE</span> 7856 <span class="entry_type_enum_optional">[optional]</span> 7857 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 7858discrete regions of tone rather than a continuous 7859gradient of tones.<wbr/></p></span> 7860 </li> 7861 <li> 7862 <span class="entry_type_enum_name">WHITEBOARD</span> 7863 <span class="entry_type_enum_optional">[optional]</span> 7864 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 7865as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 7866 </li> 7867 <li> 7868 <span class="entry_type_enum_name">BLACKBOARD</span> 7869 <span class="entry_type_enum_optional">[optional]</span> 7870 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 7871as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 7872 </li> 7873 <li> 7874 <span class="entry_type_enum_name">AQUA</span> 7875 <span class="entry_type_enum_optional">[optional]</span> 7876 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 7877 </li> 7878 </ul> 7879 7880 </td> <!-- entry_type --> 7881 7882 <td class="entry_description"> 7883 <p>A special color effect to apply.<wbr/></p> 7884 </td> 7885 7886 <td class="entry_units"> 7887 </td> 7888 7889 <td class="entry_range"> 7890 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 7891 </td> 7892 7893 <td class="entry_tags"> 7894 <ul class="entry_tags"> 7895 <li><a href="#tag_BC">BC</a></li> 7896 </ul> 7897 </td> 7898 7899 </tr> 7900 <tr class="entries_header"> 7901 <th class="th_details" colspan="5">Details</th> 7902 </tr> 7903 <tr class="entry_cont"> 7904 <td class="entry_details" colspan="5"> 7905 <p>When this mode is set,<wbr/> a color effect will be applied 7906to images produced by the camera device.<wbr/> The interpretation 7907and implementation of these color effects is left to the 7908implementor of the camera device,<wbr/> and should not be 7909depended on to be consistent (or present) across all 7910devices.<wbr/></p> 7911 </td> 7912 </tr> 7913 7914 7915 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7916 <!-- end of entry --> 7917 7918 7919 <tr class="entry" id="dynamic_android.control.mode"> 7920 <td class="entry_name 7921 " rowspan="3"> 7922 android.<wbr/>control.<wbr/>mode 7923 </td> 7924 <td class="entry_type"> 7925 <span class="entry_type_name entry_type_name_enum">byte</span> 7926 7927 <span class="entry_type_visibility"> [public]</span> 7928 7929 7930 <span class="entry_type_hwlevel">[legacy] </span> 7931 7932 7933 7934 <ul class="entry_type_enum"> 7935 <li> 7936 <span class="entry_type_enum_name">OFF</span> 7937 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 7938<p>All control by the device's metering and focusing (3A) 7939routines is disabled,<wbr/> and no other settings in 7940android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 7941<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 7942device to select post-processing values for processing 7943blocks that do not allow for manual control,<wbr/> or are not 7944exposed by the camera API.<wbr/></p> 7945<p>However,<wbr/> the camera device's 3A routines may continue to 7946collect statistics and update their internal state so that 7947when control is switched to AUTO mode,<wbr/> good control values 7948can be immediately applied.<wbr/></p></span> 7949 </li> 7950 <li> 7951 <span class="entry_type_enum_name">AUTO</span> 7952 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 7953<p>Manual control of capture parameters is disabled.<wbr/> All 7954controls in android.<wbr/>control.<wbr/>* besides sceneMode take 7955effect.<wbr/></p></span> 7956 </li> 7957 <li> 7958 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 7959 <span class="entry_type_enum_optional">[optional]</span> 7960 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 7961<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 7962control.<wbr/>afMode controls; the camera device will ignore 7963those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 7964FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still 7965active.<wbr/> This setting can only be used if scene mode is 7966supported (i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 7967contain some modes other than DISABLED).<wbr/></p></span> 7968 </li> 7969 <li> 7970 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 7971 <span class="entry_type_enum_optional">[optional]</span> 7972 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 7973used by camera device background auto-exposure,<wbr/> auto-white balance and 7974auto-focus algorithms (3A) to update their statistics.<wbr/></p> 7975<p>Specifically,<wbr/> the 3A routines are locked to the last 7976values set from a request with AUTO,<wbr/> OFF,<wbr/> or 7977USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 7978collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 7979discarded by the camera device.<wbr/></p></span> 7980 </li> 7981 </ul> 7982 7983 </td> <!-- entry_type --> 7984 7985 <td class="entry_description"> 7986 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 7987routines.<wbr/></p> 7988 </td> 7989 7990 <td class="entry_units"> 7991 </td> 7992 7993 <td class="entry_range"> 7994 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 7995 </td> 7996 7997 <td class="entry_tags"> 7998 <ul class="entry_tags"> 7999 <li><a href="#tag_BC">BC</a></li> 8000 </ul> 8001 </td> 8002 8003 </tr> 8004 <tr class="entries_header"> 8005 <th class="th_details" colspan="5">Details</th> 8006 </tr> 8007 <tr class="entry_cont"> 8008 <td class="entry_details" colspan="5"> 8009 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 8010by the camera device is disabled.<wbr/> The application must set the fields for 8011capture parameters itself.<wbr/></p> 8012<p>When set to AUTO,<wbr/> the individual algorithm controls in 8013android.<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> 8014<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 8015android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 8016one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 8017as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 8018<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 8019<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 8020is that this frame will not be used by camera device background 3A statistics 8021update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 8022where the application doesn't want a 3A manual control capture to affect 8023the subsequent auto 3A capture results.<wbr/></p> 8024 </td> 8025 </tr> 8026 8027 8028 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8029 <!-- end of entry --> 8030 8031 8032 <tr class="entry" id="dynamic_android.control.sceneMode"> 8033 <td class="entry_name 8034 " rowspan="5"> 8035 android.<wbr/>control.<wbr/>scene<wbr/>Mode 8036 </td> 8037 <td class="entry_type"> 8038 <span class="entry_type_name entry_type_name_enum">byte</span> 8039 8040 <span class="entry_type_visibility"> [public]</span> 8041 8042 8043 <span class="entry_type_hwlevel">[legacy] </span> 8044 8045 8046 8047 <ul class="entry_type_enum"> 8048 <li> 8049 <span class="entry_type_enum_name">DISABLED</span> 8050 <span class="entry_type_enum_value">0</span> 8051 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 8052 </li> 8053 <li> 8054 <span class="entry_type_enum_name">FACE_PRIORITY</span> 8055 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 8056detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 8057auto-exposure routines.<wbr/></p> 8058<p>If face detection statistics are disabled 8059(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/> 8060this should still operate correctly (but will not return 8061face detection statistics to the framework).<wbr/></p> 8062<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8063<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> 8064remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 8065 </li> 8066 <li> 8067 <span class="entry_type_enum_name">ACTION</span> 8068 <span class="entry_type_enum_optional">[optional]</span> 8069 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 8070<p>Similar to SPORTS.<wbr/></p></span> 8071 </li> 8072 <li> 8073 <span class="entry_type_enum_name">PORTRAIT</span> 8074 <span class="entry_type_enum_optional">[optional]</span> 8075 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 8076 </li> 8077 <li> 8078 <span class="entry_type_enum_name">LANDSCAPE</span> 8079 <span class="entry_type_enum_optional">[optional]</span> 8080 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 8081 </li> 8082 <li> 8083 <span class="entry_type_enum_name">NIGHT</span> 8084 <span class="entry_type_enum_optional">[optional]</span> 8085 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 8086 </li> 8087 <li> 8088 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 8089 <span class="entry_type_enum_optional">[optional]</span> 8090 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 8091settings.<wbr/></p></span> 8092 </li> 8093 <li> 8094 <span class="entry_type_enum_name">THEATRE</span> 8095 <span class="entry_type_enum_optional">[optional]</span> 8096 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 8097remain off.<wbr/></p></span> 8098 </li> 8099 <li> 8100 <span class="entry_type_enum_name">BEACH</span> 8101 <span class="entry_type_enum_optional">[optional]</span> 8102 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 8103 </li> 8104 <li> 8105 <span class="entry_type_enum_name">SNOW</span> 8106 <span class="entry_type_enum_optional">[optional]</span> 8107 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 8108 </li> 8109 <li> 8110 <span class="entry_type_enum_name">SUNSET</span> 8111 <span class="entry_type_enum_optional">[optional]</span> 8112 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 8113 </li> 8114 <li> 8115 <span class="entry_type_enum_name">STEADYPHOTO</span> 8116 <span class="entry_type_enum_optional">[optional]</span> 8117 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 8118device motion (for example: due to hand shake).<wbr/></p></span> 8119 </li> 8120 <li> 8121 <span class="entry_type_enum_name">FIREWORKS</span> 8122 <span class="entry_type_enum_optional">[optional]</span> 8123 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 8124 </li> 8125 <li> 8126 <span class="entry_type_enum_name">SPORTS</span> 8127 <span class="entry_type_enum_optional">[optional]</span> 8128 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 8129<p>Similar to ACTION.<wbr/></p></span> 8130 </li> 8131 <li> 8132 <span class="entry_type_enum_name">PARTY</span> 8133 <span class="entry_type_enum_optional">[optional]</span> 8134 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 8135people.<wbr/></p></span> 8136 </li> 8137 <li> 8138 <span class="entry_type_enum_name">CANDLELIGHT</span> 8139 <span class="entry_type_enum_optional">[optional]</span> 8140 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 8141is a flame.<wbr/></p></span> 8142 </li> 8143 <li> 8144 <span class="entry_type_enum_name">BARCODE</span> 8145 <span class="entry_type_enum_optional">[optional]</span> 8146 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 8147for use by camera applications that wish to read the 8148barcode value.<wbr/></p></span> 8149 </li> 8150 <li> 8151 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 8152 <span class="entry_type_enum_optional">[optional]</span> 8153 <span class="entry_type_enum_notes"><p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 8154<p>The supported high speed video sizes and fps ranges are specified in 8155<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 8156output frame rates,<wbr/> the application is only allowed to select video size 8157and fps range combinations listed in this static metadata.<wbr/> The fps range 8158can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 8159<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 8160ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 8161controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 8162and post-processing parameters is possible.<wbr/> All other controls operate the 8163same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 8164android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 8165<ul> 8166<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 8167<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 8168<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 8169<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 8170<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 8171<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 8172<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 8173<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 8174<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 8175<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 8176</ul> 8177<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 8178<ul> 8179<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> 8180<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 8181<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 8182<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 8183</ul> 8184<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 8185be lower than what camera can output,<wbr/> depending on the destination Surfaces for 8186the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 8187the application need check if the video encoder is capable of supporting the 8188high frame rate for a given video size,<wbr/> or it will end up with lower recording 8189frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 8190rate will be bounded by the screen refresh rate.<wbr/></p> 8191<p>The camera device will only support up to 2 output high speed streams 8192(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 8193in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 8194<ul> 8195<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 8196format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 8197min(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> 8198<li>The stream sizes are selected from the sizes reported by 8199<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 8200<li>No processed non-stalling or raw streams are configured.<wbr/></li> 8201</ul> 8202<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 8203<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/> 8204the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 8205and the returned capture result metadata will give the fps range choosen 8206by the camera device.<wbr/></p> 8207<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 8208reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 8209the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 8210 </li> 8211 <li> 8212 <span class="entry_type_enum_name">HDR</span> 8213 <span class="entry_type_enum_optional">[optional]</span> 8214 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 8215<p>In this scene mode,<wbr/> the camera device captures images 8216that keep a larger range of scene illumination levels 8217visible in the final image.<wbr/> For example,<wbr/> when taking a 8218picture of a object in front of a bright window,<wbr/> both 8219the object and the scene through the window may be 8220visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 8221one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 8222HDR mode generally takes much longer to capture a single 8223image,<wbr/> has no user control,<wbr/> and may have other artifacts 8224depending on the HDR method used.<wbr/></p> 8225<p>Therefore,<wbr/> HDR captures operate at a much slower rate 8226than regular captures.<wbr/></p> 8227<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 8228is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 8229STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 8230using a high dynamic range capture technique.<wbr/> On LEGACY 8231devices,<wbr/> captures that target a JPEG-format output will 8232be captured with HDR,<wbr/> and the capture intent is not 8233relevant.<wbr/></p> 8234<p>The HDR capture may involve the device capturing a burst 8235of images internally and combining them into one,<wbr/> or it 8236may involve the device using specialized high dynamic 8237range capture hardware.<wbr/> In all cases,<wbr/> a single image is 8238produced in response to a capture request submitted 8239while in HDR mode.<wbr/></p> 8240<p>Since substantial post-processing is generally needed to 8241produce an HDR image,<wbr/> only YUV and JPEG outputs are 8242supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only 8243JPEG outputs are supported for LEGACY HDR 8244captures.<wbr/> Using a RAW output for HDR capture is not 8245supported.<wbr/></p></span> 8246 </li> 8247 </ul> 8248 8249 </td> <!-- entry_type --> 8250 8251 <td class="entry_description"> 8252 <p>Control for which scene mode is currently active.<wbr/></p> 8253 </td> 8254 8255 <td class="entry_units"> 8256 </td> 8257 8258 <td class="entry_range"> 8259 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 8260 </td> 8261 8262 <td class="entry_tags"> 8263 <ul class="entry_tags"> 8264 <li><a href="#tag_BC">BC</a></li> 8265 </ul> 8266 </td> 8267 8268 </tr> 8269 <tr class="entries_header"> 8270 <th class="th_details" colspan="5">Details</th> 8271 </tr> 8272 <tr class="entry_cont"> 8273 <td class="entry_details" colspan="5"> 8274 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 8275capture settings.<wbr/></p> 8276<p>This is the mode that that is active when 8277<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/> 8278these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8279<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> while in use.<wbr/></p> 8280<p>The interpretation and implementation of these scene modes is left 8281to the implementor of the camera device.<wbr/> Their behavior will not be 8282consistent across all devices,<wbr/> and any given device may only implement 8283a subset of these modes.<wbr/></p> 8284 </td> 8285 </tr> 8286 8287 <tr class="entries_header"> 8288 <th class="th_details" colspan="5">HAL Implementation Details</th> 8289 </tr> 8290 <tr class="entry_cont"> 8291 <td class="entry_details" colspan="5"> 8292 <p>HAL implementations that include scene modes are expected to provide 8293the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8294<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 8295<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 8296<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/> 8297the HAL must list supported video size and fps range in 8298<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/> 82991280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 8300mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 8301requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/></p> 8302 </td> 8303 </tr> 8304 8305 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8306 <!-- end of entry --> 8307 8308 8309 <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> 8310 <td class="entry_name 8311 " rowspan="3"> 8312 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 8313 </td> 8314 <td class="entry_type"> 8315 <span class="entry_type_name entry_type_name_enum">byte</span> 8316 8317 <span class="entry_type_visibility"> [public]</span> 8318 8319 8320 <span class="entry_type_hwlevel">[legacy] </span> 8321 8322 8323 8324 <ul class="entry_type_enum"> 8325 <li> 8326 <span class="entry_type_enum_name">OFF</span> 8327 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 8328 </li> 8329 <li> 8330 <span class="entry_type_enum_name">ON</span> 8331 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 8332 </li> 8333 </ul> 8334 8335 </td> <!-- entry_type --> 8336 8337 <td class="entry_description"> 8338 <p>Whether video stabilization is 8339active.<wbr/></p> 8340 </td> 8341 8342 <td class="entry_units"> 8343 </td> 8344 8345 <td class="entry_range"> 8346 </td> 8347 8348 <td class="entry_tags"> 8349 <ul class="entry_tags"> 8350 <li><a href="#tag_BC">BC</a></li> 8351 </ul> 8352 </td> 8353 8354 </tr> 8355 <tr class="entries_header"> 8356 <th class="th_details" colspan="5">Details</th> 8357 </tr> 8358 <tr class="entry_cont"> 8359 <td class="entry_details" colspan="5"> 8360 <p>Video stabilization automatically translates and scales images from 8361the camera in order to stabilize motion between consecutive frames.<wbr/></p> 8362<p>If enabled,<wbr/> video stabilization can modify the 8363<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 8364<p>Switching between different video stabilization modes may take several 8365frames to initialize,<wbr/> the camera device will report the current mode 8366in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 8367the video stabilization modes in the first several capture results may 8368still be "OFF",<wbr/> and it will become "ON" when the initialization is 8369done.<wbr/></p> 8370<p>If a camera device supports both this mode and OIS 8371(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 8372produce undesirable interaction,<wbr/> so it is recommended not to enable 8373both at the same time.<wbr/></p> 8374 </td> 8375 </tr> 8376 8377 8378 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8379 <!-- end of entry --> 8380 8381 8382 8383 <!-- end of kind --> 8384 </tbody> 8385 8386 <!-- end of section --> 8387 <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr> 8388 8389 8390 <tr><td colspan="6" class="kind">controls</td></tr> 8391 8392 <thead class="entries_header"> 8393 <tr> 8394 <th class="th_name">Property Name</th> 8395 <th class="th_type">Type</th> 8396 <th class="th_description">Description</th> 8397 <th class="th_units">Units</th> 8398 <th class="th_range">Range</th> 8399 <th class="th_tags">Tags</th> 8400 </tr> 8401 </thead> 8402 8403 <tbody> 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 <tr class="entry" id="controls_android.demosaic.mode"> 8415 <td class="entry_name 8416 " rowspan="1"> 8417 android.<wbr/>demosaic.<wbr/>mode 8418 </td> 8419 <td class="entry_type"> 8420 <span class="entry_type_name entry_type_name_enum">byte</span> 8421 8422 <span class="entry_type_visibility"> [system]</span> 8423 8424 8425 8426 8427 8428 <ul class="entry_type_enum"> 8429 <li> 8430 <span class="entry_type_enum_name">FAST</span> 8431 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 8432Bayer RAW output.<wbr/></p></span> 8433 </li> 8434 <li> 8435 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8436 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down 8437relative to raw output.<wbr/></p></span> 8438 </li> 8439 </ul> 8440 8441 </td> <!-- entry_type --> 8442 8443 <td class="entry_description"> 8444 <p>Controls the quality of the demosaicing 8445processing.<wbr/></p> 8446 </td> 8447 8448 <td class="entry_units"> 8449 </td> 8450 8451 <td class="entry_range"> 8452 </td> 8453 8454 <td class="entry_tags"> 8455 <ul class="entry_tags"> 8456 <li><a href="#tag_FUTURE">FUTURE</a></li> 8457 </ul> 8458 </td> 8459 8460 </tr> 8461 8462 8463 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8464 <!-- end of entry --> 8465 8466 8467 8468 <!-- end of kind --> 8469 </tbody> 8470 8471 <!-- end of section --> 8472 <tr><td colspan="6" id="section_edge" class="section">edge</td></tr> 8473 8474 8475 <tr><td colspan="6" class="kind">controls</td></tr> 8476 8477 <thead class="entries_header"> 8478 <tr> 8479 <th class="th_name">Property Name</th> 8480 <th class="th_type">Type</th> 8481 <th class="th_description">Description</th> 8482 <th class="th_units">Units</th> 8483 <th class="th_range">Range</th> 8484 <th class="th_tags">Tags</th> 8485 </tr> 8486 </thead> 8487 8488 <tbody> 8489 8490 8491 8492 8493 8494 8495 8496 8497 8498 8499 <tr class="entry" id="controls_android.edge.mode"> 8500 <td class="entry_name 8501 " rowspan="5"> 8502 android.<wbr/>edge.<wbr/>mode 8503 </td> 8504 <td class="entry_type"> 8505 <span class="entry_type_name entry_type_name_enum">byte</span> 8506 8507 <span class="entry_type_visibility"> [public]</span> 8508 8509 8510 <span class="entry_type_hwlevel">[full] </span> 8511 8512 8513 8514 <ul class="entry_type_enum"> 8515 <li> 8516 <span class="entry_type_enum_name">OFF</span> 8517 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 8518 </li> 8519 <li> 8520 <span class="entry_type_enum_name">FAST</span> 8521 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate relative to sensor 8522output</p></span> 8523 </li> 8524 <li> 8525 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8526 <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> 8527 </li> 8528 </ul> 8529 8530 </td> <!-- entry_type --> 8531 8532 <td class="entry_description"> 8533 <p>Operation mode for edge 8534enhancement.<wbr/></p> 8535 </td> 8536 8537 <td class="entry_units"> 8538 </td> 8539 8540 <td class="entry_range"> 8541 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 8542 </td> 8543 8544 <td class="entry_tags"> 8545 <ul class="entry_tags"> 8546 <li><a href="#tag_V1">V1</a></li> 8547 </ul> 8548 </td> 8549 8550 </tr> 8551 <tr class="entries_header"> 8552 <th class="th_details" colspan="5">Details</th> 8553 </tr> 8554 <tr class="entry_cont"> 8555 <td class="entry_details" colspan="5"> 8556 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 8557no enhancement will be applied by the camera device.<wbr/></p> 8558<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 8559will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 8560camera device will use the highest-quality enhancement algorithms,<wbr/> 8561even if it slows down capture rate.<wbr/> FAST means the camera device will 8562not slow down capture rate when applying edge enhancement.<wbr/></p> 8563<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 8564device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 8565The camera device may adjust its internal noise reduction parameters for best 8566image 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> 8567 </td> 8568 </tr> 8569 8570 <tr class="entries_header"> 8571 <th class="th_details" colspan="5">HAL Implementation Details</th> 8572 </tr> 8573 <tr class="entry_cont"> 8574 <td class="entry_details" colspan="5"> 8575 <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 8576adjust the internal edge enhancement reduction parameters appropriately to get the best 8577quality images.<wbr/></p> 8578 </td> 8579 </tr> 8580 8581 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8582 <!-- end of entry --> 8583 8584 8585 <tr class="entry" id="controls_android.edge.strength"> 8586 <td class="entry_name 8587 " rowspan="1"> 8588 android.<wbr/>edge.<wbr/>strength 8589 </td> 8590 <td class="entry_type"> 8591 <span class="entry_type_name">byte</span> 8592 8593 <span class="entry_type_visibility"> [system]</span> 8594 8595 8596 8597 8598 8599 8600 </td> <!-- entry_type --> 8601 8602 <td class="entry_description"> 8603 <p>Control the amount of edge enhancement 8604applied to the images</p> 8605 </td> 8606 8607 <td class="entry_units"> 8608 1-10; 10 is maximum sharpening 8609 </td> 8610 8611 <td class="entry_range"> 8612 </td> 8613 8614 <td class="entry_tags"> 8615 <ul class="entry_tags"> 8616 <li><a href="#tag_FUTURE">FUTURE</a></li> 8617 </ul> 8618 </td> 8619 8620 </tr> 8621 8622 8623 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8624 <!-- end of entry --> 8625 8626 8627 8628 <!-- end of kind --> 8629 </tbody> 8630 <tr><td colspan="6" class="kind">static</td></tr> 8631 8632 <thead class="entries_header"> 8633 <tr> 8634 <th class="th_name">Property Name</th> 8635 <th class="th_type">Type</th> 8636 <th class="th_description">Description</th> 8637 <th class="th_units">Units</th> 8638 <th class="th_range">Range</th> 8639 <th class="th_tags">Tags</th> 8640 </tr> 8641 </thead> 8642 8643 <tbody> 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8654 <tr class="entry" id="static_android.edge.availableEdgeModes"> 8655 <td class="entry_name 8656 " rowspan="5"> 8657 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 8658 </td> 8659 <td class="entry_type"> 8660 <span class="entry_type_name">byte</span> 8661 <span class="entry_type_container">x</span> 8662 8663 <span class="entry_type_array"> 8664 n 8665 </span> 8666 <span class="entry_type_visibility"> [public as enumList]</span> 8667 8668 8669 <span class="entry_type_hwlevel">[full] </span> 8670 8671 8672 <div class="entry_type_notes">list of enums</div> 8673 8674 8675 </td> <!-- entry_type --> 8676 8677 <td class="entry_description"> 8678 <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 8679device.<wbr/></p> 8680 </td> 8681 8682 <td class="entry_units"> 8683 </td> 8684 8685 <td class="entry_range"> 8686 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p> 8687 </td> 8688 8689 <td class="entry_tags"> 8690 <ul class="entry_tags"> 8691 <li><a href="#tag_V1">V1</a></li> 8692 </ul> 8693 </td> 8694 8695 </tr> 8696 <tr class="entries_header"> 8697 <th class="th_details" colspan="5">Details</th> 8698 </tr> 8699 <tr class="entry_cont"> 8700 <td class="entry_details" colspan="5"> 8701 <p>Full-capability camera devices must always support OFF; all devices will list FAST.<wbr/></p> 8702 </td> 8703 </tr> 8704 8705 <tr class="entries_header"> 8706 <th class="th_details" colspan="5">HAL Implementation Details</th> 8707 </tr> 8708 <tr class="entry_cont"> 8709 <td class="entry_details" colspan="5"> 8710 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available 8711on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 8712That is,<wbr/> if the highest quality implementation on the camera device does not slow down 8713capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 8714 </td> 8715 </tr> 8716 8717 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8718 <!-- end of entry --> 8719 8720 8721 8722 <!-- end of kind --> 8723 </tbody> 8724 <tr><td colspan="6" class="kind">dynamic</td></tr> 8725 8726 <thead class="entries_header"> 8727 <tr> 8728 <th class="th_name">Property Name</th> 8729 <th class="th_type">Type</th> 8730 <th class="th_description">Description</th> 8731 <th class="th_units">Units</th> 8732 <th class="th_range">Range</th> 8733 <th class="th_tags">Tags</th> 8734 </tr> 8735 </thead> 8736 8737 <tbody> 8738 8739 8740 8741 8742 8743 8744 8745 8746 8747 8748 <tr class="entry" id="dynamic_android.edge.mode"> 8749 <td class="entry_name 8750 " rowspan="5"> 8751 android.<wbr/>edge.<wbr/>mode 8752 </td> 8753 <td class="entry_type"> 8754 <span class="entry_type_name entry_type_name_enum">byte</span> 8755 8756 <span class="entry_type_visibility"> [public]</span> 8757 8758 8759 <span class="entry_type_hwlevel">[full] </span> 8760 8761 8762 8763 <ul class="entry_type_enum"> 8764 <li> 8765 <span class="entry_type_enum_name">OFF</span> 8766 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 8767 </li> 8768 <li> 8769 <span class="entry_type_enum_name">FAST</span> 8770 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate relative to sensor 8771output</p></span> 8772 </li> 8773 <li> 8774 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8775 <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> 8776 </li> 8777 </ul> 8778 8779 </td> <!-- entry_type --> 8780 8781 <td class="entry_description"> 8782 <p>Operation mode for edge 8783enhancement.<wbr/></p> 8784 </td> 8785 8786 <td class="entry_units"> 8787 </td> 8788 8789 <td class="entry_range"> 8790 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 8791 </td> 8792 8793 <td class="entry_tags"> 8794 <ul class="entry_tags"> 8795 <li><a href="#tag_V1">V1</a></li> 8796 </ul> 8797 </td> 8798 8799 </tr> 8800 <tr class="entries_header"> 8801 <th class="th_details" colspan="5">Details</th> 8802 </tr> 8803 <tr class="entry_cont"> 8804 <td class="entry_details" colspan="5"> 8805 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 8806no enhancement will be applied by the camera device.<wbr/></p> 8807<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 8808will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 8809camera device will use the highest-quality enhancement algorithms,<wbr/> 8810even if it slows down capture rate.<wbr/> FAST means the camera device will 8811not slow down capture rate when applying edge enhancement.<wbr/></p> 8812<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 8813device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 8814The camera device may adjust its internal noise reduction parameters for best 8815image 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> 8816 </td> 8817 </tr> 8818 8819 <tr class="entries_header"> 8820 <th class="th_details" colspan="5">HAL Implementation Details</th> 8821 </tr> 8822 <tr class="entry_cont"> 8823 <td class="entry_details" colspan="5"> 8824 <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 8825adjust the internal edge enhancement reduction parameters appropriately to get the best 8826quality images.<wbr/></p> 8827 </td> 8828 </tr> 8829 8830 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8831 <!-- end of entry --> 8832 8833 8834 8835 <!-- end of kind --> 8836 </tbody> 8837 8838 <!-- end of section --> 8839 <tr><td colspan="6" id="section_flash" class="section">flash</td></tr> 8840 8841 8842 <tr><td colspan="6" class="kind">controls</td></tr> 8843 8844 <thead class="entries_header"> 8845 <tr> 8846 <th class="th_name">Property Name</th> 8847 <th class="th_type">Type</th> 8848 <th class="th_description">Description</th> 8849 <th class="th_units">Units</th> 8850 <th class="th_range">Range</th> 8851 <th class="th_tags">Tags</th> 8852 </tr> 8853 </thead> 8854 8855 <tbody> 8856 8857 8858 8859 8860 8861 8862 8863 8864 8865 8866 <tr class="entry" id="controls_android.flash.firingPower"> 8867 <td class="entry_name 8868 " rowspan="3"> 8869 android.<wbr/>flash.<wbr/>firing<wbr/>Power 8870 </td> 8871 <td class="entry_type"> 8872 <span class="entry_type_name">byte</span> 8873 8874 <span class="entry_type_visibility"> [system]</span> 8875 8876 8877 8878 8879 8880 8881 </td> <!-- entry_type --> 8882 8883 <td class="entry_description"> 8884 <p>Power for flash firing/<wbr/>torch</p> 8885 </td> 8886 8887 <td class="entry_units"> 8888 10 is max power; 0 is no flash.<wbr/> Linear 8889 </td> 8890 8891 <td class="entry_range"> 8892 <p>0 - 10</p> 8893 </td> 8894 8895 <td class="entry_tags"> 8896 <ul class="entry_tags"> 8897 <li><a href="#tag_FUTURE">FUTURE</a></li> 8898 </ul> 8899 </td> 8900 8901 </tr> 8902 <tr class="entries_header"> 8903 <th class="th_details" colspan="5">Details</th> 8904 </tr> 8905 <tr class="entry_cont"> 8906 <td class="entry_details" colspan="5"> 8907 <p>Power for snapshot may use a different scale than 8908for torch mode.<wbr/> Only one entry for torch mode will be 8909used</p> 8910 </td> 8911 </tr> 8912 8913 8914 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8915 <!-- end of entry --> 8916 8917 8918 <tr class="entry" id="controls_android.flash.firingTime"> 8919 <td class="entry_name 8920 " rowspan="3"> 8921 android.<wbr/>flash.<wbr/>firing<wbr/>Time 8922 </td> 8923 <td class="entry_type"> 8924 <span class="entry_type_name">int64</span> 8925 8926 <span class="entry_type_visibility"> [system]</span> 8927 8928 8929 8930 8931 8932 8933 </td> <!-- entry_type --> 8934 8935 <td class="entry_description"> 8936 <p>Firing time of flash relative to start of 8937exposure</p> 8938 </td> 8939 8940 <td class="entry_units"> 8941 nanoseconds 8942 </td> 8943 8944 <td class="entry_range"> 8945 <p>0-(exposure time-flash duration)</p> 8946 </td> 8947 8948 <td class="entry_tags"> 8949 <ul class="entry_tags"> 8950 <li><a href="#tag_FUTURE">FUTURE</a></li> 8951 </ul> 8952 </td> 8953 8954 </tr> 8955 <tr class="entries_header"> 8956 <th class="th_details" colspan="5">Details</th> 8957 </tr> 8958 <tr class="entry_cont"> 8959 <td class="entry_details" colspan="5"> 8960 <p>Clamped to (0,<wbr/> exposure time - flash 8961duration).<wbr/></p> 8962 </td> 8963 </tr> 8964 8965 8966 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8967 <!-- end of entry --> 8968 8969 8970 <tr class="entry" id="controls_android.flash.mode"> 8971 <td class="entry_name 8972 " rowspan="3"> 8973 android.<wbr/>flash.<wbr/>mode 8974 </td> 8975 <td class="entry_type"> 8976 <span class="entry_type_name entry_type_name_enum">byte</span> 8977 8978 <span class="entry_type_visibility"> [public]</span> 8979 8980 8981 <span class="entry_type_hwlevel">[legacy] </span> 8982 8983 8984 8985 <ul class="entry_type_enum"> 8986 <li> 8987 <span class="entry_type_enum_name">OFF</span> 8988 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 8989 </li> 8990 <li> 8991 <span class="entry_type_enum_name">SINGLE</span> 8992 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 8993for this capture.<wbr/></p></span> 8994 </li> 8995 <li> 8996 <span class="entry_type_enum_name">TORCH</span> 8997 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 8998 </li> 8999 </ul> 9000 9001 </td> <!-- entry_type --> 9002 9003 <td class="entry_description"> 9004 <p>The desired mode for for the camera device's flash control.<wbr/></p> 9005 </td> 9006 9007 <td class="entry_units"> 9008 </td> 9009 9010 <td class="entry_range"> 9011 </td> 9012 9013 <td class="entry_tags"> 9014 <ul class="entry_tags"> 9015 <li><a href="#tag_BC">BC</a></li> 9016 </ul> 9017 </td> 9018 9019 </tr> 9020 <tr class="entries_header"> 9021 <th class="th_details" colspan="5">Details</th> 9022 </tr> 9023 <tr class="entry_cont"> 9024 <td class="entry_details" colspan="5"> 9025 <p>This control is only effective when flash unit is available 9026(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 9027<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/> 9028Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 9029ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 9030<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 9031<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 9032device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 9033control should be used along with auto-exposure (AE) precapture metering sequence 9034(<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> 9035<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 9036for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 9037<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> 9038 </td> 9039 </tr> 9040 9041 9042 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9043 <!-- end of entry --> 9044 9045 9046 9047 <!-- end of kind --> 9048 </tbody> 9049 <tr><td colspan="6" class="kind">static</td></tr> 9050 9051 <thead class="entries_header"> 9052 <tr> 9053 <th class="th_name">Property Name</th> 9054 <th class="th_type">Type</th> 9055 <th class="th_description">Description</th> 9056 <th class="th_units">Units</th> 9057 <th class="th_range">Range</th> 9058 <th class="th_tags">Tags</th> 9059 </tr> 9060 </thead> 9061 9062 <tbody> 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 <tr class="entry" id="static_android.flash.info.available"> 9076 <td class="entry_name 9077 " rowspan="3"> 9078 android.<wbr/>flash.<wbr/>info.<wbr/>available 9079 </td> 9080 <td class="entry_type"> 9081 <span class="entry_type_name entry_type_name_enum">byte</span> 9082 9083 <span class="entry_type_visibility"> [public as boolean]</span> 9084 9085 9086 <span class="entry_type_hwlevel">[legacy] </span> 9087 9088 9089 9090 <ul class="entry_type_enum"> 9091 <li> 9092 <span class="entry_type_enum_name">FALSE</span> 9093 </li> 9094 <li> 9095 <span class="entry_type_enum_name">TRUE</span> 9096 </li> 9097 </ul> 9098 9099 </td> <!-- entry_type --> 9100 9101 <td class="entry_description"> 9102 <p>Whether this camera device has a 9103flash unit.<wbr/></p> 9104 </td> 9105 9106 <td class="entry_units"> 9107 </td> 9108 9109 <td class="entry_range"> 9110 </td> 9111 9112 <td class="entry_tags"> 9113 <ul class="entry_tags"> 9114 <li><a href="#tag_BC">BC</a></li> 9115 </ul> 9116 </td> 9117 9118 </tr> 9119 <tr class="entries_header"> 9120 <th class="th_details" colspan="5">Details</th> 9121 </tr> 9122 <tr class="entry_cont"> 9123 <td class="entry_details" colspan="5"> 9124 <p>Will be <code>false</code> if no flash is available.<wbr/></p> 9125<p>If there is no flash unit,<wbr/> none of the flash controls do 9126anything.<wbr/></p> 9127 </td> 9128 </tr> 9129 9130 9131 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9132 <!-- end of entry --> 9133 9134 9135 <tr class="entry" id="static_android.flash.info.chargeDuration"> 9136 <td class="entry_name 9137 " rowspan="3"> 9138 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 9139 </td> 9140 <td class="entry_type"> 9141 <span class="entry_type_name">int64</span> 9142 9143 <span class="entry_type_visibility"> [system]</span> 9144 9145 9146 9147 9148 9149 9150 </td> <!-- entry_type --> 9151 9152 <td class="entry_description"> 9153 <p>Time taken before flash can fire 9154again</p> 9155 </td> 9156 9157 <td class="entry_units"> 9158 nanoseconds 9159 </td> 9160 9161 <td class="entry_range"> 9162 <p>0-1e9</p> 9163 </td> 9164 9165 <td class="entry_tags"> 9166 <ul class="entry_tags"> 9167 <li><a href="#tag_FUTURE">FUTURE</a></li> 9168 </ul> 9169 </td> 9170 9171 </tr> 9172 <tr class="entries_header"> 9173 <th class="th_details" colspan="5">Details</th> 9174 </tr> 9175 <tr class="entry_cont"> 9176 <td class="entry_details" colspan="5"> 9177 <p>1 second too long/<wbr/>too short for recharge? Should 9178this be power-dependent?</p> 9179 </td> 9180 </tr> 9181 9182 9183 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9184 <!-- end of entry --> 9185 9186 9187 9188 9189 9190 <tr class="entry" id="static_android.flash.colorTemperature"> 9191 <td class="entry_name 9192 " rowspan="1"> 9193 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 9194 </td> 9195 <td class="entry_type"> 9196 <span class="entry_type_name">byte</span> 9197 9198 <span class="entry_type_visibility"> [system]</span> 9199 9200 9201 9202 9203 9204 9205 </td> <!-- entry_type --> 9206 9207 <td class="entry_description"> 9208 <p>The x,<wbr/>y whitepoint of the 9209flash</p> 9210 </td> 9211 9212 <td class="entry_units"> 9213 pair of floats 9214 </td> 9215 9216 <td class="entry_range"> 9217 <p>0-1 for both</p> 9218 </td> 9219 9220 <td class="entry_tags"> 9221 <ul class="entry_tags"> 9222 <li><a href="#tag_FUTURE">FUTURE</a></li> 9223 </ul> 9224 </td> 9225 9226 </tr> 9227 9228 9229 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9230 <!-- end of entry --> 9231 9232 9233 <tr class="entry" id="static_android.flash.maxEnergy"> 9234 <td class="entry_name 9235 " rowspan="1"> 9236 android.<wbr/>flash.<wbr/>max<wbr/>Energy 9237 </td> 9238 <td class="entry_type"> 9239 <span class="entry_type_name">byte</span> 9240 9241 <span class="entry_type_visibility"> [system]</span> 9242 9243 9244 9245 9246 9247 9248 </td> <!-- entry_type --> 9249 9250 <td class="entry_description"> 9251 <p>Max energy output of the flash for a full 9252power single flash</p> 9253 </td> 9254 9255 <td class="entry_units"> 9256 lumen-seconds 9257 </td> 9258 9259 <td class="entry_range"> 9260 <p>>= 0</p> 9261 </td> 9262 9263 <td class="entry_tags"> 9264 <ul class="entry_tags"> 9265 <li><a href="#tag_FUTURE">FUTURE</a></li> 9266 </ul> 9267 </td> 9268 9269 </tr> 9270 9271 9272 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9273 <!-- end of entry --> 9274 9275 9276 9277 <!-- end of kind --> 9278 </tbody> 9279 <tr><td colspan="6" class="kind">dynamic</td></tr> 9280 9281 <thead class="entries_header"> 9282 <tr> 9283 <th class="th_name">Property Name</th> 9284 <th class="th_type">Type</th> 9285 <th class="th_description">Description</th> 9286 <th class="th_units">Units</th> 9287 <th class="th_range">Range</th> 9288 <th class="th_tags">Tags</th> 9289 </tr> 9290 </thead> 9291 9292 <tbody> 9293 9294 9295 9296 9297 9298 9299 9300 9301 9302 9303 <tr class="entry" id="dynamic_android.flash.firingPower"> 9304 <td class="entry_name 9305 " rowspan="3"> 9306 android.<wbr/>flash.<wbr/>firing<wbr/>Power 9307 </td> 9308 <td class="entry_type"> 9309 <span class="entry_type_name">byte</span> 9310 9311 <span class="entry_type_visibility"> [system]</span> 9312 9313 9314 9315 9316 9317 9318 </td> <!-- entry_type --> 9319 9320 <td class="entry_description"> 9321 <p>Power for flash firing/<wbr/>torch</p> 9322 </td> 9323 9324 <td class="entry_units"> 9325 10 is max power; 0 is no flash.<wbr/> Linear 9326 </td> 9327 9328 <td class="entry_range"> 9329 <p>0 - 10</p> 9330 </td> 9331 9332 <td class="entry_tags"> 9333 <ul class="entry_tags"> 9334 <li><a href="#tag_FUTURE">FUTURE</a></li> 9335 </ul> 9336 </td> 9337 9338 </tr> 9339 <tr class="entries_header"> 9340 <th class="th_details" colspan="5">Details</th> 9341 </tr> 9342 <tr class="entry_cont"> 9343 <td class="entry_details" colspan="5"> 9344 <p>Power for snapshot may use a different scale than 9345for torch mode.<wbr/> Only one entry for torch mode will be 9346used</p> 9347 </td> 9348 </tr> 9349 9350 9351 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9352 <!-- end of entry --> 9353 9354 9355 <tr class="entry" id="dynamic_android.flash.firingTime"> 9356 <td class="entry_name 9357 " rowspan="3"> 9358 android.<wbr/>flash.<wbr/>firing<wbr/>Time 9359 </td> 9360 <td class="entry_type"> 9361 <span class="entry_type_name">int64</span> 9362 9363 <span class="entry_type_visibility"> [system]</span> 9364 9365 9366 9367 9368 9369 9370 </td> <!-- entry_type --> 9371 9372 <td class="entry_description"> 9373 <p>Firing time of flash relative to start of 9374exposure</p> 9375 </td> 9376 9377 <td class="entry_units"> 9378 nanoseconds 9379 </td> 9380 9381 <td class="entry_range"> 9382 <p>0-(exposure time-flash duration)</p> 9383 </td> 9384 9385 <td class="entry_tags"> 9386 <ul class="entry_tags"> 9387 <li><a href="#tag_FUTURE">FUTURE</a></li> 9388 </ul> 9389 </td> 9390 9391 </tr> 9392 <tr class="entries_header"> 9393 <th class="th_details" colspan="5">Details</th> 9394 </tr> 9395 <tr class="entry_cont"> 9396 <td class="entry_details" colspan="5"> 9397 <p>Clamped to (0,<wbr/> exposure time - flash 9398duration).<wbr/></p> 9399 </td> 9400 </tr> 9401 9402 9403 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9404 <!-- end of entry --> 9405 9406 9407 <tr class="entry" id="dynamic_android.flash.mode"> 9408 <td class="entry_name 9409 " rowspan="3"> 9410 android.<wbr/>flash.<wbr/>mode 9411 </td> 9412 <td class="entry_type"> 9413 <span class="entry_type_name entry_type_name_enum">byte</span> 9414 9415 <span class="entry_type_visibility"> [public]</span> 9416 9417 9418 <span class="entry_type_hwlevel">[legacy] </span> 9419 9420 9421 9422 <ul class="entry_type_enum"> 9423 <li> 9424 <span class="entry_type_enum_name">OFF</span> 9425 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 9426 </li> 9427 <li> 9428 <span class="entry_type_enum_name">SINGLE</span> 9429 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 9430for this capture.<wbr/></p></span> 9431 </li> 9432 <li> 9433 <span class="entry_type_enum_name">TORCH</span> 9434 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 9435 </li> 9436 </ul> 9437 9438 </td> <!-- entry_type --> 9439 9440 <td class="entry_description"> 9441 <p>The desired mode for for the camera device's flash control.<wbr/></p> 9442 </td> 9443 9444 <td class="entry_units"> 9445 </td> 9446 9447 <td class="entry_range"> 9448 </td> 9449 9450 <td class="entry_tags"> 9451 <ul class="entry_tags"> 9452 <li><a href="#tag_BC">BC</a></li> 9453 </ul> 9454 </td> 9455 9456 </tr> 9457 <tr class="entries_header"> 9458 <th class="th_details" colspan="5">Details</th> 9459 </tr> 9460 <tr class="entry_cont"> 9461 <td class="entry_details" colspan="5"> 9462 <p>This control is only effective when flash unit is available 9463(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 9464<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/> 9465Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 9466ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 9467<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 9468<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 9469device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 9470control should be used along with auto-exposure (AE) precapture metering sequence 9471(<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> 9472<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 9473for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 9474<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> 9475 </td> 9476 </tr> 9477 9478 9479 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9480 <!-- end of entry --> 9481 9482 9483 <tr class="entry" id="dynamic_android.flash.state"> 9484 <td class="entry_name 9485 " rowspan="3"> 9486 android.<wbr/>flash.<wbr/>state 9487 </td> 9488 <td class="entry_type"> 9489 <span class="entry_type_name entry_type_name_enum">byte</span> 9490 9491 <span class="entry_type_visibility"> [public]</span> 9492 9493 9494 <span class="entry_type_hwlevel">[limited] </span> 9495 9496 9497 9498 <ul class="entry_type_enum"> 9499 <li> 9500 <span class="entry_type_enum_name">UNAVAILABLE</span> 9501 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 9502 </li> 9503 <li> 9504 <span class="entry_type_enum_name">CHARGING</span> 9505 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 9506 </li> 9507 <li> 9508 <span class="entry_type_enum_name">READY</span> 9509 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 9510 </li> 9511 <li> 9512 <span class="entry_type_enum_name">FIRED</span> 9513 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 9514 </li> 9515 <li> 9516 <span class="entry_type_enum_name">PARTIAL</span> 9517 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p> 9518<p>This is usually due to the next or previous frame having 9519the flash fire,<wbr/> and the flash spilling into this capture 9520due to hardware limitations.<wbr/></p></span> 9521 </li> 9522 </ul> 9523 9524 </td> <!-- entry_type --> 9525 9526 <td class="entry_description"> 9527 <p>Current state of the flash 9528unit.<wbr/></p> 9529 </td> 9530 9531 <td class="entry_units"> 9532 </td> 9533 9534 <td class="entry_range"> 9535 </td> 9536 9537 <td class="entry_tags"> 9538 </td> 9539 9540 </tr> 9541 <tr class="entries_header"> 9542 <th class="th_details" colspan="5">Details</th> 9543 </tr> 9544 <tr class="entry_cont"> 9545 <td class="entry_details" colspan="5"> 9546 <p>When the camera device doesn't have flash unit 9547(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/> 9548Other states indicate the current flash status.<wbr/></p> 9549<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p> 9550<ul> 9551<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li> 9552<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH 9553 will always return FIRED.<wbr/></li> 9554<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH 9555 will always return FIRED.<wbr/></li> 9556</ul> 9557<p>In all other conditions the state will not be available on 9558LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p> 9559 </td> 9560 </tr> 9561 9562 9563 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9564 <!-- end of entry --> 9565 9566 9567 9568 <!-- end of kind --> 9569 </tbody> 9570 9571 <!-- end of section --> 9572 <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr> 9573 9574 9575 <tr><td colspan="6" class="kind">controls</td></tr> 9576 9577 <thead class="entries_header"> 9578 <tr> 9579 <th class="th_name">Property Name</th> 9580 <th class="th_type">Type</th> 9581 <th class="th_description">Description</th> 9582 <th class="th_units">Units</th> 9583 <th class="th_range">Range</th> 9584 <th class="th_tags">Tags</th> 9585 </tr> 9586 </thead> 9587 9588 <tbody> 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 <tr class="entry" id="controls_android.hotPixel.mode"> 9600 <td class="entry_name 9601 " rowspan="3"> 9602 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 9603 </td> 9604 <td class="entry_type"> 9605 <span class="entry_type_name entry_type_name_enum">byte</span> 9606 9607 <span class="entry_type_visibility"> [public]</span> 9608 9609 9610 9611 9612 9613 <ul class="entry_type_enum"> 9614 <li> 9615 <span class="entry_type_enum_name">OFF</span> 9616 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 9617<p>The frame rate must not be reduced relative to sensor raw output 9618for this option.<wbr/></p> 9619<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> 9620 </li> 9621 <li> 9622 <span class="entry_type_enum_name">FAST</span> 9623 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 9624rate relative to sensor raw output.<wbr/></p> 9625<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> 9626 </li> 9627 <li> 9628 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9629 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 9630of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 9631<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> 9632 </li> 9633 </ul> 9634 9635 </td> <!-- entry_type --> 9636 9637 <td class="entry_description"> 9638 <p>Operational mode for hot pixel correction.<wbr/></p> 9639 </td> 9640 9641 <td class="entry_units"> 9642 </td> 9643 9644 <td class="entry_range"> 9645 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 9646 </td> 9647 9648 <td class="entry_tags"> 9649 <ul class="entry_tags"> 9650 <li><a href="#tag_V1">V1</a></li> 9651 <li><a href="#tag_RAW">RAW</a></li> 9652 </ul> 9653 </td> 9654 9655 </tr> 9656 <tr class="entries_header"> 9657 <th class="th_details" colspan="5">Details</th> 9658 </tr> 9659 <tr class="entry_cont"> 9660 <td class="entry_details" colspan="5"> 9661 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 9662that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 9663are stuck at an arbitrary value or are oversensitive).<wbr/></p> 9664 </td> 9665 </tr> 9666 9667 9668 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9669 <!-- end of entry --> 9670 9671 9672 9673 <!-- end of kind --> 9674 </tbody> 9675 <tr><td colspan="6" class="kind">static</td></tr> 9676 9677 <thead class="entries_header"> 9678 <tr> 9679 <th class="th_name">Property Name</th> 9680 <th class="th_type">Type</th> 9681 <th class="th_description">Description</th> 9682 <th class="th_units">Units</th> 9683 <th class="th_range">Range</th> 9684 <th class="th_tags">Tags</th> 9685 </tr> 9686 </thead> 9687 9688 <tbody> 9689 9690 9691 9692 9693 9694 9695 9696 9697 9698 9699 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 9700 <td class="entry_name 9701 " rowspan="5"> 9702 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 9703 </td> 9704 <td class="entry_type"> 9705 <span class="entry_type_name">byte</span> 9706 <span class="entry_type_container">x</span> 9707 9708 <span class="entry_type_array"> 9709 n 9710 </span> 9711 <span class="entry_type_visibility"> [public as enumList]</span> 9712 9713 9714 9715 9716 <div class="entry_type_notes">list of enums</div> 9717 9718 9719 </td> <!-- entry_type --> 9720 9721 <td class="entry_description"> 9722 <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 9723camera device.<wbr/></p> 9724 </td> 9725 9726 <td class="entry_units"> 9727 </td> 9728 9729 <td class="entry_range"> 9730 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p> 9731 </td> 9732 9733 <td class="entry_tags"> 9734 <ul class="entry_tags"> 9735 <li><a href="#tag_V1">V1</a></li> 9736 <li><a href="#tag_RAW">RAW</a></li> 9737 </ul> 9738 </td> 9739 9740 </tr> 9741 <tr class="entries_header"> 9742 <th class="th_details" colspan="5">Details</th> 9743 </tr> 9744 <tr class="entry_cont"> 9745 <td class="entry_details" colspan="5"> 9746 <p>FULL mode camera devices will always support FAST.<wbr/></p> 9747 </td> 9748 </tr> 9749 9750 <tr class="entries_header"> 9751 <th class="th_details" colspan="5">HAL Implementation Details</th> 9752 </tr> 9753 <tr class="entry_cont"> 9754 <td class="entry_details" colspan="5"> 9755 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 9756pixels than actual pixels on the camera sensor.<wbr/> 9757HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available 9758on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 9759That is,<wbr/> if the highest quality implementation on the camera device does not slow down 9760capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 9761 </td> 9762 </tr> 9763 9764 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9765 <!-- end of entry --> 9766 9767 9768 9769 <!-- end of kind --> 9770 </tbody> 9771 <tr><td colspan="6" class="kind">dynamic</td></tr> 9772 9773 <thead class="entries_header"> 9774 <tr> 9775 <th class="th_name">Property Name</th> 9776 <th class="th_type">Type</th> 9777 <th class="th_description">Description</th> 9778 <th class="th_units">Units</th> 9779 <th class="th_range">Range</th> 9780 <th class="th_tags">Tags</th> 9781 </tr> 9782 </thead> 9783 9784 <tbody> 9785 9786 9787 9788 9789 9790 9791 9792 9793 9794 9795 <tr class="entry" id="dynamic_android.hotPixel.mode"> 9796 <td class="entry_name 9797 " rowspan="3"> 9798 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 9799 </td> 9800 <td class="entry_type"> 9801 <span class="entry_type_name entry_type_name_enum">byte</span> 9802 9803 <span class="entry_type_visibility"> [public]</span> 9804 9805 9806 9807 9808 9809 <ul class="entry_type_enum"> 9810 <li> 9811 <span class="entry_type_enum_name">OFF</span> 9812 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 9813<p>The frame rate must not be reduced relative to sensor raw output 9814for this option.<wbr/></p> 9815<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> 9816 </li> 9817 <li> 9818 <span class="entry_type_enum_name">FAST</span> 9819 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 9820rate relative to sensor raw output.<wbr/></p> 9821<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> 9822 </li> 9823 <li> 9824 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9825 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 9826of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 9827<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> 9828 </li> 9829 </ul> 9830 9831 </td> <!-- entry_type --> 9832 9833 <td class="entry_description"> 9834 <p>Operational mode for hot pixel correction.<wbr/></p> 9835 </td> 9836 9837 <td class="entry_units"> 9838 </td> 9839 9840 <td class="entry_range"> 9841 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 9842 </td> 9843 9844 <td class="entry_tags"> 9845 <ul class="entry_tags"> 9846 <li><a href="#tag_V1">V1</a></li> 9847 <li><a href="#tag_RAW">RAW</a></li> 9848 </ul> 9849 </td> 9850 9851 </tr> 9852 <tr class="entries_header"> 9853 <th class="th_details" colspan="5">Details</th> 9854 </tr> 9855 <tr class="entry_cont"> 9856 <td class="entry_details" colspan="5"> 9857 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 9858that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 9859are stuck at an arbitrary value or are oversensitive).<wbr/></p> 9860 </td> 9861 </tr> 9862 9863 9864 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9865 <!-- end of entry --> 9866 9867 9868 9869 <!-- end of kind --> 9870 </tbody> 9871 9872 <!-- end of section --> 9873 <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr> 9874 9875 9876 <tr><td colspan="6" class="kind">controls</td></tr> 9877 9878 <thead class="entries_header"> 9879 <tr> 9880 <th class="th_name">Property Name</th> 9881 <th class="th_type">Type</th> 9882 <th class="th_description">Description</th> 9883 <th class="th_units">Units</th> 9884 <th class="th_range">Range</th> 9885 <th class="th_tags">Tags</th> 9886 </tr> 9887 </thead> 9888 9889 <tbody> 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 <tr class="entry" id="controls_android.jpeg.gpsLocation"> 9901 <td class="entry_name 9902 " rowspan="3"> 9903 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 9904 </td> 9905 <td class="entry_type"> 9906 <span class="entry_type_name">byte</span> 9907 9908 <span class="entry_type_visibility"> [public as location]</span> 9909 9910 <span class="entry_type_synthetic">[synthetic] </span> 9911 9912 <span class="entry_type_hwlevel">[legacy] </span> 9913 9914 9915 9916 9917 </td> <!-- entry_type --> 9918 9919 <td class="entry_description"> 9920 <p>A location object to use when generating image GPS metadata.<wbr/></p> 9921 </td> 9922 9923 <td class="entry_units"> 9924 </td> 9925 9926 <td class="entry_range"> 9927 </td> 9928 9929 <td class="entry_tags"> 9930 </td> 9931 9932 </tr> 9933 <tr class="entries_header"> 9934 <th class="th_details" colspan="5">Details</th> 9935 </tr> 9936 <tr class="entry_cont"> 9937 <td class="entry_details" colspan="5"> 9938 <p>Setting a location object in a request will include the GPS coordinates of the location 9939into any JPEG images captured based on the request.<wbr/> These coordinates can then be 9940viewed by anyone who receives the JPEG image.<wbr/></p> 9941 </td> 9942 </tr> 9943 9944 9945 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9946 <!-- end of entry --> 9947 9948 9949 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 9950 <td class="entry_name 9951 " rowspan="1"> 9952 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 9953 </td> 9954 <td class="entry_type"> 9955 <span class="entry_type_name">double</span> 9956 <span class="entry_type_container">x</span> 9957 9958 <span class="entry_type_array"> 9959 3 9960 </span> 9961 <span class="entry_type_visibility"> [hidden]</span> 9962 9963 9964 <span class="entry_type_hwlevel">[legacy] </span> 9965 9966 9967 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 9968 9969 9970 </td> <!-- entry_type --> 9971 9972 <td class="entry_description"> 9973 <p>GPS coordinates to include in output JPEG 9974EXIF.<wbr/></p> 9975 </td> 9976 9977 <td class="entry_units"> 9978 </td> 9979 9980 <td class="entry_range"> 9981 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 9982 </td> 9983 9984 <td class="entry_tags"> 9985 <ul class="entry_tags"> 9986 <li><a href="#tag_BC">BC</a></li> 9987 </ul> 9988 </td> 9989 9990 </tr> 9991 9992 9993 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9994 <!-- end of entry --> 9995 9996 9997 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 9998 <td class="entry_name 9999 " rowspan="1"> 10000 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 10001 </td> 10002 <td class="entry_type"> 10003 <span class="entry_type_name">byte</span> 10004 10005 <span class="entry_type_visibility"> [hidden as string]</span> 10006 10007 10008 <span class="entry_type_hwlevel">[legacy] </span> 10009 10010 10011 10012 10013 </td> <!-- entry_type --> 10014 10015 <td class="entry_description"> 10016 <p>32 characters describing GPS algorithm to 10017include in EXIF.<wbr/></p> 10018 </td> 10019 10020 <td class="entry_units"> 10021 UTF-8 null-terminated string 10022 </td> 10023 10024 <td class="entry_range"> 10025 </td> 10026 10027 <td class="entry_tags"> 10028 <ul class="entry_tags"> 10029 <li><a href="#tag_BC">BC</a></li> 10030 </ul> 10031 </td> 10032 10033 </tr> 10034 10035 10036 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10037 <!-- end of entry --> 10038 10039 10040 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 10041 <td class="entry_name 10042 " rowspan="1"> 10043 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 10044 </td> 10045 <td class="entry_type"> 10046 <span class="entry_type_name">int64</span> 10047 10048 <span class="entry_type_visibility"> [hidden]</span> 10049 10050 10051 <span class="entry_type_hwlevel">[legacy] </span> 10052 10053 10054 10055 10056 </td> <!-- entry_type --> 10057 10058 <td class="entry_description"> 10059 <p>Time GPS fix was made to include in 10060EXIF.<wbr/></p> 10061 </td> 10062 10063 <td class="entry_units"> 10064 UTC in seconds since January 1,<wbr/> 1970 10065 </td> 10066 10067 <td class="entry_range"> 10068 </td> 10069 10070 <td class="entry_tags"> 10071 <ul class="entry_tags"> 10072 <li><a href="#tag_BC">BC</a></li> 10073 </ul> 10074 </td> 10075 10076 </tr> 10077 10078 10079 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10080 <!-- end of entry --> 10081 10082 10083 <tr class="entry" id="controls_android.jpeg.orientation"> 10084 <td class="entry_name 10085 " rowspan="3"> 10086 android.<wbr/>jpeg.<wbr/>orientation 10087 </td> 10088 <td class="entry_type"> 10089 <span class="entry_type_name">int32</span> 10090 10091 <span class="entry_type_visibility"> [public]</span> 10092 10093 10094 <span class="entry_type_hwlevel">[legacy] </span> 10095 10096 10097 10098 10099 </td> <!-- entry_type --> 10100 10101 <td class="entry_description"> 10102 <p>The orientation for a JPEG image.<wbr/></p> 10103 </td> 10104 10105 <td class="entry_units"> 10106 Degrees in multiples of 90 10107 </td> 10108 10109 <td class="entry_range"> 10110 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 10111 </td> 10112 10113 <td class="entry_tags"> 10114 <ul class="entry_tags"> 10115 <li><a href="#tag_BC">BC</a></li> 10116 </ul> 10117 </td> 10118 10119 </tr> 10120 <tr class="entries_header"> 10121 <th class="th_details" colspan="5">Details</th> 10122 </tr> 10123 <tr class="entry_cont"> 10124 <td class="entry_details" colspan="5"> 10125 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 10126to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 10127upright.<wbr/></p> 10128<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 10129rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 10130the thumbnail data will also be rotated.<wbr/></p> 10131<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 10132by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 10133<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 10134sample code may be used:</p> 10135<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 10136 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 10137 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 10138 10139 //<wbr/> Round device orientation to a multiple of 90 10140 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 10141 10142 //<wbr/> Reverse device orientation for front-facing cameras 10143 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 10144 if (facingFront) deviceOrientation = -deviceOrientation; 10145 10146 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 10147 //<wbr/> the image upright relative to the device orientation 10148 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 10149 10150 return jpegOrientation; 10151} 10152</code></pre> 10153 </td> 10154 </tr> 10155 10156 10157 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10158 <!-- end of entry --> 10159 10160 10161 <tr class="entry" id="controls_android.jpeg.quality"> 10162 <td class="entry_name 10163 " rowspan="3"> 10164 android.<wbr/>jpeg.<wbr/>quality 10165 </td> 10166 <td class="entry_type"> 10167 <span class="entry_type_name">byte</span> 10168 10169 <span class="entry_type_visibility"> [public]</span> 10170 10171 10172 <span class="entry_type_hwlevel">[legacy] </span> 10173 10174 10175 10176 10177 </td> <!-- entry_type --> 10178 10179 <td class="entry_description"> 10180 <p>Compression quality of the final JPEG 10181image.<wbr/></p> 10182 </td> 10183 10184 <td class="entry_units"> 10185 </td> 10186 10187 <td class="entry_range"> 10188 <p>1-100; larger is higher quality</p> 10189 </td> 10190 10191 <td class="entry_tags"> 10192 <ul class="entry_tags"> 10193 <li><a href="#tag_BC">BC</a></li> 10194 </ul> 10195 </td> 10196 10197 </tr> 10198 <tr class="entries_header"> 10199 <th class="th_details" colspan="5">Details</th> 10200 </tr> 10201 <tr class="entry_cont"> 10202 <td class="entry_details" colspan="5"> 10203 <p>85-95 is typical usage range.<wbr/></p> 10204 </td> 10205 </tr> 10206 10207 10208 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10209 <!-- end of entry --> 10210 10211 10212 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 10213 <td class="entry_name 10214 " rowspan="1"> 10215 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 10216 </td> 10217 <td class="entry_type"> 10218 <span class="entry_type_name">byte</span> 10219 10220 <span class="entry_type_visibility"> [public]</span> 10221 10222 10223 <span class="entry_type_hwlevel">[legacy] </span> 10224 10225 10226 10227 10228 </td> <!-- entry_type --> 10229 10230 <td class="entry_description"> 10231 <p>Compression quality of JPEG 10232thumbnail.<wbr/></p> 10233 </td> 10234 10235 <td class="entry_units"> 10236 </td> 10237 10238 <td class="entry_range"> 10239 <p>1-100; larger is higher quality</p> 10240 </td> 10241 10242 <td class="entry_tags"> 10243 <ul class="entry_tags"> 10244 <li><a href="#tag_BC">BC</a></li> 10245 </ul> 10246 </td> 10247 10248 </tr> 10249 10250 10251 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10252 <!-- end of entry --> 10253 10254 10255 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 10256 <td class="entry_name 10257 " rowspan="5"> 10258 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 10259 </td> 10260 <td class="entry_type"> 10261 <span class="entry_type_name">int32</span> 10262 <span class="entry_type_container">x</span> 10263 10264 <span class="entry_type_array"> 10265 2 10266 </span> 10267 <span class="entry_type_visibility"> [public as size]</span> 10268 10269 10270 <span class="entry_type_hwlevel">[legacy] </span> 10271 10272 10273 10274 10275 </td> <!-- entry_type --> 10276 10277 <td class="entry_description"> 10278 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 10279 </td> 10280 10281 <td class="entry_units"> 10282 </td> 10283 10284 <td class="entry_range"> 10285 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 10286 </td> 10287 10288 <td class="entry_tags"> 10289 <ul class="entry_tags"> 10290 <li><a href="#tag_BC">BC</a></li> 10291 </ul> 10292 </td> 10293 10294 </tr> 10295 <tr class="entries_header"> 10296 <th class="th_details" colspan="5">Details</th> 10297 </tr> 10298 <tr class="entry_cont"> 10299 <td class="entry_details" colspan="5"> 10300 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 10301but the captured JPEG will still be a valid image.<wbr/></p> 10302<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 10303should have the same aspect ratio as the main JPEG output.<wbr/></p> 10304<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 10305ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 10306For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1030716:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 10308generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 10309Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 10310 </td> 10311 </tr> 10312 10313 <tr class="entries_header"> 10314 <th class="th_details" colspan="5">HAL Implementation Details</th> 10315 </tr> 10316 <tr class="entry_cont"> 10317 <td class="entry_details" colspan="5"> 10318 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 10319The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 10320The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 10321thumbnail image cropping.<wbr/></p> 10322 </td> 10323 </tr> 10324 10325 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10326 <!-- end of entry --> 10327 10328 10329 10330 <!-- end of kind --> 10331 </tbody> 10332 <tr><td colspan="6" class="kind">static</td></tr> 10333 10334 <thead class="entries_header"> 10335 <tr> 10336 <th class="th_name">Property Name</th> 10337 <th class="th_type">Type</th> 10338 <th class="th_description">Description</th> 10339 <th class="th_units">Units</th> 10340 <th class="th_range">Range</th> 10341 <th class="th_tags">Tags</th> 10342 </tr> 10343 </thead> 10344 10345 <tbody> 10346 10347 10348 10349 10350 10351 10352 10353 10354 10355 10356 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 10357 <td class="entry_name 10358 " rowspan="3"> 10359 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 10360 </td> 10361 <td class="entry_type"> 10362 <span class="entry_type_name">int32</span> 10363 <span class="entry_type_container">x</span> 10364 10365 <span class="entry_type_array"> 10366 2 x n 10367 </span> 10368 <span class="entry_type_visibility"> [public as size]</span> 10369 10370 10371 <span class="entry_type_hwlevel">[legacy] </span> 10372 10373 10374 10375 10376 </td> <!-- entry_type --> 10377 10378 <td class="entry_description"> 10379 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this 10380camera device.<wbr/></p> 10381 </td> 10382 10383 <td class="entry_units"> 10384 </td> 10385 10386 <td class="entry_range"> 10387 </td> 10388 10389 <td class="entry_tags"> 10390 <ul class="entry_tags"> 10391 <li><a href="#tag_BC">BC</a></li> 10392 </ul> 10393 </td> 10394 10395 </tr> 10396 <tr class="entries_header"> 10397 <th class="th_details" colspan="5">Details</th> 10398 </tr> 10399 <tr class="entry_cont"> 10400 <td class="entry_details" colspan="5"> 10401 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no 10402thumbnail should be generated.<wbr/></p> 10403<p>Below condiditions will be satisfied for this size list:</p> 10404<ul> 10405<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 10406If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 10407<li>The aspect ratio of the largest thumbnail size will be same as the 10408aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 10409The largest size is defined as the size that has the largest pixel area 10410in a given size list.<wbr/></li> 10411<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 10412one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 10413and vice versa.<wbr/></li> 10414<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li> 10415</ul> 10416 </td> 10417 </tr> 10418 10419 10420 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10421 <!-- end of entry --> 10422 10423 10424 <tr class="entry" id="static_android.jpeg.maxSize"> 10425 <td class="entry_name 10426 " rowspan="3"> 10427 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 10428 </td> 10429 <td class="entry_type"> 10430 <span class="entry_type_name">int32</span> 10431 10432 <span class="entry_type_visibility"> [system]</span> 10433 10434 10435 10436 10437 10438 10439 </td> <!-- entry_type --> 10440 10441 <td class="entry_description"> 10442 <p>Maximum size in bytes for the compressed 10443JPEG buffer</p> 10444 </td> 10445 10446 <td class="entry_units"> 10447 </td> 10448 10449 <td class="entry_range"> 10450 <p>Must be large enough to fit any JPEG produced by 10451the camera</p> 10452 </td> 10453 10454 <td class="entry_tags"> 10455 </td> 10456 10457 </tr> 10458 <tr class="entries_header"> 10459 <th class="th_details" colspan="5">Details</th> 10460 </tr> 10461 <tr class="entry_cont"> 10462 <td class="entry_details" colspan="5"> 10463 <p>This is used for sizing the gralloc buffers for 10464JPEG</p> 10465 </td> 10466 </tr> 10467 10468 10469 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10470 <!-- end of entry --> 10471 10472 10473 10474 <!-- end of kind --> 10475 </tbody> 10476 <tr><td colspan="6" class="kind">dynamic</td></tr> 10477 10478 <thead class="entries_header"> 10479 <tr> 10480 <th class="th_name">Property Name</th> 10481 <th class="th_type">Type</th> 10482 <th class="th_description">Description</th> 10483 <th class="th_units">Units</th> 10484 <th class="th_range">Range</th> 10485 <th class="th_tags">Tags</th> 10486 </tr> 10487 </thead> 10488 10489 <tbody> 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> 10501 <td class="entry_name 10502 " rowspan="3"> 10503 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 10504 </td> 10505 <td class="entry_type"> 10506 <span class="entry_type_name">byte</span> 10507 10508 <span class="entry_type_visibility"> [public as location]</span> 10509 10510 <span class="entry_type_synthetic">[synthetic] </span> 10511 10512 <span class="entry_type_hwlevel">[legacy] </span> 10513 10514 10515 10516 10517 </td> <!-- entry_type --> 10518 10519 <td class="entry_description"> 10520 <p>A location object to use when generating image GPS metadata.<wbr/></p> 10521 </td> 10522 10523 <td class="entry_units"> 10524 </td> 10525 10526 <td class="entry_range"> 10527 </td> 10528 10529 <td class="entry_tags"> 10530 </td> 10531 10532 </tr> 10533 <tr class="entries_header"> 10534 <th class="th_details" colspan="5">Details</th> 10535 </tr> 10536 <tr class="entry_cont"> 10537 <td class="entry_details" colspan="5"> 10538 <p>Setting a location object in a request will include the GPS coordinates of the location 10539into any JPEG images captured based on the request.<wbr/> These coordinates can then be 10540viewed by anyone who receives the JPEG image.<wbr/></p> 10541 </td> 10542 </tr> 10543 10544 10545 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10546 <!-- end of entry --> 10547 10548 10549 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 10550 <td class="entry_name 10551 " rowspan="1"> 10552 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 10553 </td> 10554 <td class="entry_type"> 10555 <span class="entry_type_name">double</span> 10556 <span class="entry_type_container">x</span> 10557 10558 <span class="entry_type_array"> 10559 3 10560 </span> 10561 <span class="entry_type_visibility"> [hidden]</span> 10562 10563 10564 <span class="entry_type_hwlevel">[legacy] </span> 10565 10566 10567 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 10568 10569 10570 </td> <!-- entry_type --> 10571 10572 <td class="entry_description"> 10573 <p>GPS coordinates to include in output JPEG 10574EXIF.<wbr/></p> 10575 </td> 10576 10577 <td class="entry_units"> 10578 </td> 10579 10580 <td class="entry_range"> 10581 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 10582 </td> 10583 10584 <td class="entry_tags"> 10585 <ul class="entry_tags"> 10586 <li><a href="#tag_BC">BC</a></li> 10587 </ul> 10588 </td> 10589 10590 </tr> 10591 10592 10593 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10594 <!-- end of entry --> 10595 10596 10597 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 10598 <td class="entry_name 10599 " rowspan="1"> 10600 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 10601 </td> 10602 <td class="entry_type"> 10603 <span class="entry_type_name">byte</span> 10604 10605 <span class="entry_type_visibility"> [hidden as string]</span> 10606 10607 10608 <span class="entry_type_hwlevel">[legacy] </span> 10609 10610 10611 10612 10613 </td> <!-- entry_type --> 10614 10615 <td class="entry_description"> 10616 <p>32 characters describing GPS algorithm to 10617include in EXIF.<wbr/></p> 10618 </td> 10619 10620 <td class="entry_units"> 10621 UTF-8 null-terminated string 10622 </td> 10623 10624 <td class="entry_range"> 10625 </td> 10626 10627 <td class="entry_tags"> 10628 <ul class="entry_tags"> 10629 <li><a href="#tag_BC">BC</a></li> 10630 </ul> 10631 </td> 10632 10633 </tr> 10634 10635 10636 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10637 <!-- end of entry --> 10638 10639 10640 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 10641 <td class="entry_name 10642 " rowspan="1"> 10643 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 10644 </td> 10645 <td class="entry_type"> 10646 <span class="entry_type_name">int64</span> 10647 10648 <span class="entry_type_visibility"> [hidden]</span> 10649 10650 10651 <span class="entry_type_hwlevel">[legacy] </span> 10652 10653 10654 10655 10656 </td> <!-- entry_type --> 10657 10658 <td class="entry_description"> 10659 <p>Time GPS fix was made to include in 10660EXIF.<wbr/></p> 10661 </td> 10662 10663 <td class="entry_units"> 10664 UTC in seconds since January 1,<wbr/> 1970 10665 </td> 10666 10667 <td class="entry_range"> 10668 </td> 10669 10670 <td class="entry_tags"> 10671 <ul class="entry_tags"> 10672 <li><a href="#tag_BC">BC</a></li> 10673 </ul> 10674 </td> 10675 10676 </tr> 10677 10678 10679 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10680 <!-- end of entry --> 10681 10682 10683 <tr class="entry" id="dynamic_android.jpeg.orientation"> 10684 <td class="entry_name 10685 " rowspan="3"> 10686 android.<wbr/>jpeg.<wbr/>orientation 10687 </td> 10688 <td class="entry_type"> 10689 <span class="entry_type_name">int32</span> 10690 10691 <span class="entry_type_visibility"> [public]</span> 10692 10693 10694 <span class="entry_type_hwlevel">[legacy] </span> 10695 10696 10697 10698 10699 </td> <!-- entry_type --> 10700 10701 <td class="entry_description"> 10702 <p>The orientation for a JPEG image.<wbr/></p> 10703 </td> 10704 10705 <td class="entry_units"> 10706 Degrees in multiples of 90 10707 </td> 10708 10709 <td class="entry_range"> 10710 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 10711 </td> 10712 10713 <td class="entry_tags"> 10714 <ul class="entry_tags"> 10715 <li><a href="#tag_BC">BC</a></li> 10716 </ul> 10717 </td> 10718 10719 </tr> 10720 <tr class="entries_header"> 10721 <th class="th_details" colspan="5">Details</th> 10722 </tr> 10723 <tr class="entry_cont"> 10724 <td class="entry_details" colspan="5"> 10725 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 10726to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 10727upright.<wbr/></p> 10728<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 10729rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 10730the thumbnail data will also be rotated.<wbr/></p> 10731<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 10732by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 10733<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 10734sample code may be used:</p> 10735<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 10736 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 10737 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 10738 10739 //<wbr/> Round device orientation to a multiple of 90 10740 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 10741 10742 //<wbr/> Reverse device orientation for front-facing cameras 10743 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 10744 if (facingFront) deviceOrientation = -deviceOrientation; 10745 10746 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 10747 //<wbr/> the image upright relative to the device orientation 10748 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 10749 10750 return jpegOrientation; 10751} 10752</code></pre> 10753 </td> 10754 </tr> 10755 10756 10757 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10758 <!-- end of entry --> 10759 10760 10761 <tr class="entry" id="dynamic_android.jpeg.quality"> 10762 <td class="entry_name 10763 " rowspan="3"> 10764 android.<wbr/>jpeg.<wbr/>quality 10765 </td> 10766 <td class="entry_type"> 10767 <span class="entry_type_name">byte</span> 10768 10769 <span class="entry_type_visibility"> [public]</span> 10770 10771 10772 <span class="entry_type_hwlevel">[legacy] </span> 10773 10774 10775 10776 10777 </td> <!-- entry_type --> 10778 10779 <td class="entry_description"> 10780 <p>Compression quality of the final JPEG 10781image.<wbr/></p> 10782 </td> 10783 10784 <td class="entry_units"> 10785 </td> 10786 10787 <td class="entry_range"> 10788 <p>1-100; larger is higher quality</p> 10789 </td> 10790 10791 <td class="entry_tags"> 10792 <ul class="entry_tags"> 10793 <li><a href="#tag_BC">BC</a></li> 10794 </ul> 10795 </td> 10796 10797 </tr> 10798 <tr class="entries_header"> 10799 <th class="th_details" colspan="5">Details</th> 10800 </tr> 10801 <tr class="entry_cont"> 10802 <td class="entry_details" colspan="5"> 10803 <p>85-95 is typical usage range.<wbr/></p> 10804 </td> 10805 </tr> 10806 10807 10808 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10809 <!-- end of entry --> 10810 10811 10812 <tr class="entry" id="dynamic_android.jpeg.size"> 10813 <td class="entry_name 10814 " rowspan="3"> 10815 android.<wbr/>jpeg.<wbr/>size 10816 </td> 10817 <td class="entry_type"> 10818 <span class="entry_type_name">int32</span> 10819 10820 <span class="entry_type_visibility"> [system]</span> 10821 10822 10823 10824 10825 10826 10827 </td> <!-- entry_type --> 10828 10829 <td class="entry_description"> 10830 <p>The size of the compressed JPEG image,<wbr/> in 10831bytes</p> 10832 </td> 10833 10834 <td class="entry_units"> 10835 </td> 10836 10837 <td class="entry_range"> 10838 <p>>= 0</p> 10839 </td> 10840 10841 <td class="entry_tags"> 10842 <ul class="entry_tags"> 10843 <li><a href="#tag_FUTURE">FUTURE</a></li> 10844 </ul> 10845 </td> 10846 10847 </tr> 10848 <tr class="entries_header"> 10849 <th class="th_details" colspan="5">Details</th> 10850 </tr> 10851 <tr class="entry_cont"> 10852 <td class="entry_details" colspan="5"> 10853 <p>If no JPEG output is produced for the request,<wbr/> 10854this must be 0.<wbr/></p> 10855<p>Otherwise,<wbr/> this describes the real size of the compressed 10856JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 10857if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 10858has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 10859the JPEG stream will be 1000000 bytes,<wbr/> of which the first 10860500000 make up the real data.<wbr/></p> 10861 </td> 10862 </tr> 10863 10864 10865 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10866 <!-- end of entry --> 10867 10868 10869 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 10870 <td class="entry_name 10871 " rowspan="1"> 10872 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 10873 </td> 10874 <td class="entry_type"> 10875 <span class="entry_type_name">byte</span> 10876 10877 <span class="entry_type_visibility"> [public]</span> 10878 10879 10880 <span class="entry_type_hwlevel">[legacy] </span> 10881 10882 10883 10884 10885 </td> <!-- entry_type --> 10886 10887 <td class="entry_description"> 10888 <p>Compression quality of JPEG 10889thumbnail.<wbr/></p> 10890 </td> 10891 10892 <td class="entry_units"> 10893 </td> 10894 10895 <td class="entry_range"> 10896 <p>1-100; larger is higher quality</p> 10897 </td> 10898 10899 <td class="entry_tags"> 10900 <ul class="entry_tags"> 10901 <li><a href="#tag_BC">BC</a></li> 10902 </ul> 10903 </td> 10904 10905 </tr> 10906 10907 10908 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10909 <!-- end of entry --> 10910 10911 10912 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 10913 <td class="entry_name 10914 " rowspan="5"> 10915 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 10916 </td> 10917 <td class="entry_type"> 10918 <span class="entry_type_name">int32</span> 10919 <span class="entry_type_container">x</span> 10920 10921 <span class="entry_type_array"> 10922 2 10923 </span> 10924 <span class="entry_type_visibility"> [public as size]</span> 10925 10926 10927 <span class="entry_type_hwlevel">[legacy] </span> 10928 10929 10930 10931 10932 </td> <!-- entry_type --> 10933 10934 <td class="entry_description"> 10935 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 10936 </td> 10937 10938 <td class="entry_units"> 10939 </td> 10940 10941 <td class="entry_range"> 10942 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 10943 </td> 10944 10945 <td class="entry_tags"> 10946 <ul class="entry_tags"> 10947 <li><a href="#tag_BC">BC</a></li> 10948 </ul> 10949 </td> 10950 10951 </tr> 10952 <tr class="entries_header"> 10953 <th class="th_details" colspan="5">Details</th> 10954 </tr> 10955 <tr class="entry_cont"> 10956 <td class="entry_details" colspan="5"> 10957 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 10958but the captured JPEG will still be a valid image.<wbr/></p> 10959<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 10960should have the same aspect ratio as the main JPEG output.<wbr/></p> 10961<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 10962ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 10963For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1096416:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 10965generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 10966Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 10967 </td> 10968 </tr> 10969 10970 <tr class="entries_header"> 10971 <th class="th_details" colspan="5">HAL Implementation Details</th> 10972 </tr> 10973 <tr class="entry_cont"> 10974 <td class="entry_details" colspan="5"> 10975 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 10976The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 10977The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 10978thumbnail image cropping.<wbr/></p> 10979 </td> 10980 </tr> 10981 10982 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10983 <!-- end of entry --> 10984 10985 10986 10987 <!-- end of kind --> 10988 </tbody> 10989 10990 <!-- end of section --> 10991 <tr><td colspan="6" id="section_lens" class="section">lens</td></tr> 10992 10993 10994 <tr><td colspan="6" class="kind">controls</td></tr> 10995 10996 <thead class="entries_header"> 10997 <tr> 10998 <th class="th_name">Property Name</th> 10999 <th class="th_type">Type</th> 11000 <th class="th_description">Description</th> 11001 <th class="th_units">Units</th> 11002 <th class="th_range">Range</th> 11003 <th class="th_tags">Tags</th> 11004 </tr> 11005 </thead> 11006 11007 <tbody> 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 11018 <tr class="entry" id="controls_android.lens.aperture"> 11019 <td class="entry_name 11020 " rowspan="3"> 11021 android.<wbr/>lens.<wbr/>aperture 11022 </td> 11023 <td class="entry_type"> 11024 <span class="entry_type_name">float</span> 11025 11026 <span class="entry_type_visibility"> [public]</span> 11027 11028 11029 <span class="entry_type_hwlevel">[full] </span> 11030 11031 11032 11033 11034 </td> <!-- entry_type --> 11035 11036 <td class="entry_description"> 11037 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 11038effective aperture diameter.<wbr/></p> 11039 </td> 11040 11041 <td class="entry_units"> 11042 The f-number (f/<wbr/>N) 11043 </td> 11044 11045 <td class="entry_range"> 11046 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 11047 </td> 11048 11049 <td class="entry_tags"> 11050 <ul class="entry_tags"> 11051 <li><a href="#tag_V1">V1</a></li> 11052 </ul> 11053 </td> 11054 11055 </tr> 11056 <tr class="entries_header"> 11057 <th class="th_details" colspan="5">Details</th> 11058 </tr> 11059 <tr class="entry_cont"> 11060 <td class="entry_details" colspan="5"> 11061 <p>Setting this value is only supported on the camera devices that have a variable 11062aperture lens.<wbr/></p> 11063<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 11064this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 11065<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> 11066to achieve manual exposure control.<wbr/></p> 11067<p>The requested aperture value may take several frames to reach the 11068requested value; the camera device will report the current (intermediate) 11069aperture size in capture result metadata while the aperture is changing.<wbr/> 11070While 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> 11071<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 11072the ON modes,<wbr/> this will be overridden by the camera device 11073auto-exposure algorithm,<wbr/> the overridden values are then provided 11074back to the user in the corresponding result.<wbr/></p> 11075 </td> 11076 </tr> 11077 11078 11079 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11080 <!-- end of entry --> 11081 11082 11083 <tr class="entry" id="controls_android.lens.filterDensity"> 11084 <td class="entry_name 11085 " rowspan="3"> 11086 android.<wbr/>lens.<wbr/>filter<wbr/>Density 11087 </td> 11088 <td class="entry_type"> 11089 <span class="entry_type_name">float</span> 11090 11091 <span class="entry_type_visibility"> [public]</span> 11092 11093 11094 <span class="entry_type_hwlevel">[full] </span> 11095 11096 11097 11098 11099 </td> <!-- entry_type --> 11100 11101 <td class="entry_description"> 11102 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 11103 </td> 11104 11105 <td class="entry_units"> 11106 Exposure Value (EV) 11107 </td> 11108 11109 <td class="entry_range"> 11110 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 11111 </td> 11112 11113 <td class="entry_tags"> 11114 <ul class="entry_tags"> 11115 <li><a href="#tag_V1">V1</a></li> 11116 </ul> 11117 </td> 11118 11119 </tr> 11120 <tr class="entries_header"> 11121 <th class="th_details" colspan="5">Details</th> 11122 </tr> 11123 <tr class="entry_cont"> 11124 <td class="entry_details" colspan="5"> 11125 <p>This control will not be supported on most camera devices.<wbr/></p> 11126<p>Lens filters are typically used to lower the amount of light the 11127sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 11128step is the standard logarithmic representation,<wbr/> which are 11129non-negative,<wbr/> and inversely proportional to the amount of light 11130hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 11131in no reduction of the incoming light,<wbr/> and setting this to 2 would 11132mean that the filter is set to reduce incoming light by two stops 11133(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 11134<p>It may take several frames before the lens filter density changes 11135to the requested value.<wbr/> While the filter density is still changing,<wbr/> 11136<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11137 </td> 11138 </tr> 11139 11140 11141 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11142 <!-- end of entry --> 11143 11144 11145 <tr class="entry" id="controls_android.lens.focalLength"> 11146 <td class="entry_name 11147 " rowspan="3"> 11148 android.<wbr/>lens.<wbr/>focal<wbr/>Length 11149 </td> 11150 <td class="entry_type"> 11151 <span class="entry_type_name">float</span> 11152 11153 <span class="entry_type_visibility"> [public]</span> 11154 11155 11156 <span class="entry_type_hwlevel">[legacy] </span> 11157 11158 11159 11160 11161 </td> <!-- entry_type --> 11162 11163 <td class="entry_description"> 11164 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 11165 </td> 11166 11167 <td class="entry_units"> 11168 Millimeters 11169 </td> 11170 11171 <td class="entry_range"> 11172 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 11173 </td> 11174 11175 <td class="entry_tags"> 11176 <ul class="entry_tags"> 11177 <li><a href="#tag_V1">V1</a></li> 11178 </ul> 11179 </td> 11180 11181 </tr> 11182 <tr class="entries_header"> 11183 <th class="th_details" colspan="5">Details</th> 11184 </tr> 11185 <tr class="entry_cont"> 11186 <td class="entry_details" colspan="5"> 11187 <p>This setting controls the physical focal length of the camera 11188device's lens.<wbr/> Changing the focal length changes the field of 11189view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 11190<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 11191setting won't be applied instantaneously,<wbr/> and it may take several 11192frames before the lens can change to the requested focal length.<wbr/> 11193While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 11194be set to MOVING.<wbr/></p> 11195<p>Optical zoom will not be supported on most devices.<wbr/></p> 11196 </td> 11197 </tr> 11198 11199 11200 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11201 <!-- end of entry --> 11202 11203 11204 <tr class="entry" id="controls_android.lens.focusDistance"> 11205 <td class="entry_name 11206 " rowspan="3"> 11207 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 11208 </td> 11209 <td class="entry_type"> 11210 <span class="entry_type_name">float</span> 11211 11212 <span class="entry_type_visibility"> [public]</span> 11213 11214 11215 <span class="entry_type_hwlevel">[full] </span> 11216 11217 11218 11219 11220 </td> <!-- entry_type --> 11221 11222 <td class="entry_description"> 11223 <p>Desired distance to plane of sharpest focus,<wbr/> 11224measured from frontmost surface of the lens.<wbr/></p> 11225 </td> 11226 11227 <td class="entry_units"> 11228 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11229 </td> 11230 11231 <td class="entry_range"> 11232 <p>>= 0</p> 11233 </td> 11234 11235 <td class="entry_tags"> 11236 <ul class="entry_tags"> 11237 <li><a href="#tag_BC">BC</a></li> 11238 <li><a href="#tag_V1">V1</a></li> 11239 </ul> 11240 </td> 11241 11242 </tr> 11243 <tr class="entries_header"> 11244 <th class="th_details" colspan="5">Details</th> 11245 </tr> 11246 <tr class="entry_cont"> 11247 <td class="entry_details" colspan="5"> 11248 <p>This control can be used for setting manual focus,<wbr/> on devices that support 11249the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see 11250<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p> 11251<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to 11252<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> 11253<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 11254instantaneously,<wbr/> and it may take several frames before the lens 11255can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 11256<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11257<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code> 11258for infinity focus.<wbr/></p> 11259 </td> 11260 </tr> 11261 11262 11263 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11264 <!-- end of entry --> 11265 11266 11267 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 11268 <td class="entry_name 11269 " rowspan="3"> 11270 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 11271 </td> 11272 <td class="entry_type"> 11273 <span class="entry_type_name entry_type_name_enum">byte</span> 11274 11275 <span class="entry_type_visibility"> [public]</span> 11276 11277 11278 <span class="entry_type_hwlevel">[limited] </span> 11279 11280 11281 11282 <ul class="entry_type_enum"> 11283 <li> 11284 <span class="entry_type_enum_name">OFF</span> 11285 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 11286 </li> 11287 <li> 11288 <span class="entry_type_enum_name">ON</span> 11289 <span class="entry_type_enum_optional">[optional]</span> 11290 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 11291 </li> 11292 </ul> 11293 11294 </td> <!-- entry_type --> 11295 11296 <td class="entry_description"> 11297 <p>Sets whether the camera device uses optical image stabilization (OIS) 11298when capturing images.<wbr/></p> 11299 </td> 11300 11301 <td class="entry_units"> 11302 </td> 11303 11304 <td class="entry_range"> 11305 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 11306 </td> 11307 11308 <td class="entry_tags"> 11309 <ul class="entry_tags"> 11310 <li><a href="#tag_V1">V1</a></li> 11311 </ul> 11312 </td> 11313 11314 </tr> 11315 <tr class="entries_header"> 11316 <th class="th_details" colspan="5">Details</th> 11317 </tr> 11318 <tr class="entry_cont"> 11319 <td class="entry_details" colspan="5"> 11320 <p>OIS is used to compensate for motion blur due to small 11321movements of the camera during capture.<wbr/> Unlike digital image 11322stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 11323makes use of mechanical elements to stabilize the camera 11324sensor,<wbr/> and thus allows for longer exposure times before 11325camera shake becomes apparent.<wbr/></p> 11326<p>Switching between different optical stabilization modes may take several 11327frames to initialize,<wbr/> the camera device will report the current mode in 11328capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 11329optical stabilization modes in the first several capture results may still 11330be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 11331<p>If a camera device supports both OIS and digital image stabilization 11332(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 11333interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 11334<p>Not all devices will support OIS; see 11335<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 11336available controls.<wbr/></p> 11337 </td> 11338 </tr> 11339 11340 11341 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11342 <!-- end of entry --> 11343 11344 11345 11346 <!-- end of kind --> 11347 </tbody> 11348 <tr><td colspan="6" class="kind">static</td></tr> 11349 11350 <thead class="entries_header"> 11351 <tr> 11352 <th class="th_name">Property Name</th> 11353 <th class="th_type">Type</th> 11354 <th class="th_description">Description</th> 11355 <th class="th_units">Units</th> 11356 <th class="th_range">Range</th> 11357 <th class="th_tags">Tags</th> 11358 </tr> 11359 </thead> 11360 11361 <tbody> 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 <tr class="entry" id="static_android.lens.info.availableApertures"> 11375 <td class="entry_name 11376 " rowspan="3"> 11377 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 11378 </td> 11379 <td class="entry_type"> 11380 <span class="entry_type_name">float</span> 11381 <span class="entry_type_container">x</span> 11382 11383 <span class="entry_type_array"> 11384 n 11385 </span> 11386 <span class="entry_type_visibility"> [public]</span> 11387 11388 11389 <span class="entry_type_hwlevel">[full] </span> 11390 11391 11392 11393 11394 </td> <!-- entry_type --> 11395 11396 <td class="entry_description"> 11397 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are 11398supported by this camera device.<wbr/></p> 11399 </td> 11400 11401 <td class="entry_units"> 11402 The aperture f-number 11403 </td> 11404 11405 <td class="entry_range"> 11406 </td> 11407 11408 <td class="entry_tags"> 11409 <ul class="entry_tags"> 11410 <li><a href="#tag_V1">V1</a></li> 11411 </ul> 11412 </td> 11413 11414 </tr> 11415 <tr class="entries_header"> 11416 <th class="th_details" colspan="5">Details</th> 11417 </tr> 11418 <tr class="entry_cont"> 11419 <td class="entry_details" colspan="5"> 11420 <p>If the camera device doesn't support a variable lens aperture,<wbr/> 11421this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p> 11422<p>If the camera device supports a variable aperture,<wbr/> the aperture values 11423in this list will be sorted in ascending order.<wbr/></p> 11424 </td> 11425 </tr> 11426 11427 11428 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11429 <!-- end of entry --> 11430 11431 11432 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 11433 <td class="entry_name 11434 " rowspan="3"> 11435 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 11436 </td> 11437 <td class="entry_type"> 11438 <span class="entry_type_name">float</span> 11439 <span class="entry_type_container">x</span> 11440 11441 <span class="entry_type_array"> 11442 n 11443 </span> 11444 <span class="entry_type_visibility"> [public]</span> 11445 11446 11447 <span class="entry_type_hwlevel">[full] </span> 11448 11449 11450 11451 11452 </td> <!-- entry_type --> 11453 11454 <td class="entry_description"> 11455 <p>List of neutral density filter values for 11456<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p> 11457 </td> 11458 11459 <td class="entry_units"> 11460 Exposure value (EV) 11461 </td> 11462 11463 <td class="entry_range"> 11464 <p>Values are >= 0</p> 11465 </td> 11466 11467 <td class="entry_tags"> 11468 <ul class="entry_tags"> 11469 <li><a href="#tag_V1">V1</a></li> 11470 </ul> 11471 </td> 11472 11473 </tr> 11474 <tr class="entries_header"> 11475 <th class="th_details" colspan="5">Details</th> 11476 </tr> 11477 <tr class="entry_cont"> 11478 <td class="entry_details" colspan="5"> 11479 <p>If a neutral density filter is not supported by this camera device,<wbr/> 11480this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every 11481filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p> 11482 </td> 11483 </tr> 11484 11485 11486 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11487 <!-- end of entry --> 11488 11489 11490 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 11491 <td class="entry_name 11492 " rowspan="3"> 11493 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 11494 </td> 11495 <td class="entry_type"> 11496 <span class="entry_type_name">float</span> 11497 <span class="entry_type_container">x</span> 11498 11499 <span class="entry_type_array"> 11500 n 11501 </span> 11502 <span class="entry_type_visibility"> [public]</span> 11503 11504 11505 <span class="entry_type_hwlevel">[legacy] </span> 11506 11507 11508 <div class="entry_type_notes">The list of available focal lengths</div> 11509 11510 11511 </td> <!-- entry_type --> 11512 11513 <td class="entry_description"> 11514 <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 11515device.<wbr/></p> 11516 </td> 11517 11518 <td class="entry_units"> 11519 Millimeters 11520 </td> 11521 11522 <td class="entry_range"> 11523 <p>Values are > 0</p> 11524 </td> 11525 11526 <td class="entry_tags"> 11527 <ul class="entry_tags"> 11528 <li><a href="#tag_BC">BC</a></li> 11529 <li><a href="#tag_V1">V1</a></li> 11530 </ul> 11531 </td> 11532 11533 </tr> 11534 <tr class="entries_header"> 11535 <th class="th_details" colspan="5">Details</th> 11536 </tr> 11537 <tr class="entry_cont"> 11538 <td class="entry_details" colspan="5"> 11539 <p>If optical zoom is not supported,<wbr/> this list will only contain 11540a single value corresponding to the fixed focal length of the 11541device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported 11542by the camera device,<wbr/> in ascending order.<wbr/></p> 11543 </td> 11544 </tr> 11545 11546 11547 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11548 <!-- end of entry --> 11549 11550 11551 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 11552 <td class="entry_name 11553 " rowspan="3"> 11554 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 11555 </td> 11556 <td class="entry_type"> 11557 <span class="entry_type_name">byte</span> 11558 <span class="entry_type_container">x</span> 11559 11560 <span class="entry_type_array"> 11561 n 11562 </span> 11563 <span class="entry_type_visibility"> [public as enumList]</span> 11564 11565 11566 <span class="entry_type_hwlevel">[limited] </span> 11567 11568 11569 <div class="entry_type_notes">list of enums</div> 11570 11571 11572 </td> <!-- entry_type --> 11573 11574 <td class="entry_description"> 11575 <p>List of optical image stabilization (OIS) modes for 11576<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> 11577 </td> 11578 11579 <td class="entry_units"> 11580 </td> 11581 11582 <td class="entry_range"> 11583 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p> 11584 </td> 11585 11586 <td class="entry_tags"> 11587 <ul class="entry_tags"> 11588 <li><a href="#tag_V1">V1</a></li> 11589 </ul> 11590 </td> 11591 11592 </tr> 11593 <tr class="entries_header"> 11594 <th class="th_details" colspan="5">Details</th> 11595 </tr> 11596 <tr class="entry_cont"> 11597 <td class="entry_details" colspan="5"> 11598 <p>If OIS is not supported by a given camera device,<wbr/> this list will 11599contain only OFF.<wbr/></p> 11600 </td> 11601 </tr> 11602 11603 11604 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11605 <!-- end of entry --> 11606 11607 11608 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 11609 <td class="entry_name 11610 " rowspan="3"> 11611 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 11612 </td> 11613 <td class="entry_type"> 11614 <span class="entry_type_name">float</span> 11615 11616 <span class="entry_type_visibility"> [public]</span> 11617 11618 11619 <span class="entry_type_hwlevel">[limited] </span> 11620 11621 11622 11623 11624 </td> <!-- entry_type --> 11625 11626 <td class="entry_description"> 11627 <p>Hyperfocal distance for this lens.<wbr/></p> 11628 </td> 11629 11630 <td class="entry_units"> 11631 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11632 </td> 11633 11634 <td class="entry_range"> 11635 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is 11636within <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> 11637 </td> 11638 11639 <td class="entry_tags"> 11640 </td> 11641 11642 </tr> 11643 <tr class="entries_header"> 11644 <th class="th_details" colspan="5">Details</th> 11645 </tr> 11646 <tr class="entry_cont"> 11647 <td class="entry_details" colspan="5"> 11648 <p>If the lens is not fixed focus,<wbr/> the camera device will report this 11649field 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> 11650 </td> 11651 </tr> 11652 11653 11654 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11655 <!-- end of entry --> 11656 11657 11658 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 11659 <td class="entry_name 11660 " rowspan="5"> 11661 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 11662 </td> 11663 <td class="entry_type"> 11664 <span class="entry_type_name">float</span> 11665 11666 <span class="entry_type_visibility"> [public]</span> 11667 11668 11669 <span class="entry_type_hwlevel">[limited] </span> 11670 11671 11672 11673 11674 </td> <!-- entry_type --> 11675 11676 <td class="entry_description"> 11677 <p>Shortest distance from frontmost surface 11678of the lens that can be brought into sharp focus.<wbr/></p> 11679 </td> 11680 11681 <td class="entry_units"> 11682 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11683 </td> 11684 11685 <td class="entry_range"> 11686 <p>>= 0</p> 11687 </td> 11688 11689 <td class="entry_tags"> 11690 <ul class="entry_tags"> 11691 <li><a href="#tag_V1">V1</a></li> 11692 </ul> 11693 </td> 11694 11695 </tr> 11696 <tr class="entries_header"> 11697 <th class="th_details" colspan="5">Details</th> 11698 </tr> 11699 <tr class="entry_cont"> 11700 <td class="entry_details" colspan="5"> 11701 <p>If the lens is fixed-focus,<wbr/> this will be 117020.<wbr/></p> 11703 </td> 11704 </tr> 11705 11706 <tr class="entries_header"> 11707 <th class="th_details" colspan="5">HAL Implementation Details</th> 11708 </tr> 11709 <tr class="entry_cont"> 11710 <td class="entry_details" colspan="5"> 11711 <p>Mandatory for FULL devices; LIMITED devices 11712must always set this value to 0 for fixed-focus; and may omit 11713the minimum focus distance otherwise.<wbr/></p> 11714<p>This field is also mandatory for all devices advertising 11715the MANUAL_<wbr/>SENSOR capability.<wbr/></p> 11716 </td> 11717 </tr> 11718 11719 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11720 <!-- end of entry --> 11721 11722 11723 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 11724 <td class="entry_name 11725 " rowspan="3"> 11726 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 11727 </td> 11728 <td class="entry_type"> 11729 <span class="entry_type_name">int32</span> 11730 <span class="entry_type_container">x</span> 11731 11732 <span class="entry_type_array"> 11733 2 11734 </span> 11735 <span class="entry_type_visibility"> [hidden as size]</span> 11736 11737 11738 <span class="entry_type_hwlevel">[full] </span> 11739 11740 11741 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 11742 11743 11744 </td> <!-- entry_type --> 11745 11746 <td class="entry_description"> 11747 <p>Dimensions of lens shading map.<wbr/></p> 11748 </td> 11749 11750 <td class="entry_units"> 11751 </td> 11752 11753 <td class="entry_range"> 11754 <p>Both values >= 1</p> 11755 </td> 11756 11757 <td class="entry_tags"> 11758 <ul class="entry_tags"> 11759 <li><a href="#tag_V1">V1</a></li> 11760 </ul> 11761 </td> 11762 11763 </tr> 11764 <tr class="entries_header"> 11765 <th class="th_details" colspan="5">Details</th> 11766 </tr> 11767 <tr class="entry_cont"> 11768 <td class="entry_details" colspan="5"> 11769 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 11770must be smaller than 64x64.<wbr/></p> 11771 </td> 11772 </tr> 11773 11774 11775 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11776 <!-- end of entry --> 11777 11778 11779 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 11780 <td class="entry_name 11781 " rowspan="5"> 11782 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 11783 </td> 11784 <td class="entry_type"> 11785 <span class="entry_type_name entry_type_name_enum">byte</span> 11786 11787 <span class="entry_type_visibility"> [public]</span> 11788 11789 11790 <span class="entry_type_hwlevel">[limited] </span> 11791 11792 11793 11794 <ul class="entry_type_enum"> 11795 <li> 11796 <span class="entry_type_enum_name">UNCALIBRATED</span> 11797 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 11798<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p> 11799<p>Setting the lens to the same focus distance on separate occasions may 11800result in a different real focus distance,<wbr/> depending on factors such 11801as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 11802and the device temperature.<wbr/> The focus distance value will still be 11803in 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 11804represents the farthest focus.<wbr/></p></span> 11805 </li> 11806 <li> 11807 <span class="entry_type_enum_name">APPROXIMATE</span> 11808 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p> 11809<p>However,<wbr/> setting the lens to the same focus distance 11810on separate occasions may result in a different real 11811focus distance,<wbr/> depending on factors such as the 11812orientation of the device,<wbr/> the age of the focusing 11813mechanism,<wbr/> and the device temperature.<wbr/></p></span> 11814 </li> 11815 <li> 11816 <span class="entry_type_enum_name">CALIBRATED</span> 11817 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and 11818is calibrated.<wbr/></p> 11819<p>The lens mechanism is calibrated so that setting the 11820same focus distance is repeatable on multiple 11821occasions with good accuracy,<wbr/> and the focus distance 11822corresponds to the real physical distance to the plane 11823of best focus.<wbr/></p></span> 11824 </li> 11825 </ul> 11826 11827 </td> <!-- entry_type --> 11828 11829 <td class="entry_description"> 11830 <p>The lens focus distance calibration quality.<wbr/></p> 11831 </td> 11832 11833 <td class="entry_units"> 11834 </td> 11835 11836 <td class="entry_range"> 11837 </td> 11838 11839 <td class="entry_tags"> 11840 <ul class="entry_tags"> 11841 <li><a href="#tag_V1">V1</a></li> 11842 </ul> 11843 </td> 11844 11845 </tr> 11846 <tr class="entries_header"> 11847 <th class="th_details" colspan="5">Details</th> 11848 </tr> 11849 <tr class="entry_cont"> 11850 <td class="entry_details" colspan="5"> 11851 <p>The lens focus distance calibration quality determines the reliability of 11852focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 11853<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 11854<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 11855<p>APPROXIMATE and CALIBRATED devices report the focus metadata in 11856units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> 11857and increasing positive numbers represent focusing closer and closer 11858to the camera device.<wbr/> The focus distance control also uses diopters 11859on these devices.<wbr/></p> 11860<p>UNCALIBRATED devices do not use units that are directly comparable 11861to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest 11862focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the 11863nearest focus the device can achieve.<wbr/></p> 11864 </td> 11865 </tr> 11866 11867 <tr class="entries_header"> 11868 <th class="th_details" colspan="5">HAL Implementation Details</th> 11869 </tr> 11870 <tr class="entry_cont"> 11871 <td class="entry_details" colspan="5"> 11872 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity 11873focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) 11874and the lens focus distance is set to 0 diopters 11875(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity 11876and is stably focused at infinity even if the device tilts.<wbr/> It may take the 11877lens some time to move; during the move the lens state should be MOVING and 11878the output diopter value should be changing toward 0.<wbr/></p> 11879 </td> 11880 </tr> 11881 11882 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11883 <!-- end of entry --> 11884 11885 11886 11887 11888 11889 <tr class="entry" id="static_android.lens.facing"> 11890 <td class="entry_name 11891 " rowspan="1"> 11892 android.<wbr/>lens.<wbr/>facing 11893 </td> 11894 <td class="entry_type"> 11895 <span class="entry_type_name entry_type_name_enum">byte</span> 11896 11897 <span class="entry_type_visibility"> [public]</span> 11898 11899 11900 <span class="entry_type_hwlevel">[legacy] </span> 11901 11902 11903 11904 <ul class="entry_type_enum"> 11905 <li> 11906 <span class="entry_type_enum_name">FRONT</span> 11907 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span> 11908 </li> 11909 <li> 11910 <span class="entry_type_enum_name">BACK</span> 11911 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span> 11912 </li> 11913 <li> 11914 <span class="entry_type_enum_name">EXTERNAL</span> 11915 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the 11916device's screen.<wbr/></p></span> 11917 </li> 11918 </ul> 11919 11920 </td> <!-- entry_type --> 11921 11922 <td class="entry_description"> 11923 <p>Direction the camera faces relative to 11924device screen.<wbr/></p> 11925 </td> 11926 11927 <td class="entry_units"> 11928 </td> 11929 11930 <td class="entry_range"> 11931 </td> 11932 11933 <td class="entry_tags"> 11934 </td> 11935 11936 </tr> 11937 11938 11939 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11940 <!-- end of entry --> 11941 11942 11943 <tr class="entry" id="static_android.lens.poseRotation"> 11944 <td class="entry_name 11945 " rowspan="3"> 11946 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 11947 </td> 11948 <td class="entry_type"> 11949 <span class="entry_type_name">float</span> 11950 <span class="entry_type_container">x</span> 11951 11952 <span class="entry_type_array"> 11953 4 11954 </span> 11955 <span class="entry_type_visibility"> [public]</span> 11956 11957 11958 11959 11960 11961 11962 </td> <!-- entry_type --> 11963 11964 <td class="entry_description"> 11965 <p>The orientation of the camera relative to the sensor 11966coordinate system.<wbr/></p> 11967 </td> 11968 11969 <td class="entry_units"> 11970 11971 Quarternion coefficients 11972 11973 </td> 11974 11975 <td class="entry_range"> 11976 </td> 11977 11978 <td class="entry_tags"> 11979 <ul class="entry_tags"> 11980 <li><a href="#tag_DEPTH">DEPTH</a></li> 11981 </ul> 11982 </td> 11983 11984 </tr> 11985 <tr class="entries_header"> 11986 <th class="th_details" colspan="5">Details</th> 11987 </tr> 11988 <tr class="entry_cont"> 11989 <td class="entry_details" colspan="5"> 11990 <p>The four coefficients that describe the quarternion 11991rotation from the Android sensor coordinate system to a 11992camera-aligned coordinate system where the X-axis is 11993aligned with the long side of the image sensor,<wbr/> the Y-axis 11994is aligned with the short side of the image sensor,<wbr/> and 11995the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 11996<p>To convert from the quarternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 11997to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 11998amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 11999<pre><code> theta = 2 * acos(w) 12000a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 12001a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 12002a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 12003</code></pre> 12004<p>To create a 3x3 rotation matrix that applies the rotation 12005defined by this quarternion,<wbr/> the following matrix can be 12006used:</p> 12007<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 12008 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 12009 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 12010</code></pre> 12011<p>This matrix can then be used to apply the rotation to a 12012 column vector point with</p> 12013<p><code>p' = Rp</code></p> 12014<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 12015 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 12016 </td> 12017 </tr> 12018 12019 12020 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12021 <!-- end of entry --> 12022 12023 12024 <tr class="entry" id="static_android.lens.poseTranslation"> 12025 <td class="entry_name 12026 " rowspan="3"> 12027 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 12028 </td> 12029 <td class="entry_type"> 12030 <span class="entry_type_name">float</span> 12031 <span class="entry_type_container">x</span> 12032 12033 <span class="entry_type_array"> 12034 3 12035 </span> 12036 <span class="entry_type_visibility"> [public]</span> 12037 12038 12039 12040 12041 12042 12043 </td> <!-- entry_type --> 12044 12045 <td class="entry_description"> 12046 <p>Position of the camera optical center.<wbr/></p> 12047 </td> 12048 12049 <td class="entry_units"> 12050 Meters 12051 </td> 12052 12053 <td class="entry_range"> 12054 </td> 12055 12056 <td class="entry_tags"> 12057 <ul class="entry_tags"> 12058 <li><a href="#tag_DEPTH">DEPTH</a></li> 12059 </ul> 12060 </td> 12061 12062 </tr> 12063 <tr class="entries_header"> 12064 <th class="th_details" colspan="5">Details</th> 12065 </tr> 12066 <tr class="entry_cont"> 12067 <td class="entry_details" colspan="5"> 12068 <p>As measured in the device sensor coordinate system,<wbr/> the 12069position of the camera device's optical center,<wbr/> as a 12070three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p> 12071<p>To transform a world position to a camera-device centered 12072coordinate system,<wbr/> the position must be translated by this 12073vector and then rotated by <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>.<wbr/></p> 12074 </td> 12075 </tr> 12076 12077 12078 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12079 <!-- end of entry --> 12080 12081 12082 <tr class="entry" id="static_android.lens.intrinsicCalibration"> 12083 <td class="entry_name 12084 " rowspan="3"> 12085 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 12086 </td> 12087 <td class="entry_type"> 12088 <span class="entry_type_name">float</span> 12089 <span class="entry_type_container">x</span> 12090 12091 <span class="entry_type_array"> 12092 5 12093 </span> 12094 <span class="entry_type_visibility"> [public]</span> 12095 12096 12097 12098 12099 12100 12101 </td> <!-- entry_type --> 12102 12103 <td class="entry_description"> 12104 <p>The parameters for this camera device's intrinsic 12105calibration.<wbr/></p> 12106 </td> 12107 12108 <td class="entry_units"> 12109 12110 Pixels in the android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size coordinate 12111 system.<wbr/> 12112 12113 </td> 12114 12115 <td class="entry_range"> 12116 </td> 12117 12118 <td class="entry_tags"> 12119 <ul class="entry_tags"> 12120 <li><a href="#tag_DEPTH">DEPTH</a></li> 12121 </ul> 12122 </td> 12123 12124 </tr> 12125 <tr class="entries_header"> 12126 <th class="th_details" colspan="5">Details</th> 12127 </tr> 12128 <tr class="entry_cont"> 12129 <td class="entry_details" colspan="5"> 12130 <p>The five calibration parameters that describe the 12131transform from camera-centric 3D coordinates to sensor 12132pixel coordinates:</p> 12133<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 12134</code></pre> 12135<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 12136focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 12137axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 12138being aligned with the lens plane.<wbr/></p> 12139<p>These are typically used within a transformation matrix K:</p> 12140<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 12141 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 12142 0 0,<wbr/> 1 ] 12143</code></pre> 12144<p>which can then be combined with the camera pose rotation 12145<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 12146<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 12147complete transform from world coordinates to pixel 12148coordinates:</p> 12149<pre><code>P = [ K 0 * [ R t 12150 0 1 ] 0 1 ] 12151</code></pre> 12152<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 12153and <code>p_<wbr/>s</code> being a point in the camera active pixel array 12154coordinate system,<wbr/> and with the mapping including the 12155homogeneous division by z:</p> 12156<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 12157p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 12158</code></pre> 12159<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 12160point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 12161(depth) in pixel coordinates.<wbr/></p> 12162 </td> 12163 </tr> 12164 12165 12166 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12167 <!-- end of entry --> 12168 12169 12170 <tr class="entry" id="static_android.lens.radialDistortion"> 12171 <td class="entry_name 12172 " rowspan="3"> 12173 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 12174 </td> 12175 <td class="entry_type"> 12176 <span class="entry_type_name">float</span> 12177 <span class="entry_type_container">x</span> 12178 12179 <span class="entry_type_array"> 12180 3 12181 </span> 12182 <span class="entry_type_visibility"> [public]</span> 12183 12184 12185 12186 12187 12188 12189 </td> <!-- entry_type --> 12190 12191 <td class="entry_description"> 12192 <p>The correction coefficients to correct for this camera device's 12193radial lens distortion.<wbr/></p> 12194 </td> 12195 12196 <td class="entry_units"> 12197 12198 Coefficients for a 6th-degree even radial polynomial.<wbr/> 12199 12200 </td> 12201 12202 <td class="entry_range"> 12203 </td> 12204 12205 <td class="entry_tags"> 12206 <ul class="entry_tags"> 12207 <li><a href="#tag_DEPTH">DEPTH</a></li> 12208 </ul> 12209 </td> 12210 12211 </tr> 12212 <tr class="entries_header"> 12213 <th class="th_details" colspan="5">Details</th> 12214 </tr> 12215 <tr class="entry_cont"> 12216 <td class="entry_details" colspan="5"> 12217 <p>Three cofficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> kappa_<wbr/>3]</code> that 12218can be used to correct the lens's radial geometric 12219distortion with the mapping equations:</p> 12220<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) 12221y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) 12222</code></pre> 12223<p>where <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> are normalized coordinates with <code>(0,<wbr/>0)</code> 12224at the lens optical center,<wbr/> and <code>[-1,<wbr/> 1]</code> are the edges of 12225the active pixel array; and where <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the 12226corrected normalized coordinates with radial distortion 12227removed; and <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p> 12228 </td> 12229 </tr> 12230 12231 12232 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12233 <!-- end of entry --> 12234 12235 12236 12237 <!-- end of kind --> 12238 </tbody> 12239 <tr><td colspan="6" class="kind">dynamic</td></tr> 12240 12241 <thead class="entries_header"> 12242 <tr> 12243 <th class="th_name">Property Name</th> 12244 <th class="th_type">Type</th> 12245 <th class="th_description">Description</th> 12246 <th class="th_units">Units</th> 12247 <th class="th_range">Range</th> 12248 <th class="th_tags">Tags</th> 12249 </tr> 12250 </thead> 12251 12252 <tbody> 12253 12254 12255 12256 12257 12258 12259 12260 12261 12262 12263 <tr class="entry" id="dynamic_android.lens.aperture"> 12264 <td class="entry_name 12265 " rowspan="3"> 12266 android.<wbr/>lens.<wbr/>aperture 12267 </td> 12268 <td class="entry_type"> 12269 <span class="entry_type_name">float</span> 12270 12271 <span class="entry_type_visibility"> [public]</span> 12272 12273 12274 <span class="entry_type_hwlevel">[full] </span> 12275 12276 12277 12278 12279 </td> <!-- entry_type --> 12280 12281 <td class="entry_description"> 12282 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 12283effective aperture diameter.<wbr/></p> 12284 </td> 12285 12286 <td class="entry_units"> 12287 The f-number (f/<wbr/>N) 12288 </td> 12289 12290 <td class="entry_range"> 12291 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 12292 </td> 12293 12294 <td class="entry_tags"> 12295 <ul class="entry_tags"> 12296 <li><a href="#tag_V1">V1</a></li> 12297 </ul> 12298 </td> 12299 12300 </tr> 12301 <tr class="entries_header"> 12302 <th class="th_details" colspan="5">Details</th> 12303 </tr> 12304 <tr class="entry_cont"> 12305 <td class="entry_details" colspan="5"> 12306 <p>Setting this value is only supported on the camera devices that have a variable 12307aperture lens.<wbr/></p> 12308<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 12309this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 12310<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> 12311to achieve manual exposure control.<wbr/></p> 12312<p>The requested aperture value may take several frames to reach the 12313requested value; the camera device will report the current (intermediate) 12314aperture size in capture result metadata while the aperture is changing.<wbr/> 12315While 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> 12316<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 12317the ON modes,<wbr/> this will be overridden by the camera device 12318auto-exposure algorithm,<wbr/> the overridden values are then provided 12319back to the user in the corresponding result.<wbr/></p> 12320 </td> 12321 </tr> 12322 12323 12324 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12325 <!-- end of entry --> 12326 12327 12328 <tr class="entry" id="dynamic_android.lens.filterDensity"> 12329 <td class="entry_name 12330 " rowspan="3"> 12331 android.<wbr/>lens.<wbr/>filter<wbr/>Density 12332 </td> 12333 <td class="entry_type"> 12334 <span class="entry_type_name">float</span> 12335 12336 <span class="entry_type_visibility"> [public]</span> 12337 12338 12339 <span class="entry_type_hwlevel">[full] </span> 12340 12341 12342 12343 12344 </td> <!-- entry_type --> 12345 12346 <td class="entry_description"> 12347 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 12348 </td> 12349 12350 <td class="entry_units"> 12351 Exposure Value (EV) 12352 </td> 12353 12354 <td class="entry_range"> 12355 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 12356 </td> 12357 12358 <td class="entry_tags"> 12359 <ul class="entry_tags"> 12360 <li><a href="#tag_V1">V1</a></li> 12361 </ul> 12362 </td> 12363 12364 </tr> 12365 <tr class="entries_header"> 12366 <th class="th_details" colspan="5">Details</th> 12367 </tr> 12368 <tr class="entry_cont"> 12369 <td class="entry_details" colspan="5"> 12370 <p>This control will not be supported on most camera devices.<wbr/></p> 12371<p>Lens filters are typically used to lower the amount of light the 12372sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 12373step is the standard logarithmic representation,<wbr/> which are 12374non-negative,<wbr/> and inversely proportional to the amount of light 12375hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 12376in no reduction of the incoming light,<wbr/> and setting this to 2 would 12377mean that the filter is set to reduce incoming light by two stops 12378(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 12379<p>It may take several frames before the lens filter density changes 12380to the requested value.<wbr/> While the filter density is still changing,<wbr/> 12381<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 12382 </td> 12383 </tr> 12384 12385 12386 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12387 <!-- end of entry --> 12388 12389 12390 <tr class="entry" id="dynamic_android.lens.focalLength"> 12391 <td class="entry_name 12392 " rowspan="3"> 12393 android.<wbr/>lens.<wbr/>focal<wbr/>Length 12394 </td> 12395 <td class="entry_type"> 12396 <span class="entry_type_name">float</span> 12397 12398 <span class="entry_type_visibility"> [public]</span> 12399 12400 12401 <span class="entry_type_hwlevel">[legacy] </span> 12402 12403 12404 12405 12406 </td> <!-- entry_type --> 12407 12408 <td class="entry_description"> 12409 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 12410 </td> 12411 12412 <td class="entry_units"> 12413 Millimeters 12414 </td> 12415 12416 <td class="entry_range"> 12417 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 12418 </td> 12419 12420 <td class="entry_tags"> 12421 <ul class="entry_tags"> 12422 <li><a href="#tag_BC">BC</a></li> 12423 </ul> 12424 </td> 12425 12426 </tr> 12427 <tr class="entries_header"> 12428 <th class="th_details" colspan="5">Details</th> 12429 </tr> 12430 <tr class="entry_cont"> 12431 <td class="entry_details" colspan="5"> 12432 <p>This setting controls the physical focal length of the camera 12433device's lens.<wbr/> Changing the focal length changes the field of 12434view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 12435<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 12436setting won't be applied instantaneously,<wbr/> and it may take several 12437frames before the lens can change to the requested focal length.<wbr/> 12438While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 12439be set to MOVING.<wbr/></p> 12440<p>Optical zoom will not be supported on most devices.<wbr/></p> 12441 </td> 12442 </tr> 12443 12444 12445 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12446 <!-- end of entry --> 12447 12448 12449 <tr class="entry" id="dynamic_android.lens.focusDistance"> 12450 <td class="entry_name 12451 " rowspan="3"> 12452 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 12453 </td> 12454 <td class="entry_type"> 12455 <span class="entry_type_name">float</span> 12456 12457 <span class="entry_type_visibility"> [public]</span> 12458 12459 12460 <span class="entry_type_hwlevel">[full] </span> 12461 12462 12463 12464 12465 </td> <!-- entry_type --> 12466 12467 <td class="entry_description"> 12468 <p>Desired distance to plane of sharpest focus,<wbr/> 12469measured from frontmost surface of the lens.<wbr/></p> 12470 </td> 12471 12472 <td class="entry_units"> 12473 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 12474 </td> 12475 12476 <td class="entry_range"> 12477 <p>>= 0</p> 12478 </td> 12479 12480 <td class="entry_tags"> 12481 <ul class="entry_tags"> 12482 <li><a href="#tag_BC">BC</a></li> 12483 </ul> 12484 </td> 12485 12486 </tr> 12487 <tr class="entries_header"> 12488 <th class="th_details" colspan="5">Details</th> 12489 </tr> 12490 <tr class="entry_cont"> 12491 <td class="entry_details" colspan="5"> 12492 <p>Should be zero for fixed-focus cameras</p> 12493 </td> 12494 </tr> 12495 12496 12497 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12498 <!-- end of entry --> 12499 12500 12501 <tr class="entry" id="dynamic_android.lens.focusRange"> 12502 <td class="entry_name 12503 " rowspan="3"> 12504 android.<wbr/>lens.<wbr/>focus<wbr/>Range 12505 </td> 12506 <td class="entry_type"> 12507 <span class="entry_type_name">float</span> 12508 <span class="entry_type_container">x</span> 12509 12510 <span class="entry_type_array"> 12511 2 12512 </span> 12513 <span class="entry_type_visibility"> [public as pairFloatFloat]</span> 12514 12515 12516 <span class="entry_type_hwlevel">[limited] </span> 12517 12518 12519 <div class="entry_type_notes">Range of scene distances that are in focus</div> 12520 12521 12522 </td> <!-- entry_type --> 12523 12524 <td class="entry_description"> 12525 <p>The range of scene distances that are in 12526sharp focus (depth of field).<wbr/></p> 12527 </td> 12528 12529 <td class="entry_units"> 12530 A pair of focus distances in diopters: (near,<wbr/> 12531 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 12532 </td> 12533 12534 <td class="entry_range"> 12535 <p>>=0</p> 12536 </td> 12537 12538 <td class="entry_tags"> 12539 <ul class="entry_tags"> 12540 <li><a href="#tag_BC">BC</a></li> 12541 </ul> 12542 </td> 12543 12544 </tr> 12545 <tr class="entries_header"> 12546 <th class="th_details" colspan="5">Details</th> 12547 </tr> 12548 <tr class="entry_cont"> 12549 <td class="entry_details" colspan="5"> 12550 <p>If variable focus not supported,<wbr/> can still report 12551fixed depth of field range</p> 12552 </td> 12553 </tr> 12554 12555 12556 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12557 <!-- end of entry --> 12558 12559 12560 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 12561 <td class="entry_name 12562 " rowspan="3"> 12563 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 12564 </td> 12565 <td class="entry_type"> 12566 <span class="entry_type_name entry_type_name_enum">byte</span> 12567 12568 <span class="entry_type_visibility"> [public]</span> 12569 12570 12571 <span class="entry_type_hwlevel">[limited] </span> 12572 12573 12574 12575 <ul class="entry_type_enum"> 12576 <li> 12577 <span class="entry_type_enum_name">OFF</span> 12578 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 12579 </li> 12580 <li> 12581 <span class="entry_type_enum_name">ON</span> 12582 <span class="entry_type_enum_optional">[optional]</span> 12583 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 12584 </li> 12585 </ul> 12586 12587 </td> <!-- entry_type --> 12588 12589 <td class="entry_description"> 12590 <p>Sets whether the camera device uses optical image stabilization (OIS) 12591when capturing images.<wbr/></p> 12592 </td> 12593 12594 <td class="entry_units"> 12595 </td> 12596 12597 <td class="entry_range"> 12598 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 12599 </td> 12600 12601 <td class="entry_tags"> 12602 <ul class="entry_tags"> 12603 <li><a href="#tag_V1">V1</a></li> 12604 </ul> 12605 </td> 12606 12607 </tr> 12608 <tr class="entries_header"> 12609 <th class="th_details" colspan="5">Details</th> 12610 </tr> 12611 <tr class="entry_cont"> 12612 <td class="entry_details" colspan="5"> 12613 <p>OIS is used to compensate for motion blur due to small 12614movements of the camera during capture.<wbr/> Unlike digital image 12615stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 12616makes use of mechanical elements to stabilize the camera 12617sensor,<wbr/> and thus allows for longer exposure times before 12618camera shake becomes apparent.<wbr/></p> 12619<p>Switching between different optical stabilization modes may take several 12620frames to initialize,<wbr/> the camera device will report the current mode in 12621capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 12622optical stabilization modes in the first several capture results may still 12623be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 12624<p>If a camera device supports both OIS and digital image stabilization 12625(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 12626interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 12627<p>Not all devices will support OIS; see 12628<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 12629available controls.<wbr/></p> 12630 </td> 12631 </tr> 12632 12633 12634 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12635 <!-- end of entry --> 12636 12637 12638 <tr class="entry" id="dynamic_android.lens.state"> 12639 <td class="entry_name 12640 " rowspan="3"> 12641 android.<wbr/>lens.<wbr/>state 12642 </td> 12643 <td class="entry_type"> 12644 <span class="entry_type_name entry_type_name_enum">byte</span> 12645 12646 <span class="entry_type_visibility"> [public]</span> 12647 12648 12649 <span class="entry_type_hwlevel">[limited] </span> 12650 12651 12652 12653 <ul class="entry_type_enum"> 12654 <li> 12655 <span class="entry_type_enum_name">STATIONARY</span> 12656 <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/> 12657<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> 12658 </li> 12659 <li> 12660 <span class="entry_type_enum_name">MOVING</span> 12661 <span class="entry_type_enum_notes"><p>One or several of the lens parameters 12662(<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/> 12663<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 12664currently changing.<wbr/></p></span> 12665 </li> 12666 </ul> 12667 12668 </td> <!-- entry_type --> 12669 12670 <td class="entry_description"> 12671 <p>Current lens status.<wbr/></p> 12672 </td> 12673 12674 <td class="entry_units"> 12675 </td> 12676 12677 <td class="entry_range"> 12678 </td> 12679 12680 <td class="entry_tags"> 12681 <ul class="entry_tags"> 12682 <li><a href="#tag_V1">V1</a></li> 12683 </ul> 12684 </td> 12685 12686 </tr> 12687 <tr class="entries_header"> 12688 <th class="th_details" colspan="5">Details</th> 12689 </tr> 12690 <tr class="entry_cont"> 12691 <td class="entry_details" colspan="5"> 12692 <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/> 12693<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/> 12694they may take several frames to reach the requested values.<wbr/> This state indicates 12695the current status of the lens parameters.<wbr/></p> 12696<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 12697either because the parameters are all fixed,<wbr/> or because the lens has had enough 12698time to reach the most recently-requested values.<wbr/> 12699If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 12700<ul> 12701<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 12702<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 12703<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/> 12704which means the optical zoom is not supported.<wbr/></li> 12705<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> 12706<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> 12707</ul> 12708<p>Then this state will always be STATIONARY.<wbr/></p> 12709<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 12710is changing.<wbr/></p> 12711 </td> 12712 </tr> 12713 12714 12715 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12716 <!-- end of entry --> 12717 12718 12719 <tr class="entry" id="dynamic_android.lens.poseRotation"> 12720 <td class="entry_name 12721 " rowspan="3"> 12722 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 12723 </td> 12724 <td class="entry_type"> 12725 <span class="entry_type_name">float</span> 12726 <span class="entry_type_container">x</span> 12727 12728 <span class="entry_type_array"> 12729 4 12730 </span> 12731 <span class="entry_type_visibility"> [public]</span> 12732 12733 12734 12735 12736 12737 12738 </td> <!-- entry_type --> 12739 12740 <td class="entry_description"> 12741 <p>The orientation of the camera relative to the sensor 12742coordinate system.<wbr/></p> 12743 </td> 12744 12745 <td class="entry_units"> 12746 12747 Quarternion coefficients 12748 12749 </td> 12750 12751 <td class="entry_range"> 12752 </td> 12753 12754 <td class="entry_tags"> 12755 <ul class="entry_tags"> 12756 <li><a href="#tag_DEPTH">DEPTH</a></li> 12757 </ul> 12758 </td> 12759 12760 </tr> 12761 <tr class="entries_header"> 12762 <th class="th_details" colspan="5">Details</th> 12763 </tr> 12764 <tr class="entry_cont"> 12765 <td class="entry_details" colspan="5"> 12766 <p>The four coefficients that describe the quarternion 12767rotation from the Android sensor coordinate system to a 12768camera-aligned coordinate system where the X-axis is 12769aligned with the long side of the image sensor,<wbr/> the Y-axis 12770is aligned with the short side of the image sensor,<wbr/> and 12771the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 12772<p>To convert from the quarternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 12773to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 12774amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 12775<pre><code> theta = 2 * acos(w) 12776a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 12777a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 12778a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 12779</code></pre> 12780<p>To create a 3x3 rotation matrix that applies the rotation 12781defined by this quarternion,<wbr/> the following matrix can be 12782used:</p> 12783<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 12784 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 12785 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 12786</code></pre> 12787<p>This matrix can then be used to apply the rotation to a 12788 column vector point with</p> 12789<p><code>p' = Rp</code></p> 12790<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 12791 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 12792 </td> 12793 </tr> 12794 12795 12796 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12797 <!-- end of entry --> 12798 12799 12800 <tr class="entry" id="dynamic_android.lens.poseTranslation"> 12801 <td class="entry_name 12802 " rowspan="3"> 12803 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 12804 </td> 12805 <td class="entry_type"> 12806 <span class="entry_type_name">float</span> 12807 <span class="entry_type_container">x</span> 12808 12809 <span class="entry_type_array"> 12810 3 12811 </span> 12812 <span class="entry_type_visibility"> [public]</span> 12813 12814 12815 12816 12817 12818 12819 </td> <!-- entry_type --> 12820 12821 <td class="entry_description"> 12822 <p>Position of the camera optical center.<wbr/></p> 12823 </td> 12824 12825 <td class="entry_units"> 12826 Meters 12827 </td> 12828 12829 <td class="entry_range"> 12830 </td> 12831 12832 <td class="entry_tags"> 12833 <ul class="entry_tags"> 12834 <li><a href="#tag_DEPTH">DEPTH</a></li> 12835 </ul> 12836 </td> 12837 12838 </tr> 12839 <tr class="entries_header"> 12840 <th class="th_details" colspan="5">Details</th> 12841 </tr> 12842 <tr class="entry_cont"> 12843 <td class="entry_details" colspan="5"> 12844 <p>As measured in the device sensor coordinate system,<wbr/> the 12845position of the camera device's optical center,<wbr/> as a 12846three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p> 12847<p>To transform a world position to a camera-device centered 12848coordinate system,<wbr/> the position must be translated by this 12849vector and then rotated by <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>.<wbr/></p> 12850 </td> 12851 </tr> 12852 12853 12854 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12855 <!-- end of entry --> 12856 12857 12858 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration"> 12859 <td class="entry_name 12860 " rowspan="3"> 12861 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 12862 </td> 12863 <td class="entry_type"> 12864 <span class="entry_type_name">float</span> 12865 <span class="entry_type_container">x</span> 12866 12867 <span class="entry_type_array"> 12868 5 12869 </span> 12870 <span class="entry_type_visibility"> [public]</span> 12871 12872 12873 12874 12875 12876 12877 </td> <!-- entry_type --> 12878 12879 <td class="entry_description"> 12880 <p>The parameters for this camera device's intrinsic 12881calibration.<wbr/></p> 12882 </td> 12883 12884 <td class="entry_units"> 12885 12886 Pixels in the android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size coordinate 12887 system.<wbr/> 12888 12889 </td> 12890 12891 <td class="entry_range"> 12892 </td> 12893 12894 <td class="entry_tags"> 12895 <ul class="entry_tags"> 12896 <li><a href="#tag_DEPTH">DEPTH</a></li> 12897 </ul> 12898 </td> 12899 12900 </tr> 12901 <tr class="entries_header"> 12902 <th class="th_details" colspan="5">Details</th> 12903 </tr> 12904 <tr class="entry_cont"> 12905 <td class="entry_details" colspan="5"> 12906 <p>The five calibration parameters that describe the 12907transform from camera-centric 3D coordinates to sensor 12908pixel coordinates:</p> 12909<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 12910</code></pre> 12911<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 12912focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 12913axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 12914being aligned with the lens plane.<wbr/></p> 12915<p>These are typically used within a transformation matrix K:</p> 12916<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 12917 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 12918 0 0,<wbr/> 1 ] 12919</code></pre> 12920<p>which can then be combined with the camera pose rotation 12921<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 12922<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 12923complete transform from world coordinates to pixel 12924coordinates:</p> 12925<pre><code>P = [ K 0 * [ R t 12926 0 1 ] 0 1 ] 12927</code></pre> 12928<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 12929and <code>p_<wbr/>s</code> being a point in the camera active pixel array 12930coordinate system,<wbr/> and with the mapping including the 12931homogeneous division by z:</p> 12932<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 12933p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 12934</code></pre> 12935<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 12936point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 12937(depth) in pixel coordinates.<wbr/></p> 12938 </td> 12939 </tr> 12940 12941 12942 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12943 <!-- end of entry --> 12944 12945 12946 <tr class="entry" id="dynamic_android.lens.radialDistortion"> 12947 <td class="entry_name 12948 " rowspan="3"> 12949 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 12950 </td> 12951 <td class="entry_type"> 12952 <span class="entry_type_name">float</span> 12953 <span class="entry_type_container">x</span> 12954 12955 <span class="entry_type_array"> 12956 3 12957 </span> 12958 <span class="entry_type_visibility"> [public]</span> 12959 12960 12961 12962 12963 12964 12965 </td> <!-- entry_type --> 12966 12967 <td class="entry_description"> 12968 <p>The correction coefficients to correct for this camera device's 12969radial lens distortion.<wbr/></p> 12970 </td> 12971 12972 <td class="entry_units"> 12973 12974 Coefficients for a 6th-degree even radial polynomial.<wbr/> 12975 12976 </td> 12977 12978 <td class="entry_range"> 12979 </td> 12980 12981 <td class="entry_tags"> 12982 <ul class="entry_tags"> 12983 <li><a href="#tag_DEPTH">DEPTH</a></li> 12984 </ul> 12985 </td> 12986 12987 </tr> 12988 <tr class="entries_header"> 12989 <th class="th_details" colspan="5">Details</th> 12990 </tr> 12991 <tr class="entry_cont"> 12992 <td class="entry_details" colspan="5"> 12993 <p>Three cofficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> kappa_<wbr/>3]</code> that 12994can be used to correct the lens's radial geometric 12995distortion with the mapping equations:</p> 12996<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) 12997y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) 12998</code></pre> 12999<p>where <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> are normalized coordinates with <code>(0,<wbr/>0)</code> 13000at the lens optical center,<wbr/> and <code>[-1,<wbr/> 1]</code> are the edges of 13001the active pixel array; and where <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the 13002corrected normalized coordinates with radial distortion 13003removed; and <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p> 13004 </td> 13005 </tr> 13006 13007 13008 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13009 <!-- end of entry --> 13010 13011 13012 13013 <!-- end of kind --> 13014 </tbody> 13015 13016 <!-- end of section --> 13017 <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr> 13018 13019 13020 <tr><td colspan="6" class="kind">controls</td></tr> 13021 13022 <thead class="entries_header"> 13023 <tr> 13024 <th class="th_name">Property Name</th> 13025 <th class="th_type">Type</th> 13026 <th class="th_description">Description</th> 13027 <th class="th_units">Units</th> 13028 <th class="th_range">Range</th> 13029 <th class="th_tags">Tags</th> 13030 </tr> 13031 </thead> 13032 13033 <tbody> 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 <tr class="entry" id="controls_android.noiseReduction.mode"> 13045 <td class="entry_name 13046 " rowspan="5"> 13047 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 13048 </td> 13049 <td class="entry_type"> 13050 <span class="entry_type_name entry_type_name_enum">byte</span> 13051 13052 <span class="entry_type_visibility"> [public]</span> 13053 13054 13055 <span class="entry_type_hwlevel">[full] </span> 13056 13057 13058 13059 <ul class="entry_type_enum"> 13060 <li> 13061 <span class="entry_type_enum_name">OFF</span> 13062 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 13063 </li> 13064 <li> 13065 <span class="entry_type_enum_name">FAST</span> 13066 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 13067output.<wbr/></p></span> 13068 </li> 13069 <li> 13070 <span class="entry_type_enum_name">HIGH_QUALITY</span> 13071 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 13072rate relative to sensor output.<wbr/></p></span> 13073 </li> 13074 <li> 13075 <span class="entry_type_enum_name">MINIMAL</span> 13076 <span class="entry_type_enum_optional">[optional]</span> 13077 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 13078sensor output.<wbr/> </p></span> 13079 </li> 13080 </ul> 13081 13082 </td> <!-- entry_type --> 13083 13084 <td class="entry_description"> 13085 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 13086 </td> 13087 13088 <td class="entry_units"> 13089 </td> 13090 13091 <td class="entry_range"> 13092 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 13093 </td> 13094 13095 <td class="entry_tags"> 13096 <ul class="entry_tags"> 13097 <li><a href="#tag_V1">V1</a></li> 13098 </ul> 13099 </td> 13100 13101 </tr> 13102 <tr class="entries_header"> 13103 <th class="th_details" colspan="5">Details</th> 13104 </tr> 13105 <tr class="entry_cont"> 13106 <td class="entry_details" colspan="5"> 13107 <p>The noise reduction algorithm attempts to improve image quality by removing 13108excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 13109<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 13110YUV domain.<wbr/></p> 13111<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 13112demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 13113This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 13114<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> 13115<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 13116will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 13117will use the highest-quality noise filtering algorithms,<wbr/> 13118even if it slows down capture rate.<wbr/> FAST means the camera device will not 13119slow down capture rate when applying noise filtering.<wbr/></p> 13120<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 13121will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 13122may adjust the noise reduction parameters for best image quality based on the 13123<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 13124 </td> 13125 </tr> 13126 13127 <tr class="entries_header"> 13128 <th class="th_details" colspan="5">HAL Implementation Details</th> 13129 </tr> 13130 <tr class="entry_cont"> 13131 <td class="entry_details" colspan="5"> 13132 <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 13133adjust the internal noise reduction parameters appropriately to get the best quality 13134images.<wbr/></p> 13135 </td> 13136 </tr> 13137 13138 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13139 <!-- end of entry --> 13140 13141 13142 <tr class="entry" id="controls_android.noiseReduction.strength"> 13143 <td class="entry_name 13144 " rowspan="1"> 13145 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 13146 </td> 13147 <td class="entry_type"> 13148 <span class="entry_type_name">byte</span> 13149 13150 <span class="entry_type_visibility"> [system]</span> 13151 13152 13153 13154 13155 13156 13157 </td> <!-- entry_type --> 13158 13159 <td class="entry_description"> 13160 <p>Control the amount of noise reduction 13161applied to the images</p> 13162 </td> 13163 13164 <td class="entry_units"> 13165 1-10; 10 is max noise reduction 13166 </td> 13167 13168 <td class="entry_range"> 13169 <p>1 - 10</p> 13170 </td> 13171 13172 <td class="entry_tags"> 13173 <ul class="entry_tags"> 13174 <li><a href="#tag_FUTURE">FUTURE</a></li> 13175 </ul> 13176 </td> 13177 13178 </tr> 13179 13180 13181 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13182 <!-- end of entry --> 13183 13184 13185 13186 <!-- end of kind --> 13187 </tbody> 13188 <tr><td colspan="6" class="kind">static</td></tr> 13189 13190 <thead class="entries_header"> 13191 <tr> 13192 <th class="th_name">Property Name</th> 13193 <th class="th_type">Type</th> 13194 <th class="th_description">Description</th> 13195 <th class="th_units">Units</th> 13196 <th class="th_range">Range</th> 13197 <th class="th_tags">Tags</th> 13198 </tr> 13199 </thead> 13200 13201 <tbody> 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 13213 <td class="entry_name 13214 " rowspan="5"> 13215 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 13216 </td> 13217 <td class="entry_type"> 13218 <span class="entry_type_name">byte</span> 13219 <span class="entry_type_container">x</span> 13220 13221 <span class="entry_type_array"> 13222 n 13223 </span> 13224 <span class="entry_type_visibility"> [public as enumList]</span> 13225 13226 13227 <span class="entry_type_hwlevel">[limited] </span> 13228 13229 13230 <div class="entry_type_notes">list of enums</div> 13231 13232 13233 </td> <!-- entry_type --> 13234 13235 <td class="entry_description"> 13236 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported 13237by this camera device.<wbr/></p> 13238 </td> 13239 13240 <td class="entry_units"> 13241 </td> 13242 13243 <td class="entry_range"> 13244 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p> 13245 </td> 13246 13247 <td class="entry_tags"> 13248 <ul class="entry_tags"> 13249 <li><a href="#tag_V1">V1</a></li> 13250 </ul> 13251 </td> 13252 13253 </tr> 13254 <tr class="entries_header"> 13255 <th class="th_details" colspan="5">Details</th> 13256 </tr> 13257 <tr class="entry_cont"> 13258 <td class="entry_details" colspan="5"> 13259 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p> 13260<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p> 13261 </td> 13262 </tr> 13263 13264 <tr class="entries_header"> 13265 <th class="th_details" colspan="5">HAL Implementation Details</th> 13266 </tr> 13267 <tr class="entry_cont"> 13268 <td class="entry_details" colspan="5"> 13269 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available 13270on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 13271That is,<wbr/> if the highest quality implementation on the camera device does not slow down 13272capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 13273 </td> 13274 </tr> 13275 13276 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13277 <!-- end of entry --> 13278 13279 13280 13281 <!-- end of kind --> 13282 </tbody> 13283 <tr><td colspan="6" class="kind">dynamic</td></tr> 13284 13285 <thead class="entries_header"> 13286 <tr> 13287 <th class="th_name">Property Name</th> 13288 <th class="th_type">Type</th> 13289 <th class="th_description">Description</th> 13290 <th class="th_units">Units</th> 13291 <th class="th_range">Range</th> 13292 <th class="th_tags">Tags</th> 13293 </tr> 13294 </thead> 13295 13296 <tbody> 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 13308 <td class="entry_name 13309 " rowspan="5"> 13310 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 13311 </td> 13312 <td class="entry_type"> 13313 <span class="entry_type_name entry_type_name_enum">byte</span> 13314 13315 <span class="entry_type_visibility"> [public]</span> 13316 13317 13318 <span class="entry_type_hwlevel">[full] </span> 13319 13320 13321 13322 <ul class="entry_type_enum"> 13323 <li> 13324 <span class="entry_type_enum_name">OFF</span> 13325 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 13326 </li> 13327 <li> 13328 <span class="entry_type_enum_name">FAST</span> 13329 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 13330output.<wbr/></p></span> 13331 </li> 13332 <li> 13333 <span class="entry_type_enum_name">HIGH_QUALITY</span> 13334 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 13335rate relative to sensor output.<wbr/></p></span> 13336 </li> 13337 <li> 13338 <span class="entry_type_enum_name">MINIMAL</span> 13339 <span class="entry_type_enum_optional">[optional]</span> 13340 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 13341sensor output.<wbr/> </p></span> 13342 </li> 13343 </ul> 13344 13345 </td> <!-- entry_type --> 13346 13347 <td class="entry_description"> 13348 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 13349 </td> 13350 13351 <td class="entry_units"> 13352 </td> 13353 13354 <td class="entry_range"> 13355 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 13356 </td> 13357 13358 <td class="entry_tags"> 13359 <ul class="entry_tags"> 13360 <li><a href="#tag_V1">V1</a></li> 13361 </ul> 13362 </td> 13363 13364 </tr> 13365 <tr class="entries_header"> 13366 <th class="th_details" colspan="5">Details</th> 13367 </tr> 13368 <tr class="entry_cont"> 13369 <td class="entry_details" colspan="5"> 13370 <p>The noise reduction algorithm attempts to improve image quality by removing 13371excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 13372<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 13373YUV domain.<wbr/></p> 13374<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 13375demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 13376This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 13377<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> 13378<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 13379will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 13380will use the highest-quality noise filtering algorithms,<wbr/> 13381even if it slows down capture rate.<wbr/> FAST means the camera device will not 13382slow down capture rate when applying noise filtering.<wbr/></p> 13383<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 13384will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 13385may adjust the noise reduction parameters for best image quality based on the 13386<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 13387 </td> 13388 </tr> 13389 13390 <tr class="entries_header"> 13391 <th class="th_details" colspan="5">HAL Implementation Details</th> 13392 </tr> 13393 <tr class="entry_cont"> 13394 <td class="entry_details" colspan="5"> 13395 <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 13396adjust the internal noise reduction parameters appropriately to get the best quality 13397images.<wbr/></p> 13398 </td> 13399 </tr> 13400 13401 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13402 <!-- end of entry --> 13403 13404 13405 13406 <!-- end of kind --> 13407 </tbody> 13408 13409 <!-- end of section --> 13410 <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr> 13411 13412 13413 <tr><td colspan="6" class="kind">static</td></tr> 13414 13415 <thead class="entries_header"> 13416 <tr> 13417 <th class="th_name">Property Name</th> 13418 <th class="th_type">Type</th> 13419 <th class="th_description">Description</th> 13420 <th class="th_units">Units</th> 13421 <th class="th_range">Range</th> 13422 <th class="th_tags">Tags</th> 13423 </tr> 13424 </thead> 13425 13426 <tbody> 13427 13428 13429 13430 13431 13432 13433 13434 13435 13436 13437 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 13438 <td class="entry_name 13439 entry_name_deprecated 13440 " rowspan="3"> 13441 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 13442 </td> 13443 <td class="entry_type"> 13444 <span class="entry_type_name">byte</span> 13445 13446 <span class="entry_type_visibility"> [system]</span> 13447 13448 13449 13450 <span class="entry_type_deprecated">[deprecated] </span> 13451 13452 13453 13454 </td> <!-- entry_type --> 13455 13456 <td class="entry_description"> 13457 <p>If set to 1,<wbr/> the camera service does not 13458scale 'normalized' coordinates with respect to the crop 13459region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 13460and output (face rectangles).<wbr/></p> 13461 </td> 13462 13463 <td class="entry_units"> 13464 </td> 13465 13466 <td class="entry_range"> 13467 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13468 </td> 13469 13470 <td class="entry_tags"> 13471 </td> 13472 13473 </tr> 13474 <tr class="entries_header"> 13475 <th class="th_details" colspan="5">Details</th> 13476 </tr> 13477 <tr class="entry_cont"> 13478 <td class="entry_details" colspan="5"> 13479 <p>Normalized coordinates refer to those in the 13480(-1000,<wbr/>1000) range mentioned in the 13481android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 13482<p>HAL implementations should instead always use and emit 13483sensor array-relative coordinates for all region data.<wbr/> Does 13484not need to be listed in static metadata.<wbr/> Support will be 13485removed in future versions of camera service.<wbr/></p> 13486 </td> 13487 </tr> 13488 13489 13490 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13491 <!-- end of entry --> 13492 13493 13494 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 13495 <td class="entry_name 13496 entry_name_deprecated 13497 " rowspan="3"> 13498 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 13499 </td> 13500 <td class="entry_type"> 13501 <span class="entry_type_name">byte</span> 13502 13503 <span class="entry_type_visibility"> [system]</span> 13504 13505 13506 13507 <span class="entry_type_deprecated">[deprecated] </span> 13508 13509 13510 13511 </td> <!-- entry_type --> 13512 13513 <td class="entry_description"> 13514 <p>If set to 1,<wbr/> then the camera service always 13515switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 13516trigger.<wbr/></p> 13517 </td> 13518 13519 <td class="entry_units"> 13520 </td> 13521 13522 <td class="entry_range"> 13523 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13524 </td> 13525 13526 <td class="entry_tags"> 13527 </td> 13528 13529 </tr> 13530 <tr class="entries_header"> 13531 <th class="th_details" colspan="5">Details</th> 13532 </tr> 13533 <tr class="entry_cont"> 13534 <td class="entry_details" colspan="5"> 13535 <p>HAL implementations should implement AF trigger 13536modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 13537CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 13538not need to be listed in static metadata.<wbr/> Support will be 13539removed in future versions of camera service</p> 13540 </td> 13541 </tr> 13542 13543 13544 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13545 <!-- end of entry --> 13546 13547 13548 <tr class="entry" id="static_android.quirks.useZslFormat"> 13549 <td class="entry_name 13550 entry_name_deprecated 13551 " rowspan="3"> 13552 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 13553 </td> 13554 <td class="entry_type"> 13555 <span class="entry_type_name">byte</span> 13556 13557 <span class="entry_type_visibility"> [system]</span> 13558 13559 13560 13561 <span class="entry_type_deprecated">[deprecated] </span> 13562 13563 13564 13565 </td> <!-- entry_type --> 13566 13567 <td class="entry_description"> 13568 <p>If set to 1,<wbr/> the camera service uses 13569CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 13570HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 13571shutter lag stream</p> 13572 </td> 13573 13574 <td class="entry_units"> 13575 </td> 13576 13577 <td class="entry_range"> 13578 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13579 </td> 13580 13581 <td class="entry_tags"> 13582 </td> 13583 13584 </tr> 13585 <tr class="entries_header"> 13586 <th class="th_details" colspan="5">Details</th> 13587 </tr> 13588 <tr class="entry_cont"> 13589 <td class="entry_details" colspan="5"> 13590 <p>HAL implementations should use gralloc usage flags 13591to determine that a stream will be used for 13592zero-shutter-lag,<wbr/> instead of relying on an explicit 13593format setting.<wbr/> Does not need to be listed in static 13594metadata.<wbr/> Support will be removed in future versions of 13595camera service.<wbr/></p> 13596 </td> 13597 </tr> 13598 13599 13600 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13601 <!-- end of entry --> 13602 13603 13604 <tr class="entry" id="static_android.quirks.usePartialResult"> 13605 <td class="entry_name 13606 entry_name_deprecated 13607 " rowspan="5"> 13608 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 13609 </td> 13610 <td class="entry_type"> 13611 <span class="entry_type_name">byte</span> 13612 13613 <span class="entry_type_visibility"> [hidden]</span> 13614 13615 13616 13617 <span class="entry_type_deprecated">[deprecated] </span> 13618 13619 13620 13621 </td> <!-- entry_type --> 13622 13623 <td class="entry_description"> 13624 <p>If set to 1,<wbr/> the HAL will always split result 13625metadata for a single capture into multiple buffers,<wbr/> 13626returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 13627 </td> 13628 13629 <td class="entry_units"> 13630 </td> 13631 13632 <td class="entry_range"> 13633 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13634 </td> 13635 13636 <td class="entry_tags"> 13637 </td> 13638 13639 </tr> 13640 <tr class="entries_header"> 13641 <th class="th_details" colspan="5">Details</th> 13642 </tr> 13643 <tr class="entry_cont"> 13644 <td class="entry_details" colspan="5"> 13645 <p>Does not need to be listed in static 13646metadata.<wbr/> Support for partial results will be reworked in 13647future versions of camera service.<wbr/> This quirk will stop 13648working at that point; DO NOT USE without careful 13649consideration of future support.<wbr/></p> 13650 </td> 13651 </tr> 13652 13653 <tr class="entries_header"> 13654 <th class="th_details" colspan="5">HAL Implementation Details</th> 13655 </tr> 13656 <tr class="entry_cont"> 13657 <td class="entry_details" colspan="5"> 13658 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 13659for information on how to implement partial results.<wbr/></p> 13660 </td> 13661 </tr> 13662 13663 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13664 <!-- end of entry --> 13665 13666 13667 13668 <!-- end of kind --> 13669 </tbody> 13670 <tr><td colspan="6" class="kind">dynamic</td></tr> 13671 13672 <thead class="entries_header"> 13673 <tr> 13674 <th class="th_name">Property Name</th> 13675 <th class="th_type">Type</th> 13676 <th class="th_description">Description</th> 13677 <th class="th_units">Units</th> 13678 <th class="th_range">Range</th> 13679 <th class="th_tags">Tags</th> 13680 </tr> 13681 </thead> 13682 13683 <tbody> 13684 13685 13686 13687 13688 13689 13690 13691 13692 13693 13694 <tr class="entry" id="dynamic_android.quirks.partialResult"> 13695 <td class="entry_name 13696 entry_name_deprecated 13697 " rowspan="5"> 13698 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 13699 </td> 13700 <td class="entry_type"> 13701 <span class="entry_type_name entry_type_name_enum">byte</span> 13702 13703 <span class="entry_type_visibility"> [hidden as boolean]</span> 13704 13705 13706 13707 <span class="entry_type_deprecated">[deprecated] </span> 13708 13709 13710 <ul class="entry_type_enum"> 13711 <li> 13712 <span class="entry_type_enum_name">FINAL</span> 13713 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 13714for this capture.<wbr/></p></span> 13715 </li> 13716 <li> 13717 <span class="entry_type_enum_name">PARTIAL</span> 13718 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 13719capture.<wbr/> More result buffers for this capture will be sent 13720by the camera device,<wbr/> the last of which will be marked 13721FINAL.<wbr/></p></span> 13722 </li> 13723 </ul> 13724 13725 </td> <!-- entry_type --> 13726 13727 <td class="entry_description"> 13728 <p>Whether a result given to the framework is the 13729final one for the capture,<wbr/> or only a partial that contains a 13730subset of the full set of dynamic metadata 13731values.<wbr/></p> 13732 </td> 13733 13734 <td class="entry_units"> 13735 </td> 13736 13737 <td class="entry_range"> 13738 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13739 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> 13740 </td> 13741 13742 <td class="entry_tags"> 13743 </td> 13744 13745 </tr> 13746 <tr class="entries_header"> 13747 <th class="th_details" colspan="5">Details</th> 13748 </tr> 13749 <tr class="entry_cont"> 13750 <td class="entry_details" colspan="5"> 13751 <p>The entries in the result metadata buffers for a 13752single capture may not overlap,<wbr/> except for this entry.<wbr/> The 13753FINAL buffers must retain FIFO ordering relative to the 13754requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 13755always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 13756before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 13757in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 13758capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 13759only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 13760 </td> 13761 </tr> 13762 13763 <tr class="entries_header"> 13764 <th class="th_details" colspan="5">HAL Implementation Details</th> 13765 </tr> 13766 <tr class="entry_cont"> 13767 <td class="entry_details" colspan="5"> 13768 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 13769for information on how to implement partial results.<wbr/></p> 13770 </td> 13771 </tr> 13772 13773 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13774 <!-- end of entry --> 13775 13776 13777 13778 <!-- end of kind --> 13779 </tbody> 13780 13781 <!-- end of section --> 13782 <tr><td colspan="6" id="section_request" class="section">request</td></tr> 13783 13784 13785 <tr><td colspan="6" class="kind">controls</td></tr> 13786 13787 <thead class="entries_header"> 13788 <tr> 13789 <th class="th_name">Property Name</th> 13790 <th class="th_type">Type</th> 13791 <th class="th_description">Description</th> 13792 <th class="th_units">Units</th> 13793 <th class="th_range">Range</th> 13794 <th class="th_tags">Tags</th> 13795 </tr> 13796 </thead> 13797 13798 <tbody> 13799 13800 13801 13802 13803 13804 13805 13806 13807 13808 13809 <tr class="entry" id="controls_android.request.frameCount"> 13810 <td class="entry_name 13811 entry_name_deprecated 13812 " rowspan="1"> 13813 android.<wbr/>request.<wbr/>frame<wbr/>Count 13814 </td> 13815 <td class="entry_type"> 13816 <span class="entry_type_name">int32</span> 13817 13818 <span class="entry_type_visibility"> [system]</span> 13819 13820 13821 13822 <span class="entry_type_deprecated">[deprecated] </span> 13823 13824 13825 13826 </td> <!-- entry_type --> 13827 13828 <td class="entry_description"> 13829 <p>A frame counter set by the framework.<wbr/> Must 13830be maintained unchanged in output frame.<wbr/> This value monotonically 13831increases with every new result (that is,<wbr/> each new result has a unique 13832frameCount value).<wbr/></p> 13833 </td> 13834 13835 <td class="entry_units"> 13836 incrementing integer 13837 </td> 13838 13839 <td class="entry_range"> 13840 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13841 <p>Any int.<wbr/></p> 13842 </td> 13843 13844 <td class="entry_tags"> 13845 </td> 13846 13847 </tr> 13848 13849 13850 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13851 <!-- end of entry --> 13852 13853 13854 <tr class="entry" id="controls_android.request.id"> 13855 <td class="entry_name 13856 " rowspan="1"> 13857 android.<wbr/>request.<wbr/>id 13858 </td> 13859 <td class="entry_type"> 13860 <span class="entry_type_name">int32</span> 13861 13862 <span class="entry_type_visibility"> [hidden]</span> 13863 13864 13865 13866 13867 13868 13869 </td> <!-- entry_type --> 13870 13871 <td class="entry_description"> 13872 <p>An application-specified ID for the current 13873request.<wbr/> Must be maintained unchanged in output 13874frame</p> 13875 </td> 13876 13877 <td class="entry_units"> 13878 arbitrary integer assigned by application 13879 </td> 13880 13881 <td class="entry_range"> 13882 <p>Any int</p> 13883 </td> 13884 13885 <td class="entry_tags"> 13886 <ul class="entry_tags"> 13887 <li><a href="#tag_V1">V1</a></li> 13888 </ul> 13889 </td> 13890 13891 </tr> 13892 13893 13894 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13895 <!-- end of entry --> 13896 13897 13898 <tr class="entry" id="controls_android.request.inputStreams"> 13899 <td class="entry_name 13900 entry_name_deprecated 13901 " rowspan="3"> 13902 android.<wbr/>request.<wbr/>input<wbr/>Streams 13903 </td> 13904 <td class="entry_type"> 13905 <span class="entry_type_name">int32</span> 13906 <span class="entry_type_container">x</span> 13907 13908 <span class="entry_type_array"> 13909 n 13910 </span> 13911 <span class="entry_type_visibility"> [system]</span> 13912 13913 13914 13915 <span class="entry_type_deprecated">[deprecated] </span> 13916 13917 13918 13919 </td> <!-- entry_type --> 13920 13921 <td class="entry_description"> 13922 <p>List which camera reprocess stream is used 13923for the source of reprocessing data.<wbr/></p> 13924 </td> 13925 13926 <td class="entry_units"> 13927 List of camera reprocess stream IDs 13928 </td> 13929 13930 <td class="entry_range"> 13931 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13932 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 13933 </td> 13934 13935 <td class="entry_tags"> 13936 <ul class="entry_tags"> 13937 <li><a href="#tag_HAL2">HAL2</a></li> 13938 </ul> 13939 </td> 13940 13941 </tr> 13942 <tr class="entries_header"> 13943 <th class="th_details" colspan="5">Details</th> 13944 </tr> 13945 <tr class="entry_cont"> 13946 <td class="entry_details" colspan="5"> 13947 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 13948REPROCESS.<wbr/> Ignored otherwise</p> 13949 </td> 13950 </tr> 13951 13952 13953 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13954 <!-- end of entry --> 13955 13956 13957 <tr class="entry" id="controls_android.request.metadataMode"> 13958 <td class="entry_name 13959 " rowspan="1"> 13960 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 13961 </td> 13962 <td class="entry_type"> 13963 <span class="entry_type_name entry_type_name_enum">byte</span> 13964 13965 <span class="entry_type_visibility"> [system]</span> 13966 13967 13968 13969 13970 13971 <ul class="entry_type_enum"> 13972 <li> 13973 <span class="entry_type_enum_name">NONE</span> 13974 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 13975for application-bound buffer data.<wbr/> If no 13976application-bound streams exist,<wbr/> no frame should be 13977placed in the output frame queue.<wbr/> If such streams 13978exist,<wbr/> a frame should be placed on the output queue 13979with null metadata but with the necessary output buffer 13980information.<wbr/> Timestamp information should still be 13981included with any output stream buffers</p></span> 13982 </li> 13983 <li> 13984 <span class="entry_type_enum_name">FULL</span> 13985 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 13986only be produced if they are separately 13987enabled</p></span> 13988 </li> 13989 </ul> 13990 13991 </td> <!-- entry_type --> 13992 13993 <td class="entry_description"> 13994 <p>How much metadata to produce on 13995output</p> 13996 </td> 13997 13998 <td class="entry_units"> 13999 </td> 14000 14001 <td class="entry_range"> 14002 </td> 14003 14004 <td class="entry_tags"> 14005 <ul class="entry_tags"> 14006 <li><a href="#tag_FUTURE">FUTURE</a></li> 14007 </ul> 14008 </td> 14009 14010 </tr> 14011 14012 14013 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14014 <!-- end of entry --> 14015 14016 14017 <tr class="entry" id="controls_android.request.outputStreams"> 14018 <td class="entry_name 14019 entry_name_deprecated 14020 " rowspan="3"> 14021 android.<wbr/>request.<wbr/>output<wbr/>Streams 14022 </td> 14023 <td class="entry_type"> 14024 <span class="entry_type_name">int32</span> 14025 <span class="entry_type_container">x</span> 14026 14027 <span class="entry_type_array"> 14028 n 14029 </span> 14030 <span class="entry_type_visibility"> [system]</span> 14031 14032 14033 14034 <span class="entry_type_deprecated">[deprecated] </span> 14035 14036 14037 14038 </td> <!-- entry_type --> 14039 14040 <td class="entry_description"> 14041 <p>Lists which camera output streams image data 14042from this capture must be sent to</p> 14043 </td> 14044 14045 <td class="entry_units"> 14046 List of camera stream IDs 14047 </td> 14048 14049 <td class="entry_range"> 14050 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14051 <p>List must only include streams that have been 14052created</p> 14053 </td> 14054 14055 <td class="entry_tags"> 14056 <ul class="entry_tags"> 14057 <li><a href="#tag_HAL2">HAL2</a></li> 14058 </ul> 14059 </td> 14060 14061 </tr> 14062 <tr class="entries_header"> 14063 <th class="th_details" colspan="5">Details</th> 14064 </tr> 14065 <tr class="entry_cont"> 14066 <td class="entry_details" colspan="5"> 14067 <p>If no output streams are listed,<wbr/> then the image 14068data should simply be discarded.<wbr/> The image data must 14069still be captured for metadata and statistics production,<wbr/> 14070and the lens and flash must operate as requested.<wbr/></p> 14071 </td> 14072 </tr> 14073 14074 14075 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14076 <!-- end of entry --> 14077 14078 14079 <tr class="entry" id="controls_android.request.type"> 14080 <td class="entry_name 14081 entry_name_deprecated 14082 " rowspan="1"> 14083 android.<wbr/>request.<wbr/>type 14084 </td> 14085 <td class="entry_type"> 14086 <span class="entry_type_name entry_type_name_enum">byte</span> 14087 14088 <span class="entry_type_visibility"> [system]</span> 14089 14090 14091 14092 <span class="entry_type_deprecated">[deprecated] </span> 14093 14094 14095 <ul class="entry_type_enum"> 14096 <li> 14097 <span class="entry_type_enum_name">CAPTURE</span> 14098 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 14099and process it according to the 14100settings</p></span> 14101 </li> 14102 <li> 14103 <span class="entry_type_enum_name">REPROCESS</span> 14104 <span class="entry_type_enum_notes"><p>Process previously captured data; the 14105<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 14106source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 14107needed for reprocessing with [RP]</p></span> 14108 </li> 14109 </ul> 14110 14111 </td> <!-- entry_type --> 14112 14113 <td class="entry_description"> 14114 <p>The type of the request; either CAPTURE or 14115REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p> 14116 </td> 14117 14118 <td class="entry_units"> 14119 </td> 14120 14121 <td class="entry_range"> 14122 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14123 </td> 14124 14125 <td class="entry_tags"> 14126 <ul class="entry_tags"> 14127 <li><a href="#tag_HAL2">HAL2</a></li> 14128 </ul> 14129 </td> 14130 14131 </tr> 14132 14133 14134 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14135 <!-- end of entry --> 14136 14137 14138 14139 <!-- end of kind --> 14140 </tbody> 14141 <tr><td colspan="6" class="kind">static</td></tr> 14142 14143 <thead class="entries_header"> 14144 <tr> 14145 <th class="th_name">Property Name</th> 14146 <th class="th_type">Type</th> 14147 <th class="th_description">Description</th> 14148 <th class="th_units">Units</th> 14149 <th class="th_range">Range</th> 14150 <th class="th_tags">Tags</th> 14151 </tr> 14152 </thead> 14153 14154 <tbody> 14155 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 14166 <td class="entry_name 14167 " rowspan="3"> 14168 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 14169 </td> 14170 <td class="entry_type"> 14171 <span class="entry_type_name">int32</span> 14172 <span class="entry_type_container">x</span> 14173 14174 <span class="entry_type_array"> 14175 3 14176 </span> 14177 <span class="entry_type_visibility"> [hidden]</span> 14178 14179 14180 <span class="entry_type_hwlevel">[legacy] </span> 14181 14182 14183 14184 14185 </td> <!-- entry_type --> 14186 14187 <td class="entry_description"> 14188 <p>The maximum numbers of different types of output streams 14189that can be configured and used simultaneously by a camera device.<wbr/></p> 14190 </td> 14191 14192 <td class="entry_units"> 14193 </td> 14194 14195 <td class="entry_range"> 14196 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> 14197<p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> 14198<p>For processed (but not stalling) format streams,<wbr/> >= 3 14199for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 14200>= 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> 14201 </td> 14202 14203 <td class="entry_tags"> 14204 <ul class="entry_tags"> 14205 <li><a href="#tag_BC">BC</a></li> 14206 </ul> 14207 </td> 14208 14209 </tr> 14210 <tr class="entries_header"> 14211 <th class="th_details" colspan="5">Details</th> 14212 </tr> 14213 <tr class="entry_cont"> 14214 <td class="entry_details" colspan="5"> 14215 <p>This is a 3 element tuple that contains the max number of output simultaneous 14216streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 14217formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 14218stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 14219number 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> 14220<p>This lists the upper bound of the number of output streams supported by 14221the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14222CPU resources that will consume more power.<wbr/> The image format for an output stream can 14223be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 14224The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized 14225into the 3 stream types as below:</p> 14226<ul> 14227<li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> 14228Typically JPEG format (ImageFormat#JPEG).<wbr/></li> 14229<li>Raw formats: ImageFormat#RAW_<wbr/>SENSOR,<wbr/> ImageFormat#RAW10,<wbr/> ImageFormat#RAW12,<wbr/> 14230and ImageFormat#RAW_<wbr/>OPAQUE.<wbr/></li> 14231<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> 14232Typically Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888,<wbr/> ImageFormat#NV21,<wbr/> ImageFormat#YV12.<wbr/></li> 14233</ul> 14234 </td> 14235 </tr> 14236 14237 14238 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14239 <!-- end of entry --> 14240 14241 14242 <tr class="entry" id="static_android.request.maxNumOutputRaw"> 14243 <td class="entry_name 14244 " rowspan="3"> 14245 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw 14246 </td> 14247 <td class="entry_type"> 14248 <span class="entry_type_name">int32</span> 14249 14250 <span class="entry_type_visibility"> [public]</span> 14251 14252 <span class="entry_type_synthetic">[synthetic] </span> 14253 14254 <span class="entry_type_hwlevel">[legacy] </span> 14255 14256 14257 14258 14259 </td> <!-- entry_type --> 14260 14261 <td class="entry_description"> 14262 <p>The maximum numbers of different types of output streams 14263that can be configured and used simultaneously by a camera device 14264for any <code>RAW</code> formats.<wbr/></p> 14265 </td> 14266 14267 <td class="entry_units"> 14268 </td> 14269 14270 <td class="entry_range"> 14271 <p>>= 0</p> 14272 </td> 14273 14274 <td class="entry_tags"> 14275 </td> 14276 14277 </tr> 14278 <tr class="entries_header"> 14279 <th class="th_details" colspan="5">Details</th> 14280 </tr> 14281 <tr class="entry_cont"> 14282 <td class="entry_details" colspan="5"> 14283 <p>This value contains the max number of output simultaneous 14284streams from the raw sensor.<wbr/></p> 14285<p>This lists the upper bound of the number of output streams supported by 14286the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14287CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14288be 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> 14289<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> 14290<ul> 14291<li>ImageFormat#RAW_<wbr/>SENSOR</li> 14292<li>ImageFormat#RAW10</li> 14293<li>ImageFormat#RAW12</li> 14294<li>Opaque <code>RAW</code></li> 14295</ul> 14296<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY) 14297never support raw streams.<wbr/></p> 14298 </td> 14299 </tr> 14300 14301 14302 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14303 <!-- end of entry --> 14304 14305 14306 <tr class="entry" id="static_android.request.maxNumOutputProc"> 14307 <td class="entry_name 14308 " rowspan="3"> 14309 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc 14310 </td> 14311 <td class="entry_type"> 14312 <span class="entry_type_name">int32</span> 14313 14314 <span class="entry_type_visibility"> [public]</span> 14315 14316 <span class="entry_type_synthetic">[synthetic] </span> 14317 14318 <span class="entry_type_hwlevel">[legacy] </span> 14319 14320 14321 14322 14323 </td> <!-- entry_type --> 14324 14325 <td class="entry_description"> 14326 <p>The maximum numbers of different types of output streams 14327that can be configured and used simultaneously by a camera device 14328for any processed (but not-stalling) formats.<wbr/></p> 14329 </td> 14330 14331 <td class="entry_units"> 14332 </td> 14333 14334 <td class="entry_range"> 14335 <p>>= 3 14336for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 14337>= 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> 14338 </td> 14339 14340 <td class="entry_tags"> 14341 </td> 14342 14343 </tr> 14344 <tr class="entries_header"> 14345 <th class="th_details" colspan="5">Details</th> 14346 </tr> 14347 <tr class="entry_cont"> 14348 <td class="entry_details" colspan="5"> 14349 <p>This value contains the max number of output simultaneous 14350streams for any processed (but not-stalling) formats.<wbr/></p> 14351<p>This lists the upper bound of the number of output streams supported by 14352the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14353CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14354be 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> 14355<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> 14356Typically:</p> 14357<ul> 14358<li>Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</li> 14359<li>ImageFormat#NV21</li> 14360<li>ImageFormat#YV12</li> 14361<li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> StreamConfiguration#isOutputSupportedFor(Class)</li> 14362</ul> 14363<p>For full guarantees,<wbr/> query StreamConfigurationMap#getOutputStallDuration with 14364a processed format -- it will return 0 for a non-stalling stream.<wbr/></p> 14365<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p> 14366 </td> 14367 </tr> 14368 14369 14370 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14371 <!-- end of entry --> 14372 14373 14374 <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> 14375 <td class="entry_name 14376 " rowspan="3"> 14377 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling 14378 </td> 14379 <td class="entry_type"> 14380 <span class="entry_type_name">int32</span> 14381 14382 <span class="entry_type_visibility"> [public]</span> 14383 14384 <span class="entry_type_synthetic">[synthetic] </span> 14385 14386 <span class="entry_type_hwlevel">[legacy] </span> 14387 14388 14389 14390 14391 </td> <!-- entry_type --> 14392 14393 <td class="entry_description"> 14394 <p>The maximum numbers of different types of output streams 14395that can be configured and used simultaneously by a camera device 14396for any processed (and stalling) formats.<wbr/></p> 14397 </td> 14398 14399 <td class="entry_units"> 14400 </td> 14401 14402 <td class="entry_range"> 14403 <p>>= 1</p> 14404 </td> 14405 14406 <td class="entry_tags"> 14407 </td> 14408 14409 </tr> 14410 <tr class="entries_header"> 14411 <th class="th_details" colspan="5">Details</th> 14412 </tr> 14413 <tr class="entry_cont"> 14414 <td class="entry_details" colspan="5"> 14415 <p>This value contains the max number of output simultaneous 14416streams for any processed (but not-stalling) formats.<wbr/></p> 14417<p>This lists the upper bound of the number of output streams supported by 14418the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14419CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14420be 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> 14421<p>A processed and stalling format is defined as any non-RAW format with a stallDurations > 0.<wbr/> 14422Typically only the <code>JPEG</code> format (ImageFormat#JPEG) is a stalling format.<wbr/></p> 14423<p>For full guarantees,<wbr/> query StreamConfigurationMap#getOutputStallDuration with 14424a processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> 14425<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p> 14426 </td> 14427 </tr> 14428 14429 14430 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14431 <!-- end of entry --> 14432 14433 14434 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 14435 <td class="entry_name 14436 entry_name_deprecated 14437 " rowspan="3"> 14438 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 14439 </td> 14440 <td class="entry_type"> 14441 <span class="entry_type_name">int32</span> 14442 <span class="entry_type_container">x</span> 14443 14444 <span class="entry_type_array"> 14445 1 14446 </span> 14447 <span class="entry_type_visibility"> [system]</span> 14448 14449 14450 14451 <span class="entry_type_deprecated">[deprecated] </span> 14452 14453 14454 14455 </td> <!-- entry_type --> 14456 14457 <td class="entry_description"> 14458 <p>How many reprocessing streams of any type 14459can be allocated at the same time.<wbr/></p> 14460 </td> 14461 14462 <td class="entry_units"> 14463 </td> 14464 14465 <td class="entry_range"> 14466 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14467 <p>>= 0</p> 14468 </td> 14469 14470 <td class="entry_tags"> 14471 <ul class="entry_tags"> 14472 <li><a href="#tag_HAL2">HAL2</a></li> 14473 </ul> 14474 </td> 14475 14476 </tr> 14477 <tr class="entries_header"> 14478 <th class="th_details" colspan="5">Details</th> 14479 </tr> 14480 <tr class="entry_cont"> 14481 <td class="entry_details" colspan="5"> 14482 <p>Only used by HAL2.<wbr/>x.<wbr/></p> 14483<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 14484 </td> 14485 </tr> 14486 14487 14488 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14489 <!-- end of entry --> 14490 14491 14492 <tr class="entry" id="static_android.request.maxNumInputStreams"> 14493 <td class="entry_name 14494 " rowspan="5"> 14495 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 14496 </td> 14497 <td class="entry_type"> 14498 <span class="entry_type_name">int32</span> 14499 14500 <span class="entry_type_visibility"> [public]</span> 14501 14502 14503 <span class="entry_type_hwlevel">[full] </span> 14504 14505 14506 14507 14508 </td> <!-- entry_type --> 14509 14510 <td class="entry_description"> 14511 <p>The maximum numbers of any type of input streams 14512that can be configured and used simultaneously by a camera device.<wbr/></p> 14513 </td> 14514 14515 <td class="entry_units"> 14516 </td> 14517 14518 <td class="entry_range"> 14519 <p>0 or 1.<wbr/></p> 14520 </td> 14521 14522 <td class="entry_tags"> 14523 </td> 14524 14525 </tr> 14526 <tr class="entries_header"> 14527 <th class="th_details" colspan="5">Details</th> 14528 </tr> 14529 <tr class="entry_cont"> 14530 <td class="entry_details" colspan="5"> 14531 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 14532<p>The image format for a input stream can be any supported 14533format returned by StreamConfigurationMap#getInputFormats.<wbr/> When using an 14534input stream,<wbr/> there must be at least one output stream 14535configured to to receive the reprocessed images.<wbr/></p> 14536<p>When an input stream and some output streams are used in a reprocessing request,<wbr/> 14537only the input buffer will be used to produce these output stream buffers,<wbr/> and a 14538new sensor image will not be captured.<wbr/></p> 14539<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 14540stream image format will be OPAQUE,<wbr/> the associated output stream image format 14541should be JPEG.<wbr/></p> 14542 </td> 14543 </tr> 14544 14545 <tr class="entries_header"> 14546 <th class="th_details" colspan="5">HAL Implementation Details</th> 14547 </tr> 14548 <tr class="entry_cont"> 14549 <td class="entry_details" colspan="5"> 14550 <p>For the reprocessing flow and controls,<wbr/> see 14551hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p> 14552 </td> 14553 </tr> 14554 14555 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14556 <!-- end of entry --> 14557 14558 14559 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 14560 <td class="entry_name 14561 " rowspan="5"> 14562 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 14563 </td> 14564 <td class="entry_type"> 14565 <span class="entry_type_name">byte</span> 14566 14567 <span class="entry_type_visibility"> [public]</span> 14568 14569 14570 <span class="entry_type_hwlevel">[legacy] </span> 14571 14572 14573 14574 14575 </td> <!-- entry_type --> 14576 14577 <td class="entry_description"> 14578 <p>Specifies the number of maximum pipeline stages a frame 14579has to go through from when it's exposed to when it's available 14580to the framework.<wbr/></p> 14581 </td> 14582 14583 <td class="entry_units"> 14584 </td> 14585 14586 <td class="entry_range"> 14587 </td> 14588 14589 <td class="entry_tags"> 14590 </td> 14591 14592 </tr> 14593 <tr class="entries_header"> 14594 <th class="th_details" colspan="5">Details</th> 14595 </tr> 14596 <tr class="entry_cont"> 14597 <td class="entry_details" colspan="5"> 14598 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 14599one stage to readout) from the sensor.<wbr/> The ISP then usually adds 14600its own stages to do custom HW processing.<wbr/> Further stages may be 14601added by SW processing.<wbr/></p> 14602<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 14603processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 14604depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 14605the max pipeline depth.<wbr/></p> 14606<p>A pipeline depth of X stages is equivalent to a pipeline latency of 14607X frame intervals.<wbr/></p> 14608<p>This value will be 8 or less.<wbr/></p> 14609 </td> 14610 </tr> 14611 14612 <tr class="entries_header"> 14613 <th class="th_details" colspan="5">HAL Implementation Details</th> 14614 </tr> 14615 <tr class="entry_cont"> 14616 <td class="entry_details" colspan="5"> 14617 <p>This value should be 4 or less.<wbr/></p> 14618 </td> 14619 </tr> 14620 14621 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14622 <!-- end of entry --> 14623 14624 14625 <tr class="entry" id="static_android.request.partialResultCount"> 14626 <td class="entry_name 14627 " rowspan="3"> 14628 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 14629 </td> 14630 <td class="entry_type"> 14631 <span class="entry_type_name">int32</span> 14632 14633 <span class="entry_type_visibility"> [public]</span> 14634 14635 14636 14637 14638 14639 14640 </td> <!-- entry_type --> 14641 14642 <td class="entry_description"> 14643 <p>Defines how many sub-components 14644a result will be composed of.<wbr/></p> 14645 </td> 14646 14647 <td class="entry_units"> 14648 </td> 14649 14650 <td class="entry_range"> 14651 <p>>= 1</p> 14652 </td> 14653 14654 <td class="entry_tags"> 14655 </td> 14656 14657 </tr> 14658 <tr class="entries_header"> 14659 <th class="th_details" colspan="5">Details</th> 14660 </tr> 14661 <tr class="entry_cont"> 14662 <td class="entry_details" colspan="5"> 14663 <p>In order to combat the pipeline latency,<wbr/> partial results 14664may be delivered to the application layer from the camera device as 14665soon as they are available.<wbr/></p> 14666<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial 14667results are not supported,<wbr/> and only the final TotalCaptureResult will 14668be produced by the camera device.<wbr/></p> 14669<p>A typical use case for this might be: after requesting an 14670auto-focus (AF) lock the new AF state might be available 50% 14671of the way through the pipeline.<wbr/> The camera device could 14672then immediately dispatch this state via a partial result to 14673the application,<wbr/> and the rest of the metadata via later 14674partial results.<wbr/></p> 14675 </td> 14676 </tr> 14677 14678 14679 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14680 <!-- end of entry --> 14681 14682 14683 <tr class="entry" id="static_android.request.availableCapabilities"> 14684 <td class="entry_name 14685 " rowspan="5"> 14686 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 14687 </td> 14688 <td class="entry_type"> 14689 <span class="entry_type_name entry_type_name_enum">byte</span> 14690 <span class="entry_type_container">x</span> 14691 14692 <span class="entry_type_array"> 14693 n 14694 </span> 14695 <span class="entry_type_visibility"> [public]</span> 14696 14697 14698 <span class="entry_type_hwlevel">[legacy] </span> 14699 14700 14701 14702 <ul class="entry_type_enum"> 14703 <li> 14704 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span> 14705 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 14706device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 14707supports.<wbr/></p> 14708<p>This capability is listed by all devices,<wbr/> and 14709indicates that the camera device has a feature set 14710that's comparable to the baseline requirements for the 14711older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p></span> 14712 </li> 14713 <li> 14714 <span class="entry_type_enum_name">MANUAL_SENSOR</span> 14715 <span class="entry_type_enum_optional">[optional]</span> 14716 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 14717as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> 14718The camera device supports basic manual control of the sensor image 14719acquisition related stages.<wbr/> This means the following controls are 14720guaranteed to be supported:</p> 14721<ul> 14722<li>Manual frame duration control<ul> 14723<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> 14724<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 14725</ul> 14726</li> 14727<li>Manual exposure control<ul> 14728<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 14729<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 14730</ul> 14731</li> 14732<li>Manual sensitivity control<ul> 14733<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 14734<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 14735</ul> 14736</li> 14737<li>Manual lens control (if the lens is adjustable)<ul> 14738<li>android.<wbr/>lens.<wbr/>*</li> 14739</ul> 14740</li> 14741<li>Manual flash control (if a flash unit is present)<ul> 14742<li>android.<wbr/>flash.<wbr/>*</li> 14743</ul> 14744</li> 14745<li>Manual black level locking<ul> 14746<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 14747</ul> 14748</li> 14749<li>Auto exposure lock<ul> 14750<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 14751</ul> 14752</li> 14753</ul> 14754<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 14755device will accurately report the values applied by 3A in the 14756result.<wbr/></p> 14757<p>A given camera device may also support additional manual sensor controls,<wbr/> 14758but this capability only covers the above list of controls.<wbr/></p> 14759<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will 14760additionally return a min frame duration that is greater than 14761zero for each supported size-format combination.<wbr/></p></span> 14762 </li> 14763 <li> 14764 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span> 14765 <span class="entry_type_enum_optional">[optional]</span> 14766 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> 14767The camera device supports basic manual control of the image post-processing 14768stages.<wbr/> This means the following controls are guaranteed to be supported:</p> 14769<ul> 14770<li> 14771<p>Manual tonemap control</p> 14772<ul> 14773<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> 14774<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 14775<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 14776<li><a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li> 14777<li><a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li> 14778</ul> 14779</li> 14780<li> 14781<p>Manual white balance control</p> 14782<ul> 14783<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 14784<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 14785</ul> 14786</li> 14787<li>Manual lens shading map control<ul> 14788<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li> 14789<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li> 14790<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 14791<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 14792</ul> 14793</li> 14794<li>Manual aberration correction control (if aberration correction is supported)<ul> 14795<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li> 14796<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li> 14797</ul> 14798</li> 14799<li>Auto white balance lock<ul> 14800<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 14801</ul> 14802</li> 14803</ul> 14804<p>If auto white balance is enabled,<wbr/> then the camera device 14805will accurately report the values applied by AWB in the result.<wbr/></p> 14806<p>A given camera device may also support additional post-processing 14807controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span> 14808 </li> 14809 <li> 14810 <span class="entry_type_enum_name">RAW</span> 14811 <span class="entry_type_enum_optional">[optional]</span> 14812 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and 14813metadata for interpreting them.<wbr/></p> 14814<p>Devices supporting the RAW capability allow both for 14815saving DNG files,<wbr/> and for direct application processing of 14816raw sensor images.<wbr/></p> 14817<ul> 14818<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li> 14819<li>The maximum available resolution for RAW_<wbr/>SENSOR streams 14820 will match either the value in 14821 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 14822 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 14823<li>All DNG-related optional metadata entries are provided 14824 by the camera device.<wbr/></li> 14825</ul></span> 14826 </li> 14827 <li> 14828 <span class="entry_type_enum_name">OPAQUE_REPROCESSING</span> 14829 <span class="entry_type_enum_optional">[optional]</span> 14830 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p> 14831<ul> 14832<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> 14833<li>ImageFormat#PRIVATE is supported as an output/<wbr/>input format,<wbr/> that is,<wbr/> 14834 ImageFormat#PRIVATE is included in the lists of formats returned by 14835 StreamConfigurationMap#getInputFormats and 14836 StreamConfigurationMap#getOutputFormats.<wbr/></li> 14837<li>StreamConfigurationMap#getValidOutputFormatsForInput returns non empty int[] for 14838 each supported input format returned by StreamConfigurationMap#getInputFormats.<wbr/></li> 14839<li>Each size returned by StreamConfigurationMap#getInputSizes(ImageFormat#PRIVATE) 14840 is also included in StreamConfigurationMap#getOutputSizes(ImageFormat#PRIVATE)</li> 14841<li>Using ImageFormat#PRIVATE does not cause a frame rate drop 14842 relative to the sensor's maximum capture rate (at that 14843 resolution).<wbr/></li> 14844<li>ImageFormat#PRIVATE will be reprocessable into both YUV_<wbr/>420_<wbr/>888 14845 and JPEG formats.<wbr/></li> 14846<li>The maximum available resolution for OPAQUE streams 14847 (both input/<wbr/>output) will match the maximum available 14848 resolution of JPEG streams.<wbr/></li> 14849<li>Only below controls are effective for reprocessing requests and 14850 will be present in capture results,<wbr/> other controls in reprocess 14851 requests will be ignored by the camera device.<wbr/><ul> 14852<li>android.<wbr/>jpeg.<wbr/>*</li> 14853<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 14854<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 14855</ul> 14856</li> 14857</ul></span> 14858 </li> 14859 <li> 14860 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span> 14861 <span class="entry_type_enum_optional">[optional]</span> 14862 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of 14863the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows 14864reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p> 14865<p>The values reported for the following controls are guaranteed to be available 14866in the CaptureResult,<wbr/> including when 3A is enabled:</p> 14867<ul> 14868<li>Exposure control<ul> 14869<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 14870</ul> 14871</li> 14872<li>Sensitivity control<ul> 14873<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 14874</ul> 14875</li> 14876<li>Lens controls (if the lens is adjustable)<ul> 14877<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li> 14878<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li> 14879</ul> 14880</li> 14881</ul> 14882<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will 14883always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span> 14884 </li> 14885 <li> 14886 <span class="entry_type_enum_name">BURST_CAPTURE</span> 14887 <span class="entry_type_enum_optional">[optional]</span> 14888 <span class="entry_type_enum_notes"><p>The camera device supports capturing maximum-resolution 14889images at >= 20 frames per second,<wbr/> in at least the 14890uncompressed YUV format,<wbr/> when post-processing settings 14891are set to FAST.<wbr/></p> 14892<p>More specifically,<wbr/> this means that a size matching the 14893camera device's active array size is listed as a 14894supported size for the YUV_<wbr/>420_<wbr/>888 format in 14895<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>,<wbr/> the minimum frame 14896duration for that format and size is <= 1/<wbr/>20 s,<wbr/> and 14897the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry 14898lists at least one FPS range where the minimum FPS is</p> 14899<blockquote> 14900<p>= 1 /<wbr/> minimumFrameDuration for the maximum-size 14901YUV_<wbr/>420_<wbr/>888 format.<wbr/></p> 14902</blockquote> 14903<p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is 14904guaranted to have a value between 0 and 4,<wbr/> inclusive.<wbr/> 14905<a href="#static_android.control.aeLockAvailable">android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available</a> and 14906<a href="#static_android.control.awbLockAvailable">android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available</a> are also guaranteed 14907to be <code>true</code> so burst capture with these two locks ON 14908yields consistent image output.<wbr/></p> 14909<p>On a camera device that reports the HIGH_<wbr/>RESOLUTION hardware 14910level,<wbr/> meaning the device supports very large capture sizes,<wbr/> 14911BURST_<wbr/>CAPTURE means that at least 8-megapixel images can be 14912captured at <code>>=</code> 20 fps,<wbr/> and maximum-resolution images can be 14913captured at <code>>=</code> 10 fps.<wbr/></p></span> 14914 </li> 14915 <li> 14916 <span class="entry_type_enum_name">YUV_REPROCESSING</span> 14917 <span class="entry_type_enum_optional">[optional]</span> 14918 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as 14919OPAQUE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the 14920following:</p> 14921<ul> 14922<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> 14923<li>YUV_<wbr/>420_<wbr/>888 is supported as an output/<wbr/>input format,<wbr/> that is,<wbr/> 14924 YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by 14925 StreamConfigurationMap#getInputFormats and 14926 StreamConfigurationMap#getOutputFormats.<wbr/></li> 14927<li>StreamConfigurationMap#getValidOutputFormatsForInput returns non empty int[] for 14928 each supported input format returned by StreamConfigurationMap#getInputFormats.<wbr/></li> 14929<li>Each size returned by Stream<wbr/>Configuration<wbr/>Map#get<wbr/>Input<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888) 14930 is also included in Stream<wbr/>Configuration<wbr/>Map#get<wbr/>Output<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</li> 14931<li>Using YUV_<wbr/>420_<wbr/>888 does not cause a frame rate drop 14932 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 14933<li>YUV_<wbr/>420_<wbr/>888 will be reprocessable into both YUV_<wbr/>420_<wbr/>888 14934 and JPEG formats.<wbr/></li> 14935<li>The maximum available resolution for YUV_<wbr/>420_<wbr/>888 streams 14936 (both input/<wbr/>output) will match the maximum available 14937 resolution of JPEG streams.<wbr/></li> 14938<li>Only the below controls are effective for reprocessing requests and will be 14939 present in capture results.<wbr/> The reprocess requests are from the original capture 14940 results that are assocaited with the intermidate YUV_<wbr/>420_<wbr/>888 output buffers.<wbr/> 14941 All other controls in the reprocess requests will be ignored by the camera device.<wbr/><ul> 14942<li>android.<wbr/>jpeg.<wbr/>*</li> 14943<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 14944<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 14945<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li> 14946</ul> 14947</li> 14948</ul></span> 14949 </li> 14950 </ul> 14951 14952 </td> <!-- entry_type --> 14953 14954 <td class="entry_description"> 14955 <p>List of capabilities that this camera device 14956advertises as fully supporting.<wbr/></p> 14957 </td> 14958 14959 <td class="entry_units"> 14960 </td> 14961 14962 <td class="entry_range"> 14963 </td> 14964 14965 <td class="entry_tags"> 14966 </td> 14967 14968 </tr> 14969 <tr class="entries_header"> 14970 <th class="th_details" colspan="5">Details</th> 14971 </tr> 14972 <tr class="entry_cont"> 14973 <td class="entry_details" colspan="5"> 14974 <p>A capability is a contract that the camera device makes in order 14975to be able to satisfy one or more use cases.<wbr/></p> 14976<p>Listing a capability guarantees that the whole set of features 14977required to support a common use will all be available.<wbr/></p> 14978<p>Using a subset of the functionality provided by an unsupported 14979capability may be possible on a specific camera device implementation; 14980to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 14981<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 14982<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 14983<p>The following capabilities are guaranteed to be available on 14984<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 14985<ul> 14986<li>MANUAL_<wbr/>SENSOR</li> 14987<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> 14988</ul> 14989<p>Other capabilities may be available on either FULL or LIMITED 14990devices,<wbr/> but the application should query this key to be sure.<wbr/></p> 14991 </td> 14992 </tr> 14993 14994 <tr class="entries_header"> 14995 <th class="th_details" colspan="5">HAL Implementation Details</th> 14996 </tr> 14997 <tr class="entry_cont"> 14998 <td class="entry_details" colspan="5"> 14999 <p>Additional constraint details per-capability will be available 15000in the Compatibility Test Suite.<wbr/></p> 15001<p>Minimum baseline requirements required for the 15002BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> 15003Instead refer to "BC" tags and the camera CTS tests in the 15004android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p> 15005<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 15006<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 15007request and the result in order to be considered to be 15008capability-compliant.<wbr/></p> 15009<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 15010then exposure time must be configurable via the request <em>and</em> 15011the actual exposure applied must be available via 15012the result.<wbr/></p> 15013<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the 15014<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p> 15015<p>For OPAQUE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see 15016hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p> 15017 </td> 15018 </tr> 15019 15020 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15021 <!-- end of entry --> 15022 15023 15024 <tr class="entry" id="static_android.request.availableRequestKeys"> 15025 <td class="entry_name 15026 " rowspan="5"> 15027 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 15028 </td> 15029 <td class="entry_type"> 15030 <span class="entry_type_name">int32</span> 15031 <span class="entry_type_container">x</span> 15032 15033 <span class="entry_type_array"> 15034 n 15035 </span> 15036 <span class="entry_type_visibility"> [hidden]</span> 15037 15038 15039 <span class="entry_type_hwlevel">[legacy] </span> 15040 15041 15042 15043 15044 </td> <!-- entry_type --> 15045 15046 <td class="entry_description"> 15047 <p>A list of all keys that the camera device has available 15048to use with CaptureRequest.<wbr/></p> 15049 </td> 15050 15051 <td class="entry_units"> 15052 </td> 15053 15054 <td class="entry_range"> 15055 </td> 15056 15057 <td class="entry_tags"> 15058 </td> 15059 15060 </tr> 15061 <tr class="entries_header"> 15062 <th class="th_details" colspan="5">Details</th> 15063 </tr> 15064 <tr class="entry_cont"> 15065 <td class="entry_details" colspan="5"> 15066 <p>Attempting to set a key into a CaptureRequest that is not 15067listed here will result in an invalid request and will be rejected 15068by the camera device.<wbr/></p> 15069<p>This field can be used to query the feature set of a camera device 15070at a more granular level than capabilities.<wbr/> This is especially 15071important for optional keys that are not listed under any capability 15072in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 15073 </td> 15074 </tr> 15075 15076 <tr class="entries_header"> 15077 <th class="th_details" colspan="5">HAL Implementation Details</th> 15078 </tr> 15079 <tr class="entry_cont"> 15080 <td class="entry_details" colspan="5"> 15081 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15082extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15083<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15084vendor extensions API and not against this field.<wbr/></p> 15085<p>The HAL must not consume any request tags that are not listed either 15086here or in the vendor tag list.<wbr/></p> 15087<p>The public camera2 API will always make the vendor tags visible 15088via CameraCharacteristics#getAvailableCaptureRequestKeys.<wbr/></p> 15089 </td> 15090 </tr> 15091 15092 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15093 <!-- end of entry --> 15094 15095 15096 <tr class="entry" id="static_android.request.availableResultKeys"> 15097 <td class="entry_name 15098 " rowspan="5"> 15099 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 15100 </td> 15101 <td class="entry_type"> 15102 <span class="entry_type_name">int32</span> 15103 <span class="entry_type_container">x</span> 15104 15105 <span class="entry_type_array"> 15106 n 15107 </span> 15108 <span class="entry_type_visibility"> [hidden]</span> 15109 15110 15111 <span class="entry_type_hwlevel">[legacy] </span> 15112 15113 15114 15115 15116 </td> <!-- entry_type --> 15117 15118 <td class="entry_description"> 15119 <p>A list of all keys that the camera device has available 15120to use with CaptureResult.<wbr/></p> 15121 </td> 15122 15123 <td class="entry_units"> 15124 </td> 15125 15126 <td class="entry_range"> 15127 </td> 15128 15129 <td class="entry_tags"> 15130 </td> 15131 15132 </tr> 15133 <tr class="entries_header"> 15134 <th class="th_details" colspan="5">Details</th> 15135 </tr> 15136 <tr class="entry_cont"> 15137 <td class="entry_details" colspan="5"> 15138 <p>Attempting to get a key from a CaptureResult that is not 15139listed here will always return a <code>null</code> value.<wbr/> Getting a key from 15140a CaptureResult that is listed here will generally never return a <code>null</code> 15141value.<wbr/></p> 15142<p>The following keys may return <code>null</code> unless they are enabled:</p> 15143<ul> 15144<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> 15145</ul> 15146<p>(Those sometimes-null keys will nevertheless be listed here 15147if they are available.<wbr/>)</p> 15148<p>This field can be used to query the feature set of a camera device 15149at a more granular level than capabilities.<wbr/> This is especially 15150important for optional keys that are not listed under any capability 15151in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 15152 </td> 15153 </tr> 15154 15155 <tr class="entries_header"> 15156 <th class="th_details" colspan="5">HAL Implementation Details</th> 15157 </tr> 15158 <tr class="entry_cont"> 15159 <td class="entry_details" colspan="5"> 15160 <p>Tags listed here must always have an entry in the result metadata,<wbr/> 15161even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 15162matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 15163<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15164extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15165<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15166vendor extensions API and not against this field.<wbr/></p> 15167<p>The HAL must not produce any result tags that are not listed either 15168here or in the vendor tag list.<wbr/></p> 15169<p>The public camera2 API will always make the vendor tags visible 15170via CameraCharacteristics#getAvailableCaptureResultKeys.<wbr/></p> 15171 </td> 15172 </tr> 15173 15174 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15175 <!-- end of entry --> 15176 15177 15178 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 15179 <td class="entry_name 15180 " rowspan="5"> 15181 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 15182 </td> 15183 <td class="entry_type"> 15184 <span class="entry_type_name">int32</span> 15185 <span class="entry_type_container">x</span> 15186 15187 <span class="entry_type_array"> 15188 n 15189 </span> 15190 <span class="entry_type_visibility"> [hidden]</span> 15191 15192 15193 <span class="entry_type_hwlevel">[legacy] </span> 15194 15195 15196 15197 15198 </td> <!-- entry_type --> 15199 15200 <td class="entry_description"> 15201 <p>A list of all keys that the camera device has available 15202to use with CameraCharacteristics.<wbr/></p> 15203 </td> 15204 15205 <td class="entry_units"> 15206 </td> 15207 15208 <td class="entry_range"> 15209 </td> 15210 15211 <td class="entry_tags"> 15212 </td> 15213 15214 </tr> 15215 <tr class="entries_header"> 15216 <th class="th_details" colspan="5">Details</th> 15217 </tr> 15218 <tr class="entry_cont"> 15219 <td class="entry_details" colspan="5"> 15220 <p>This entry follows the same rules as 15221<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 15222CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 15223details.<wbr/></p> 15224 </td> 15225 </tr> 15226 15227 <tr class="entries_header"> 15228 <th class="th_details" colspan="5">HAL Implementation Details</th> 15229 </tr> 15230 <tr class="entry_cont"> 15231 <td class="entry_details" colspan="5"> 15232 <p>Keys listed here must always have an entry in the static info metadata,<wbr/> 15233even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 15234matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 15235<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15236extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15237<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15238vendor extensions API and not against this field.<wbr/></p> 15239<p>The HAL must not have any tags in its static info that are not listed 15240either here or in the vendor tag list.<wbr/></p> 15241<p>The public camera2 API will always make the vendor tags visible 15242via CameraCharacteristics#getKeys.<wbr/></p> 15243 </td> 15244 </tr> 15245 15246 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15247 <!-- end of entry --> 15248 15249 15250 15251 <!-- end of kind --> 15252 </tbody> 15253 <tr><td colspan="6" class="kind">dynamic</td></tr> 15254 15255 <thead class="entries_header"> 15256 <tr> 15257 <th class="th_name">Property Name</th> 15258 <th class="th_type">Type</th> 15259 <th class="th_description">Description</th> 15260 <th class="th_units">Units</th> 15261 <th class="th_range">Range</th> 15262 <th class="th_tags">Tags</th> 15263 </tr> 15264 </thead> 15265 15266 <tbody> 15267 15268 15269 15270 15271 15272 15273 15274 15275 15276 15277 <tr class="entry" id="dynamic_android.request.frameCount"> 15278 <td class="entry_name 15279 entry_name_deprecated 15280 " rowspan="3"> 15281 android.<wbr/>request.<wbr/>frame<wbr/>Count 15282 </td> 15283 <td class="entry_type"> 15284 <span class="entry_type_name">int32</span> 15285 15286 <span class="entry_type_visibility"> [hidden]</span> 15287 15288 15289 15290 <span class="entry_type_deprecated">[deprecated] </span> 15291 15292 15293 15294 </td> <!-- entry_type --> 15295 15296 <td class="entry_description"> 15297 <p>A frame counter set by the framework.<wbr/> This value monotonically 15298increases with every new result (that is,<wbr/> each new result has a unique 15299frameCount value).<wbr/></p> 15300 </td> 15301 15302 <td class="entry_units"> 15303 count of frames 15304 </td> 15305 15306 <td class="entry_range"> 15307 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15308 <p>> 0</p> 15309 </td> 15310 15311 <td class="entry_tags"> 15312 </td> 15313 15314 </tr> 15315 <tr class="entries_header"> 15316 <th class="th_details" colspan="5">Details</th> 15317 </tr> 15318 <tr class="entry_cont"> 15319 <td class="entry_details" colspan="5"> 15320 <p>Reset on release()</p> 15321 </td> 15322 </tr> 15323 15324 15325 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15326 <!-- end of entry --> 15327 15328 15329 <tr class="entry" id="dynamic_android.request.id"> 15330 <td class="entry_name 15331 " rowspan="1"> 15332 android.<wbr/>request.<wbr/>id 15333 </td> 15334 <td class="entry_type"> 15335 <span class="entry_type_name">int32</span> 15336 15337 <span class="entry_type_visibility"> [hidden]</span> 15338 15339 15340 15341 15342 15343 15344 </td> <!-- entry_type --> 15345 15346 <td class="entry_description"> 15347 <p>An application-specified ID for the current 15348request.<wbr/> Must be maintained unchanged in output 15349frame</p> 15350 </td> 15351 15352 <td class="entry_units"> 15353 arbitrary integer assigned by application 15354 </td> 15355 15356 <td class="entry_range"> 15357 <p>Any int</p> 15358 </td> 15359 15360 <td class="entry_tags"> 15361 <ul class="entry_tags"> 15362 <li><a href="#tag_V1">V1</a></li> 15363 </ul> 15364 </td> 15365 15366 </tr> 15367 15368 15369 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15370 <!-- end of entry --> 15371 15372 15373 <tr class="entry" id="dynamic_android.request.metadataMode"> 15374 <td class="entry_name 15375 " rowspan="1"> 15376 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 15377 </td> 15378 <td class="entry_type"> 15379 <span class="entry_type_name entry_type_name_enum">byte</span> 15380 15381 <span class="entry_type_visibility"> [system]</span> 15382 15383 15384 15385 15386 15387 <ul class="entry_type_enum"> 15388 <li> 15389 <span class="entry_type_enum_name">NONE</span> 15390 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 15391for application-bound buffer data.<wbr/> If no 15392application-bound streams exist,<wbr/> no frame should be 15393placed in the output frame queue.<wbr/> If such streams 15394exist,<wbr/> a frame should be placed on the output queue 15395with null metadata but with the necessary output buffer 15396information.<wbr/> Timestamp information should still be 15397included with any output stream buffers</p></span> 15398 </li> 15399 <li> 15400 <span class="entry_type_enum_name">FULL</span> 15401 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 15402only be produced if they are separately 15403enabled</p></span> 15404 </li> 15405 </ul> 15406 15407 </td> <!-- entry_type --> 15408 15409 <td class="entry_description"> 15410 <p>How much metadata to produce on 15411output</p> 15412 </td> 15413 15414 <td class="entry_units"> 15415 </td> 15416 15417 <td class="entry_range"> 15418 </td> 15419 15420 <td class="entry_tags"> 15421 <ul class="entry_tags"> 15422 <li><a href="#tag_FUTURE">FUTURE</a></li> 15423 </ul> 15424 </td> 15425 15426 </tr> 15427 15428 15429 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15430 <!-- end of entry --> 15431 15432 15433 <tr class="entry" id="dynamic_android.request.outputStreams"> 15434 <td class="entry_name 15435 entry_name_deprecated 15436 " rowspan="3"> 15437 android.<wbr/>request.<wbr/>output<wbr/>Streams 15438 </td> 15439 <td class="entry_type"> 15440 <span class="entry_type_name">int32</span> 15441 <span class="entry_type_container">x</span> 15442 15443 <span class="entry_type_array"> 15444 n 15445 </span> 15446 <span class="entry_type_visibility"> [system]</span> 15447 15448 15449 15450 <span class="entry_type_deprecated">[deprecated] </span> 15451 15452 15453 15454 </td> <!-- entry_type --> 15455 15456 <td class="entry_description"> 15457 <p>Lists which camera output streams image data 15458from this capture must be sent to</p> 15459 </td> 15460 15461 <td class="entry_units"> 15462 List of camera stream IDs 15463 </td> 15464 15465 <td class="entry_range"> 15466 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15467 <p>List must only include streams that have been 15468created</p> 15469 </td> 15470 15471 <td class="entry_tags"> 15472 <ul class="entry_tags"> 15473 <li><a href="#tag_HAL2">HAL2</a></li> 15474 </ul> 15475 </td> 15476 15477 </tr> 15478 <tr class="entries_header"> 15479 <th class="th_details" colspan="5">Details</th> 15480 </tr> 15481 <tr class="entry_cont"> 15482 <td class="entry_details" colspan="5"> 15483 <p>If no output streams are listed,<wbr/> then the image 15484data should simply be discarded.<wbr/> The image data must 15485still be captured for metadata and statistics production,<wbr/> 15486and the lens and flash must operate as requested.<wbr/></p> 15487 </td> 15488 </tr> 15489 15490 15491 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15492 <!-- end of entry --> 15493 15494 15495 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 15496 <td class="entry_name 15497 " rowspan="5"> 15498 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 15499 </td> 15500 <td class="entry_type"> 15501 <span class="entry_type_name">byte</span> 15502 15503 <span class="entry_type_visibility"> [public]</span> 15504 15505 15506 <span class="entry_type_hwlevel">[legacy] </span> 15507 15508 15509 15510 15511 </td> <!-- entry_type --> 15512 15513 <td class="entry_description"> 15514 <p>Specifies the number of pipeline stages the frame went 15515through from when it was exposed to when the final completed result 15516was available to the framework.<wbr/></p> 15517 </td> 15518 15519 <td class="entry_units"> 15520 </td> 15521 15522 <td class="entry_range"> 15523 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 15524 </td> 15525 15526 <td class="entry_tags"> 15527 </td> 15528 15529 </tr> 15530 <tr class="entries_header"> 15531 <th class="th_details" colspan="5">Details</th> 15532 </tr> 15533 <tr class="entry_cont"> 15534 <td class="entry_details" colspan="5"> 15535 <p>Depending on what settings are used in the request,<wbr/> and 15536what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 15537and some pipeline stages skipped.<wbr/></p> 15538<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 15539 </td> 15540 </tr> 15541 15542 <tr class="entries_header"> 15543 <th class="th_details" colspan="5">HAL Implementation Details</th> 15544 </tr> 15545 <tr class="entry_cont"> 15546 <td class="entry_details" colspan="5"> 15547 <p>This value must always represent the accurate count of how many 15548pipeline stages were actually used.<wbr/></p> 15549 </td> 15550 </tr> 15551 15552 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15553 <!-- end of entry --> 15554 15555 15556 15557 <!-- end of kind --> 15558 </tbody> 15559 15560 <!-- end of section --> 15561 <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr> 15562 15563 15564 <tr><td colspan="6" class="kind">controls</td></tr> 15565 15566 <thead class="entries_header"> 15567 <tr> 15568 <th class="th_name">Property Name</th> 15569 <th class="th_type">Type</th> 15570 <th class="th_description">Description</th> 15571 <th class="th_units">Units</th> 15572 <th class="th_range">Range</th> 15573 <th class="th_tags">Tags</th> 15574 </tr> 15575 </thead> 15576 15577 <tbody> 15578 15579 15580 15581 15582 15583 15584 15585 15586 15587 15588 <tr class="entry" id="controls_android.scaler.cropRegion"> 15589 <td class="entry_name 15590 " rowspan="5"> 15591 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 15592 </td> 15593 <td class="entry_type"> 15594 <span class="entry_type_name">int32</span> 15595 <span class="entry_type_container">x</span> 15596 15597 <span class="entry_type_array"> 15598 4 15599 </span> 15600 <span class="entry_type_visibility"> [public as rectangle]</span> 15601 15602 15603 <span class="entry_type_hwlevel">[legacy] </span> 15604 15605 15606 15607 15608 </td> <!-- entry_type --> 15609 15610 <td class="entry_description"> 15611 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 15612 </td> 15613 15614 <td class="entry_units"> 15615 Pixel coordinates relative to 15616 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 15617 </td> 15618 15619 <td class="entry_range"> 15620 </td> 15621 15622 <td class="entry_tags"> 15623 <ul class="entry_tags"> 15624 <li><a href="#tag_BC">BC</a></li> 15625 </ul> 15626 </td> 15627 15628 </tr> 15629 <tr class="entries_header"> 15630 <th class="th_details" colspan="5">Details</th> 15631 </tr> 15632 <tr class="entry_cont"> 15633 <td class="entry_details" colspan="5"> 15634 <p>This control can be used to implement digital zoom.<wbr/></p> 15635<p>The crop region coordinate system is based off 15636<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 15637top-left corner of the sensor active array.<wbr/></p> 15638<p>Output streams use this rectangle to produce their output,<wbr/> 15639cropping to a smaller region if necessary to maintain the 15640stream's aspect ratio,<wbr/> then scaling the sensor input to 15641match the output's configured resolution.<wbr/></p> 15642<p>The crop region is applied after the RAW to other color 15643space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 15644(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 15645croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 15646<p>For non-raw streams,<wbr/> any additional per-stream cropping will 15647be done to maximize the final pixel area of the stream.<wbr/></p> 15648<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 15649ratio,<wbr/> then 4:3 streams will use the exact crop 15650region.<wbr/> 16:9 streams will further crop vertically 15651(letterbox).<wbr/></p> 15652<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 15653outputs will crop horizontally (pillarbox),<wbr/> and 16:9 15654streams will match exactly.<wbr/> These additional crops will 15655be centered within the crop region.<wbr/></p> 15656<p>The width and height of the crop region cannot 15657be set to be smaller than 15658<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 15659<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> 15660<p>The camera device may adjust the crop region to account 15661for rounding and other hardware requirements; the final 15662crop region used will be included in the output capture 15663result.<wbr/></p> 15664 </td> 15665 </tr> 15666 15667 <tr class="entries_header"> 15668 <th class="th_details" colspan="5">HAL Implementation Details</th> 15669 </tr> 15670 <tr class="entry_cont"> 15671 <td class="entry_details" colspan="5"> 15672 <p>The output streams must maintain square pixels at all 15673times,<wbr/> no matter what the relative aspect ratios of the 15674crop region and the stream are.<wbr/> Negative values for 15675corner are allowed for raw output if full pixel array is 15676larger than active pixel array.<wbr/> Width and height may be 15677rounded to nearest larger supportable width,<wbr/> especially 15678for raw output,<wbr/> where only a few fixed scales may be 15679possible.<wbr/></p> 15680<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 15681 </td> 15682 </tr> 15683 15684 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15685 <!-- end of entry --> 15686 15687 15688 15689 <!-- end of kind --> 15690 </tbody> 15691 <tr><td colspan="6" class="kind">static</td></tr> 15692 15693 <thead class="entries_header"> 15694 <tr> 15695 <th class="th_name">Property Name</th> 15696 <th class="th_type">Type</th> 15697 <th class="th_description">Description</th> 15698 <th class="th_units">Units</th> 15699 <th class="th_range">Range</th> 15700 <th class="th_tags">Tags</th> 15701 </tr> 15702 </thead> 15703 15704 <tbody> 15705 15706 15707 15708 15709 15710 15711 15712 15713 15714 15715 <tr class="entry" id="static_android.scaler.availableFormats"> 15716 <td class="entry_name 15717 entry_name_deprecated 15718 " rowspan="5"> 15719 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 15720 </td> 15721 <td class="entry_type"> 15722 <span class="entry_type_name entry_type_name_enum">int32</span> 15723 <span class="entry_type_container">x</span> 15724 15725 <span class="entry_type_array"> 15726 n 15727 </span> 15728 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 15729 15730 15731 15732 <span class="entry_type_deprecated">[deprecated] </span> 15733 15734 15735 <ul class="entry_type_enum"> 15736 <li> 15737 <span class="entry_type_enum_name">RAW16</span> 15738 <span class="entry_type_enum_optional">[optional]</span> 15739 <span class="entry_type_enum_value">0x20</span> 15740 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 15741buffers with 16-bit pixels.<wbr/></p> 15742<p>Buffers of this format are typically expected to have a 15743Bayer Color Filter Array (CFA) layout,<wbr/> which is given in 15744<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with 15745CFAs that are not representable by a format in 15746<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not 15747use this format.<wbr/></p> 15748<p>Buffers of this format will also follow the constraints given for 15749RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 15750<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 15751the full set of performance guarantees.<wbr/></p></span> 15752 </li> 15753 <li> 15754 <span class="entry_type_enum_name">RAW_OPAQUE</span> 15755 <span class="entry_type_enum_optional">[optional]</span> 15756 <span class="entry_type_enum_value">0x24</span> 15757 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an 15758image sensor.<wbr/></p> 15759<p>The actual structure of buffers of this format is 15760platform-specific,<wbr/> but must follow several constraints:</p> 15761<ol> 15762<li>No image post-processing operations may have been applied to 15763buffers of this type.<wbr/> These buffers contain raw image data coming 15764directly from the image sensor.<wbr/></li> 15765<li>If a buffer of this format is passed to the camera device for 15766reprocessing,<wbr/> the resulting images will be identical to the images 15767produced if the buffer had come directly from the sensor and was 15768processed with the same settings.<wbr/></li> 15769</ol> 15770<p>The intended use for this format is to allow access to the native 15771raw format buffers coming directly from the camera sensor without 15772any additional conversions or decrease in framerate.<wbr/></p> 15773<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 15774performance guarantees.<wbr/></p></span> 15775 </li> 15776 <li> 15777 <span class="entry_type_enum_name">YV12</span> 15778 <span class="entry_type_enum_optional">[optional]</span> 15779 <span class="entry_type_enum_value">0x32315659</span> 15780 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 15781 </li> 15782 <li> 15783 <span class="entry_type_enum_name">YCrCb_420_SP</span> 15784 <span class="entry_type_enum_optional">[optional]</span> 15785 <span class="entry_type_enum_value">0x11</span> 15786 <span class="entry_type_enum_notes"><p>NV21</p></span> 15787 </li> 15788 <li> 15789 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span> 15790 <span class="entry_type_enum_value">0x22</span> 15791 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 15792 </li> 15793 <li> 15794 <span class="entry_type_enum_name">YCbCr_420_888</span> 15795 <span class="entry_type_enum_value">0x23</span> 15796 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 15797 </li> 15798 <li> 15799 <span class="entry_type_enum_name">BLOB</span> 15800 <span class="entry_type_enum_value">0x21</span> 15801 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 15802 </li> 15803 </ul> 15804 15805 </td> <!-- entry_type --> 15806 15807 <td class="entry_description"> 15808 <p>The list of image formats that are supported by this 15809camera device for output streams.<wbr/></p> 15810 </td> 15811 15812 <td class="entry_units"> 15813 </td> 15814 15815 <td class="entry_range"> 15816 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15817 </td> 15818 15819 <td class="entry_tags"> 15820 <ul class="entry_tags"> 15821 <li><a href="#tag_BC">BC</a></li> 15822 </ul> 15823 </td> 15824 15825 </tr> 15826 <tr class="entries_header"> 15827 <th class="th_details" colspan="5">Details</th> 15828 </tr> 15829 <tr class="entry_cont"> 15830 <td class="entry_details" colspan="5"> 15831 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 15832<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 15833 </td> 15834 </tr> 15835 15836 <tr class="entries_header"> 15837 <th class="th_details" colspan="5">HAL Implementation Details</th> 15838 </tr> 15839 <tr class="entry_cont"> 15840 <td class="entry_details" colspan="5"> 15841 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 15842system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 15843<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 15844gralloc module will select a format based on the usage flags provided 15845by the camera HAL device and the other endpoint of the stream.<wbr/> It is 15846usually used by preview and recording streams,<wbr/> where the application doesn't 15847need access the image data.<wbr/></p> 15848<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 15849needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> 15850<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 15851<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 15852recommended that any information used by the camera device when 15853processing images is fully expressed by the result metadata 15854for that image buffer.<wbr/></p> 15855 </td> 15856 </tr> 15857 15858 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15859 <!-- end of entry --> 15860 15861 15862 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 15863 <td class="entry_name 15864 entry_name_deprecated 15865 " rowspan="3"> 15866 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 15867 </td> 15868 <td class="entry_type"> 15869 <span class="entry_type_name">int64</span> 15870 <span class="entry_type_container">x</span> 15871 15872 <span class="entry_type_array"> 15873 n 15874 </span> 15875 <span class="entry_type_visibility"> [hidden]</span> 15876 15877 15878 15879 <span class="entry_type_deprecated">[deprecated] </span> 15880 15881 15882 15883 </td> <!-- entry_type --> 15884 15885 <td class="entry_description"> 15886 <p>The minimum frame duration that is supported 15887for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 15888 </td> 15889 15890 <td class="entry_units"> 15891 Nanoseconds 15892 </td> 15893 15894 <td class="entry_range"> 15895 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15896 <p>TODO: Remove property.<wbr/></p> 15897 </td> 15898 15899 <td class="entry_tags"> 15900 <ul class="entry_tags"> 15901 <li><a href="#tag_BC">BC</a></li> 15902 </ul> 15903 </td> 15904 15905 </tr> 15906 <tr class="entries_header"> 15907 <th class="th_details" colspan="5">Details</th> 15908 </tr> 15909 <tr class="entry_cont"> 15910 <td class="entry_details" colspan="5"> 15911 <p>This corresponds to the minimum steady-state frame duration when only 15912that JPEG stream is active and captured in a burst,<wbr/> with all 15913processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 15914<p>When multiple streams are configured,<wbr/> the minimum 15915frame duration will be >= max(individual stream min 15916durations)</p> 15917 </td> 15918 </tr> 15919 15920 15921 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15922 <!-- end of entry --> 15923 15924 15925 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 15926 <td class="entry_name 15927 entry_name_deprecated 15928 " rowspan="5"> 15929 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 15930 </td> 15931 <td class="entry_type"> 15932 <span class="entry_type_name">int32</span> 15933 <span class="entry_type_container">x</span> 15934 15935 <span class="entry_type_array"> 15936 n x 2 15937 </span> 15938 <span class="entry_type_visibility"> [hidden as size]</span> 15939 15940 15941 15942 <span class="entry_type_deprecated">[deprecated] </span> 15943 15944 15945 15946 </td> <!-- entry_type --> 15947 15948 <td class="entry_description"> 15949 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 15950 </td> 15951 15952 <td class="entry_units"> 15953 </td> 15954 15955 <td class="entry_range"> 15956 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15957 <p>TODO: Remove property.<wbr/></p> 15958 </td> 15959 15960 <td class="entry_tags"> 15961 <ul class="entry_tags"> 15962 <li><a href="#tag_BC">BC</a></li> 15963 </ul> 15964 </td> 15965 15966 </tr> 15967 <tr class="entries_header"> 15968 <th class="th_details" colspan="5">Details</th> 15969 </tr> 15970 <tr class="entry_cont"> 15971 <td class="entry_details" colspan="5"> 15972 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 15973sensor 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> 15974 </td> 15975 </tr> 15976 15977 <tr class="entries_header"> 15978 <th class="th_details" colspan="5">HAL Implementation Details</th> 15979 </tr> 15980 <tr class="entry_cont"> 15981 <td class="entry_details" colspan="5"> 15982 <p>The HAL must include sensor maximum resolution 15983(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 15984and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 15985 </td> 15986 </tr> 15987 15988 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15989 <!-- end of entry --> 15990 15991 15992 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 15993 <td class="entry_name 15994 " rowspan="3"> 15995 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 15996 </td> 15997 <td class="entry_type"> 15998 <span class="entry_type_name">float</span> 15999 16000 <span class="entry_type_visibility"> [public]</span> 16001 16002 16003 <span class="entry_type_hwlevel">[legacy] </span> 16004 16005 16006 16007 16008 </td> <!-- entry_type --> 16009 16010 <td class="entry_description"> 16011 <p>The maximum ratio between both active area width 16012and crop region width,<wbr/> and active area height and 16013crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 16014 </td> 16015 16016 <td class="entry_units"> 16017 Zoom scale factor 16018 </td> 16019 16020 <td class="entry_range"> 16021 <p>>=1</p> 16022 </td> 16023 16024 <td class="entry_tags"> 16025 <ul class="entry_tags"> 16026 <li><a href="#tag_BC">BC</a></li> 16027 </ul> 16028 </td> 16029 16030 </tr> 16031 <tr class="entries_header"> 16032 <th class="th_details" colspan="5">Details</th> 16033 </tr> 16034 <tr class="entry_cont"> 16035 <td class="entry_details" colspan="5"> 16036 <p>This represents the maximum amount of zooming possible by 16037the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping 16038window size.<wbr/></p> 16039<p>Crop regions that have a width or height that is smaller 16040than this ratio allows will be rounded up to the minimum 16041allowed size by the camera device.<wbr/></p> 16042 </td> 16043 </tr> 16044 16045 16046 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16047 <!-- end of entry --> 16048 16049 16050 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 16051 <td class="entry_name 16052 entry_name_deprecated 16053 " rowspan="3"> 16054 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 16055 </td> 16056 <td class="entry_type"> 16057 <span class="entry_type_name">int64</span> 16058 <span class="entry_type_container">x</span> 16059 16060 <span class="entry_type_array"> 16061 n 16062 </span> 16063 <span class="entry_type_visibility"> [hidden]</span> 16064 16065 16066 16067 <span class="entry_type_deprecated">[deprecated] </span> 16068 16069 16070 16071 </td> <!-- entry_type --> 16072 16073 <td class="entry_description"> 16074 <p>For each available processed output size (defined in 16075<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 16076minimum supportable frame duration for that size.<wbr/></p> 16077 </td> 16078 16079 <td class="entry_units"> 16080 Nanoseconds 16081 </td> 16082 16083 <td class="entry_range"> 16084 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16085 </td> 16086 16087 <td class="entry_tags"> 16088 <ul class="entry_tags"> 16089 <li><a href="#tag_BC">BC</a></li> 16090 </ul> 16091 </td> 16092 16093 </tr> 16094 <tr class="entries_header"> 16095 <th class="th_details" colspan="5">Details</th> 16096 </tr> 16097 <tr class="entry_cont"> 16098 <td class="entry_details" colspan="5"> 16099 <p>This should correspond to the frame duration when only that processed 16100stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 16101set to FAST.<wbr/></p> 16102<p>When multiple streams are configured,<wbr/> the minimum frame duration will 16103be >= max(individual stream min durations).<wbr/></p> 16104 </td> 16105 </tr> 16106 16107 16108 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16109 <!-- end of entry --> 16110 16111 16112 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 16113 <td class="entry_name 16114 entry_name_deprecated 16115 " rowspan="5"> 16116 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 16117 </td> 16118 <td class="entry_type"> 16119 <span class="entry_type_name">int32</span> 16120 <span class="entry_type_container">x</span> 16121 16122 <span class="entry_type_array"> 16123 n x 2 16124 </span> 16125 <span class="entry_type_visibility"> [hidden as size]</span> 16126 16127 16128 16129 <span class="entry_type_deprecated">[deprecated] </span> 16130 16131 16132 16133 </td> <!-- entry_type --> 16134 16135 <td class="entry_description"> 16136 <p>The resolutions available for use with 16137processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 16138platform opaque YUV/<wbr/>RGB streams to the GPU or video 16139encoders.<wbr/></p> 16140 </td> 16141 16142 <td class="entry_units"> 16143 </td> 16144 16145 <td class="entry_range"> 16146 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16147 </td> 16148 16149 <td class="entry_tags"> 16150 <ul class="entry_tags"> 16151 <li><a href="#tag_BC">BC</a></li> 16152 </ul> 16153 </td> 16154 16155 </tr> 16156 <tr class="entries_header"> 16157 <th class="th_details" colspan="5">Details</th> 16158 </tr> 16159 <tr class="entry_cont"> 16160 <td class="entry_details" colspan="5"> 16161 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 16162<p>For a given use case,<wbr/> the actual maximum supported resolution 16163may be lower than what is listed here,<wbr/> depending on the destination 16164Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 16165the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 16166smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 16167can provide.<wbr/></p> 16168<p>Please reference the documentation for the image data destination to 16169check if it limits the maximum size for image data.<wbr/></p> 16170 </td> 16171 </tr> 16172 16173 <tr class="entries_header"> 16174 <th class="th_details" colspan="5">HAL Implementation Details</th> 16175 </tr> 16176 <tr class="entry_cont"> 16177 <td class="entry_details" colspan="5"> 16178 <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/> 16179the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 16180and each below resolution if it is smaller than or equal to the sensor 16181maximum resolution (if they are not listed in JPEG sizes already):</p> 16182<ul> 16183<li>240p (320 x 240)</li> 16184<li>480p (640 x 480)</li> 16185<li>720p (1280 x 720)</li> 16186<li>1080p (1920 x 1080)</li> 16187</ul> 16188<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/> 16189the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 16190 </td> 16191 </tr> 16192 16193 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16194 <!-- end of entry --> 16195 16196 16197 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 16198 <td class="entry_name 16199 entry_name_deprecated 16200 " rowspan="3"> 16201 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 16202 </td> 16203 <td class="entry_type"> 16204 <span class="entry_type_name">int64</span> 16205 <span class="entry_type_container">x</span> 16206 16207 <span class="entry_type_array"> 16208 n 16209 </span> 16210 <span class="entry_type_visibility"> [system]</span> 16211 16212 16213 16214 <span class="entry_type_deprecated">[deprecated] </span> 16215 16216 16217 16218 </td> <!-- entry_type --> 16219 16220 <td class="entry_description"> 16221 <p>For each available raw output size (defined in 16222<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 16223supportable frame duration for that size.<wbr/></p> 16224 </td> 16225 16226 <td class="entry_units"> 16227 Nanoseconds 16228 </td> 16229 16230 <td class="entry_range"> 16231 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16232 </td> 16233 16234 <td class="entry_tags"> 16235 <ul class="entry_tags"> 16236 <li><a href="#tag_BC">BC</a></li> 16237 </ul> 16238 </td> 16239 16240 </tr> 16241 <tr class="entries_header"> 16242 <th class="th_details" colspan="5">Details</th> 16243 </tr> 16244 <tr class="entry_cont"> 16245 <td class="entry_details" colspan="5"> 16246 <p>Should correspond to the frame duration when only the raw stream is 16247active.<wbr/></p> 16248<p>When multiple streams are configured,<wbr/> the minimum 16249frame duration will be >= max(individual stream min 16250durations)</p> 16251 </td> 16252 </tr> 16253 16254 16255 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16256 <!-- end of entry --> 16257 16258 16259 <tr class="entry" id="static_android.scaler.availableRawSizes"> 16260 <td class="entry_name 16261 entry_name_deprecated 16262 " rowspan="1"> 16263 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 16264 </td> 16265 <td class="entry_type"> 16266 <span class="entry_type_name">int32</span> 16267 <span class="entry_type_container">x</span> 16268 16269 <span class="entry_type_array"> 16270 n x 2 16271 </span> 16272 <span class="entry_type_visibility"> [system as size]</span> 16273 16274 16275 16276 <span class="entry_type_deprecated">[deprecated] </span> 16277 16278 16279 16280 </td> <!-- entry_type --> 16281 16282 <td class="entry_description"> 16283 <p>The resolutions available for use with raw 16284sensor output streams,<wbr/> listed as width,<wbr/> 16285height</p> 16286 </td> 16287 16288 <td class="entry_units"> 16289 </td> 16290 16291 <td class="entry_range"> 16292 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16293 </td> 16294 16295 <td class="entry_tags"> 16296 </td> 16297 16298 </tr> 16299 16300 16301 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16302 <!-- end of entry --> 16303 16304 16305 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 16306 <td class="entry_name 16307 " rowspan="5"> 16308 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 16309 </td> 16310 <td class="entry_type"> 16311 <span class="entry_type_name">int32</span> 16312 16313 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> 16314 16315 16316 16317 16318 16319 16320 </td> <!-- entry_type --> 16321 16322 <td class="entry_description"> 16323 <p>The mapping of image formats that are supported by this 16324camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 16325 </td> 16326 16327 <td class="entry_units"> 16328 </td> 16329 16330 <td class="entry_range"> 16331 </td> 16332 16333 <td class="entry_tags"> 16334 </td> 16335 16336 </tr> 16337 <tr class="entries_header"> 16338 <th class="th_details" colspan="5">Details</th> 16339 </tr> 16340 <tr class="entry_cont"> 16341 <td class="entry_details" colspan="5"> 16342 <p>All camera devices with at least 1 16343<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 16344available input format.<wbr/></p> 16345<p>The camera device will support the following map of formats,<wbr/> 16346if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 16347<table> 16348<thead> 16349<tr> 16350<th align="left">Input Format</th> 16351<th align="left">Output Format</th> 16352<th align="left">Capability</th> 16353</tr> 16354</thead> 16355<tbody> 16356<tr> 16357<td align="left">PRIVATE (ImageFormat#PRIVATE)</td> 16358<td align="left">JPEG</td> 16359<td align="left">OPAQUE_<wbr/>REPROCESSING</td> 16360</tr> 16361<tr> 16362<td align="left">PRIVATE</td> 16363<td align="left">YUV_<wbr/>420_<wbr/>888</td> 16364<td align="left">OPAQUE_<wbr/>REPROCESSING</td> 16365</tr> 16366<tr> 16367<td align="left">YUV_<wbr/>420_<wbr/>888</td> 16368<td align="left">JPEG</td> 16369<td align="left">YUV_<wbr/>REPROCESSING</td> 16370</tr> 16371<tr> 16372<td align="left">YUV_<wbr/>420_<wbr/>888</td> 16373<td align="left">YUV_<wbr/>420_<wbr/>888</td> 16374<td align="left">YUV_<wbr/>REPROCESSING</td> 16375</tr> 16376</tbody> 16377</table> 16378<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> 16379A PRIVATE input surface can be acquired by 16380ImageReader.<wbr/>newOpaqueInstance(width,<wbr/> height,<wbr/> maxImages).<wbr/> 16381For a OPAQUE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format 16382as either input or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/> 16383Stream<wbr/>Configuration<wbr/>Map#get<wbr/>Output<wbr/>Stall<wbr/>Duration(format,<wbr/> size) is always 0),<wbr/> 16384where format is ImageFormat#PRIVATE.<wbr/></p> 16385<p>Attempting to configure an input stream with output streams not 16386listed as available in this map is not valid.<wbr/></p> 16387 </td> 16388 </tr> 16389 16390 <tr class="entries_header"> 16391 <th class="th_details" colspan="5">HAL Implementation Details</th> 16392 </tr> 16393 <tr class="entry_cont"> 16394 <td class="entry_details" colspan="5"> 16395 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition 16396of the image format enumerations.<wbr/> The PRIVATE format refers to the 16397HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine 16398the actual format by using the gralloc usage flags.<wbr/> 16399For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially 16400processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/> 16401See camera3.<wbr/>h for more details.<wbr/></p> 16402<p>This value is encoded as a variable-size array-of-arrays.<wbr/> 16403The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 16404<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 16405inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 16406<p>A code sample to read/<wbr/>write this encoding (with a device that 16407supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 16408and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 16409<pre><code>//<wbr/> reading 16410int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 16411for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 16412 int32_<wbr/>t format = contents[i++]; 16413 int32_<wbr/>t length = contents[i++]; 16414 int32_<wbr/>t output_<wbr/>formats[length]; 16415 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 16416 length * sizeof(int32_<wbr/>t)); 16417 i += length; 16418} 16419 16420//<wbr/> writing (static example,<wbr/> OPAQUE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING) 16421int32_<wbr/>t[] contents = { 16422 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 16423 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 16424}; 16425update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 16426 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 16427</code></pre> 16428<p>If the HAL claims to support any of the capabilities listed in the 16429above details,<wbr/> then it must also support all the input-output 16430combinations listed for that capability.<wbr/> It can optionally support 16431additional formats if it so chooses.<wbr/></p> 16432 </td> 16433 </tr> 16434 16435 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16436 <!-- end of entry --> 16437 16438 16439 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 16440 <td class="entry_name 16441 " rowspan="5"> 16442 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 16443 </td> 16444 <td class="entry_type"> 16445 <span class="entry_type_name entry_type_name_enum">int32</span> 16446 <span class="entry_type_container">x</span> 16447 16448 <span class="entry_type_array"> 16449 n x 4 16450 </span> 16451 <span class="entry_type_visibility"> [hidden as streamConfiguration]</span> 16452 16453 16454 <span class="entry_type_hwlevel">[legacy] </span> 16455 16456 16457 16458 <ul class="entry_type_enum"> 16459 <li> 16460 <span class="entry_type_enum_name">OUTPUT</span> 16461 </li> 16462 <li> 16463 <span class="entry_type_enum_name">INPUT</span> 16464 </li> 16465 </ul> 16466 16467 </td> <!-- entry_type --> 16468 16469 <td class="entry_description"> 16470 <p>The available stream configurations that this 16471camera device supports 16472(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 16473 </td> 16474 16475 <td class="entry_units"> 16476 </td> 16477 16478 <td class="entry_range"> 16479 </td> 16480 16481 <td class="entry_tags"> 16482 </td> 16483 16484 </tr> 16485 <tr class="entries_header"> 16486 <th class="th_details" colspan="5">Details</th> 16487 </tr> 16488 <tr class="entry_cont"> 16489 <td class="entry_details" colspan="5"> 16490 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 16491tuples.<wbr/></p> 16492<p>For a given use case,<wbr/> the actual maximum supported resolution 16493may be lower than what is listed here,<wbr/> depending on the destination 16494Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 16495the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 16496smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 16497can provide.<wbr/></p> 16498<p>Please reference the documentation for the image data destination to 16499check if it limits the maximum size for image data.<wbr/></p> 16500<p>Not all output formats may be supported in a configuration with 16501an input stream of a particular format.<wbr/> For more details,<wbr/> see 16502<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 16503<p>The following table describes the minimum required output stream 16504configurations based on the hardware level 16505(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 16506<table> 16507<thead> 16508<tr> 16509<th align="center">Format</th> 16510<th align="center">Size</th> 16511<th align="center">Hardware Level</th> 16512<th align="center">Notes</th> 16513</tr> 16514</thead> 16515<tbody> 16516<tr> 16517<td align="center">JPEG</td> 16518<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 16519<td align="center">Any</td> 16520<td align="center"></td> 16521</tr> 16522<tr> 16523<td align="center">JPEG</td> 16524<td align="center">1920x1080 (1080p)</td> 16525<td align="center">Any</td> 16526<td align="center">if 1080p <= activeArraySize</td> 16527</tr> 16528<tr> 16529<td align="center">JPEG</td> 16530<td align="center">1280x720 (720)</td> 16531<td align="center">Any</td> 16532<td align="center">if 720p <= activeArraySize</td> 16533</tr> 16534<tr> 16535<td align="center">JPEG</td> 16536<td align="center">640x480 (480p)</td> 16537<td align="center">Any</td> 16538<td align="center">if 480p <= activeArraySize</td> 16539</tr> 16540<tr> 16541<td align="center">JPEG</td> 16542<td align="center">320x240 (240p)</td> 16543<td align="center">Any</td> 16544<td align="center">if 240p <= activeArraySize</td> 16545</tr> 16546<tr> 16547<td align="center">YUV_<wbr/>420_<wbr/>888</td> 16548<td align="center">all output sizes available for JPEG</td> 16549<td align="center">FULL</td> 16550<td align="center"></td> 16551</tr> 16552<tr> 16553<td align="center">YUV_<wbr/>420_<wbr/>888</td> 16554<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 16555<td align="center">LIMITED</td> 16556<td align="center"></td> 16557</tr> 16558<tr> 16559<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 16560<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 16561<td align="center">Any</td> 16562<td align="center"></td> 16563</tr> 16564</tbody> 16565</table> 16566<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 16567mandatory stream configurations on a per-capability basis.<wbr/></p> 16568 </td> 16569 </tr> 16570 16571 <tr class="entries_header"> 16572 <th class="th_details" colspan="5">HAL Implementation Details</th> 16573 </tr> 16574 <tr class="entry_cont"> 16575 <td class="entry_details" colspan="5"> 16576 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 16577of sensor maximum resolution for JPEG formats (regardless of hardware 16578level).<wbr/></p> 16579<p>(The following is a rewording of the above required table):</p> 16580<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 16581<ul> 16582<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 16583(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 16584(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/> 16585it does not have to be included in the supported JPEG sizes.<wbr/></li> 16586<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 16587the dimensions being a multiple of 16.<wbr/></li> 16588</ul> 16589<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 16590However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 16591resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 16592additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 16593if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 16594ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 165953264x2448.<wbr/></p> 16596<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/> 16597the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 16598here as output streams.<wbr/></p> 16599<p>It must also include each below resolution if it is smaller than or 16600equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 16601formats),<wbr/> as output streams:</p> 16602<ul> 16603<li>240p (320 x 240)</li> 16604<li>480p (640 x 480)</li> 16605<li>720p (1280 x 720)</li> 16606<li>1080p (1920 x 1080)</li> 16607</ul> 16608<p>For LIMITED capability devices 16609(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 16610the HAL only has to list up to the maximum video size 16611supported by the device.<wbr/></p> 16612<p>Regardless of hardware level,<wbr/> every output resolution available for 16613YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 16614<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 16615<ul> 16616<li>availableFormats</li> 16617<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 16618</ul> 16619 </td> 16620 </tr> 16621 16622 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16623 <!-- end of entry --> 16624 16625 16626 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 16627 <td class="entry_name 16628 " rowspan="3"> 16629 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 16630 </td> 16631 <td class="entry_type"> 16632 <span class="entry_type_name">int64</span> 16633 <span class="entry_type_container">x</span> 16634 16635 <span class="entry_type_array"> 16636 4 x n 16637 </span> 16638 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 16639 16640 16641 <span class="entry_type_hwlevel">[legacy] </span> 16642 16643 16644 16645 16646 </td> <!-- entry_type --> 16647 16648 <td class="entry_description"> 16649 <p>This lists the minimum frame duration for each 16650format/<wbr/>size combination.<wbr/></p> 16651 </td> 16652 16653 <td class="entry_units"> 16654 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 16655 </td> 16656 16657 <td class="entry_range"> 16658 </td> 16659 16660 <td class="entry_tags"> 16661 <ul class="entry_tags"> 16662 <li><a href="#tag_V1">V1</a></li> 16663 </ul> 16664 </td> 16665 16666 </tr> 16667 <tr class="entries_header"> 16668 <th class="th_details" colspan="5">Details</th> 16669 </tr> 16670 <tr class="entry_cont"> 16671 <td class="entry_details" colspan="5"> 16672 <p>This should correspond to the frame duration when only that 16673stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 16674set to either OFF or FAST.<wbr/></p> 16675<p>When multiple streams are used in a request,<wbr/> the minimum frame 16676duration will be max(individual stream min durations).<wbr/></p> 16677<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 16678is the same regardless of whether the stream is input or output.<wbr/></p> 16679<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 16680<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 16681calculating the max frame rate.<wbr/></p> 16682<p>(Keep in sync with 16683StreamConfigurationMap#getOutputMinFrameDuration)</p> 16684 </td> 16685 </tr> 16686 16687 16688 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16689 <!-- end of entry --> 16690 16691 16692 <tr class="entry" id="static_android.scaler.availableStallDurations"> 16693 <td class="entry_name 16694 " rowspan="5"> 16695 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 16696 </td> 16697 <td class="entry_type"> 16698 <span class="entry_type_name">int64</span> 16699 <span class="entry_type_container">x</span> 16700 16701 <span class="entry_type_array"> 16702 4 x n 16703 </span> 16704 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 16705 16706 16707 <span class="entry_type_hwlevel">[legacy] </span> 16708 16709 16710 16711 16712 </td> <!-- entry_type --> 16713 16714 <td class="entry_description"> 16715 <p>This lists the maximum stall duration for each 16716format/<wbr/>size combination.<wbr/></p> 16717 </td> 16718 16719 <td class="entry_units"> 16720 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 16721 </td> 16722 16723 <td class="entry_range"> 16724 </td> 16725 16726 <td class="entry_tags"> 16727 <ul class="entry_tags"> 16728 <li><a href="#tag_V1">V1</a></li> 16729 </ul> 16730 </td> 16731 16732 </tr> 16733 <tr class="entries_header"> 16734 <th class="th_details" colspan="5">Details</th> 16735 </tr> 16736 <tr class="entry_cont"> 16737 <td class="entry_details" colspan="5"> 16738 <p>A stall duration is how much extra time would get added 16739to the normal minimum frame duration for a repeating request 16740that has streams with non-zero stall.<wbr/></p> 16741<p>For example,<wbr/> consider JPEG captures which have the following 16742characteristics:</p> 16743<ul> 16744<li>JPEG streams act like processed YUV streams in requests for which 16745they are not included; in requests in which they are directly 16746referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 16747JPEG stream requires the underlying YUV data to always be ready for 16748use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 16749frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 16750<li>The JPEG processor can run concurrently to the rest of the camera 16751pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 16752</ul> 16753<p>In other words,<wbr/> using a repeating YUV request would result 16754in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 16755JPEG request is submitted periodically,<wbr/> the frame rate will stay 16756at 30 FPS (as long as we wait for the previous JPEG to return each 16757time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 16758the frame rate will drop from 30 FPS.<wbr/></p> 16759<p>In general,<wbr/> submitting a new request with a non-0 stall time 16760stream will <em>not</em> cause a frame rate drop unless there are still 16761outstanding buffers for that stream from previous requests.<wbr/></p> 16762<p>Submitting a repeating request with streams (call this <code>S</code>) 16763is the same as setting the minimum frame duration from 16764the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 16765the maximum stall duration for <code>S</code>.<wbr/></p> 16766<p>If interleaving requests with and without a stall duration,<wbr/> 16767a request will stall by the maximum of the remaining times 16768for each can-stall stream with outstanding buffers.<wbr/></p> 16769<p>This means that a stalling request will not have an exposure start 16770until the stall has completed.<wbr/></p> 16771<p>This should correspond to the stall duration when only that stream is 16772active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 16773or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 16774effectively results in an indeterminate stall duration for all 16775streams in a request (the regular stall calculation rules are 16776ignored).<wbr/></p> 16777<p>The following formats may always have a stall duration:</p> 16778<ul> 16779<li>ImageFormat#JPEG</li> 16780<li>ImageFormat#RAW_<wbr/>SENSOR</li> 16781</ul> 16782<p>The following formats will never have a stall duration:</p> 16783<ul> 16784<li>Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</li> 16785</ul> 16786<p>All other formats may or may not have an allowed stall duration on 16787a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 16788for more details.<wbr/></p> 16789<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 16790calculating the max frame rate (absent stalls).<wbr/></p> 16791<p>(Keep up to date with 16792StreamConfigurationMap#getOutputStallDuration(int,<wbr/> Size) )</p> 16793 </td> 16794 </tr> 16795 16796 <tr class="entries_header"> 16797 <th class="th_details" colspan="5">HAL Implementation Details</th> 16798 </tr> 16799 <tr class="entry_cont"> 16800 <td class="entry_details" colspan="5"> 16801 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 16802(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE 16803and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 16804 </td> 16805 </tr> 16806 16807 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16808 <!-- end of entry --> 16809 16810 16811 <tr class="entry" id="static_android.scaler.streamConfigurationMap"> 16812 <td class="entry_name 16813 " rowspan="5"> 16814 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map 16815 </td> 16816 <td class="entry_type"> 16817 <span class="entry_type_name">int32</span> 16818 16819 <span class="entry_type_visibility"> [public as streamConfigurationMap]</span> 16820 16821 <span class="entry_type_synthetic">[synthetic] </span> 16822 16823 <span class="entry_type_hwlevel">[legacy] </span> 16824 16825 16826 16827 16828 </td> <!-- entry_type --> 16829 16830 <td class="entry_description"> 16831 <p>The available stream configurations that this 16832camera device supports; also includes the minimum frame durations 16833and the stall durations for each format/<wbr/>size combination.<wbr/></p> 16834 </td> 16835 16836 <td class="entry_units"> 16837 </td> 16838 16839 <td class="entry_range"> 16840 </td> 16841 16842 <td class="entry_tags"> 16843 </td> 16844 16845 </tr> 16846 <tr class="entries_header"> 16847 <th class="th_details" colspan="5">Details</th> 16848 </tr> 16849 <tr class="entry_cont"> 16850 <td class="entry_details" colspan="5"> 16851 <p>All camera devices will support sensor maximum resolution (defined by 16852<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> 16853<p>For a given use case,<wbr/> the actual maximum supported resolution 16854may be lower than what is listed here,<wbr/> depending on the destination 16855Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 16856the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 16857smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 16858can provide.<wbr/></p> 16859<p>Please reference the documentation for the image data destination to 16860check if it limits the maximum size for image data.<wbr/></p> 16861<p>The following table describes the minimum required output stream 16862configurations based on the hardware level 16863(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 16864<table> 16865<thead> 16866<tr> 16867<th align="center">Format</th> 16868<th align="center">Size</th> 16869<th align="center">Hardware Level</th> 16870<th align="center">Notes</th> 16871</tr> 16872</thead> 16873<tbody> 16874<tr> 16875<td align="center">JPEG</td> 16876<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 16877<td align="center">Any</td> 16878<td align="center"></td> 16879</tr> 16880<tr> 16881<td align="center">JPEG</td> 16882<td align="center">1920x1080 (1080p)</td> 16883<td align="center">Any</td> 16884<td align="center">if 1080p <= activeArraySize</td> 16885</tr> 16886<tr> 16887<td align="center">JPEG</td> 16888<td align="center">1280x720 (720)</td> 16889<td align="center">Any</td> 16890<td align="center">if 720p <= activeArraySize</td> 16891</tr> 16892<tr> 16893<td align="center">JPEG</td> 16894<td align="center">640x480 (480p)</td> 16895<td align="center">Any</td> 16896<td align="center">if 480p <= activeArraySize</td> 16897</tr> 16898<tr> 16899<td align="center">JPEG</td> 16900<td align="center">320x240 (240p)</td> 16901<td align="center">Any</td> 16902<td align="center">if 240p <= activeArraySize</td> 16903</tr> 16904<tr> 16905<td align="center">YUV_<wbr/>420_<wbr/>888</td> 16906<td align="center">all output sizes available for JPEG</td> 16907<td align="center">FULL</td> 16908<td align="center"></td> 16909</tr> 16910<tr> 16911<td align="center">YUV_<wbr/>420_<wbr/>888</td> 16912<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 16913<td align="center">LIMITED</td> 16914<td align="center"></td> 16915</tr> 16916<tr> 16917<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 16918<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 16919<td align="center">Any</td> 16920<td align="center"></td> 16921</tr> 16922</tbody> 16923</table> 16924<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 16925mandatory stream configurations on a per-capability basis.<wbr/></p> 16926 </td> 16927 </tr> 16928 16929 <tr class="entries_header"> 16930 <th class="th_details" colspan="5">HAL Implementation Details</th> 16931 </tr> 16932 <tr class="entry_cont"> 16933 <td class="entry_details" colspan="5"> 16934 <p>Do not set this property directly 16935(it is synthetic and will not be available at the HAL layer); 16936set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> 16937<p>Not all output formats may be supported in a configuration with 16938an input stream of a particular format.<wbr/> For more details,<wbr/> see 16939<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 16940<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 16941of sensor maximum resolution for JPEG formats (regardless of hardware 16942level).<wbr/></p> 16943<p>(The following is a rewording of the above required table):</p> 16944<p>The HAL must include sensor maximum resolution (defined by 16945<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 16946<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/> 16947the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 16948here as output streams.<wbr/></p> 16949<p>It must also include each below resolution if it is smaller than or 16950equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 16951formats),<wbr/> as output streams:</p> 16952<ul> 16953<li>240p (320 x 240)</li> 16954<li>480p (640 x 480)</li> 16955<li>720p (1280 x 720)</li> 16956<li>1080p (1920 x 1080)</li> 16957</ul> 16958<p>For LIMITED capability devices 16959(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 16960the HAL only has to list up to the maximum video size 16961supported by the device.<wbr/></p> 16962<p>Regardless of hardware level,<wbr/> every output resolution available for 16963YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 16964<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 16965<ul> 16966<li>availableFormats</li> 16967<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 16968</ul> 16969 </td> 16970 </tr> 16971 16972 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16973 <!-- end of entry --> 16974 16975 16976 <tr class="entry" id="static_android.scaler.croppingType"> 16977 <td class="entry_name 16978 " rowspan="3"> 16979 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type 16980 </td> 16981 <td class="entry_type"> 16982 <span class="entry_type_name entry_type_name_enum">byte</span> 16983 16984 <span class="entry_type_visibility"> [public]</span> 16985 16986 16987 <span class="entry_type_hwlevel">[legacy] </span> 16988 16989 16990 16991 <ul class="entry_type_enum"> 16992 <li> 16993 <span class="entry_type_enum_name">CENTER_ONLY</span> 16994 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span> 16995 </li> 16996 <li> 16997 <span class="entry_type_enum_name">FREEFORM</span> 16998 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span> 16999 </li> 17000 </ul> 17001 17002 </td> <!-- entry_type --> 17003 17004 <td class="entry_description"> 17005 <p>The crop type that this camera device supports.<wbr/></p> 17006 </td> 17007 17008 <td class="entry_units"> 17009 </td> 17010 17011 <td class="entry_range"> 17012 </td> 17013 17014 <td class="entry_tags"> 17015 </td> 17016 17017 </tr> 17018 <tr class="entries_header"> 17019 <th class="th_details" colspan="5">Details</th> 17020 </tr> 17021 <tr class="entry_cont"> 17022 <td class="entry_details" colspan="5"> 17023 <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 17024device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 17025crop 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>) 17026and keep the crop region width and height unchanged.<wbr/> The camera device will return the 17027final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 17028<p>Camera devices that support FREEFORM cropping will support any crop region that 17029is inside of the active array.<wbr/> The camera device will apply the same crop region and 17030return 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> 17031<p>FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL) will support 17032FREEFORM cropping.<wbr/> LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p> 17033 </td> 17034 </tr> 17035 17036 17037 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17038 <!-- end of entry --> 17039 17040 17041 17042 <!-- end of kind --> 17043 </tbody> 17044 <tr><td colspan="6" class="kind">dynamic</td></tr> 17045 17046 <thead class="entries_header"> 17047 <tr> 17048 <th class="th_name">Property Name</th> 17049 <th class="th_type">Type</th> 17050 <th class="th_description">Description</th> 17051 <th class="th_units">Units</th> 17052 <th class="th_range">Range</th> 17053 <th class="th_tags">Tags</th> 17054 </tr> 17055 </thead> 17056 17057 <tbody> 17058 17059 17060 17061 17062 17063 17064 17065 17066 17067 17068 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 17069 <td class="entry_name 17070 " rowspan="5"> 17071 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 17072 </td> 17073 <td class="entry_type"> 17074 <span class="entry_type_name">int32</span> 17075 <span class="entry_type_container">x</span> 17076 17077 <span class="entry_type_array"> 17078 4 17079 </span> 17080 <span class="entry_type_visibility"> [public as rectangle]</span> 17081 17082 17083 <span class="entry_type_hwlevel">[legacy] </span> 17084 17085 17086 17087 17088 </td> <!-- entry_type --> 17089 17090 <td class="entry_description"> 17091 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 17092 </td> 17093 17094 <td class="entry_units"> 17095 Pixel coordinates relative to 17096 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 17097 </td> 17098 17099 <td class="entry_range"> 17100 </td> 17101 17102 <td class="entry_tags"> 17103 <ul class="entry_tags"> 17104 <li><a href="#tag_BC">BC</a></li> 17105 </ul> 17106 </td> 17107 17108 </tr> 17109 <tr class="entries_header"> 17110 <th class="th_details" colspan="5">Details</th> 17111 </tr> 17112 <tr class="entry_cont"> 17113 <td class="entry_details" colspan="5"> 17114 <p>This control can be used to implement digital zoom.<wbr/></p> 17115<p>The crop region coordinate system is based off 17116<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 17117top-left corner of the sensor active array.<wbr/></p> 17118<p>Output streams use this rectangle to produce their output,<wbr/> 17119cropping to a smaller region if necessary to maintain the 17120stream's aspect ratio,<wbr/> then scaling the sensor input to 17121match the output's configured resolution.<wbr/></p> 17122<p>The crop region is applied after the RAW to other color 17123space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 17124(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 17125croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 17126<p>For non-raw streams,<wbr/> any additional per-stream cropping will 17127be done to maximize the final pixel area of the stream.<wbr/></p> 17128<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 17129ratio,<wbr/> then 4:3 streams will use the exact crop 17130region.<wbr/> 16:9 streams will further crop vertically 17131(letterbox).<wbr/></p> 17132<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 17133outputs will crop horizontally (pillarbox),<wbr/> and 16:9 17134streams will match exactly.<wbr/> These additional crops will 17135be centered within the crop region.<wbr/></p> 17136<p>The width and height of the crop region cannot 17137be set to be smaller than 17138<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 17139<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> 17140<p>The camera device may adjust the crop region to account 17141for rounding and other hardware requirements; the final 17142crop region used will be included in the output capture 17143result.<wbr/></p> 17144 </td> 17145 </tr> 17146 17147 <tr class="entries_header"> 17148 <th class="th_details" colspan="5">HAL Implementation Details</th> 17149 </tr> 17150 <tr class="entry_cont"> 17151 <td class="entry_details" colspan="5"> 17152 <p>The output streams must maintain square pixels at all 17153times,<wbr/> no matter what the relative aspect ratios of the 17154crop region and the stream are.<wbr/> Negative values for 17155corner are allowed for raw output if full pixel array is 17156larger than active pixel array.<wbr/> Width and height may be 17157rounded to nearest larger supportable width,<wbr/> especially 17158for raw output,<wbr/> where only a few fixed scales may be 17159possible.<wbr/></p> 17160<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 17161 </td> 17162 </tr> 17163 17164 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17165 <!-- end of entry --> 17166 17167 17168 17169 <!-- end of kind --> 17170 </tbody> 17171 17172 <!-- end of section --> 17173 <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr> 17174 17175 17176 <tr><td colspan="6" class="kind">controls</td></tr> 17177 17178 <thead class="entries_header"> 17179 <tr> 17180 <th class="th_name">Property Name</th> 17181 <th class="th_type">Type</th> 17182 <th class="th_description">Description</th> 17183 <th class="th_units">Units</th> 17184 <th class="th_range">Range</th> 17185 <th class="th_tags">Tags</th> 17186 </tr> 17187 </thead> 17188 17189 <tbody> 17190 17191 17192 17193 17194 17195 17196 17197 17198 17199 17200 <tr class="entry" id="controls_android.sensor.exposureTime"> 17201 <td class="entry_name 17202 " rowspan="3"> 17203 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 17204 </td> 17205 <td class="entry_type"> 17206 <span class="entry_type_name">int64</span> 17207 17208 <span class="entry_type_visibility"> [public]</span> 17209 17210 17211 <span class="entry_type_hwlevel">[full] </span> 17212 17213 17214 17215 17216 </td> <!-- entry_type --> 17217 17218 <td class="entry_description"> 17219 <p>Duration each pixel is exposed to 17220light.<wbr/></p> 17221 </td> 17222 17223 <td class="entry_units"> 17224 Nanoseconds 17225 </td> 17226 17227 <td class="entry_range"> 17228 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 17229 </td> 17230 17231 <td class="entry_tags"> 17232 <ul class="entry_tags"> 17233 <li><a href="#tag_V1">V1</a></li> 17234 </ul> 17235 </td> 17236 17237 </tr> 17238 <tr class="entries_header"> 17239 <th class="th_details" colspan="5">Details</th> 17240 </tr> 17241 <tr class="entry_cont"> 17242 <td class="entry_details" colspan="5"> 17243 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 17244duration exposed to the nearest possible value (rather than expose longer).<wbr/> 17245The final exposure time used will be available in the output capture result.<wbr/></p> 17246<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 17247OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 17248 </td> 17249 </tr> 17250 17251 17252 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17253 <!-- end of entry --> 17254 17255 17256 <tr class="entry" id="controls_android.sensor.frameDuration"> 17257 <td class="entry_name 17258 " rowspan="5"> 17259 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 17260 </td> 17261 <td class="entry_type"> 17262 <span class="entry_type_name">int64</span> 17263 17264 <span class="entry_type_visibility"> [public]</span> 17265 17266 17267 <span class="entry_type_hwlevel">[full] </span> 17268 17269 17270 17271 17272 </td> <!-- entry_type --> 17273 17274 <td class="entry_description"> 17275 <p>Duration from start of frame exposure to 17276start of next frame exposure.<wbr/></p> 17277 </td> 17278 17279 <td class="entry_units"> 17280 Nanoseconds 17281 </td> 17282 17283 <td class="entry_range"> 17284 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 17285<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 17286is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 17287 </td> 17288 17289 <td class="entry_tags"> 17290 <ul class="entry_tags"> 17291 <li><a href="#tag_V1">V1</a></li> 17292 </ul> 17293 </td> 17294 17295 </tr> 17296 <tr class="entries_header"> 17297 <th class="th_details" colspan="5">Details</th> 17298 </tr> 17299 <tr class="entry_cont"> 17300 <td class="entry_details" colspan="5"> 17301 <p>The maximum frame rate that can be supported by a camera subsystem is 17302a function of many factors:</p> 17303<ul> 17304<li>Requested resolutions of output image streams</li> 17305<li>Availability of binning /<wbr/> skipping modes on the imager</li> 17306<li>The bandwidth of the imager interface</li> 17307<li>The bandwidth of the various ISP processing blocks</li> 17308</ul> 17309<p>Since these factors can vary greatly between different ISPs and 17310sensors,<wbr/> the camera abstraction tries to represent the bandwidth 17311restrictions with as simple a model as possible.<wbr/></p> 17312<p>The model presented has the following characteristics:</p> 17313<ul> 17314<li>The image sensor is always configured to output the smallest 17315resolution possible given the application's requested output stream 17316sizes.<wbr/> The smallest resolution is defined as being at least as large 17317as the largest requested output stream size; the camera pipeline must 17318never digitally upsample sensor data when the crop region covers the 17319whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 17320resolutions are configured,<wbr/> the sensor can provide a higher frame 17321rate.<wbr/></li> 17322<li>Since any request may use any or all the currently configured 17323output streams,<wbr/> the sensor and ISP must be configured to support 17324scaling a single capture to all the streams at the same time.<wbr/> This 17325means the camera pipeline must be ready to produce the largest 17326requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 17327frame rate of a given configured stream set is governed only by the 17328largest requested stream resolution.<wbr/></li> 17329<li>Using more than one output stream in a request does not affect the 17330frame duration.<wbr/></li> 17331<li>Certain format-streams may need to do additional background processing 17332before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 17333can run concurrently to the rest of the camera pipeline,<wbr/> but 17334cannot process more than 1 capture at a time.<wbr/></li> 17335</ul> 17336<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 17337is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field 17338using StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/> 17339These are used to determine the maximum frame rate /<wbr/> minimum frame 17340duration that is possible for a given stream configuration.<wbr/></p> 17341<p>Specifically,<wbr/> the application can use the following rules to 17342determine the minimum frame duration it can request from the camera 17343device:</p> 17344<ol> 17345<li>Let the set of currently configured input/<wbr/>output streams 17346be called <code>S</code>.<wbr/></li> 17347<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by 17348looking it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using 17349StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size) (with 17350its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called 17351<code>F</code>.<wbr/></li> 17352<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 17353for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 17354used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 17355</ol> 17356<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in 17357StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size) using its 17358respective size/<wbr/>format),<wbr/> then the frame duration in 17359<code>F</code> determines the steady state frame rate that the application will 17360get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind 17361of request be called <code>Rsimple</code>.<wbr/></p> 17362<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 17363by a single capture of a new request <code>Rstall</code> (which has at least 17364one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 17365same minimum frame duration this will not cause a frame rate loss 17366if all buffers from the previous <code>Rstall</code> have already been 17367delivered.<wbr/></p> 17368<p>For more details about stalling,<wbr/> see 17369StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size).<wbr/></p> 17370<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 17371OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 17372 </td> 17373 </tr> 17374 17375 <tr class="entries_header"> 17376 <th class="th_details" colspan="5">HAL Implementation Details</th> 17377 </tr> 17378 <tr class="entry_cont"> 17379 <td class="entry_details" colspan="5"> 17380 <p>For more details about stalling,<wbr/> see 17381<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 17382 </td> 17383 </tr> 17384 17385 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17386 <!-- end of entry --> 17387 17388 17389 <tr class="entry" id="controls_android.sensor.sensitivity"> 17390 <td class="entry_name 17391 " rowspan="5"> 17392 android.<wbr/>sensor.<wbr/>sensitivity 17393 </td> 17394 <td class="entry_type"> 17395 <span class="entry_type_name">int32</span> 17396 17397 <span class="entry_type_visibility"> [public]</span> 17398 17399 17400 <span class="entry_type_hwlevel">[full] </span> 17401 17402 17403 17404 17405 </td> <!-- entry_type --> 17406 17407 <td class="entry_description"> 17408 <p>The amount of gain applied to sensor data 17409before processing.<wbr/></p> 17410 </td> 17411 17412 <td class="entry_units"> 17413 ISO arithmetic units 17414 </td> 17415 17416 <td class="entry_range"> 17417 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 17418 </td> 17419 17420 <td class="entry_tags"> 17421 <ul class="entry_tags"> 17422 <li><a href="#tag_V1">V1</a></li> 17423 </ul> 17424 </td> 17425 17426 </tr> 17427 <tr class="entries_header"> 17428 <th class="th_details" colspan="5">Details</th> 17429 </tr> 17430 <tr class="entry_cont"> 17431 <td class="entry_details" colspan="5"> 17432 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 17433as defined in ISO 12232:2006.<wbr/></p> 17434<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 17435if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 17436is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 17437<p>If the camera device cannot apply the exact sensitivity 17438requested,<wbr/> it will reduce the gain to the nearest supported 17439value.<wbr/> The final sensitivity used will be available in the 17440output capture result.<wbr/></p> 17441 </td> 17442 </tr> 17443 17444 <tr class="entries_header"> 17445 <th class="th_details" colspan="5">HAL Implementation Details</th> 17446 </tr> 17447 <tr class="entry_cont"> 17448 <td class="entry_details" colspan="5"> 17449 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 17450 </td> 17451 </tr> 17452 17453 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17454 <!-- end of entry --> 17455 17456 17457 <tr class="entry" id="controls_android.sensor.testPatternData"> 17458 <td class="entry_name 17459 " rowspan="5"> 17460 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 17461 </td> 17462 <td class="entry_type"> 17463 <span class="entry_type_name">int32</span> 17464 <span class="entry_type_container">x</span> 17465 17466 <span class="entry_type_array"> 17467 4 17468 </span> 17469 <span class="entry_type_visibility"> [public]</span> 17470 17471 17472 17473 17474 17475 17476 </td> <!-- entry_type --> 17477 17478 <td class="entry_description"> 17479 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 17480when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 17481 </td> 17482 17483 <td class="entry_units"> 17484 </td> 17485 17486 <td class="entry_range"> 17487 </td> 17488 17489 <td class="entry_tags"> 17490 </td> 17491 17492 </tr> 17493 <tr class="entries_header"> 17494 <th class="th_details" colspan="5">Details</th> 17495 </tr> 17496 <tr class="entry_cont"> 17497 <td class="entry_details" colspan="5"> 17498 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 17499The camera device then uses the most significant X bits 17500that correspond to how many bits are in its Bayer raw sensor 17501output.<wbr/></p> 17502<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 1750310 most significant bits from each color channel.<wbr/></p> 17504 </td> 17505 </tr> 17506 17507 <tr class="entries_header"> 17508 <th class="th_details" colspan="5">HAL Implementation Details</th> 17509 </tr> 17510 <tr class="entry_cont"> 17511 <td class="entry_details" colspan="5"> 17512 17513 </td> 17514 </tr> 17515 17516 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17517 <!-- end of entry --> 17518 17519 17520 <tr class="entry" id="controls_android.sensor.testPatternMode"> 17521 <td class="entry_name 17522 " rowspan="5"> 17523 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 17524 </td> 17525 <td class="entry_type"> 17526 <span class="entry_type_name entry_type_name_enum">int32</span> 17527 17528 <span class="entry_type_visibility"> [public]</span> 17529 17530 17531 17532 17533 17534 <ul class="entry_type_enum"> 17535 <li> 17536 <span class="entry_type_enum_name">OFF</span> 17537 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 17538device returns captures from the image sensor.<wbr/></p> 17539<p>This is the default if the key is not set.<wbr/></p></span> 17540 </li> 17541 <li> 17542 <span class="entry_type_enum_name">SOLID_COLOR</span> 17543 <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 17544respective color channel provided in 17545<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 17546<p>For example:</p> 17547<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 17548</code></pre> 17549<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 17550<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 17551</code></pre> 17552<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 17553are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 17554 </li> 17555 <li> 17556 <span class="entry_type_enum_name">COLOR_BARS</span> 17557 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 17558<p>The vertical bars (left-to-right) are as follows:</p> 17559<ul> 17560<li>100% white</li> 17561<li>yellow</li> 17562<li>cyan</li> 17563<li>green</li> 17564<li>magenta</li> 17565<li>red</li> 17566<li>blue</li> 17567<li>black</li> 17568</ul> 17569<p>In general the image would look like the following:</p> 17570<pre><code>W Y C G M R B K 17571W Y C G M R B K 17572W Y C G M R B K 17573W Y C G M R B K 17574W Y C G M R B K 17575.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 17576.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 17577.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 17578 17579(B = Blue,<wbr/> K = Black) 17580</code></pre> 17581<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 17582When this is not possible,<wbr/> the bar size should be rounded 17583down to the nearest integer and the pattern can repeat 17584on the right side.<wbr/></p> 17585<p>Each bar's height must always take up the full sensor 17586pixel array height.<wbr/></p> 17587<p>Each pixel in this test pattern must be set to either 175880% intensity or 100% intensity.<wbr/></p></span> 17589 </li> 17590 <li> 17591 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 17592 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 17593each bar should start at its specified color at the top,<wbr/> 17594and fade to gray at the bottom.<wbr/></p> 17595<p>Furthermore each bar is further subdivided into a left and 17596right half.<wbr/> The left half should have a smooth gradient,<wbr/> 17597and the right half should have a quantized gradient.<wbr/></p> 17598<p>In particular,<wbr/> the right half's should consist of blocks of the 17599same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 17600<p>The least significant bits in the quantized gradient should 17601be copied from the most significant bits of the smooth gradient.<wbr/></p> 17602<p>The height of each bar should always be a multiple of 128.<wbr/> 17603When this is not the case,<wbr/> the pattern should repeat at the bottom 17604of the image.<wbr/></p></span> 17605 </li> 17606 <li> 17607 <span class="entry_type_enum_name">PN9</span> 17608 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 17609generated from a PN9 512-bit sequence (typically implemented 17610in hardware with a linear feedback shift register).<wbr/></p> 17611<p>The generator should be reset at the beginning of each frame,<wbr/> 17612and thus each subsequent raw frame with this test pattern should 17613be exactly the same as the last.<wbr/></p></span> 17614 </li> 17615 <li> 17616 <span class="entry_type_enum_name">CUSTOM1</span> 17617 <span class="entry_type_enum_value">256</span> 17618 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 17619available only on this camera device are at least this numeric 17620value.<wbr/></p> 17621<p>All of the custom test patterns will be static 17622(that is the raw image must not vary from frame to frame).<wbr/></p></span> 17623 </li> 17624 </ul> 17625 17626 </td> <!-- entry_type --> 17627 17628 <td class="entry_description"> 17629 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 17630doing a real exposure from the camera.<wbr/></p> 17631 </td> 17632 17633 <td class="entry_units"> 17634 </td> 17635 17636 <td class="entry_range"> 17637 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 17638 </td> 17639 17640 <td class="entry_tags"> 17641 </td> 17642 17643 </tr> 17644 <tr class="entries_header"> 17645 <th class="th_details" colspan="5">Details</th> 17646 </tr> 17647 <tr class="entry_cont"> 17648 <td class="entry_details" colspan="5"> 17649 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 17650by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 17651work as normal.<wbr/></p> 17652<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 17653occur (and that the test pattern remain unmodified,<wbr/> since the flash 17654would not actually affect it).<wbr/></p> 17655<p>Defaults to OFF.<wbr/></p> 17656 </td> 17657 </tr> 17658 17659 <tr class="entries_header"> 17660 <th class="th_details" colspan="5">HAL Implementation Details</th> 17661 </tr> 17662 <tr class="entry_cont"> 17663 <td class="entry_details" colspan="5"> 17664 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 17665<p>The HAL may choose to substitute test patterns from the sensor 17666with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 17667indistinguishable to the ISP whether the data came from the 17668sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 17669 </td> 17670 </tr> 17671 17672 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17673 <!-- end of entry --> 17674 17675 17676 17677 <!-- end of kind --> 17678 </tbody> 17679 <tr><td colspan="6" class="kind">static</td></tr> 17680 17681 <thead class="entries_header"> 17682 <tr> 17683 <th class="th_name">Property Name</th> 17684 <th class="th_type">Type</th> 17685 <th class="th_description">Description</th> 17686 <th class="th_units">Units</th> 17687 <th class="th_range">Range</th> 17688 <th class="th_tags">Tags</th> 17689 </tr> 17690 </thead> 17691 17692 <tbody> 17693 17694 17695 17696 17697 17698 17699 17700 17701 17702 17703 17704 17705 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 17706 <td class="entry_name 17707 " rowspan="5"> 17708 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 17709 </td> 17710 <td class="entry_type"> 17711 <span class="entry_type_name">int32</span> 17712 <span class="entry_type_container">x</span> 17713 17714 <span class="entry_type_array"> 17715 4 17716 </span> 17717 <span class="entry_type_visibility"> [public as rectangle]</span> 17718 17719 17720 <span class="entry_type_hwlevel">[legacy] </span> 17721 17722 17723 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 17724 17725 17726 </td> <!-- entry_type --> 17727 17728 <td class="entry_description"> 17729 <p>The area of the image sensor which corresponds to 17730active pixels.<wbr/></p> 17731 </td> 17732 17733 <td class="entry_units"> 17734 Pixel coordinates on the image sensor 17735 </td> 17736 17737 <td class="entry_range"> 17738 17739 </td> 17740 17741 <td class="entry_tags"> 17742 <ul class="entry_tags"> 17743 <li><a href="#tag_RAW">RAW</a></li> 17744 </ul> 17745 </td> 17746 17747 </tr> 17748 <tr class="entries_header"> 17749 <th class="th_details" colspan="5">Details</th> 17750 </tr> 17751 <tr class="entry_cont"> 17752 <td class="entry_details" colspan="5"> 17753 <p>This is the region of the sensor that actually receives light from the scene.<wbr/> 17754Therefore,<wbr/> the size of this region determines the maximum field of view and the maximum 17755number of pixels that an image from this sensor can contain.<wbr/></p> 17756<p>The rectangle is defined in terms of the full pixel array; (0,<wbr/>0) is the top-left of the 17757full pixel array,<wbr/> and the size of the full pixel array is given by 17758<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 17759<p>Most other keys listing pixel coordinates have their coordinate systems based on the 17760active array,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of the active array rectangle.<wbr/></p> 17761<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may 17762include black calibration pixels or other inactive regions.<wbr/></p> 17763 </td> 17764 </tr> 17765 17766 <tr class="entries_header"> 17767 <th class="th_details" colspan="5">HAL Implementation Details</th> 17768 </tr> 17769 <tr class="entry_cont"> 17770 <td class="entry_details" colspan="5"> 17771 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 17772>= <code>(0,<wbr/>0)</code>.<wbr/> 17773The <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> 17774 </td> 17775 </tr> 17776 17777 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17778 <!-- end of entry --> 17779 17780 17781 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 17782 <td class="entry_name 17783 " rowspan="3"> 17784 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 17785 </td> 17786 <td class="entry_type"> 17787 <span class="entry_type_name">int32</span> 17788 <span class="entry_type_container">x</span> 17789 17790 <span class="entry_type_array"> 17791 2 17792 </span> 17793 <span class="entry_type_visibility"> [public as rangeInt]</span> 17794 17795 17796 <span class="entry_type_hwlevel">[full] </span> 17797 17798 17799 <div class="entry_type_notes">Range of supported sensitivities</div> 17800 17801 17802 </td> <!-- entry_type --> 17803 17804 <td class="entry_description"> 17805 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this 17806camera device.<wbr/></p> 17807 </td> 17808 17809 <td class="entry_units"> 17810 </td> 17811 17812 <td class="entry_range"> 17813 <p>Min <= 100,<wbr/> Max >= 800</p> 17814 </td> 17815 17816 <td class="entry_tags"> 17817 <ul class="entry_tags"> 17818 <li><a href="#tag_BC">BC</a></li> 17819 <li><a href="#tag_V1">V1</a></li> 17820 </ul> 17821 </td> 17822 17823 </tr> 17824 <tr class="entries_header"> 17825 <th class="th_details" colspan="5">Details</th> 17826 </tr> 17827 <tr class="entry_cont"> 17828 <td class="entry_details" colspan="5"> 17829 <p>The values are the standard ISO sensitivity values,<wbr/> 17830as defined in ISO 12232:2006.<wbr/></p> 17831 </td> 17832 </tr> 17833 17834 17835 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17836 <!-- end of entry --> 17837 17838 17839 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 17840 <td class="entry_name 17841 " rowspan="1"> 17842 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 17843 </td> 17844 <td class="entry_type"> 17845 <span class="entry_type_name entry_type_name_enum">byte</span> 17846 17847 <span class="entry_type_visibility"> [public]</span> 17848 17849 17850 <span class="entry_type_hwlevel">[full] </span> 17851 17852 17853 17854 <ul class="entry_type_enum"> 17855 <li> 17856 <span class="entry_type_enum_name">RGGB</span> 17857 </li> 17858 <li> 17859 <span class="entry_type_enum_name">GRBG</span> 17860 </li> 17861 <li> 17862 <span class="entry_type_enum_name">GBRG</span> 17863 </li> 17864 <li> 17865 <span class="entry_type_enum_name">BGGR</span> 17866 </li> 17867 <li> 17868 <span class="entry_type_enum_name">RGB</span> 17869 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 17870values for each pixel,<wbr/> instead of just 1 16-bit value 17871per pixel.<wbr/></p></span> 17872 </li> 17873 </ul> 17874 17875 </td> <!-- entry_type --> 17876 17877 <td class="entry_description"> 17878 <p>The arrangement of color filters on sensor; 17879represents the colors in the top-left 2x2 section of 17880the sensor,<wbr/> in reading order.<wbr/></p> 17881 </td> 17882 17883 <td class="entry_units"> 17884 </td> 17885 17886 <td class="entry_range"> 17887 </td> 17888 17889 <td class="entry_tags"> 17890 <ul class="entry_tags"> 17891 <li><a href="#tag_RAW">RAW</a></li> 17892 </ul> 17893 </td> 17894 17895 </tr> 17896 17897 17898 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17899 <!-- end of entry --> 17900 17901 17902 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 17903 <td class="entry_name 17904 " rowspan="3"> 17905 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 17906 </td> 17907 <td class="entry_type"> 17908 <span class="entry_type_name">int64</span> 17909 <span class="entry_type_container">x</span> 17910 17911 <span class="entry_type_array"> 17912 2 17913 </span> 17914 <span class="entry_type_visibility"> [public as rangeLong]</span> 17915 17916 17917 <span class="entry_type_hwlevel">[full] </span> 17918 17919 17920 <div class="entry_type_notes">nanoseconds</div> 17921 17922 17923 </td> <!-- entry_type --> 17924 17925 <td class="entry_description"> 17926 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported 17927by this camera device.<wbr/></p> 17928 </td> 17929 17930 <td class="entry_units"> 17931 Nanoseconds 17932 </td> 17933 17934 <td class="entry_range"> 17935 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL 17936capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 17937the maximum exposure time will be greater than 100ms.<wbr/></p> 17938 </td> 17939 17940 <td class="entry_tags"> 17941 <ul class="entry_tags"> 17942 <li><a href="#tag_V1">V1</a></li> 17943 </ul> 17944 </td> 17945 17946 </tr> 17947 17948 <tr class="entries_header"> 17949 <th class="th_details" colspan="5">HAL Implementation Details</th> 17950 </tr> 17951 <tr class="entry_cont"> 17952 <td class="entry_details" colspan="5"> 17953 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 17954The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least 17955100ms.<wbr/></p> 17956 </td> 17957 </tr> 17958 17959 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17960 <!-- end of entry --> 17961 17962 17963 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 17964 <td class="entry_name 17965 " rowspan="5"> 17966 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 17967 </td> 17968 <td class="entry_type"> 17969 <span class="entry_type_name">int64</span> 17970 17971 <span class="entry_type_visibility"> [public]</span> 17972 17973 17974 <span class="entry_type_hwlevel">[full] </span> 17975 17976 17977 17978 17979 </td> <!-- entry_type --> 17980 17981 <td class="entry_description"> 17982 <p>The maximum possible frame duration (minimum frame rate) for 17983<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p> 17984 </td> 17985 17986 <td class="entry_units"> 17987 Nanoseconds 17988 </td> 17989 17990 <td class="entry_range"> 17991 <p>For FULL capability devices 17992(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p> 17993 </td> 17994 17995 <td class="entry_tags"> 17996 <ul class="entry_tags"> 17997 <li><a href="#tag_V1">V1</a></li> 17998 </ul> 17999 </td> 18000 18001 </tr> 18002 <tr class="entries_header"> 18003 <th class="th_details" colspan="5">Details</th> 18004 </tr> 18005 <tr class="entry_cont"> 18006 <td class="entry_details" colspan="5"> 18007 <p>Attempting to use frame durations beyond the maximum will result in the frame 18008duration being clipped to the maximum.<wbr/> See that control for a full definition of frame 18009durations.<wbr/></p> 18010<p>Refer to StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/>Size) for the minimum 18011frame duration values.<wbr/></p> 18012 </td> 18013 </tr> 18014 18015 <tr class="entries_header"> 18016 <th class="th_details" colspan="5">HAL Implementation Details</th> 18017 </tr> 18018 <tr class="entry_cont"> 18019 <td class="entry_details" colspan="5"> 18020 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18021The maximum of the range SHOULD be at least 180221 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 18023<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 18024equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 18025value (since exposure time overrides frame duration).<wbr/></p> 18026<p>Available minimum frame durations for JPEG must be no greater 18027than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 18028minimum frame durations (for that respective size).<wbr/></p> 18029<p>Since JPEG processing is considered offline and can take longer than 18030a single uncompressed capture,<wbr/> refer to 18031<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 18032for details about encoding this scenario.<wbr/></p> 18033 </td> 18034 </tr> 18035 18036 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18037 <!-- end of entry --> 18038 18039 18040 <tr class="entry" id="static_android.sensor.info.physicalSize"> 18041 <td class="entry_name 18042 " rowspan="5"> 18043 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 18044 </td> 18045 <td class="entry_type"> 18046 <span class="entry_type_name">float</span> 18047 <span class="entry_type_container">x</span> 18048 18049 <span class="entry_type_array"> 18050 2 18051 </span> 18052 <span class="entry_type_visibility"> [public as sizeF]</span> 18053 18054 18055 <span class="entry_type_hwlevel">[legacy] </span> 18056 18057 18058 <div class="entry_type_notes">width x height</div> 18059 18060 18061 </td> <!-- entry_type --> 18062 18063 <td class="entry_description"> 18064 <p>The physical dimensions of the full pixel 18065array.<wbr/></p> 18066 </td> 18067 18068 <td class="entry_units"> 18069 Millimeters 18070 </td> 18071 18072 <td class="entry_range"> 18073 </td> 18074 18075 <td class="entry_tags"> 18076 <ul class="entry_tags"> 18077 <li><a href="#tag_V1">V1</a></li> 18078 <li><a href="#tag_BC">BC</a></li> 18079 </ul> 18080 </td> 18081 18082 </tr> 18083 <tr class="entries_header"> 18084 <th class="th_details" colspan="5">Details</th> 18085 </tr> 18086 <tr class="entry_cont"> 18087 <td class="entry_details" colspan="5"> 18088 <p>This is the physical size of the sensor pixel 18089array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 18090 </td> 18091 </tr> 18092 18093 <tr class="entries_header"> 18094 <th class="th_details" colspan="5">HAL Implementation Details</th> 18095 </tr> 18096 <tr class="entry_cont"> 18097 <td class="entry_details" colspan="5"> 18098 <p>Needed for FOV calculation for old API</p> 18099 </td> 18100 </tr> 18101 18102 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18103 <!-- end of entry --> 18104 18105 18106 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 18107 <td class="entry_name 18108 " rowspan="3"> 18109 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 18110 </td> 18111 <td class="entry_type"> 18112 <span class="entry_type_name">int32</span> 18113 <span class="entry_type_container">x</span> 18114 18115 <span class="entry_type_array"> 18116 2 18117 </span> 18118 <span class="entry_type_visibility"> [public as size]</span> 18119 18120 18121 <span class="entry_type_hwlevel">[legacy] </span> 18122 18123 18124 18125 18126 </td> <!-- entry_type --> 18127 18128 <td class="entry_description"> 18129 <p>Dimensions of the full pixel array,<wbr/> possibly 18130including black calibration pixels.<wbr/></p> 18131 </td> 18132 18133 <td class="entry_units"> 18134 Pixels 18135 </td> 18136 18137 <td class="entry_range"> 18138 </td> 18139 18140 <td class="entry_tags"> 18141 <ul class="entry_tags"> 18142 <li><a href="#tag_RAW">RAW</a></li> 18143 <li><a href="#tag_BC">BC</a></li> 18144 </ul> 18145 </td> 18146 18147 </tr> 18148 <tr class="entries_header"> 18149 <th class="th_details" colspan="5">Details</th> 18150 </tr> 18151 <tr class="entry_cont"> 18152 <td class="entry_details" colspan="5"> 18153 <p>The pixel count of the full pixel array,<wbr/> 18154which covers <a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/></p> 18155<p>If a camera device supports raw sensor formats,<wbr/> either this 18156or <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is the maximum output 18157raw size listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> 18158If a size corresponding to pixelArraySize is listed,<wbr/> the resulting 18159raw sensor image will include black pixels.<wbr/></p> 18160<p>Some parts of the full pixel array may not receive light from the scene,<wbr/> 18161or are otherwise inactive.<wbr/> The <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> key 18162defines the rectangle of active pixels that actually forms an image.<wbr/></p> 18163 </td> 18164 </tr> 18165 18166 18167 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18168 <!-- end of entry --> 18169 18170 18171 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 18172 <td class="entry_name 18173 " rowspan="5"> 18174 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 18175 </td> 18176 <td class="entry_type"> 18177 <span class="entry_type_name">int32</span> 18178 18179 <span class="entry_type_visibility"> [public]</span> 18180 18181 18182 18183 18184 18185 18186 </td> <!-- entry_type --> 18187 18188 <td class="entry_description"> 18189 <p>Maximum raw value output by sensor.<wbr/></p> 18190 </td> 18191 18192 <td class="entry_units"> 18193 </td> 18194 18195 <td class="entry_range"> 18196 <p>> 255 (8-bit output)</p> 18197 </td> 18198 18199 <td class="entry_tags"> 18200 <ul class="entry_tags"> 18201 <li><a href="#tag_RAW">RAW</a></li> 18202 </ul> 18203 </td> 18204 18205 </tr> 18206 <tr class="entries_header"> 18207 <th class="th_details" colspan="5">Details</th> 18208 </tr> 18209 <tr class="entry_cont"> 18210 <td class="entry_details" colspan="5"> 18211 <p>This specifies the fully-saturated encoding level for the raw 18212sample values from the sensor.<wbr/> This is typically caused by the 18213sensor becoming highly non-linear or clipping.<wbr/> The minimum for 18214each channel is specified by the offset in the 18215<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p> 18216<p>The white level is typically determined either by sensor bit depth 18217(8-14 bits is expected),<wbr/> or by the point where the sensor response 18218becomes too non-linear to be useful.<wbr/> The default value for this is 18219maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 18220 </td> 18221 </tr> 18222 18223 <tr class="entries_header"> 18224 <th class="th_details" colspan="5">HAL Implementation Details</th> 18225 </tr> 18226 <tr class="entry_cont"> 18227 <td class="entry_details" colspan="5"> 18228 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 18229so the value for linear sensors should not be significantly lower 18230than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 18231 </td> 18232 </tr> 18233 18234 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18235 <!-- end of entry --> 18236 18237 18238 <tr class="entry" id="static_android.sensor.info.timestampSource"> 18239 <td class="entry_name 18240 " rowspan="3"> 18241 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source 18242 </td> 18243 <td class="entry_type"> 18244 <span class="entry_type_name entry_type_name_enum">byte</span> 18245 18246 <span class="entry_type_visibility"> [public]</span> 18247 18248 18249 <span class="entry_type_hwlevel">[legacy] </span> 18250 18251 18252 18253 <ul class="entry_type_enum"> 18254 <li> 18255 <span class="entry_type_enum_name">UNKNOWN</span> 18256 <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/> 18257but can not be compared to timestamps from other subsystems 18258(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different 18259camera devices in the same system.<wbr/> Timestamps between streams and results for 18260a single camera instance are comparable,<wbr/> and the timestamps for all buffers 18261and the result metadata generated by a single capture are identical.<wbr/></p></span> 18262 </li> 18263 <li> 18264 <span class="entry_type_enum_name">REALTIME</span> 18265 <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 18266android.<wbr/>os.<wbr/>System<wbr/>Clock#elapsed<wbr/>Realtime<wbr/>Nanos(),<wbr/> 18267and they can be compared to other timestamps using that base.<wbr/></p></span> 18268 </li> 18269 </ul> 18270 18271 </td> <!-- entry_type --> 18272 18273 <td class="entry_description"> 18274 <p>The time base source for sensor capture start timestamps.<wbr/></p> 18275 </td> 18276 18277 <td class="entry_units"> 18278 </td> 18279 18280 <td class="entry_range"> 18281 </td> 18282 18283 <td class="entry_tags"> 18284 <ul class="entry_tags"> 18285 <li><a href="#tag_V1">V1</a></li> 18286 </ul> 18287 </td> 18288 18289 </tr> 18290 <tr class="entries_header"> 18291 <th class="th_details" colspan="5">Details</th> 18292 </tr> 18293 <tr class="entry_cont"> 18294 <td class="entry_details" colspan="5"> 18295 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but 18296may not based on a time source that can be compared to other system time sources.<wbr/></p> 18297<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they 18298can be compared against other system time sources/<wbr/>timestamps.<wbr/></p> 18299 </td> 18300 </tr> 18301 18302 18303 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18304 <!-- end of entry --> 18305 18306 18307 <tr class="entry" id="static_android.sensor.info.lensShadingApplied"> 18308 <td class="entry_name 18309 " rowspan="3"> 18310 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied 18311 </td> 18312 <td class="entry_type"> 18313 <span class="entry_type_name entry_type_name_enum">byte</span> 18314 18315 <span class="entry_type_visibility"> [public as boolean]</span> 18316 18317 18318 18319 18320 18321 <ul class="entry_type_enum"> 18322 <li> 18323 <span class="entry_type_enum_name">FALSE</span> 18324 </li> 18325 <li> 18326 <span class="entry_type_enum_name">TRUE</span> 18327 </li> 18328 </ul> 18329 18330 </td> <!-- entry_type --> 18331 18332 <td class="entry_description"> 18333 <p>Whether the RAW images output from this camera device are subject to 18334lens shading correction.<wbr/></p> 18335 </td> 18336 18337 <td class="entry_units"> 18338 </td> 18339 18340 <td class="entry_range"> 18341 </td> 18342 18343 <td class="entry_tags"> 18344 </td> 18345 18346 </tr> 18347 <tr class="entries_header"> 18348 <th class="th_details" colspan="5">Details</th> 18349 </tr> 18350 <tr class="entry_cont"> 18351 <td class="entry_details" colspan="5"> 18352 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will 18353have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will 18354not be adjusted for lens shading correction.<wbr/> 18355See <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> 18356<p>This key will be <code>null</code> for all devices do not report this information.<wbr/> 18357Devices with RAW capability will always report this information in this key.<wbr/></p> 18358 </td> 18359 </tr> 18360 18361 18362 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18363 <!-- end of entry --> 18364 18365 18366 18367 18368 18369 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 18370 <td class="entry_name 18371 " rowspan="5"> 18372 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 18373 </td> 18374 <td class="entry_type"> 18375 <span class="entry_type_name entry_type_name_enum">byte</span> 18376 18377 <span class="entry_type_visibility"> [public]</span> 18378 18379 18380 18381 18382 18383 <ul class="entry_type_enum"> 18384 <li> 18385 <span class="entry_type_enum_name">DAYLIGHT</span> 18386 <span class="entry_type_enum_value">1</span> 18387 </li> 18388 <li> 18389 <span class="entry_type_enum_name">FLUORESCENT</span> 18390 <span class="entry_type_enum_value">2</span> 18391 </li> 18392 <li> 18393 <span class="entry_type_enum_name">TUNGSTEN</span> 18394 <span class="entry_type_enum_value">3</span> 18395 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 18396 </li> 18397 <li> 18398 <span class="entry_type_enum_name">FLASH</span> 18399 <span class="entry_type_enum_value">4</span> 18400 </li> 18401 <li> 18402 <span class="entry_type_enum_name">FINE_WEATHER</span> 18403 <span class="entry_type_enum_value">9</span> 18404 </li> 18405 <li> 18406 <span class="entry_type_enum_name">CLOUDY_WEATHER</span> 18407 <span class="entry_type_enum_value">10</span> 18408 </li> 18409 <li> 18410 <span class="entry_type_enum_name">SHADE</span> 18411 <span class="entry_type_enum_value">11</span> 18412 </li> 18413 <li> 18414 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span> 18415 <span class="entry_type_enum_value">12</span> 18416 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 18417 </li> 18418 <li> 18419 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span> 18420 <span class="entry_type_enum_value">13</span> 18421 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 18422 </li> 18423 <li> 18424 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span> 18425 <span class="entry_type_enum_value">14</span> 18426 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 18427 </li> 18428 <li> 18429 <span class="entry_type_enum_name">WHITE_FLUORESCENT</span> 18430 <span class="entry_type_enum_value">15</span> 18431 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 18432 </li> 18433 <li> 18434 <span class="entry_type_enum_name">STANDARD_A</span> 18435 <span class="entry_type_enum_value">17</span> 18436 </li> 18437 <li> 18438 <span class="entry_type_enum_name">STANDARD_B</span> 18439 <span class="entry_type_enum_value">18</span> 18440 </li> 18441 <li> 18442 <span class="entry_type_enum_name">STANDARD_C</span> 18443 <span class="entry_type_enum_value">19</span> 18444 </li> 18445 <li> 18446 <span class="entry_type_enum_name">D55</span> 18447 <span class="entry_type_enum_value">20</span> 18448 </li> 18449 <li> 18450 <span class="entry_type_enum_name">D65</span> 18451 <span class="entry_type_enum_value">21</span> 18452 </li> 18453 <li> 18454 <span class="entry_type_enum_name">D75</span> 18455 <span class="entry_type_enum_value">22</span> 18456 </li> 18457 <li> 18458 <span class="entry_type_enum_name">D50</span> 18459 <span class="entry_type_enum_value">23</span> 18460 </li> 18461 <li> 18462 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span> 18463 <span class="entry_type_enum_value">24</span> 18464 </li> 18465 </ul> 18466 18467 </td> <!-- entry_type --> 18468 18469 <td class="entry_description"> 18470 <p>The standard reference illuminant used as the scene light source when 18471calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 18472<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 18473<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> 18474 </td> 18475 18476 <td class="entry_units"> 18477 </td> 18478 18479 <td class="entry_range"> 18480 </td> 18481 18482 <td class="entry_tags"> 18483 <ul class="entry_tags"> 18484 <li><a href="#tag_RAW">RAW</a></li> 18485 </ul> 18486 </td> 18487 18488 </tr> 18489 <tr class="entries_header"> 18490 <th class="th_details" colspan="5">Details</th> 18491 </tr> 18492 <tr class="entry_cont"> 18493 <td class="entry_details" colspan="5"> 18494 <p>The values in this key correspond to the values defined for the 18495EXIF LightSource tag.<wbr/> These illuminants are standard light sources 18496that are often used calibrating camera devices.<wbr/></p> 18497<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 18498<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 18499<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> 18500<p>Some devices may choose to provide a second set of calibration 18501information for improved quality,<wbr/> including 18502<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> 18503 </td> 18504 </tr> 18505 18506 <tr class="entries_header"> 18507 <th class="th_details" colspan="5">HAL Implementation Details</th> 18508 </tr> 18509 <tr class="entry_cont"> 18510 <td class="entry_details" colspan="5"> 18511 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 18512and corresponding matrices must be present to support the RAW capability 18513and DNG output.<wbr/></p> 18514<p>When producing raw images with a color profile that has only been 18515calibrated against a single light source,<wbr/> it is valid to omit 18516<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the 18517<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/> 18518and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 18519<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be 18520chosen so that it is representative of typical scene lighting.<wbr/> In 18521general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> 18522<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and 18523<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be 18524chosen to represent the typical range of scene lighting conditions.<wbr/> 18525In general,<wbr/> low color temperature illuminant such as Standard-A will 18526be chosen for the first reference illuminant and a higher color 18527temperature illuminant such as D65 will be chosen for the second 18528reference illuminant.<wbr/></p> 18529 </td> 18530 </tr> 18531 18532 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18533 <!-- end of entry --> 18534 18535 18536 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 18537 <td class="entry_name 18538 " rowspan="3"> 18539 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 18540 </td> 18541 <td class="entry_type"> 18542 <span class="entry_type_name">byte</span> 18543 18544 <span class="entry_type_visibility"> [public]</span> 18545 18546 18547 18548 18549 18550 18551 </td> <!-- entry_type --> 18552 18553 <td class="entry_description"> 18554 <p>The standard reference illuminant used as the scene light source when 18555calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 18556<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 18557<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 18558 </td> 18559 18560 <td class="entry_units"> 18561 </td> 18562 18563 <td class="entry_range"> 18564 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p> 18565 </td> 18566 18567 <td class="entry_tags"> 18568 <ul class="entry_tags"> 18569 <li><a href="#tag_RAW">RAW</a></li> 18570 </ul> 18571 </td> 18572 18573 </tr> 18574 <tr class="entries_header"> 18575 <th class="th_details" colspan="5">Details</th> 18576 </tr> 18577 <tr class="entry_cont"> 18578 <td class="entry_details" colspan="5"> 18579 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p> 18580<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 18581<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 18582<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> 18583 </td> 18584 </tr> 18585 18586 18587 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18588 <!-- end of entry --> 18589 18590 18591 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 18592 <td class="entry_name 18593 " rowspan="3"> 18594 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 18595 </td> 18596 <td class="entry_type"> 18597 <span class="entry_type_name">rational</span> 18598 <span class="entry_type_container">x</span> 18599 18600 <span class="entry_type_array"> 18601 3 x 3 18602 </span> 18603 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 18604 18605 18606 18607 18608 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 18609 18610 18611 </td> <!-- entry_type --> 18612 18613 <td class="entry_description"> 18614 <p>A per-device calibration transform matrix that maps from the 18615reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> 18616 </td> 18617 18618 <td class="entry_units"> 18619 </td> 18620 18621 <td class="entry_range"> 18622 </td> 18623 18624 <td class="entry_tags"> 18625 <ul class="entry_tags"> 18626 <li><a href="#tag_RAW">RAW</a></li> 18627 </ul> 18628 </td> 18629 18630 </tr> 18631 <tr class="entries_header"> 18632 <th class="th_details" colspan="5">Details</th> 18633 </tr> 18634 <tr class="entry_cont"> 18635 <td class="entry_details" colspan="5"> 18636 <p>This matrix is used to correct for per-device variations in the 18637sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 18638<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 18639contains a per-device calibration transform that maps colors 18640from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 18641colorspace) into this camera device's native sensor color 18642space under the first reference illuminant 18643(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 18644 </td> 18645 </tr> 18646 18647 18648 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18649 <!-- end of entry --> 18650 18651 18652 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 18653 <td class="entry_name 18654 " rowspan="3"> 18655 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 18656 </td> 18657 <td class="entry_type"> 18658 <span class="entry_type_name">rational</span> 18659 <span class="entry_type_container">x</span> 18660 18661 <span class="entry_type_array"> 18662 3 x 3 18663 </span> 18664 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 18665 18666 18667 18668 18669 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 18670 18671 18672 </td> <!-- entry_type --> 18673 18674 <td class="entry_description"> 18675 <p>A per-device calibration transform matrix that maps from the 18676reference sensor colorspace to the actual device sensor colorspace 18677(this is the colorspace of the raw buffer data).<wbr/></p> 18678 </td> 18679 18680 <td class="entry_units"> 18681 </td> 18682 18683 <td class="entry_range"> 18684 </td> 18685 18686 <td class="entry_tags"> 18687 <ul class="entry_tags"> 18688 <li><a href="#tag_RAW">RAW</a></li> 18689 </ul> 18690 </td> 18691 18692 </tr> 18693 <tr class="entries_header"> 18694 <th class="th_details" colspan="5">Details</th> 18695 </tr> 18696 <tr class="entry_cont"> 18697 <td class="entry_details" colspan="5"> 18698 <p>This matrix is used to correct for per-device variations in the 18699sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 18700<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 18701contains a per-device calibration transform that maps colors 18702from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 18703colorspace) into this camera device's native sensor color 18704space under the second reference illuminant 18705(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 18706<p>This matrix will only be present if the second reference 18707illuminant is present.<wbr/></p> 18708 </td> 18709 </tr> 18710 18711 18712 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18713 <!-- end of entry --> 18714 18715 18716 <tr class="entry" id="static_android.sensor.colorTransform1"> 18717 <td class="entry_name 18718 " rowspan="3"> 18719 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 18720 </td> 18721 <td class="entry_type"> 18722 <span class="entry_type_name">rational</span> 18723 <span class="entry_type_container">x</span> 18724 18725 <span class="entry_type_array"> 18726 3 x 3 18727 </span> 18728 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 18729 18730 18731 18732 18733 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 18734 18735 18736 </td> <!-- entry_type --> 18737 18738 <td class="entry_description"> 18739 <p>A matrix that transforms color values from CIE XYZ color space to 18740reference sensor color space.<wbr/></p> 18741 </td> 18742 18743 <td class="entry_units"> 18744 </td> 18745 18746 <td class="entry_range"> 18747 </td> 18748 18749 <td class="entry_tags"> 18750 <ul class="entry_tags"> 18751 <li><a href="#tag_RAW">RAW</a></li> 18752 </ul> 18753 </td> 18754 18755 </tr> 18756 <tr class="entries_header"> 18757 <th class="th_details" colspan="5">Details</th> 18758 </tr> 18759 <tr class="entry_cont"> 18760 <td class="entry_details" colspan="5"> 18761 <p>This matrix is used to convert from the standard CIE XYZ color 18762space to the reference sensor colorspace,<wbr/> and is used when processing 18763raw buffer data.<wbr/></p> 18764<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 18765contains a color transform matrix that maps colors from the CIE 18766XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 18767"golden module" colorspace) under the first reference illuminant 18768(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 18769<p>The white points chosen in both the reference sensor color space 18770and the CIE XYZ colorspace when calculating this transform will 18771match the standard white point for the first reference illuminant 18772(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 18773 </td> 18774 </tr> 18775 18776 18777 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18778 <!-- end of entry --> 18779 18780 18781 <tr class="entry" id="static_android.sensor.colorTransform2"> 18782 <td class="entry_name 18783 " rowspan="3"> 18784 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 18785 </td> 18786 <td class="entry_type"> 18787 <span class="entry_type_name">rational</span> 18788 <span class="entry_type_container">x</span> 18789 18790 <span class="entry_type_array"> 18791 3 x 3 18792 </span> 18793 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 18794 18795 18796 18797 18798 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 18799 18800 18801 </td> <!-- entry_type --> 18802 18803 <td class="entry_description"> 18804 <p>A matrix that transforms color values from CIE XYZ color space to 18805reference sensor color space.<wbr/></p> 18806 </td> 18807 18808 <td class="entry_units"> 18809 </td> 18810 18811 <td class="entry_range"> 18812 </td> 18813 18814 <td class="entry_tags"> 18815 <ul class="entry_tags"> 18816 <li><a href="#tag_RAW">RAW</a></li> 18817 </ul> 18818 </td> 18819 18820 </tr> 18821 <tr class="entries_header"> 18822 <th class="th_details" colspan="5">Details</th> 18823 </tr> 18824 <tr class="entry_cont"> 18825 <td class="entry_details" colspan="5"> 18826 <p>This matrix is used to convert from the standard CIE XYZ color 18827space to the reference sensor colorspace,<wbr/> and is used when processing 18828raw buffer data.<wbr/></p> 18829<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 18830contains a color transform matrix that maps colors from the CIE 18831XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 18832"golden module" colorspace) under the second reference illuminant 18833(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 18834<p>The white points chosen in both the reference sensor color space 18835and the CIE XYZ colorspace when calculating this transform will 18836match the standard white point for the second reference illuminant 18837(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 18838<p>This matrix will only be present if the second reference 18839illuminant is present.<wbr/></p> 18840 </td> 18841 </tr> 18842 18843 18844 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18845 <!-- end of entry --> 18846 18847 18848 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 18849 <td class="entry_name 18850 " rowspan="3"> 18851 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 18852 </td> 18853 <td class="entry_type"> 18854 <span class="entry_type_name">rational</span> 18855 <span class="entry_type_container">x</span> 18856 18857 <span class="entry_type_array"> 18858 3 x 3 18859 </span> 18860 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 18861 18862 18863 18864 18865 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 18866 18867 18868 </td> <!-- entry_type --> 18869 18870 <td class="entry_description"> 18871 <p>A matrix that transforms white balanced camera colors from the reference 18872sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 18873 </td> 18874 18875 <td class="entry_units"> 18876 </td> 18877 18878 <td class="entry_range"> 18879 </td> 18880 18881 <td class="entry_tags"> 18882 <ul class="entry_tags"> 18883 <li><a href="#tag_RAW">RAW</a></li> 18884 </ul> 18885 </td> 18886 18887 </tr> 18888 <tr class="entries_header"> 18889 <th class="th_details" colspan="5">Details</th> 18890 </tr> 18891 <tr class="entry_cont"> 18892 <td class="entry_details" colspan="5"> 18893 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 18894is used when processing raw buffer data.<wbr/></p> 18895<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 18896a color transform matrix that maps white balanced colors from the 18897reference sensor color space to the CIE XYZ color space with a D50 white 18898point.<wbr/></p> 18899<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 18900this matrix is chosen so that the standard white point for this reference 18901illuminant in the reference sensor colorspace is mapped to D50 in the 18902CIE XYZ colorspace.<wbr/></p> 18903 </td> 18904 </tr> 18905 18906 18907 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18908 <!-- end of entry --> 18909 18910 18911 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 18912 <td class="entry_name 18913 " rowspan="3"> 18914 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 18915 </td> 18916 <td class="entry_type"> 18917 <span class="entry_type_name">rational</span> 18918 <span class="entry_type_container">x</span> 18919 18920 <span class="entry_type_array"> 18921 3 x 3 18922 </span> 18923 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 18924 18925 18926 18927 18928 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 18929 18930 18931 </td> <!-- entry_type --> 18932 18933 <td class="entry_description"> 18934 <p>A matrix that transforms white balanced camera colors from the reference 18935sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 18936 </td> 18937 18938 <td class="entry_units"> 18939 </td> 18940 18941 <td class="entry_range"> 18942 </td> 18943 18944 <td class="entry_tags"> 18945 <ul class="entry_tags"> 18946 <li><a href="#tag_RAW">RAW</a></li> 18947 </ul> 18948 </td> 18949 18950 </tr> 18951 <tr class="entries_header"> 18952 <th class="th_details" colspan="5">Details</th> 18953 </tr> 18954 <tr class="entry_cont"> 18955 <td class="entry_details" colspan="5"> 18956 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 18957is used when processing raw buffer data.<wbr/></p> 18958<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 18959a color transform matrix that maps white balanced colors from the 18960reference sensor color space to the CIE XYZ color space with a D50 white 18961point.<wbr/></p> 18962<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 18963this matrix is chosen so that the standard white point for this reference 18964illuminant in the reference sensor colorspace is mapped to D50 in the 18965CIE XYZ colorspace.<wbr/></p> 18966<p>This matrix will only be present if the second reference 18967illuminant is present.<wbr/></p> 18968 </td> 18969 </tr> 18970 18971 18972 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18973 <!-- end of entry --> 18974 18975 18976 <tr class="entry" id="static_android.sensor.baseGainFactor"> 18977 <td class="entry_name 18978 " rowspan="1"> 18979 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 18980 </td> 18981 <td class="entry_type"> 18982 <span class="entry_type_name">rational</span> 18983 18984 <span class="entry_type_visibility"> [system]</span> 18985 18986 18987 18988 18989 18990 18991 </td> <!-- entry_type --> 18992 18993 <td class="entry_description"> 18994 <p>Gain factor from electrons to raw units when 18995ISO=100</p> 18996 </td> 18997 18998 <td class="entry_units"> 18999 </td> 19000 19001 <td class="entry_range"> 19002 </td> 19003 19004 <td class="entry_tags"> 19005 <ul class="entry_tags"> 19006 <li><a href="#tag_FUTURE">FUTURE</a></li> 19007 </ul> 19008 </td> 19009 19010 </tr> 19011 19012 19013 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19014 <!-- end of entry --> 19015 19016 19017 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 19018 <td class="entry_name 19019 " rowspan="5"> 19020 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 19021 </td> 19022 <td class="entry_type"> 19023 <span class="entry_type_name">int32</span> 19024 <span class="entry_type_container">x</span> 19025 19026 <span class="entry_type_array"> 19027 4 19028 </span> 19029 <span class="entry_type_visibility"> [public as blackLevelPattern]</span> 19030 19031 19032 19033 19034 <div class="entry_type_notes">2x2 raw count block</div> 19035 19036 19037 </td> <!-- entry_type --> 19038 19039 <td class="entry_description"> 19040 <p>A fixed black level offset for each of the color filter arrangement 19041(CFA) mosaic channels.<wbr/></p> 19042 </td> 19043 19044 <td class="entry_units"> 19045 </td> 19046 19047 <td class="entry_range"> 19048 <p>>= 0 for each.<wbr/></p> 19049 </td> 19050 19051 <td class="entry_tags"> 19052 <ul class="entry_tags"> 19053 <li><a href="#tag_RAW">RAW</a></li> 19054 </ul> 19055 </td> 19056 19057 </tr> 19058 <tr class="entries_header"> 19059 <th class="th_details" colspan="5">Details</th> 19060 </tr> 19061 <tr class="entry_cont"> 19062 <td class="entry_details" colspan="5"> 19063 <p>This key specifies the zero light value for each of the CFA mosaic 19064channels in the camera sensor.<wbr/> The maximal value output by the 19065sensor 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> 19066<p>The values are given in the same order as channels listed for the CFA 19067layout 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 19068nth value given corresponds to the black level offset for the nth 19069color channel listed in the CFA.<wbr/></p> 19070 </td> 19071 </tr> 19072 19073 <tr class="entries_header"> 19074 <th class="th_details" colspan="5">HAL Implementation Details</th> 19075 </tr> 19076 <tr class="entry_cont"> 19077 <td class="entry_details" colspan="5"> 19078 <p>The values are given in row-column scan order,<wbr/> with the first value 19079corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 19080 </td> 19081 </tr> 19082 19083 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19084 <!-- end of entry --> 19085 19086 19087 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 19088 <td class="entry_name 19089 " rowspan="3"> 19090 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 19091 </td> 19092 <td class="entry_type"> 19093 <span class="entry_type_name">int32</span> 19094 19095 <span class="entry_type_visibility"> [public]</span> 19096 19097 19098 <span class="entry_type_hwlevel">[full] </span> 19099 19100 19101 19102 19103 </td> <!-- entry_type --> 19104 19105 <td class="entry_description"> 19106 <p>Maximum sensitivity that is implemented 19107purely through analog gain.<wbr/></p> 19108 </td> 19109 19110 <td class="entry_units"> 19111 </td> 19112 19113 <td class="entry_range"> 19114 </td> 19115 19116 <td class="entry_tags"> 19117 <ul class="entry_tags"> 19118 <li><a href="#tag_V1">V1</a></li> 19119 <li><a href="#tag_FULL">FULL</a></li> 19120 </ul> 19121 </td> 19122 19123 </tr> 19124 <tr class="entries_header"> 19125 <th class="th_details" colspan="5">Details</th> 19126 </tr> 19127 <tr class="entry_cont"> 19128 <td class="entry_details" colspan="5"> 19129 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 19130equal to this,<wbr/> all applied gain must be analog.<wbr/> For 19131values above this,<wbr/> the gain applied can be a mix of analog and 19132digital.<wbr/></p> 19133 </td> 19134 </tr> 19135 19136 19137 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19138 <!-- end of entry --> 19139 19140 19141 <tr class="entry" id="static_android.sensor.orientation"> 19142 <td class="entry_name 19143 " rowspan="3"> 19144 android.<wbr/>sensor.<wbr/>orientation 19145 </td> 19146 <td class="entry_type"> 19147 <span class="entry_type_name">int32</span> 19148 19149 <span class="entry_type_visibility"> [public]</span> 19150 19151 19152 <span class="entry_type_hwlevel">[legacy] </span> 19153 19154 19155 19156 19157 </td> <!-- entry_type --> 19158 19159 <td class="entry_description"> 19160 <p>Clockwise angle through which the output image needs to be rotated to be 19161upright on the device screen in its native orientation.<wbr/></p> 19162 </td> 19163 19164 <td class="entry_units"> 19165 Degrees of clockwise rotation; always a multiple of 19166 90 19167 </td> 19168 19169 <td class="entry_range"> 19170 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 19171 </td> 19172 19173 <td class="entry_tags"> 19174 <ul class="entry_tags"> 19175 <li><a href="#tag_BC">BC</a></li> 19176 </ul> 19177 </td> 19178 19179 </tr> 19180 <tr class="entries_header"> 19181 <th class="th_details" colspan="5">Details</th> 19182 </tr> 19183 <tr class="entry_cont"> 19184 <td class="entry_details" colspan="5"> 19185 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in 19186the sensor's coordinate system.<wbr/></p> 19187 </td> 19188 </tr> 19189 19190 19191 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19192 <!-- end of entry --> 19193 19194 19195 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 19196 <td class="entry_name 19197 " rowspan="3"> 19198 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 19199 </td> 19200 <td class="entry_type"> 19201 <span class="entry_type_name">int32</span> 19202 <span class="entry_type_container">x</span> 19203 19204 <span class="entry_type_array"> 19205 3 19206 </span> 19207 <span class="entry_type_visibility"> [system]</span> 19208 19209 19210 19211 19212 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 19213 19214 19215 </td> <!-- entry_type --> 19216 19217 <td class="entry_description"> 19218 <p>The number of input samples for each dimension of 19219<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 19220 </td> 19221 19222 <td class="entry_units"> 19223 </td> 19224 19225 <td class="entry_range"> 19226 <p>Hue >= 1,<wbr/> 19227Saturation >= 2,<wbr/> 19228Value >= 1</p> 19229 </td> 19230 19231 <td class="entry_tags"> 19232 <ul class="entry_tags"> 19233 <li><a href="#tag_RAW">RAW</a></li> 19234 </ul> 19235 </td> 19236 19237 </tr> 19238 <tr class="entries_header"> 19239 <th class="th_details" colspan="5">Details</th> 19240 </tr> 19241 <tr class="entry_cont"> 19242 <td class="entry_details" colspan="5"> 19243 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 19244dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 19245dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 19246element.<wbr/></p> 19247 </td> 19248 </tr> 19249 19250 19251 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19252 <!-- end of entry --> 19253 19254 19255 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 19256 <td class="entry_name 19257 " rowspan="5"> 19258 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 19259 </td> 19260 <td class="entry_type"> 19261 <span class="entry_type_name">int32</span> 19262 <span class="entry_type_container">x</span> 19263 19264 <span class="entry_type_array"> 19265 n 19266 </span> 19267 <span class="entry_type_visibility"> [public]</span> 19268 19269 19270 19271 19272 <div class="entry_type_notes">list of enums</div> 19273 19274 19275 </td> <!-- entry_type --> 19276 19277 <td class="entry_description"> 19278 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> 19279supported by this camera device.<wbr/></p> 19280 </td> 19281 19282 <td class="entry_units"> 19283 </td> 19284 19285 <td class="entry_range"> 19286 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p> 19287 </td> 19288 19289 <td class="entry_tags"> 19290 </td> 19291 19292 </tr> 19293 <tr class="entries_header"> 19294 <th class="th_details" colspan="5">Details</th> 19295 </tr> 19296 <tr class="entry_cont"> 19297 <td class="entry_details" colspan="5"> 19298 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p> 19299 </td> 19300 </tr> 19301 19302 <tr class="entries_header"> 19303 <th class="th_details" colspan="5">HAL Implementation Details</th> 19304 </tr> 19305 <tr class="entry_cont"> 19306 <td class="entry_details" colspan="5"> 19307 <p>All custom modes must be >= CUSTOM1.<wbr/></p> 19308 </td> 19309 </tr> 19310 19311 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19312 <!-- end of entry --> 19313 19314 19315 19316 <!-- end of kind --> 19317 </tbody> 19318 <tr><td colspan="6" class="kind">dynamic</td></tr> 19319 19320 <thead class="entries_header"> 19321 <tr> 19322 <th class="th_name">Property Name</th> 19323 <th class="th_type">Type</th> 19324 <th class="th_description">Description</th> 19325 <th class="th_units">Units</th> 19326 <th class="th_range">Range</th> 19327 <th class="th_tags">Tags</th> 19328 </tr> 19329 </thead> 19330 19331 <tbody> 19332 19333 19334 19335 19336 19337 19338 19339 19340 19341 19342 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 19343 <td class="entry_name 19344 " rowspan="3"> 19345 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 19346 </td> 19347 <td class="entry_type"> 19348 <span class="entry_type_name">int64</span> 19349 19350 <span class="entry_type_visibility"> [public]</span> 19351 19352 19353 <span class="entry_type_hwlevel">[full] </span> 19354 19355 19356 19357 19358 </td> <!-- entry_type --> 19359 19360 <td class="entry_description"> 19361 <p>Duration each pixel is exposed to 19362light.<wbr/></p> 19363 </td> 19364 19365 <td class="entry_units"> 19366 Nanoseconds 19367 </td> 19368 19369 <td class="entry_range"> 19370 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 19371 </td> 19372 19373 <td class="entry_tags"> 19374 <ul class="entry_tags"> 19375 <li><a href="#tag_V1">V1</a></li> 19376 </ul> 19377 </td> 19378 19379 </tr> 19380 <tr class="entries_header"> 19381 <th class="th_details" colspan="5">Details</th> 19382 </tr> 19383 <tr class="entry_cont"> 19384 <td class="entry_details" colspan="5"> 19385 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 19386duration exposed to the nearest possible value (rather than expose longer).<wbr/> 19387The final exposure time used will be available in the output capture result.<wbr/></p> 19388<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 19389OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 19390 </td> 19391 </tr> 19392 19393 19394 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19395 <!-- end of entry --> 19396 19397 19398 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 19399 <td class="entry_name 19400 " rowspan="5"> 19401 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 19402 </td> 19403 <td class="entry_type"> 19404 <span class="entry_type_name">int64</span> 19405 19406 <span class="entry_type_visibility"> [public]</span> 19407 19408 19409 <span class="entry_type_hwlevel">[full] </span> 19410 19411 19412 19413 19414 </td> <!-- entry_type --> 19415 19416 <td class="entry_description"> 19417 <p>Duration from start of frame exposure to 19418start of next frame exposure.<wbr/></p> 19419 </td> 19420 19421 <td class="entry_units"> 19422 Nanoseconds 19423 </td> 19424 19425 <td class="entry_range"> 19426 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 19427<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 19428is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 19429 </td> 19430 19431 <td class="entry_tags"> 19432 <ul class="entry_tags"> 19433 <li><a href="#tag_V1">V1</a></li> 19434 </ul> 19435 </td> 19436 19437 </tr> 19438 <tr class="entries_header"> 19439 <th class="th_details" colspan="5">Details</th> 19440 </tr> 19441 <tr class="entry_cont"> 19442 <td class="entry_details" colspan="5"> 19443 <p>The maximum frame rate that can be supported by a camera subsystem is 19444a function of many factors:</p> 19445<ul> 19446<li>Requested resolutions of output image streams</li> 19447<li>Availability of binning /<wbr/> skipping modes on the imager</li> 19448<li>The bandwidth of the imager interface</li> 19449<li>The bandwidth of the various ISP processing blocks</li> 19450</ul> 19451<p>Since these factors can vary greatly between different ISPs and 19452sensors,<wbr/> the camera abstraction tries to represent the bandwidth 19453restrictions with as simple a model as possible.<wbr/></p> 19454<p>The model presented has the following characteristics:</p> 19455<ul> 19456<li>The image sensor is always configured to output the smallest 19457resolution possible given the application's requested output stream 19458sizes.<wbr/> The smallest resolution is defined as being at least as large 19459as the largest requested output stream size; the camera pipeline must 19460never digitally upsample sensor data when the crop region covers the 19461whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 19462resolutions are configured,<wbr/> the sensor can provide a higher frame 19463rate.<wbr/></li> 19464<li>Since any request may use any or all the currently configured 19465output streams,<wbr/> the sensor and ISP must be configured to support 19466scaling a single capture to all the streams at the same time.<wbr/> This 19467means the camera pipeline must be ready to produce the largest 19468requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 19469frame rate of a given configured stream set is governed only by the 19470largest requested stream resolution.<wbr/></li> 19471<li>Using more than one output stream in a request does not affect the 19472frame duration.<wbr/></li> 19473<li>Certain format-streams may need to do additional background processing 19474before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 19475can run concurrently to the rest of the camera pipeline,<wbr/> but 19476cannot process more than 1 capture at a time.<wbr/></li> 19477</ul> 19478<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 19479is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field 19480using StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/> 19481These are used to determine the maximum frame rate /<wbr/> minimum frame 19482duration that is possible for a given stream configuration.<wbr/></p> 19483<p>Specifically,<wbr/> the application can use the following rules to 19484determine the minimum frame duration it can request from the camera 19485device:</p> 19486<ol> 19487<li>Let the set of currently configured input/<wbr/>output streams 19488be called <code>S</code>.<wbr/></li> 19489<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by 19490looking it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using 19491StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size) (with 19492its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called 19493<code>F</code>.<wbr/></li> 19494<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 19495for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 19496used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 19497</ol> 19498<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in 19499StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size) using its 19500respective size/<wbr/>format),<wbr/> then the frame duration in 19501<code>F</code> determines the steady state frame rate that the application will 19502get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind 19503of request be called <code>Rsimple</code>.<wbr/></p> 19504<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 19505by a single capture of a new request <code>Rstall</code> (which has at least 19506one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 19507same minimum frame duration this will not cause a frame rate loss 19508if all buffers from the previous <code>Rstall</code> have already been 19509delivered.<wbr/></p> 19510<p>For more details about stalling,<wbr/> see 19511StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size).<wbr/></p> 19512<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 19513OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 19514 </td> 19515 </tr> 19516 19517 <tr class="entries_header"> 19518 <th class="th_details" colspan="5">HAL Implementation Details</th> 19519 </tr> 19520 <tr class="entry_cont"> 19521 <td class="entry_details" colspan="5"> 19522 <p>For more details about stalling,<wbr/> see 19523<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 19524 </td> 19525 </tr> 19526 19527 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19528 <!-- end of entry --> 19529 19530 19531 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 19532 <td class="entry_name 19533 " rowspan="5"> 19534 android.<wbr/>sensor.<wbr/>sensitivity 19535 </td> 19536 <td class="entry_type"> 19537 <span class="entry_type_name">int32</span> 19538 19539 <span class="entry_type_visibility"> [public]</span> 19540 19541 19542 <span class="entry_type_hwlevel">[full] </span> 19543 19544 19545 19546 19547 </td> <!-- entry_type --> 19548 19549 <td class="entry_description"> 19550 <p>The amount of gain applied to sensor data 19551before processing.<wbr/></p> 19552 </td> 19553 19554 <td class="entry_units"> 19555 ISO arithmetic units 19556 </td> 19557 19558 <td class="entry_range"> 19559 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 19560 </td> 19561 19562 <td class="entry_tags"> 19563 <ul class="entry_tags"> 19564 <li><a href="#tag_V1">V1</a></li> 19565 </ul> 19566 </td> 19567 19568 </tr> 19569 <tr class="entries_header"> 19570 <th class="th_details" colspan="5">Details</th> 19571 </tr> 19572 <tr class="entry_cont"> 19573 <td class="entry_details" colspan="5"> 19574 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 19575as defined in ISO 12232:2006.<wbr/></p> 19576<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 19577if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 19578is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 19579<p>If the camera device cannot apply the exact sensitivity 19580requested,<wbr/> it will reduce the gain to the nearest supported 19581value.<wbr/> The final sensitivity used will be available in the 19582output capture result.<wbr/></p> 19583 </td> 19584 </tr> 19585 19586 <tr class="entries_header"> 19587 <th class="th_details" colspan="5">HAL Implementation Details</th> 19588 </tr> 19589 <tr class="entry_cont"> 19590 <td class="entry_details" colspan="5"> 19591 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 19592 </td> 19593 </tr> 19594 19595 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19596 <!-- end of entry --> 19597 19598 19599 <tr class="entry" id="dynamic_android.sensor.timestamp"> 19600 <td class="entry_name 19601 " rowspan="5"> 19602 android.<wbr/>sensor.<wbr/>timestamp 19603 </td> 19604 <td class="entry_type"> 19605 <span class="entry_type_name">int64</span> 19606 19607 <span class="entry_type_visibility"> [public]</span> 19608 19609 19610 <span class="entry_type_hwlevel">[legacy] </span> 19611 19612 19613 19614 19615 </td> <!-- entry_type --> 19616 19617 <td class="entry_description"> 19618 <p>Time at start of exposure of first 19619row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p> 19620 </td> 19621 19622 <td class="entry_units"> 19623 Nanoseconds 19624 </td> 19625 19626 <td class="entry_range"> 19627 <p>> 0</p> 19628 </td> 19629 19630 <td class="entry_tags"> 19631 <ul class="entry_tags"> 19632 <li><a href="#tag_BC">BC</a></li> 19633 </ul> 19634 </td> 19635 19636 </tr> 19637 <tr class="entries_header"> 19638 <th class="th_details" colspan="5">Details</th> 19639 </tr> 19640 <tr class="entry_cont"> 19641 <td class="entry_details" colspan="5"> 19642 <p>The timestamps are also included in all image 19643buffers produced for the same capture,<wbr/> and will be identical 19644on all the outputs.<wbr/></p> 19645<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/> 19646the timestamps measure time since an unspecified starting point,<wbr/> 19647and are monotonically increasing.<wbr/> They can be compared with the 19648timestamps for other captures from the same camera device,<wbr/> but are 19649not guaranteed to be comparable to any other time source.<wbr/></p> 19650<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 19651the timestamps measure time in the same timebase as 19652android.<wbr/>os.<wbr/>System<wbr/>Clock#elapsed<wbr/>Realtime<wbr/>Nanos(),<wbr/> and they can be 19653compared to other timestamps from other subsystems that are using 19654that base.<wbr/></p> 19655 </td> 19656 </tr> 19657 19658 <tr class="entries_header"> 19659 <th class="th_details" colspan="5">HAL Implementation Details</th> 19660 </tr> 19661 <tr class="entry_cont"> 19662 <td class="entry_details" colspan="5"> 19663 <p>All timestamps must be in reference to the kernel's 19664CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for 19665time spent asleep.<wbr/> This allows for synchronization with 19666sensors that continue to operate while the system is 19667otherwise asleep.<wbr/></p> 19668<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 19669The timestamp must be synchronized with the timestamps from other 19670sensor subsystems that are using the same timebase.<wbr/></p> 19671 </td> 19672 </tr> 19673 19674 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19675 <!-- end of entry --> 19676 19677 19678 <tr class="entry" id="dynamic_android.sensor.temperature"> 19679 <td class="entry_name 19680 " rowspan="1"> 19681 android.<wbr/>sensor.<wbr/>temperature 19682 </td> 19683 <td class="entry_type"> 19684 <span class="entry_type_name">float</span> 19685 19686 <span class="entry_type_visibility"> [system]</span> 19687 19688 19689 19690 19691 19692 19693 </td> <!-- entry_type --> 19694 19695 <td class="entry_description"> 19696 <p>The temperature of the sensor,<wbr/> sampled at the time 19697exposure began for this frame.<wbr/></p> 19698<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 19699somewhere close to it.<wbr/></p> 19700 </td> 19701 19702 <td class="entry_units"> 19703 Celsius 19704 </td> 19705 19706 <td class="entry_range"> 19707 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 19708 </td> 19709 19710 <td class="entry_tags"> 19711 <ul class="entry_tags"> 19712 <li><a href="#tag_FUTURE">FUTURE</a></li> 19713 </ul> 19714 </td> 19715 19716 </tr> 19717 19718 19719 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19720 <!-- end of entry --> 19721 19722 19723 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 19724 <td class="entry_name 19725 " rowspan="3"> 19726 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 19727 </td> 19728 <td class="entry_type"> 19729 <span class="entry_type_name">rational</span> 19730 <span class="entry_type_container">x</span> 19731 19732 <span class="entry_type_array"> 19733 3 19734 </span> 19735 <span class="entry_type_visibility"> [public]</span> 19736 19737 19738 19739 19740 19741 19742 </td> <!-- entry_type --> 19743 19744 <td class="entry_description"> 19745 <p>The estimated camera neutral color in the native sensor colorspace at 19746the time of capture.<wbr/></p> 19747 </td> 19748 19749 <td class="entry_units"> 19750 </td> 19751 19752 <td class="entry_range"> 19753 </td> 19754 19755 <td class="entry_tags"> 19756 <ul class="entry_tags"> 19757 <li><a href="#tag_RAW">RAW</a></li> 19758 </ul> 19759 </td> 19760 19761 </tr> 19762 <tr class="entries_header"> 19763 <th class="th_details" colspan="5">Details</th> 19764 </tr> 19765 <tr class="entry_cont"> 19766 <td class="entry_details" colspan="5"> 19767 <p>This value gives the neutral color point encoded as an RGB value in the 19768native sensor color space.<wbr/> The neutral color point indicates the 19769currently estimated white point of the scene illumination.<wbr/> It can be 19770used to interpolate between the provided color transforms when 19771processing raw sensor data.<wbr/></p> 19772<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 19773 </td> 19774 </tr> 19775 19776 19777 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19778 <!-- end of entry --> 19779 19780 19781 <tr class="entry" id="dynamic_android.sensor.noiseProfile"> 19782 <td class="entry_name 19783 " rowspan="5"> 19784 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile 19785 </td> 19786 <td class="entry_type"> 19787 <span class="entry_type_name">double</span> 19788 <span class="entry_type_container">x</span> 19789 19790 <span class="entry_type_array"> 19791 2 x CFA Channels 19792 </span> 19793 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span> 19794 19795 19796 19797 19798 <div class="entry_type_notes">Pairs of noise model coefficients</div> 19799 19800 19801 </td> <!-- entry_type --> 19802 19803 <td class="entry_description"> 19804 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p> 19805 </td> 19806 19807 <td class="entry_units"> 19808 </td> 19809 19810 <td class="entry_range"> 19811 </td> 19812 19813 <td class="entry_tags"> 19814 <ul class="entry_tags"> 19815 <li><a href="#tag_RAW">RAW</a></li> 19816 </ul> 19817 </td> 19818 19819 </tr> 19820 <tr class="entries_header"> 19821 <th class="th_details" colspan="5">Details</th> 19822 </tr> 19823 <tr class="entry_cont"> 19824 <td class="entry_details" colspan="5"> 19825 <p>This key contains two noise model coefficients for each CFA channel 19826corresponding to the sensor amplification (S) and sensor readout 19827noise (O).<wbr/> These are given as pairs of coefficients for each channel 19828in the same order as channels listed for the CFA layout key 19829(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is 19830represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where 19831the first member of the Pair at index n is the S coefficient and the 19832second member is the O coefficient for the nth color channel in the CFA.<wbr/></p> 19833<p>These coefficients are used in a two parameter noise model to describe 19834the amount of noise present in the image for each CFA channel.<wbr/> The 19835noise model used here is:</p> 19836<p>N(x) = sqrt(Sx + O)</p> 19837<p>Where x represents the recorded signal of a CFA channel normalized to 19838the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for 19839that channel.<wbr/></p> 19840<p>A more detailed description of the noise model can be found in the 19841Adobe DNG specification for the NoiseProfile tag.<wbr/></p> 19842 </td> 19843 </tr> 19844 19845 <tr class="entries_header"> 19846 <th class="th_details" colspan="5">HAL Implementation Details</th> 19847 </tr> 19848 <tr class="entry_cont"> 19849 <td class="entry_details" colspan="5"> 19850 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as 19851an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients 19852for the red channel,<wbr/> S1 and O1 are the coefficients for the first green 19853channel,<wbr/> etc.<wbr/></p> 19854 </td> 19855 </tr> 19856 19857 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19858 <!-- end of entry --> 19859 19860 19861 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 19862 <td class="entry_name 19863 " rowspan="3"> 19864 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 19865 </td> 19866 <td class="entry_type"> 19867 <span class="entry_type_name">float</span> 19868 <span class="entry_type_container">x</span> 19869 19870 <span class="entry_type_array"> 19871 hue_samples x saturation_samples x value_samples x 3 19872 </span> 19873 <span class="entry_type_visibility"> [system]</span> 19874 19875 19876 19877 19878 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 19879 19880 19881 </td> <!-- entry_type --> 19882 19883 <td class="entry_description"> 19884 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 19885for each pixel.<wbr/></p> 19886 </td> 19887 19888 <td class="entry_units"> 19889 19890 The hue shift is given in degrees; saturation and value scale factors are 19891 unitless and are between 0 and 1 inclusive 19892 19893 </td> 19894 19895 <td class="entry_range"> 19896 </td> 19897 19898 <td class="entry_tags"> 19899 <ul class="entry_tags"> 19900 <li><a href="#tag_RAW">RAW</a></li> 19901 </ul> 19902 </td> 19903 19904 </tr> 19905 <tr class="entries_header"> 19906 <th class="th_details" colspan="5">Details</th> 19907 </tr> 19908 <tr class="entry_cont"> 19909 <td class="entry_details" colspan="5"> 19910 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 19911<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 19912<p>Each entry of this map contains three floats corresponding to the 19913hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 19914hue shift has the lowest index.<wbr/> The map entries are stored in the key 19915in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 19916hue divisions in the middle loop,<wbr/> and the saturation divisions in the 19917inner loop.<wbr/> All zero input saturation entries are required to have a 19918value scale factor of 1.<wbr/>0.<wbr/></p> 19919 </td> 19920 </tr> 19921 19922 19923 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19924 <!-- end of entry --> 19925 19926 19927 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 19928 <td class="entry_name 19929 " rowspan="3"> 19930 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 19931 </td> 19932 <td class="entry_type"> 19933 <span class="entry_type_name">float</span> 19934 <span class="entry_type_container">x</span> 19935 19936 <span class="entry_type_array"> 19937 samples x 2 19938 </span> 19939 <span class="entry_type_visibility"> [system]</span> 19940 19941 19942 19943 19944 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 19945 19946 19947 </td> <!-- entry_type --> 19948 19949 <td class="entry_description"> 19950 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 19951 </td> 19952 19953 <td class="entry_units"> 19954 </td> 19955 19956 <td class="entry_range"> 19957 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 19958<code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 19959sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 19960 </td> 19961 19962 <td class="entry_tags"> 19963 <ul class="entry_tags"> 19964 <li><a href="#tag_RAW">RAW</a></li> 19965 </ul> 19966 </td> 19967 19968 </tr> 19969 <tr class="entries_header"> 19970 <th class="th_details" colspan="5">Details</th> 19971 </tr> 19972 <tr class="entry_cont"> 19973 <td class="entry_details" colspan="5"> 19974 <p>This key contains a default tone curve that can be applied while 19975processing the image as a starting point for user adjustments.<wbr/> 19976The curve is specified as a list of value pairs in linear gamma.<wbr/> 19977The curve is interpolated using a cubic spline.<wbr/></p> 19978 </td> 19979 </tr> 19980 19981 19982 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19983 <!-- end of entry --> 19984 19985 19986 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 19987 <td class="entry_name 19988 " rowspan="5"> 19989 android.<wbr/>sensor.<wbr/>green<wbr/>Split 19990 </td> 19991 <td class="entry_type"> 19992 <span class="entry_type_name">float</span> 19993 19994 <span class="entry_type_visibility"> [public]</span> 19995 19996 19997 19998 19999 20000 20001 </td> <!-- entry_type --> 20002 20003 <td class="entry_description"> 20004 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 20005 </td> 20006 20007 <td class="entry_units"> 20008 </td> 20009 20010 <td class="entry_range"> 20011 <p>>= 0</p> 20012 </td> 20013 20014 <td class="entry_tags"> 20015 <ul class="entry_tags"> 20016 <li><a href="#tag_RAW">RAW</a></li> 20017 </ul> 20018 </td> 20019 20020 </tr> 20021 <tr class="entries_header"> 20022 <th class="th_details" colspan="5">Details</th> 20023 </tr> 20024 <tr class="entry_cont"> 20025 <td class="entry_details" colspan="5"> 20026 <p>This value is an estimate of the worst case split between the 20027Bayer green channels in the red and blue rows in the sensor color 20028filter array.<wbr/></p> 20029<p>The green split is calculated as follows:</p> 20030<ol> 20031<li>A 5x5 pixel (or larger) window W within the active sensor array is 20032chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 20033mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 20034chosen is implementation defined,<wbr/> and should be chosen to provide a 20035green split estimate that is both representative of the entire image 20036for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 20037<li>The arithmetic mean of the green channels from the red 20038rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 20039<li>The arithmetic mean of the green channels from the blue 20040rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 20041<li>The maximum ratio R of the two means is computed as follows: 20042<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 20043</ol> 20044<p>The ratio R is the green split divergence reported for this property,<wbr/> 20045which represents how much the green channels differ in the mosaic 20046pattern.<wbr/> This value is typically used to determine the treatment of 20047the green mosaic channels when demosaicing.<wbr/></p> 20048<p>The green split value can be roughly interpreted as follows:</p> 20049<ul> 20050<li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 20051<li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 20052correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 20053<li>R > 1.<wbr/>20 will require strong software correction to produce 20054a usuable image (>20% divergence).<wbr/></li> 20055</ul> 20056 </td> 20057 </tr> 20058 20059 <tr class="entries_header"> 20060 <th class="th_details" colspan="5">HAL Implementation Details</th> 20061 </tr> 20062 <tr class="entry_cont"> 20063 <td class="entry_details" colspan="5"> 20064 <p>The green split given may be a static value based on prior 20065characterization of the camera sensor using the green split 20066calculation method given here over a large,<wbr/> representative,<wbr/> sample 20067set of images.<wbr/> Other methods of calculation that produce equivalent 20068results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 20069 </td> 20070 </tr> 20071 20072 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20073 <!-- end of entry --> 20074 20075 20076 <tr class="entry" id="dynamic_android.sensor.testPatternData"> 20077 <td class="entry_name 20078 " rowspan="5"> 20079 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 20080 </td> 20081 <td class="entry_type"> 20082 <span class="entry_type_name">int32</span> 20083 <span class="entry_type_container">x</span> 20084 20085 <span class="entry_type_array"> 20086 4 20087 </span> 20088 <span class="entry_type_visibility"> [public]</span> 20089 20090 20091 20092 20093 20094 20095 </td> <!-- entry_type --> 20096 20097 <td class="entry_description"> 20098 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 20099when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 20100 </td> 20101 20102 <td class="entry_units"> 20103 </td> 20104 20105 <td class="entry_range"> 20106 </td> 20107 20108 <td class="entry_tags"> 20109 </td> 20110 20111 </tr> 20112 <tr class="entries_header"> 20113 <th class="th_details" colspan="5">Details</th> 20114 </tr> 20115 <tr class="entry_cont"> 20116 <td class="entry_details" colspan="5"> 20117 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 20118The camera device then uses the most significant X bits 20119that correspond to how many bits are in its Bayer raw sensor 20120output.<wbr/></p> 20121<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 2012210 most significant bits from each color channel.<wbr/></p> 20123 </td> 20124 </tr> 20125 20126 <tr class="entries_header"> 20127 <th class="th_details" colspan="5">HAL Implementation Details</th> 20128 </tr> 20129 <tr class="entry_cont"> 20130 <td class="entry_details" colspan="5"> 20131 20132 </td> 20133 </tr> 20134 20135 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20136 <!-- end of entry --> 20137 20138 20139 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 20140 <td class="entry_name 20141 " rowspan="5"> 20142 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 20143 </td> 20144 <td class="entry_type"> 20145 <span class="entry_type_name entry_type_name_enum">int32</span> 20146 20147 <span class="entry_type_visibility"> [public]</span> 20148 20149 20150 20151 20152 20153 <ul class="entry_type_enum"> 20154 <li> 20155 <span class="entry_type_enum_name">OFF</span> 20156 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 20157device returns captures from the image sensor.<wbr/></p> 20158<p>This is the default if the key is not set.<wbr/></p></span> 20159 </li> 20160 <li> 20161 <span class="entry_type_enum_name">SOLID_COLOR</span> 20162 <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 20163respective color channel provided in 20164<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 20165<p>For example:</p> 20166<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 20167</code></pre> 20168<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 20169<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 20170</code></pre> 20171<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 20172are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 20173 </li> 20174 <li> 20175 <span class="entry_type_enum_name">COLOR_BARS</span> 20176 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 20177<p>The vertical bars (left-to-right) are as follows:</p> 20178<ul> 20179<li>100% white</li> 20180<li>yellow</li> 20181<li>cyan</li> 20182<li>green</li> 20183<li>magenta</li> 20184<li>red</li> 20185<li>blue</li> 20186<li>black</li> 20187</ul> 20188<p>In general the image would look like the following:</p> 20189<pre><code>W Y C G M R B K 20190W Y C G M R B K 20191W Y C G M R B K 20192W Y C G M R B K 20193W Y C G M R B K 20194.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 20195.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 20196.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 20197 20198(B = Blue,<wbr/> K = Black) 20199</code></pre> 20200<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 20201When this is not possible,<wbr/> the bar size should be rounded 20202down to the nearest integer and the pattern can repeat 20203on the right side.<wbr/></p> 20204<p>Each bar's height must always take up the full sensor 20205pixel array height.<wbr/></p> 20206<p>Each pixel in this test pattern must be set to either 202070% intensity or 100% intensity.<wbr/></p></span> 20208 </li> 20209 <li> 20210 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 20211 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 20212each bar should start at its specified color at the top,<wbr/> 20213and fade to gray at the bottom.<wbr/></p> 20214<p>Furthermore each bar is further subdivided into a left and 20215right half.<wbr/> The left half should have a smooth gradient,<wbr/> 20216and the right half should have a quantized gradient.<wbr/></p> 20217<p>In particular,<wbr/> the right half's should consist of blocks of the 20218same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 20219<p>The least significant bits in the quantized gradient should 20220be copied from the most significant bits of the smooth gradient.<wbr/></p> 20221<p>The height of each bar should always be a multiple of 128.<wbr/> 20222When this is not the case,<wbr/> the pattern should repeat at the bottom 20223of the image.<wbr/></p></span> 20224 </li> 20225 <li> 20226 <span class="entry_type_enum_name">PN9</span> 20227 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 20228generated from a PN9 512-bit sequence (typically implemented 20229in hardware with a linear feedback shift register).<wbr/></p> 20230<p>The generator should be reset at the beginning of each frame,<wbr/> 20231and thus each subsequent raw frame with this test pattern should 20232be exactly the same as the last.<wbr/></p></span> 20233 </li> 20234 <li> 20235 <span class="entry_type_enum_name">CUSTOM1</span> 20236 <span class="entry_type_enum_value">256</span> 20237 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 20238available only on this camera device are at least this numeric 20239value.<wbr/></p> 20240<p>All of the custom test patterns will be static 20241(that is the raw image must not vary from frame to frame).<wbr/></p></span> 20242 </li> 20243 </ul> 20244 20245 </td> <!-- entry_type --> 20246 20247 <td class="entry_description"> 20248 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 20249doing a real exposure from the camera.<wbr/></p> 20250 </td> 20251 20252 <td class="entry_units"> 20253 </td> 20254 20255 <td class="entry_range"> 20256 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 20257 </td> 20258 20259 <td class="entry_tags"> 20260 </td> 20261 20262 </tr> 20263 <tr class="entries_header"> 20264 <th class="th_details" colspan="5">Details</th> 20265 </tr> 20266 <tr class="entry_cont"> 20267 <td class="entry_details" colspan="5"> 20268 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 20269by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 20270work as normal.<wbr/></p> 20271<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 20272occur (and that the test pattern remain unmodified,<wbr/> since the flash 20273would not actually affect it).<wbr/></p> 20274<p>Defaults to OFF.<wbr/></p> 20275 </td> 20276 </tr> 20277 20278 <tr class="entries_header"> 20279 <th class="th_details" colspan="5">HAL Implementation Details</th> 20280 </tr> 20281 <tr class="entry_cont"> 20282 <td class="entry_details" colspan="5"> 20283 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 20284<p>The HAL may choose to substitute test patterns from the sensor 20285with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 20286indistinguishable to the ISP whether the data came from the 20287sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 20288 </td> 20289 </tr> 20290 20291 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20292 <!-- end of entry --> 20293 20294 20295 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew"> 20296 <td class="entry_name 20297 " rowspan="5"> 20298 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew 20299 </td> 20300 <td class="entry_type"> 20301 <span class="entry_type_name">int64</span> 20302 20303 <span class="entry_type_visibility"> [public]</span> 20304 20305 20306 <span class="entry_type_hwlevel">[limited] </span> 20307 20308 20309 20310 20311 </td> <!-- entry_type --> 20312 20313 <td class="entry_description"> 20314 <p>Duration between the start of first row exposure 20315and the start of last row exposure.<wbr/></p> 20316 </td> 20317 20318 <td class="entry_units"> 20319 Nanoseconds 20320 </td> 20321 20322 <td class="entry_range"> 20323 <p>>= 0 and < 20324StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/></p> 20325 </td> 20326 20327 <td class="entry_tags"> 20328 <ul class="entry_tags"> 20329 <li><a href="#tag_V1">V1</a></li> 20330 </ul> 20331 </td> 20332 20333 </tr> 20334 <tr class="entries_header"> 20335 <th class="th_details" colspan="5">Details</th> 20336 </tr> 20337 <tr class="entry_cont"> 20338 <td class="entry_details" colspan="5"> 20339 <p>This is the exposure time skew between the first and last 20340row exposure start times.<wbr/> The first row and the last row are 20341the first and last rows inside of the 20342<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 20343<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent 20344to the frame readout time.<wbr/></p> 20345 </td> 20346 </tr> 20347 20348 <tr class="entries_header"> 20349 <th class="th_details" colspan="5">HAL Implementation Details</th> 20350 </tr> 20351 <tr class="entry_cont"> 20352 <td class="entry_details" colspan="5"> 20353 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin 20354exposure at the same time.<wbr/></p> 20355 </td> 20356 </tr> 20357 20358 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20359 <!-- end of entry --> 20360 20361 20362 20363 <!-- end of kind --> 20364 </tbody> 20365 20366 <!-- end of section --> 20367 <tr><td colspan="6" id="section_shading" class="section">shading</td></tr> 20368 20369 20370 <tr><td colspan="6" class="kind">controls</td></tr> 20371 20372 <thead class="entries_header"> 20373 <tr> 20374 <th class="th_name">Property Name</th> 20375 <th class="th_type">Type</th> 20376 <th class="th_description">Description</th> 20377 <th class="th_units">Units</th> 20378 <th class="th_range">Range</th> 20379 <th class="th_tags">Tags</th> 20380 </tr> 20381 </thead> 20382 20383 <tbody> 20384 20385 20386 20387 20388 20389 20390 20391 20392 20393 20394 <tr class="entry" id="controls_android.shading.mode"> 20395 <td class="entry_name 20396 " rowspan="3"> 20397 android.<wbr/>shading.<wbr/>mode 20398 </td> 20399 <td class="entry_type"> 20400 <span class="entry_type_name entry_type_name_enum">byte</span> 20401 20402 <span class="entry_type_visibility"> [public]</span> 20403 20404 20405 <span class="entry_type_hwlevel">[full] </span> 20406 20407 20408 20409 <ul class="entry_type_enum"> 20410 <li> 20411 <span class="entry_type_enum_name">OFF</span> 20412 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 20413 </li> 20414 <li> 20415 <span class="entry_type_enum_name">FAST</span> 20416 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 20417frame rate relative to sensor raw output</p></span> 20418 </li> 20419 <li> 20420 <span class="entry_type_enum_name">HIGH_QUALITY</span> 20421 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 20422cost of possibly reduced frame rate.<wbr/></p></span> 20423 </li> 20424 </ul> 20425 20426 </td> <!-- entry_type --> 20427 20428 <td class="entry_description"> 20429 <p>Quality of lens shading correction applied 20430to the image data.<wbr/></p> 20431 </td> 20432 20433 <td class="entry_units"> 20434 </td> 20435 20436 <td class="entry_range"> 20437 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 20438 </td> 20439 20440 <td class="entry_tags"> 20441 </td> 20442 20443 </tr> 20444 <tr class="entries_header"> 20445 <th class="th_details" colspan="5">Details</th> 20446 </tr> 20447 <tr class="entry_cont"> 20448 <td class="entry_details" colspan="5"> 20449 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 20450camera device,<wbr/> and an identity lens shading map data will be provided 20451if <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 20452shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 20453the 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 20454map shown below:</p> 20455<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/> 20456 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/> 20457 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/> 20458 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/> 20459 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/> 20460 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 ] 20461</code></pre> 20462<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 20463device.<wbr/> Applications can request lens shading map data by setting 20464<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 20465shading 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 20466data will be the one applied by the camera device for this capture request.<wbr/></p> 20467<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 20468the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 20469AWB 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> 20470OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 20471to be converged before using the returned shading map data.<wbr/></p> 20472 </td> 20473 </tr> 20474 20475 20476 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20477 <!-- end of entry --> 20478 20479 20480 <tr class="entry" id="controls_android.shading.strength"> 20481 <td class="entry_name 20482 " rowspan="1"> 20483 android.<wbr/>shading.<wbr/>strength 20484 </td> 20485 <td class="entry_type"> 20486 <span class="entry_type_name">byte</span> 20487 20488 <span class="entry_type_visibility"> [system]</span> 20489 20490 20491 20492 20493 20494 20495 </td> <!-- entry_type --> 20496 20497 <td class="entry_description"> 20498 <p>Control the amount of shading correction 20499applied to the images</p> 20500 </td> 20501 20502 <td class="entry_units"> 20503 unitless: 1-10; 10 is full shading 20504 compensation 20505 </td> 20506 20507 <td class="entry_range"> 20508 </td> 20509 20510 <td class="entry_tags"> 20511 <ul class="entry_tags"> 20512 <li><a href="#tag_FUTURE">FUTURE</a></li> 20513 </ul> 20514 </td> 20515 20516 </tr> 20517 20518 20519 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20520 <!-- end of entry --> 20521 20522 20523 20524 <!-- end of kind --> 20525 </tbody> 20526 <tr><td colspan="6" class="kind">dynamic</td></tr> 20527 20528 <thead class="entries_header"> 20529 <tr> 20530 <th class="th_name">Property Name</th> 20531 <th class="th_type">Type</th> 20532 <th class="th_description">Description</th> 20533 <th class="th_units">Units</th> 20534 <th class="th_range">Range</th> 20535 <th class="th_tags">Tags</th> 20536 </tr> 20537 </thead> 20538 20539 <tbody> 20540 20541 20542 20543 20544 20545 20546 20547 20548 20549 20550 <tr class="entry" id="dynamic_android.shading.mode"> 20551 <td class="entry_name 20552 " rowspan="3"> 20553 android.<wbr/>shading.<wbr/>mode 20554 </td> 20555 <td class="entry_type"> 20556 <span class="entry_type_name entry_type_name_enum">byte</span> 20557 20558 <span class="entry_type_visibility"> [public]</span> 20559 20560 20561 <span class="entry_type_hwlevel">[full] </span> 20562 20563 20564 20565 <ul class="entry_type_enum"> 20566 <li> 20567 <span class="entry_type_enum_name">OFF</span> 20568 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 20569 </li> 20570 <li> 20571 <span class="entry_type_enum_name">FAST</span> 20572 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 20573frame rate relative to sensor raw output</p></span> 20574 </li> 20575 <li> 20576 <span class="entry_type_enum_name">HIGH_QUALITY</span> 20577 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 20578cost of possibly reduced frame rate.<wbr/></p></span> 20579 </li> 20580 </ul> 20581 20582 </td> <!-- entry_type --> 20583 20584 <td class="entry_description"> 20585 <p>Quality of lens shading correction applied 20586to the image data.<wbr/></p> 20587 </td> 20588 20589 <td class="entry_units"> 20590 </td> 20591 20592 <td class="entry_range"> 20593 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 20594 </td> 20595 20596 <td class="entry_tags"> 20597 </td> 20598 20599 </tr> 20600 <tr class="entries_header"> 20601 <th class="th_details" colspan="5">Details</th> 20602 </tr> 20603 <tr class="entry_cont"> 20604 <td class="entry_details" colspan="5"> 20605 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 20606camera device,<wbr/> and an identity lens shading map data will be provided 20607if <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 20608shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 20609the 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 20610map shown below:</p> 20611<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/> 20612 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/> 20613 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/> 20614 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/> 20615 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/> 20616 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 ] 20617</code></pre> 20618<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 20619device.<wbr/> Applications can request lens shading map data by setting 20620<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 20621shading 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 20622data will be the one applied by the camera device for this capture request.<wbr/></p> 20623<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 20624the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 20625AWB 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> 20626OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 20627to be converged before using the returned shading map data.<wbr/></p> 20628 </td> 20629 </tr> 20630 20631 20632 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20633 <!-- end of entry --> 20634 20635 20636 20637 <!-- end of kind --> 20638 </tbody> 20639 <tr><td colspan="6" class="kind">static</td></tr> 20640 20641 <thead class="entries_header"> 20642 <tr> 20643 <th class="th_name">Property Name</th> 20644 <th class="th_type">Type</th> 20645 <th class="th_description">Description</th> 20646 <th class="th_units">Units</th> 20647 <th class="th_range">Range</th> 20648 <th class="th_tags">Tags</th> 20649 </tr> 20650 </thead> 20651 20652 <tbody> 20653 20654 20655 20656 20657 20658 20659 20660 20661 20662 20663 <tr class="entry" id="static_android.shading.availableModes"> 20664 <td class="entry_name 20665 " rowspan="5"> 20666 android.<wbr/>shading.<wbr/>available<wbr/>Modes 20667 </td> 20668 <td class="entry_type"> 20669 <span class="entry_type_name">byte</span> 20670 <span class="entry_type_container">x</span> 20671 20672 <span class="entry_type_array"> 20673 n 20674 </span> 20675 <span class="entry_type_visibility"> [public as enumList]</span> 20676 20677 20678 <span class="entry_type_hwlevel">[legacy] </span> 20679 20680 20681 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div> 20682 20683 20684 </td> <!-- entry_type --> 20685 20686 <td class="entry_description"> 20687 <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> 20688 </td> 20689 20690 <td class="entry_units"> 20691 </td> 20692 20693 <td class="entry_range"> 20694 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p> 20695 </td> 20696 20697 <td class="entry_tags"> 20698 </td> 20699 20700 </tr> 20701 <tr class="entries_header"> 20702 <th class="th_details" colspan="5">Details</th> 20703 </tr> 20704 <tr class="entry_cont"> 20705 <td class="entry_details" colspan="5"> 20706 <p>This list contains lens shading modes that can be set for the camera device.<wbr/> 20707Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always 20708list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/> 20709LEGACY devices will always only support FAST mode.<wbr/></p> 20710 </td> 20711 </tr> 20712 20713 <tr class="entries_header"> 20714 <th class="th_details" colspan="5">HAL Implementation Details</th> 20715 </tr> 20716 <tr class="entry_cont"> 20717 <td class="entry_details" colspan="5"> 20718 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is 20719available on the camera device,<wbr/> but the underlying implementation can be the same for 20720both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not 20721slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 20722 </td> 20723 </tr> 20724 20725 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20726 <!-- end of entry --> 20727 20728 20729 20730 <!-- end of kind --> 20731 </tbody> 20732 20733 <!-- end of section --> 20734 <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr> 20735 20736 20737 <tr><td colspan="6" class="kind">controls</td></tr> 20738 20739 <thead class="entries_header"> 20740 <tr> 20741 <th class="th_name">Property Name</th> 20742 <th class="th_type">Type</th> 20743 <th class="th_description">Description</th> 20744 <th class="th_units">Units</th> 20745 <th class="th_range">Range</th> 20746 <th class="th_tags">Tags</th> 20747 </tr> 20748 </thead> 20749 20750 <tbody> 20751 20752 20753 20754 20755 20756 20757 20758 20759 20760 20761 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 20762 <td class="entry_name 20763 " rowspan="5"> 20764 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 20765 </td> 20766 <td class="entry_type"> 20767 <span class="entry_type_name entry_type_name_enum">byte</span> 20768 20769 <span class="entry_type_visibility"> [public]</span> 20770 20771 20772 <span class="entry_type_hwlevel">[legacy] </span> 20773 20774 20775 20776 <ul class="entry_type_enum"> 20777 <li> 20778 <span class="entry_type_enum_name">OFF</span> 20779 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 20780results.<wbr/></p></span> 20781 </li> 20782 <li> 20783 <span class="entry_type_enum_name">SIMPLE</span> 20784 <span class="entry_type_enum_optional">[optional]</span> 20785 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 20786 </li> 20787 <li> 20788 <span class="entry_type_enum_name">FULL</span> 20789 <span class="entry_type_enum_optional">[optional]</span> 20790 <span class="entry_type_enum_notes"><p>Return all face 20791metadata.<wbr/></p> 20792<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 20793 </li> 20794 </ul> 20795 20796 </td> <!-- entry_type --> 20797 20798 <td class="entry_description"> 20799 <p>Operating mode for the face detector 20800unit.<wbr/></p> 20801 </td> 20802 20803 <td class="entry_units"> 20804 </td> 20805 20806 <td class="entry_range"> 20807 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 20808 </td> 20809 20810 <td class="entry_tags"> 20811 <ul class="entry_tags"> 20812 <li><a href="#tag_BC">BC</a></li> 20813 </ul> 20814 </td> 20815 20816 </tr> 20817 <tr class="entries_header"> 20818 <th class="th_details" colspan="5">Details</th> 20819 </tr> 20820 <tr class="entry_cont"> 20821 <td class="entry_details" colspan="5"> 20822 <p>Whether face detection is enabled,<wbr/> and whether it 20823should output just the basic fields or the full set of 20824fields.<wbr/></p> 20825 </td> 20826 </tr> 20827 20828 <tr class="entries_header"> 20829 <th class="th_details" colspan="5">HAL Implementation Details</th> 20830 </tr> 20831 <tr class="entry_cont"> 20832 <td class="entry_details" colspan="5"> 20833 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 20834<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 20835FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 20836<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 20837 </td> 20838 </tr> 20839 20840 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20841 <!-- end of entry --> 20842 20843 20844 <tr class="entry" id="controls_android.statistics.histogramMode"> 20845 <td class="entry_name 20846 " rowspan="1"> 20847 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 20848 </td> 20849 <td class="entry_type"> 20850 <span class="entry_type_name entry_type_name_enum">byte</span> 20851 20852 <span class="entry_type_visibility"> [system as boolean]</span> 20853 20854 20855 20856 20857 20858 <ul class="entry_type_enum"> 20859 <li> 20860 <span class="entry_type_enum_name">OFF</span> 20861 </li> 20862 <li> 20863 <span class="entry_type_enum_name">ON</span> 20864 </li> 20865 </ul> 20866 20867 </td> <!-- entry_type --> 20868 20869 <td class="entry_description"> 20870 <p>Operating mode for histogram 20871generation</p> 20872 </td> 20873 20874 <td class="entry_units"> 20875 </td> 20876 20877 <td class="entry_range"> 20878 </td> 20879 20880 <td class="entry_tags"> 20881 <ul class="entry_tags"> 20882 <li><a href="#tag_FUTURE">FUTURE</a></li> 20883 </ul> 20884 </td> 20885 20886 </tr> 20887 20888 20889 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20890 <!-- end of entry --> 20891 20892 20893 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 20894 <td class="entry_name 20895 " rowspan="1"> 20896 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 20897 </td> 20898 <td class="entry_type"> 20899 <span class="entry_type_name entry_type_name_enum">byte</span> 20900 20901 <span class="entry_type_visibility"> [system as boolean]</span> 20902 20903 20904 20905 20906 20907 <ul class="entry_type_enum"> 20908 <li> 20909 <span class="entry_type_enum_name">OFF</span> 20910 </li> 20911 <li> 20912 <span class="entry_type_enum_name">ON</span> 20913 </li> 20914 </ul> 20915 20916 </td> <!-- entry_type --> 20917 20918 <td class="entry_description"> 20919 <p>Operating mode for sharpness map 20920generation</p> 20921 </td> 20922 20923 <td class="entry_units"> 20924 </td> 20925 20926 <td class="entry_range"> 20927 </td> 20928 20929 <td class="entry_tags"> 20930 <ul class="entry_tags"> 20931 <li><a href="#tag_FUTURE">FUTURE</a></li> 20932 </ul> 20933 </td> 20934 20935 </tr> 20936 20937 20938 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20939 <!-- end of entry --> 20940 20941 20942 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 20943 <td class="entry_name 20944 " rowspan="3"> 20945 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 20946 </td> 20947 <td class="entry_type"> 20948 <span class="entry_type_name entry_type_name_enum">byte</span> 20949 20950 <span class="entry_type_visibility"> [public as boolean]</span> 20951 20952 20953 20954 20955 20956 <ul class="entry_type_enum"> 20957 <li> 20958 <span class="entry_type_enum_name">OFF</span> 20959 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 20960 </li> 20961 <li> 20962 <span class="entry_type_enum_name">ON</span> 20963 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 20964 </li> 20965 </ul> 20966 20967 </td> <!-- entry_type --> 20968 20969 <td class="entry_description"> 20970 <p>Operating mode for hot pixel map generation.<wbr/></p> 20971 </td> 20972 20973 <td class="entry_units"> 20974 </td> 20975 20976 <td class="entry_range"> 20977 <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> 20978 </td> 20979 20980 <td class="entry_tags"> 20981 <ul class="entry_tags"> 20982 <li><a href="#tag_V1">V1</a></li> 20983 <li><a href="#tag_RAW">RAW</a></li> 20984 </ul> 20985 </td> 20986 20987 </tr> 20988 <tr class="entries_header"> 20989 <th class="th_details" colspan="5">Details</th> 20990 </tr> 20991 <tr class="entry_cont"> 20992 <td class="entry_details" colspan="5"> 20993 <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/> 20994If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 20995 </td> 20996 </tr> 20997 20998 20999 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21000 <!-- end of entry --> 21001 21002 21003 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 21004 <td class="entry_name 21005 " rowspan="3"> 21006 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 21007 </td> 21008 <td class="entry_type"> 21009 <span class="entry_type_name entry_type_name_enum">byte</span> 21010 21011 <span class="entry_type_visibility"> [public]</span> 21012 21013 21014 <span class="entry_type_hwlevel">[full] </span> 21015 21016 21017 21018 <ul class="entry_type_enum"> 21019 <li> 21020 <span class="entry_type_enum_name">OFF</span> 21021 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 21022 </li> 21023 <li> 21024 <span class="entry_type_enum_name">ON</span> 21025 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 21026 </li> 21027 </ul> 21028 21029 </td> <!-- entry_type --> 21030 21031 <td class="entry_description"> 21032 <p>Whether the camera device will output the lens 21033shading map in output result metadata.<wbr/></p> 21034 </td> 21035 21036 <td class="entry_units"> 21037 </td> 21038 21039 <td class="entry_range"> 21040 <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> 21041 </td> 21042 21043 <td class="entry_tags"> 21044 <ul class="entry_tags"> 21045 <li><a href="#tag_RAW">RAW</a></li> 21046 </ul> 21047 </td> 21048 21049 </tr> 21050 <tr class="entries_header"> 21051 <th class="th_details" colspan="5">Details</th> 21052 </tr> 21053 <tr class="entry_cont"> 21054 <td class="entry_details" colspan="5"> 21055 <p>When set to ON,<wbr/> 21056<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 21057the output result metadata.<wbr/></p> 21058<p>ON is always supported on devices with the RAW capability.<wbr/></p> 21059 </td> 21060 </tr> 21061 21062 21063 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21064 <!-- end of entry --> 21065 21066 21067 21068 <!-- end of kind --> 21069 </tbody> 21070 <tr><td colspan="6" class="kind">static</td></tr> 21071 21072 <thead class="entries_header"> 21073 <tr> 21074 <th class="th_name">Property Name</th> 21075 <th class="th_type">Type</th> 21076 <th class="th_description">Description</th> 21077 <th class="th_units">Units</th> 21078 <th class="th_range">Range</th> 21079 <th class="th_tags">Tags</th> 21080 </tr> 21081 </thead> 21082 21083 <tbody> 21084 21085 21086 21087 21088 21089 21090 21091 21092 21093 21094 21095 21096 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 21097 <td class="entry_name 21098 " rowspan="3"> 21099 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 21100 </td> 21101 <td class="entry_type"> 21102 <span class="entry_type_name">byte</span> 21103 <span class="entry_type_container">x</span> 21104 21105 <span class="entry_type_array"> 21106 n 21107 </span> 21108 <span class="entry_type_visibility"> [public as enumList]</span> 21109 21110 21111 <span class="entry_type_hwlevel">[legacy] </span> 21112 21113 21114 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 21115 21116 21117 </td> <!-- entry_type --> 21118 21119 <td class="entry_description"> 21120 <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 21121supported by this camera device.<wbr/></p> 21122 </td> 21123 21124 <td class="entry_units"> 21125 </td> 21126 21127 <td class="entry_range"> 21128 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p> 21129 </td> 21130 21131 <td class="entry_tags"> 21132 </td> 21133 21134 </tr> 21135 <tr class="entries_header"> 21136 <th class="th_details" colspan="5">Details</th> 21137 </tr> 21138 <tr class="entry_cont"> 21139 <td class="entry_details" colspan="5"> 21140 <p>OFF is always supported.<wbr/></p> 21141 </td> 21142 </tr> 21143 21144 21145 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21146 <!-- end of entry --> 21147 21148 21149 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 21150 <td class="entry_name 21151 " rowspan="1"> 21152 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 21153 </td> 21154 <td class="entry_type"> 21155 <span class="entry_type_name">int32</span> 21156 21157 <span class="entry_type_visibility"> [system]</span> 21158 21159 21160 21161 21162 21163 21164 </td> <!-- entry_type --> 21165 21166 <td class="entry_description"> 21167 <p>Number of histogram buckets 21168supported</p> 21169 </td> 21170 21171 <td class="entry_units"> 21172 </td> 21173 21174 <td class="entry_range"> 21175 <p>>= 64</p> 21176 </td> 21177 21178 <td class="entry_tags"> 21179 <ul class="entry_tags"> 21180 <li><a href="#tag_FUTURE">FUTURE</a></li> 21181 </ul> 21182 </td> 21183 21184 </tr> 21185 21186 21187 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21188 <!-- end of entry --> 21189 21190 21191 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 21192 <td class="entry_name 21193 " rowspan="1"> 21194 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 21195 </td> 21196 <td class="entry_type"> 21197 <span class="entry_type_name">int32</span> 21198 21199 <span class="entry_type_visibility"> [public]</span> 21200 21201 21202 <span class="entry_type_hwlevel">[legacy] </span> 21203 21204 21205 21206 21207 </td> <!-- entry_type --> 21208 21209 <td class="entry_description"> 21210 <p>The maximum number of simultaneously detectable 21211faces.<wbr/></p> 21212 </td> 21213 21214 <td class="entry_units"> 21215 </td> 21216 21217 <td class="entry_range"> 21218 <p>0 for cameras without available face detection; otherwise: 21219<code>>=4</code> for LIMITED or FULL hwlevel devices or 21220<code>>0</code> for LEGACY devices.<wbr/></p> 21221 </td> 21222 21223 <td class="entry_tags"> 21224 <ul class="entry_tags"> 21225 <li><a href="#tag_BC">BC</a></li> 21226 </ul> 21227 </td> 21228 21229 </tr> 21230 21231 21232 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21233 <!-- end of entry --> 21234 21235 21236 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 21237 <td class="entry_name 21238 " rowspan="1"> 21239 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 21240 </td> 21241 <td class="entry_type"> 21242 <span class="entry_type_name">int32</span> 21243 21244 <span class="entry_type_visibility"> [system]</span> 21245 21246 21247 21248 21249 21250 21251 </td> <!-- entry_type --> 21252 21253 <td class="entry_description"> 21254 <p>Maximum value possible for a histogram 21255bucket</p> 21256 </td> 21257 21258 <td class="entry_units"> 21259 </td> 21260 21261 <td class="entry_range"> 21262 </td> 21263 21264 <td class="entry_tags"> 21265 <ul class="entry_tags"> 21266 <li><a href="#tag_FUTURE">FUTURE</a></li> 21267 </ul> 21268 </td> 21269 21270 </tr> 21271 21272 21273 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21274 <!-- end of entry --> 21275 21276 21277 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 21278 <td class="entry_name 21279 " rowspan="1"> 21280 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 21281 </td> 21282 <td class="entry_type"> 21283 <span class="entry_type_name">int32</span> 21284 21285 <span class="entry_type_visibility"> [system]</span> 21286 21287 21288 21289 21290 21291 21292 </td> <!-- entry_type --> 21293 21294 <td class="entry_description"> 21295 <p>Maximum value possible for a sharpness map 21296region.<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_tags"> 21306 <ul class="entry_tags"> 21307 <li><a href="#tag_FUTURE">FUTURE</a></li> 21308 </ul> 21309 </td> 21310 21311 </tr> 21312 21313 21314 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21315 <!-- end of entry --> 21316 21317 21318 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 21319 <td class="entry_name 21320 " rowspan="1"> 21321 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 21322 </td> 21323 <td class="entry_type"> 21324 <span class="entry_type_name">int32</span> 21325 <span class="entry_type_container">x</span> 21326 21327 <span class="entry_type_array"> 21328 2 21329 </span> 21330 <span class="entry_type_visibility"> [system as size]</span> 21331 21332 21333 21334 21335 <div class="entry_type_notes">width x height</div> 21336 21337 21338 </td> <!-- entry_type --> 21339 21340 <td class="entry_description"> 21341 <p>Dimensions of the sharpness 21342map</p> 21343 </td> 21344 21345 <td class="entry_units"> 21346 </td> 21347 21348 <td class="entry_range"> 21349 <p>Must be at least 32 x 32</p> 21350 </td> 21351 21352 <td class="entry_tags"> 21353 <ul class="entry_tags"> 21354 <li><a href="#tag_FUTURE">FUTURE</a></li> 21355 </ul> 21356 </td> 21357 21358 </tr> 21359 21360 21361 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21362 <!-- end of entry --> 21363 21364 21365 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 21366 <td class="entry_name 21367 " rowspan="3"> 21368 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 21369 </td> 21370 <td class="entry_type"> 21371 <span class="entry_type_name">byte</span> 21372 <span class="entry_type_container">x</span> 21373 21374 <span class="entry_type_array"> 21375 n 21376 </span> 21377 <span class="entry_type_visibility"> [public as boolean]</span> 21378 21379 21380 21381 21382 <div class="entry_type_notes">list of enums</div> 21383 21384 21385 </td> <!-- entry_type --> 21386 21387 <td class="entry_description"> 21388 <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 21389supported by this camera device.<wbr/></p> 21390 </td> 21391 21392 <td class="entry_units"> 21393 </td> 21394 21395 <td class="entry_range"> 21396 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p> 21397 </td> 21398 21399 <td class="entry_tags"> 21400 <ul class="entry_tags"> 21401 <li><a href="#tag_V1">V1</a></li> 21402 <li><a href="#tag_RAW">RAW</a></li> 21403 </ul> 21404 </td> 21405 21406 </tr> 21407 <tr class="entries_header"> 21408 <th class="th_details" colspan="5">Details</th> 21409 </tr> 21410 <tr class="entry_cont"> 21411 <td class="entry_details" colspan="5"> 21412 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only 21413<code>false</code>.<wbr/></p> 21414<p>ON is always supported on devices with the RAW capability.<wbr/></p> 21415 </td> 21416 </tr> 21417 21418 21419 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21420 <!-- end of entry --> 21421 21422 21423 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes"> 21424 <td class="entry_name 21425 " rowspan="3"> 21426 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes 21427 </td> 21428 <td class="entry_type"> 21429 <span class="entry_type_name">byte</span> 21430 <span class="entry_type_container">x</span> 21431 21432 <span class="entry_type_array"> 21433 n 21434 </span> 21435 <span class="entry_type_visibility"> [public]</span> 21436 21437 21438 21439 21440 <div class="entry_type_notes">list of enums</div> 21441 21442 21443 </td> <!-- entry_type --> 21444 21445 <td class="entry_description"> 21446 <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 21447are supported by this camera device.<wbr/></p> 21448 </td> 21449 21450 <td class="entry_units"> 21451 </td> 21452 21453 <td class="entry_range"> 21454 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p> 21455 </td> 21456 21457 <td class="entry_tags"> 21458 </td> 21459 21460 </tr> 21461 <tr class="entries_header"> 21462 <th class="th_details" colspan="5">Details</th> 21463 </tr> 21464 <tr class="entry_cont"> 21465 <td class="entry_details" colspan="5"> 21466 <p>If no lens shading map output is available for this camera device,<wbr/> this key will 21467contain only OFF.<wbr/></p> 21468<p>ON is always supported on devices with the RAW capability.<wbr/> 21469LEGACY mode devices will always only support OFF.<wbr/></p> 21470 </td> 21471 </tr> 21472 21473 21474 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21475 <!-- end of entry --> 21476 21477 21478 21479 21480 21481 21482 <!-- end of kind --> 21483 </tbody> 21484 <tr><td colspan="6" class="kind">dynamic</td></tr> 21485 21486 <thead class="entries_header"> 21487 <tr> 21488 <th class="th_name">Property Name</th> 21489 <th class="th_type">Type</th> 21490 <th class="th_description">Description</th> 21491 <th class="th_units">Units</th> 21492 <th class="th_range">Range</th> 21493 <th class="th_tags">Tags</th> 21494 </tr> 21495 </thead> 21496 21497 <tbody> 21498 21499 21500 21501 21502 21503 21504 21505 21506 21507 21508 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 21509 <td class="entry_name 21510 " rowspan="5"> 21511 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 21512 </td> 21513 <td class="entry_type"> 21514 <span class="entry_type_name entry_type_name_enum">byte</span> 21515 21516 <span class="entry_type_visibility"> [public]</span> 21517 21518 21519 <span class="entry_type_hwlevel">[legacy] </span> 21520 21521 21522 21523 <ul class="entry_type_enum"> 21524 <li> 21525 <span class="entry_type_enum_name">OFF</span> 21526 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 21527results.<wbr/></p></span> 21528 </li> 21529 <li> 21530 <span class="entry_type_enum_name">SIMPLE</span> 21531 <span class="entry_type_enum_optional">[optional]</span> 21532 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 21533 </li> 21534 <li> 21535 <span class="entry_type_enum_name">FULL</span> 21536 <span class="entry_type_enum_optional">[optional]</span> 21537 <span class="entry_type_enum_notes"><p>Return all face 21538metadata.<wbr/></p> 21539<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 21540 </li> 21541 </ul> 21542 21543 </td> <!-- entry_type --> 21544 21545 <td class="entry_description"> 21546 <p>Operating mode for the face detector 21547unit.<wbr/></p> 21548 </td> 21549 21550 <td class="entry_units"> 21551 </td> 21552 21553 <td class="entry_range"> 21554 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 21555 </td> 21556 21557 <td class="entry_tags"> 21558 <ul class="entry_tags"> 21559 <li><a href="#tag_BC">BC</a></li> 21560 </ul> 21561 </td> 21562 21563 </tr> 21564 <tr class="entries_header"> 21565 <th class="th_details" colspan="5">Details</th> 21566 </tr> 21567 <tr class="entry_cont"> 21568 <td class="entry_details" colspan="5"> 21569 <p>Whether face detection is enabled,<wbr/> and whether it 21570should output just the basic fields or the full set of 21571fields.<wbr/></p> 21572 </td> 21573 </tr> 21574 21575 <tr class="entries_header"> 21576 <th class="th_details" colspan="5">HAL Implementation Details</th> 21577 </tr> 21578 <tr class="entry_cont"> 21579 <td class="entry_details" colspan="5"> 21580 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 21581<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 21582FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 21583<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 21584 </td> 21585 </tr> 21586 21587 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21588 <!-- end of entry --> 21589 21590 21591 <tr class="entry" id="dynamic_android.statistics.faceIds"> 21592 <td class="entry_name 21593 " rowspan="3"> 21594 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 21595 </td> 21596 <td class="entry_type"> 21597 <span class="entry_type_name">int32</span> 21598 <span class="entry_type_container">x</span> 21599 21600 <span class="entry_type_array"> 21601 n 21602 </span> 21603 <span class="entry_type_visibility"> [hidden]</span> 21604 21605 21606 <span class="entry_type_hwlevel">[legacy] </span> 21607 21608 21609 21610 21611 </td> <!-- entry_type --> 21612 21613 <td class="entry_description"> 21614 <p>List of unique IDs for detected faces.<wbr/></p> 21615 </td> 21616 21617 <td class="entry_units"> 21618 </td> 21619 21620 <td class="entry_range"> 21621 </td> 21622 21623 <td class="entry_tags"> 21624 <ul class="entry_tags"> 21625 <li><a href="#tag_BC">BC</a></li> 21626 </ul> 21627 </td> 21628 21629 </tr> 21630 <tr class="entries_header"> 21631 <th class="th_details" colspan="5">Details</th> 21632 </tr> 21633 <tr class="entry_cont"> 21634 <td class="entry_details" colspan="5"> 21635 <p>Each detected face is given a unique ID that is valid for as long as the face is visible 21636to the camera device.<wbr/> A face that leaves the field of view and later returns may be 21637assigned a new ID.<wbr/></p> 21638<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 21639 </td> 21640 </tr> 21641 21642 21643 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21644 <!-- end of entry --> 21645 21646 21647 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 21648 <td class="entry_name 21649 " rowspan="3"> 21650 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 21651 </td> 21652 <td class="entry_type"> 21653 <span class="entry_type_name">int32</span> 21654 <span class="entry_type_container">x</span> 21655 21656 <span class="entry_type_array"> 21657 n x 6 21658 </span> 21659 <span class="entry_type_visibility"> [hidden]</span> 21660 21661 21662 <span class="entry_type_hwlevel">[legacy] </span> 21663 21664 21665 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 21666 21667 21668 </td> <!-- entry_type --> 21669 21670 <td class="entry_description"> 21671 <p>List of landmarks for detected 21672faces.<wbr/></p> 21673 </td> 21674 21675 <td class="entry_units"> 21676 </td> 21677 21678 <td class="entry_range"> 21679 </td> 21680 21681 <td class="entry_tags"> 21682 <ul class="entry_tags"> 21683 <li><a href="#tag_BC">BC</a></li> 21684 </ul> 21685 </td> 21686 21687 </tr> 21688 <tr class="entries_header"> 21689 <th class="th_details" colspan="5">Details</th> 21690 </tr> 21691 <tr class="entry_cont"> 21692 <td class="entry_details" colspan="5"> 21693 <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 21694<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 21695<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 21696 </td> 21697 </tr> 21698 21699 21700 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21701 <!-- end of entry --> 21702 21703 21704 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 21705 <td class="entry_name 21706 " rowspan="3"> 21707 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 21708 </td> 21709 <td class="entry_type"> 21710 <span class="entry_type_name">int32</span> 21711 <span class="entry_type_container">x</span> 21712 21713 <span class="entry_type_array"> 21714 n x 4 21715 </span> 21716 <span class="entry_type_visibility"> [hidden as rectangle]</span> 21717 21718 21719 <span class="entry_type_hwlevel">[legacy] </span> 21720 21721 21722 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 21723 21724 21725 </td> <!-- entry_type --> 21726 21727 <td class="entry_description"> 21728 <p>List of the bounding rectangles for detected 21729faces.<wbr/></p> 21730 </td> 21731 21732 <td class="entry_units"> 21733 </td> 21734 21735 <td class="entry_range"> 21736 </td> 21737 21738 <td class="entry_tags"> 21739 <ul class="entry_tags"> 21740 <li><a href="#tag_BC">BC</a></li> 21741 </ul> 21742 </td> 21743 21744 </tr> 21745 <tr class="entries_header"> 21746 <th class="th_details" colspan="5">Details</th> 21747 </tr> 21748 <tr class="entry_cont"> 21749 <td class="entry_details" colspan="5"> 21750 <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 21751<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 21752<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p> 21753 </td> 21754 </tr> 21755 21756 21757 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21758 <!-- end of entry --> 21759 21760 21761 <tr class="entry" id="dynamic_android.statistics.faceScores"> 21762 <td class="entry_name 21763 " rowspan="5"> 21764 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 21765 </td> 21766 <td class="entry_type"> 21767 <span class="entry_type_name">byte</span> 21768 <span class="entry_type_container">x</span> 21769 21770 <span class="entry_type_array"> 21771 n 21772 </span> 21773 <span class="entry_type_visibility"> [hidden]</span> 21774 21775 21776 <span class="entry_type_hwlevel">[legacy] </span> 21777 21778 21779 21780 21781 </td> <!-- entry_type --> 21782 21783 <td class="entry_description"> 21784 <p>List of the face confidence scores for 21785detected faces</p> 21786 </td> 21787 21788 <td class="entry_units"> 21789 </td> 21790 21791 <td class="entry_range"> 21792 <p>1-100</p> 21793 </td> 21794 21795 <td class="entry_tags"> 21796 <ul class="entry_tags"> 21797 <li><a href="#tag_BC">BC</a></li> 21798 </ul> 21799 </td> 21800 21801 </tr> 21802 <tr class="entries_header"> 21803 <th class="th_details" colspan="5">Details</th> 21804 </tr> 21805 <tr class="entry_cont"> 21806 <td class="entry_details" colspan="5"> 21807 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 21808 </td> 21809 </tr> 21810 21811 <tr class="entries_header"> 21812 <th class="th_details" colspan="5">HAL Implementation Details</th> 21813 </tr> 21814 <tr class="entry_cont"> 21815 <td class="entry_details" colspan="5"> 21816 <p>The value should be meaningful (for example,<wbr/> setting 100 at 21817all times is illegal).<wbr/></p> 21818 </td> 21819 </tr> 21820 21821 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21822 <!-- end of entry --> 21823 21824 21825 <tr class="entry" id="dynamic_android.statistics.faces"> 21826 <td class="entry_name 21827 " rowspan="3"> 21828 android.<wbr/>statistics.<wbr/>faces 21829 </td> 21830 <td class="entry_type"> 21831 <span class="entry_type_name">int32</span> 21832 <span class="entry_type_container">x</span> 21833 21834 <span class="entry_type_array"> 21835 n 21836 </span> 21837 <span class="entry_type_visibility"> [public as face]</span> 21838 21839 <span class="entry_type_synthetic">[synthetic] </span> 21840 21841 <span class="entry_type_hwlevel">[legacy] </span> 21842 21843 21844 21845 21846 </td> <!-- entry_type --> 21847 21848 <td class="entry_description"> 21849 <p>List of the faces detected through camera face detection 21850in this capture.<wbr/></p> 21851 </td> 21852 21853 <td class="entry_units"> 21854 </td> 21855 21856 <td class="entry_range"> 21857 </td> 21858 21859 <td class="entry_tags"> 21860 </td> 21861 21862 </tr> 21863 <tr class="entries_header"> 21864 <th class="th_details" colspan="5">Details</th> 21865 </tr> 21866 <tr class="entry_cont"> 21867 <td class="entry_details" colspan="5"> 21868 <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> 21869 </td> 21870 </tr> 21871 21872 21873 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21874 <!-- end of entry --> 21875 21876 21877 <tr class="entry" id="dynamic_android.statistics.histogram"> 21878 <td class="entry_name 21879 " rowspan="3"> 21880 android.<wbr/>statistics.<wbr/>histogram 21881 </td> 21882 <td class="entry_type"> 21883 <span class="entry_type_name">int32</span> 21884 <span class="entry_type_container">x</span> 21885 21886 <span class="entry_type_array"> 21887 n x 3 21888 </span> 21889 <span class="entry_type_visibility"> [system]</span> 21890 21891 21892 21893 21894 <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> 21895 21896 21897 </td> <!-- entry_type --> 21898 21899 <td class="entry_description"> 21900 <p>A 3-channel histogram based on the raw 21901sensor data</p> 21902 </td> 21903 21904 <td class="entry_units"> 21905 </td> 21906 21907 <td class="entry_range"> 21908 </td> 21909 21910 <td class="entry_tags"> 21911 <ul class="entry_tags"> 21912 <li><a href="#tag_FUTURE">FUTURE</a></li> 21913 </ul> 21914 </td> 21915 21916 </tr> 21917 <tr class="entries_header"> 21918 <th class="th_details" colspan="5">Details</th> 21919 </tr> 21920 <tr class="entry_cont"> 21921 <td class="entry_details" colspan="5"> 21922 <p>The k'th bucket (0-based) covers the input range 21923(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/> 21924(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 21925supported,<wbr/> all channels should have the same data</p> 21926 </td> 21927 </tr> 21928 21929 21930 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21931 <!-- end of entry --> 21932 21933 21934 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 21935 <td class="entry_name 21936 " rowspan="1"> 21937 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 21938 </td> 21939 <td class="entry_type"> 21940 <span class="entry_type_name entry_type_name_enum">byte</span> 21941 21942 <span class="entry_type_visibility"> [system as boolean]</span> 21943 21944 21945 21946 21947 21948 <ul class="entry_type_enum"> 21949 <li> 21950 <span class="entry_type_enum_name">OFF</span> 21951 </li> 21952 <li> 21953 <span class="entry_type_enum_name">ON</span> 21954 </li> 21955 </ul> 21956 21957 </td> <!-- entry_type --> 21958 21959 <td class="entry_description"> 21960 <p>Operating mode for histogram 21961generation</p> 21962 </td> 21963 21964 <td class="entry_units"> 21965 </td> 21966 21967 <td class="entry_range"> 21968 </td> 21969 21970 <td class="entry_tags"> 21971 <ul class="entry_tags"> 21972 <li><a href="#tag_FUTURE">FUTURE</a></li> 21973 </ul> 21974 </td> 21975 21976 </tr> 21977 21978 21979 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21980 <!-- end of entry --> 21981 21982 21983 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 21984 <td class="entry_name 21985 " rowspan="3"> 21986 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 21987 </td> 21988 <td class="entry_type"> 21989 <span class="entry_type_name">int32</span> 21990 <span class="entry_type_container">x</span> 21991 21992 <span class="entry_type_array"> 21993 n x m x 3 21994 </span> 21995 <span class="entry_type_visibility"> [system]</span> 21996 21997 21998 21999 22000 <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> 22001 22002 22003 </td> <!-- entry_type --> 22004 22005 <td class="entry_description"> 22006 <p>A 3-channel sharpness map,<wbr/> based on the raw 22007sensor data</p> 22008 </td> 22009 22010 <td class="entry_units"> 22011 </td> 22012 22013 <td class="entry_range"> 22014 </td> 22015 22016 <td class="entry_tags"> 22017 <ul class="entry_tags"> 22018 <li><a href="#tag_FUTURE">FUTURE</a></li> 22019 </ul> 22020 </td> 22021 22022 </tr> 22023 <tr class="entries_header"> 22024 <th class="th_details" colspan="5">Details</th> 22025 </tr> 22026 <tr class="entry_cont"> 22027 <td class="entry_details" colspan="5"> 22028 <p>If only a monochrome sharpness map is supported,<wbr/> 22029all channels should have the same data</p> 22030 </td> 22031 </tr> 22032 22033 22034 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22035 <!-- end of entry --> 22036 22037 22038 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 22039 <td class="entry_name 22040 " rowspan="1"> 22041 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 22042 </td> 22043 <td class="entry_type"> 22044 <span class="entry_type_name entry_type_name_enum">byte</span> 22045 22046 <span class="entry_type_visibility"> [system as boolean]</span> 22047 22048 22049 22050 22051 22052 <ul class="entry_type_enum"> 22053 <li> 22054 <span class="entry_type_enum_name">OFF</span> 22055 </li> 22056 <li> 22057 <span class="entry_type_enum_name">ON</span> 22058 </li> 22059 </ul> 22060 22061 </td> <!-- entry_type --> 22062 22063 <td class="entry_description"> 22064 <p>Operating mode for sharpness map 22065generation</p> 22066 </td> 22067 22068 <td class="entry_units"> 22069 </td> 22070 22071 <td class="entry_range"> 22072 </td> 22073 22074 <td class="entry_tags"> 22075 <ul class="entry_tags"> 22076 <li><a href="#tag_FUTURE">FUTURE</a></li> 22077 </ul> 22078 </td> 22079 22080 </tr> 22081 22082 22083 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22084 <!-- end of entry --> 22085 22086 22087 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> 22088 <td class="entry_name 22089 " rowspan="3"> 22090 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map 22091 </td> 22092 <td class="entry_type"> 22093 <span class="entry_type_name">byte</span> 22094 22095 <span class="entry_type_visibility"> [public as lensShadingMap]</span> 22096 22097 22098 <span class="entry_type_hwlevel">[full] </span> 22099 22100 22101 22102 22103 </td> <!-- entry_type --> 22104 22105 <td class="entry_description"> 22106 <p>The shading map is a low-resolution floating-point map 22107that lists the coefficients used to correct for vignetting,<wbr/> for each 22108Bayer color channel.<wbr/></p> 22109 </td> 22110 22111 <td class="entry_units"> 22112 </td> 22113 22114 <td class="entry_range"> 22115 <p>Each gain factor is >= 1</p> 22116 </td> 22117 22118 <td class="entry_tags"> 22119 </td> 22120 22121 </tr> 22122 <tr class="entries_header"> 22123 <th class="th_details" colspan="5">Details</th> 22124 </tr> 22125 <tr class="entry_cont"> 22126 <td class="entry_details" colspan="5"> 22127 <p>The least shaded section of the image should have a gain factor 22128of 1; all other sections should have gains above 1.<wbr/></p> 22129<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 22130must take into account the colorCorrection settings.<wbr/></p> 22131<p>The shading map is for the entire active pixel array,<wbr/> and is not 22132affected by the crop region specified in the request.<wbr/> Each shading map 22133entry is the value of the shading compensation map over a specific 22134pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 22135map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 22136(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 22137pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 22138The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 22139<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 22140channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 22141The shading map is stored in a fully interleaved format.<wbr/></p> 22142<p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 22143and must be smaller than 64x64.<wbr/></p> 22144<p>As an example,<wbr/> given a very small map defined as:</p> 22145<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] 22146values = 22147[ 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/> 22148 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/> 22149 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/> 22150 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/> 22151 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/> 22152 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 ] 22153</code></pre> 22154<p>The low-resolution scaling map images for each channel are 22155(displayed using nearest-neighbor interpolation):</p> 22156<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 22157<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 22158<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 22159<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 22160<p>As a visualization only,<wbr/> inverting the full-color map to recover an 22161image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 22162<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 22163 </td> 22164 </tr> 22165 22166 22167 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22168 <!-- end of entry --> 22169 22170 22171 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 22172 <td class="entry_name 22173 " rowspan="5"> 22174 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 22175 </td> 22176 <td class="entry_type"> 22177 <span class="entry_type_name">float</span> 22178 <span class="entry_type_container">x</span> 22179 22180 <span class="entry_type_array"> 22181 4 x n x m 22182 </span> 22183 <span class="entry_type_visibility"> [hidden]</span> 22184 22185 22186 <span class="entry_type_hwlevel">[full] </span> 22187 22188 22189 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 22190 22191 22192 </td> <!-- entry_type --> 22193 22194 <td class="entry_description"> 22195 <p>The shading map is a low-resolution floating-point map 22196that lists the coefficients used to correct for vignetting,<wbr/> for each 22197Bayer color channel of RAW image data.<wbr/></p> 22198 </td> 22199 22200 <td class="entry_units"> 22201 </td> 22202 22203 <td class="entry_range"> 22204 <p>Each gain factor is >= 1</p> 22205 </td> 22206 22207 <td class="entry_tags"> 22208 </td> 22209 22210 </tr> 22211 <tr class="entries_header"> 22212 <th class="th_details" colspan="5">Details</th> 22213 </tr> 22214 <tr class="entry_cont"> 22215 <td class="entry_details" colspan="5"> 22216 <p>The least shaded section of the image should have a gain factor 22217of 1; all other sections should have gains above 1.<wbr/></p> 22218<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 22219must take into account the colorCorrection settings.<wbr/></p> 22220<p>The shading map is for the entire active pixel array,<wbr/> and is not 22221affected by the crop region specified in the request.<wbr/> Each shading map 22222entry is the value of the shading compensation map over a specific 22223pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 22224map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 22225(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 22226pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 22227The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 22228<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 22229channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 22230The shading map is stored in a fully interleaved format,<wbr/> and its size 22231is 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> 22232<p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 22233and must be smaller than 64x64.<wbr/></p> 22234<p>As an example,<wbr/> given a very small map defined as:</p> 22235<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 22236<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 22237[ 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/> 22238 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/> 22239 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/> 22240 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/> 22241 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/> 22242 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 ] 22243</code></pre> 22244<p>The low-resolution scaling map images for each channel are 22245(displayed using nearest-neighbor interpolation):</p> 22246<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 22247<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 22248<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 22249<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 22250<p>As a visualization only,<wbr/> inverting the full-color map to recover an 22251image of a gray wall (using bicubic interpolation for visual quality) 22252as captured by the sensor gives:</p> 22253<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 22254<p>Note that the RAW image data might be subject to lens shading 22255correction not reported on this map.<wbr/> Query 22256<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 22257to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> 22258is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading 22259correction.<wbr/> In the case full lens shading correction is applied to RAW 22260images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/> 22261In other words,<wbr/> the map reported in this key is the remaining lens shading 22262that needs to be applied on the RAW image to get images without lens shading 22263artifacts.<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 22264formats.<wbr/></p> 22265 </td> 22266 </tr> 22267 22268 <tr class="entries_header"> 22269 <th class="th_details" colspan="5">HAL Implementation Details</th> 22270 </tr> 22271 <tr class="entry_cont"> 22272 <td class="entry_details" colspan="5"> 22273 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> 22274When AE and AWB are in AUTO modes 22275(<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 22276may have all the information it need to generate most accurate lens shading map.<wbr/> When 22277AE or AWB are in manual mode 22278(<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 22279may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 22280generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 22281the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p> 22282 </td> 22283 </tr> 22284 22285 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22286 <!-- end of entry --> 22287 22288 22289 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 22290 <td class="entry_name 22291 entry_name_deprecated 22292 " rowspan="3"> 22293 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 22294 </td> 22295 <td class="entry_type"> 22296 <span class="entry_type_name">float</span> 22297 <span class="entry_type_container">x</span> 22298 22299 <span class="entry_type_array"> 22300 4 22301 </span> 22302 <span class="entry_type_visibility"> [hidden]</span> 22303 22304 22305 22306 <span class="entry_type_deprecated">[deprecated] </span> 22307 22308 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 22309 22310 22311 </td> <!-- entry_type --> 22312 22313 <td class="entry_description"> 22314 <p>The best-fit color channel gains calculated 22315by the camera device's statistics units for the current output frame.<wbr/></p> 22316 </td> 22317 22318 <td class="entry_units"> 22319 </td> 22320 22321 <td class="entry_range"> 22322 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 22323 </td> 22324 22325 <td class="entry_tags"> 22326 </td> 22327 22328 </tr> 22329 <tr class="entries_header"> 22330 <th class="th_details" colspan="5">Details</th> 22331 </tr> 22332 <tr class="entry_cont"> 22333 <td class="entry_details" colspan="5"> 22334 <p>This may be different than the gains used for this frame,<wbr/> 22335since statistics processing on data from a new frame 22336typically completes after the transform has already been 22337applied to that frame.<wbr/></p> 22338<p>The 4 channel gains are defined in Bayer domain,<wbr/> 22339see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 22340<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 22341regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 22342 </td> 22343 </tr> 22344 22345 22346 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22347 <!-- end of entry --> 22348 22349 22350 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 22351 <td class="entry_name 22352 entry_name_deprecated 22353 " rowspan="3"> 22354 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 22355 </td> 22356 <td class="entry_type"> 22357 <span class="entry_type_name">rational</span> 22358 <span class="entry_type_container">x</span> 22359 22360 <span class="entry_type_array"> 22361 3 x 3 22362 </span> 22363 <span class="entry_type_visibility"> [hidden]</span> 22364 22365 22366 22367 <span class="entry_type_deprecated">[deprecated] </span> 22368 22369 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 22370 22371 22372 </td> <!-- entry_type --> 22373 22374 <td class="entry_description"> 22375 <p>The best-fit color transform matrix estimate 22376calculated by the camera device's statistics units for the current 22377output frame.<wbr/></p> 22378 </td> 22379 22380 <td class="entry_units"> 22381 </td> 22382 22383 <td class="entry_range"> 22384 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 22385 </td> 22386 22387 <td class="entry_tags"> 22388 </td> 22389 22390 </tr> 22391 <tr class="entries_header"> 22392 <th class="th_details" colspan="5">Details</th> 22393 </tr> 22394 <tr class="entry_cont"> 22395 <td class="entry_details" colspan="5"> 22396 <p>The camera device will provide the estimate from its 22397statistics unit on the white balance transforms to use 22398for the next frame.<wbr/> These are the values the camera device believes 22399are the best fit for the current output frame.<wbr/> This may 22400be different than the transform used for this frame,<wbr/> since 22401statistics processing on data from a new frame typically 22402completes after the transform has already been applied to 22403that frame.<wbr/></p> 22404<p>These estimates must be provided for all frames,<wbr/> even if 22405capture settings and color transforms are set by the application.<wbr/></p> 22406<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 22407regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 22408 </td> 22409 </tr> 22410 22411 22412 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22413 <!-- end of entry --> 22414 22415 22416 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 22417 <td class="entry_name 22418 " rowspan="3"> 22419 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 22420 </td> 22421 <td class="entry_type"> 22422 <span class="entry_type_name entry_type_name_enum">byte</span> 22423 22424 <span class="entry_type_visibility"> [public]</span> 22425 22426 22427 <span class="entry_type_hwlevel">[full] </span> 22428 22429 22430 22431 <ul class="entry_type_enum"> 22432 <li> 22433 <span class="entry_type_enum_name">NONE</span> 22434 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination 22435in the current scene.<wbr/></p></span> 22436 </li> 22437 <li> 22438 <span class="entry_type_enum_name">50HZ</span> 22439 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz 22440in the current scene.<wbr/></p></span> 22441 </li> 22442 <li> 22443 <span class="entry_type_enum_name">60HZ</span> 22444 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz 22445in the current scene.<wbr/></p></span> 22446 </li> 22447 </ul> 22448 22449 </td> <!-- entry_type --> 22450 22451 <td class="entry_description"> 22452 <p>The camera device estimated scene illumination lighting 22453frequency.<wbr/></p> 22454 </td> 22455 22456 <td class="entry_units"> 22457 </td> 22458 22459 <td class="entry_range"> 22460 </td> 22461 22462 <td class="entry_tags"> 22463 </td> 22464 22465 </tr> 22466 <tr class="entries_header"> 22467 <th class="th_details" colspan="5">Details</th> 22468 </tr> 22469 <tr class="entry_cont"> 22470 <td class="entry_details" colspan="5"> 22471 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 22472that depends on the local utility power standards.<wbr/> This flicker must be 22473accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 22474The camera device uses this entry to tell the application what the scene 22475illuminant frequency is.<wbr/></p> 22476<p>When manual exposure control is enabled 22477(<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> == 22478OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform 22479antibanding,<wbr/> and the application can ensure it selects 22480exposure times that do not cause banding issues by looking 22481into this metadata field.<wbr/> See 22482<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p> 22483<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p> 22484 </td> 22485 </tr> 22486 22487 22488 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22489 <!-- end of entry --> 22490 22491 22492 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 22493 <td class="entry_name 22494 " rowspan="3"> 22495 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 22496 </td> 22497 <td class="entry_type"> 22498 <span class="entry_type_name entry_type_name_enum">byte</span> 22499 22500 <span class="entry_type_visibility"> [public as boolean]</span> 22501 22502 22503 22504 22505 22506 <ul class="entry_type_enum"> 22507 <li> 22508 <span class="entry_type_enum_name">OFF</span> 22509 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 22510 </li> 22511 <li> 22512 <span class="entry_type_enum_name">ON</span> 22513 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 22514 </li> 22515 </ul> 22516 22517 </td> <!-- entry_type --> 22518 22519 <td class="entry_description"> 22520 <p>Operating mode for hot pixel map generation.<wbr/></p> 22521 </td> 22522 22523 <td class="entry_units"> 22524 </td> 22525 22526 <td class="entry_range"> 22527 <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> 22528 </td> 22529 22530 <td class="entry_tags"> 22531 <ul class="entry_tags"> 22532 <li><a href="#tag_V1">V1</a></li> 22533 <li><a href="#tag_RAW">RAW</a></li> 22534 </ul> 22535 </td> 22536 22537 </tr> 22538 <tr class="entries_header"> 22539 <th class="th_details" colspan="5">Details</th> 22540 </tr> 22541 <tr class="entry_cont"> 22542 <td class="entry_details" colspan="5"> 22543 <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/> 22544If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 22545 </td> 22546 </tr> 22547 22548 22549 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22550 <!-- end of entry --> 22551 22552 22553 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 22554 <td class="entry_name 22555 " rowspan="5"> 22556 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 22557 </td> 22558 <td class="entry_type"> 22559 <span class="entry_type_name">int32</span> 22560 <span class="entry_type_container">x</span> 22561 22562 <span class="entry_type_array"> 22563 2 x n 22564 </span> 22565 <span class="entry_type_visibility"> [public as point]</span> 22566 22567 22568 22569 22570 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 22571 22572 22573 </td> <!-- entry_type --> 22574 22575 <td class="entry_description"> 22576 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 22577 </td> 22578 22579 <td class="entry_units"> 22580 </td> 22581 22582 <td class="entry_range"> 22583 <p>n <= number of pixels on the sensor.<wbr/> 22584The <code>(x,<wbr/> y)</code> coordinates must be bounded by 22585<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 22586 </td> 22587 22588 <td class="entry_tags"> 22589 <ul class="entry_tags"> 22590 <li><a href="#tag_V1">V1</a></li> 22591 <li><a href="#tag_RAW">RAW</a></li> 22592 </ul> 22593 </td> 22594 22595 </tr> 22596 <tr class="entries_header"> 22597 <th class="th_details" colspan="5">Details</th> 22598 </tr> 22599 <tr class="entry_cont"> 22600 <td class="entry_details" colspan="5"> 22601 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 22602<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 22603bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 22604height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 22605This may include hot pixels that lie outside of the active array 22606bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 22607 </td> 22608 </tr> 22609 22610 <tr class="entries_header"> 22611 <th class="th_details" colspan="5">HAL Implementation Details</th> 22612 </tr> 22613 <tr class="entry_cont"> 22614 <td class="entry_details" colspan="5"> 22615 <p>A hotpixel map contains the coordinates of pixels on the camera 22616sensor that do report valid values (usually due to defects in 22617the camera sensor).<wbr/> This includes pixels that are stuck at certain 22618values,<wbr/> or have a response that does not accuractly encode the 22619incoming light from the scene.<wbr/></p> 22620<p>To avoid performance issues,<wbr/> there should be significantly fewer hot 22621pixels than actual pixels on the camera sensor.<wbr/></p> 22622 </td> 22623 </tr> 22624 22625 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22626 <!-- end of entry --> 22627 22628 22629 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> 22630 <td class="entry_name 22631 " rowspan="3"> 22632 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 22633 </td> 22634 <td class="entry_type"> 22635 <span class="entry_type_name entry_type_name_enum">byte</span> 22636 22637 <span class="entry_type_visibility"> [public]</span> 22638 22639 22640 <span class="entry_type_hwlevel">[full] </span> 22641 22642 22643 22644 <ul class="entry_type_enum"> 22645 <li> 22646 <span class="entry_type_enum_name">OFF</span> 22647 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 22648 </li> 22649 <li> 22650 <span class="entry_type_enum_name">ON</span> 22651 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 22652 </li> 22653 </ul> 22654 22655 </td> <!-- entry_type --> 22656 22657 <td class="entry_description"> 22658 <p>Whether the camera device will output the lens 22659shading map in output result metadata.<wbr/></p> 22660 </td> 22661 22662 <td class="entry_units"> 22663 </td> 22664 22665 <td class="entry_range"> 22666 <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> 22667 </td> 22668 22669 <td class="entry_tags"> 22670 <ul class="entry_tags"> 22671 <li><a href="#tag_RAW">RAW</a></li> 22672 </ul> 22673 </td> 22674 22675 </tr> 22676 <tr class="entries_header"> 22677 <th class="th_details" colspan="5">Details</th> 22678 </tr> 22679 <tr class="entry_cont"> 22680 <td class="entry_details" colspan="5"> 22681 <p>When set to ON,<wbr/> 22682<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 22683the output result metadata.<wbr/></p> 22684<p>ON is always supported on devices with the RAW capability.<wbr/></p> 22685 </td> 22686 </tr> 22687 22688 22689 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22690 <!-- end of entry --> 22691 22692 22693 22694 <!-- end of kind --> 22695 </tbody> 22696 22697 <!-- end of section --> 22698 <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr> 22699 22700 22701 <tr><td colspan="6" class="kind">controls</td></tr> 22702 22703 <thead class="entries_header"> 22704 <tr> 22705 <th class="th_name">Property Name</th> 22706 <th class="th_type">Type</th> 22707 <th class="th_description">Description</th> 22708 <th class="th_units">Units</th> 22709 <th class="th_range">Range</th> 22710 <th class="th_tags">Tags</th> 22711 </tr> 22712 </thead> 22713 22714 <tbody> 22715 22716 22717 22718 22719 22720 22721 22722 22723 22724 22725 <tr class="entry" id="controls_android.tonemap.curveBlue"> 22726 <td class="entry_name 22727 " rowspan="3"> 22728 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 22729 </td> 22730 <td class="entry_type"> 22731 <span class="entry_type_name">float</span> 22732 <span class="entry_type_container">x</span> 22733 22734 <span class="entry_type_array"> 22735 n x 2 22736 </span> 22737 <span class="entry_type_visibility"> [hidden]</span> 22738 22739 22740 <span class="entry_type_hwlevel">[full] </span> 22741 22742 22743 <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> 22744 22745 22746 </td> <!-- entry_type --> 22747 22748 <td class="entry_description"> 22749 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 22750channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 22751CONTRAST_<wbr/>CURVE.<wbr/></p> 22752 </td> 22753 22754 <td class="entry_units"> 22755 </td> 22756 22757 <td class="entry_range"> 22758 </td> 22759 22760 <td class="entry_tags"> 22761 </td> 22762 22763 </tr> 22764 <tr class="entries_header"> 22765 <th class="th_details" colspan="5">Details</th> 22766 </tr> 22767 <tr class="entry_cont"> 22768 <td class="entry_details" colspan="5"> 22769 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 22770 </td> 22771 </tr> 22772 22773 22774 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22775 <!-- end of entry --> 22776 22777 22778 <tr class="entry" id="controls_android.tonemap.curveGreen"> 22779 <td class="entry_name 22780 " rowspan="3"> 22781 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 22782 </td> 22783 <td class="entry_type"> 22784 <span class="entry_type_name">float</span> 22785 <span class="entry_type_container">x</span> 22786 22787 <span class="entry_type_array"> 22788 n x 2 22789 </span> 22790 <span class="entry_type_visibility"> [hidden]</span> 22791 22792 22793 <span class="entry_type_hwlevel">[full] </span> 22794 22795 22796 <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> 22797 22798 22799 </td> <!-- entry_type --> 22800 22801 <td class="entry_description"> 22802 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 22803channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 22804CONTRAST_<wbr/>CURVE.<wbr/></p> 22805 </td> 22806 22807 <td class="entry_units"> 22808 </td> 22809 22810 <td class="entry_range"> 22811 </td> 22812 22813 <td class="entry_tags"> 22814 </td> 22815 22816 </tr> 22817 <tr class="entries_header"> 22818 <th class="th_details" colspan="5">Details</th> 22819 </tr> 22820 <tr class="entry_cont"> 22821 <td class="entry_details" colspan="5"> 22822 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 22823 </td> 22824 </tr> 22825 22826 22827 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22828 <!-- end of entry --> 22829 22830 22831 <tr class="entry" id="controls_android.tonemap.curveRed"> 22832 <td class="entry_name 22833 " rowspan="5"> 22834 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 22835 </td> 22836 <td class="entry_type"> 22837 <span class="entry_type_name">float</span> 22838 <span class="entry_type_container">x</span> 22839 22840 <span class="entry_type_array"> 22841 n x 2 22842 </span> 22843 <span class="entry_type_visibility"> [hidden]</span> 22844 22845 22846 <span class="entry_type_hwlevel">[full] </span> 22847 22848 22849 <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> 22850 22851 22852 </td> <!-- entry_type --> 22853 22854 <td class="entry_description"> 22855 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 22856channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 22857CONTRAST_<wbr/>CURVE.<wbr/></p> 22858 </td> 22859 22860 <td class="entry_units"> 22861 </td> 22862 22863 <td class="entry_range"> 22864 <p>0-1 on both input and output coordinates,<wbr/> normalized 22865as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 22866 </td> 22867 22868 <td class="entry_tags"> 22869 </td> 22870 22871 </tr> 22872 <tr class="entries_header"> 22873 <th class="th_details" colspan="5">Details</th> 22874 </tr> 22875 <tr class="entry_cont"> 22876 <td class="entry_details" colspan="5"> 22877 <p>Each channel's curve is defined by an array of control points:</p> 22878<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 22879 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 228802 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 22881<p>These are sorted in order of increasing <code>Pin</code>; it is 22882required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 22883define a complete mapping.<wbr/> For input values between control points,<wbr/> 22884the camera device must linearly interpolate between the control 22885points.<wbr/></p> 22886<p>Each curve can have an independent number of points,<wbr/> and the number 22887of points can be less than max (that is,<wbr/> the request doesn't have to 22888always provide a curve with number of points equivalent to 22889<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 22890<p>A few examples,<wbr/> and their corresponding graphical mappings; these 22891only specify the red channel and the precision is limited to 4 22892digits,<wbr/> for conciseness.<wbr/></p> 22893<p>Linear mapping:</p> 22894<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 ] 22895</code></pre> 22896<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 22897<p>Invert mapping:</p> 22898<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 ] 22899</code></pre> 22900<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 22901<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 22902<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 22903 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/> 22904 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/> 22905 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/> 22906 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 ] 22907</code></pre> 22908<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 22909<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 22910<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 22911 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/> 22912 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/> 22913 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/> 22914 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 ] 22915</code></pre> 22916<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 22917 </td> 22918 </tr> 22919 22920 <tr class="entries_header"> 22921 <th class="th_details" colspan="5">HAL Implementation Details</th> 22922 </tr> 22923 <tr class="entry_cont"> 22924 <td class="entry_details" colspan="5"> 22925 <p>For good quality of mapping,<wbr/> at least 128 control points are 22926preferred.<wbr/></p> 22927<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 22928control points used as are available.<wbr/></p> 22929 </td> 22930 </tr> 22931 22932 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22933 <!-- end of entry --> 22934 22935 22936 <tr class="entry" id="controls_android.tonemap.curve"> 22937 <td class="entry_name 22938 " rowspan="5"> 22939 android.<wbr/>tonemap.<wbr/>curve 22940 </td> 22941 <td class="entry_type"> 22942 <span class="entry_type_name">float</span> 22943 22944 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 22945 22946 <span class="entry_type_synthetic">[synthetic] </span> 22947 22948 <span class="entry_type_hwlevel">[full] </span> 22949 22950 22951 22952 22953 </td> <!-- entry_type --> 22954 22955 <td class="entry_description"> 22956 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 22957is CONTRAST_<wbr/>CURVE.<wbr/></p> 22958 </td> 22959 22960 <td class="entry_units"> 22961 </td> 22962 22963 <td class="entry_range"> 22964 </td> 22965 22966 <td class="entry_tags"> 22967 </td> 22968 22969 </tr> 22970 <tr class="entries_header"> 22971 <th class="th_details" colspan="5">Details</th> 22972 </tr> 22973 <tr class="entry_cont"> 22974 <td class="entry_details" colspan="5"> 22975 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 22976channels respectively.<wbr/> The following example uses the red channel as an 22977example.<wbr/> The same logic applies to green and blue channel.<wbr/> 22978Each channel's curve is defined by an array of control points:</p> 22979<pre><code>curveRed = 22980 [ 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) ] 229812 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 22982<p>These are sorted in order of increasing <code>Pin</code>; it is always 22983guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 22984define a complete mapping.<wbr/> For input values between control points,<wbr/> 22985the camera device must linearly interpolate between the control 22986points.<wbr/></p> 22987<p>Each curve can have an independent number of points,<wbr/> and the number 22988of points can be less than max (that is,<wbr/> the request doesn't have to 22989always provide a curve with number of points equivalent to 22990<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 22991<p>A few examples,<wbr/> and their corresponding graphical mappings; these 22992only specify the red channel and the precision is limited to 4 22993digits,<wbr/> for conciseness.<wbr/></p> 22994<p>Linear mapping:</p> 22995<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 22996</code></pre> 22997<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 22998<p>Invert mapping:</p> 22999<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 23000</code></pre> 23001<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 23002<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 23003<pre><code>curveRed = [ 23004 (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/> 23005 (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/> 23006 (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/> 23007 (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) ] 23008</code></pre> 23009<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 23010<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 23011<pre><code>curveRed = [ 23012 (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/> 23013 (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/> 23014 (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/> 23015 (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) ] 23016</code></pre> 23017<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 23018 </td> 23019 </tr> 23020 23021 <tr class="entries_header"> 23022 <th class="th_details" colspan="5">HAL Implementation Details</th> 23023 </tr> 23024 <tr class="entry_cont"> 23025 <td class="entry_details" colspan="5"> 23026 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 23027curveBlue entries.<wbr/></p> 23028 </td> 23029 </tr> 23030 23031 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23032 <!-- end of entry --> 23033 23034 23035 <tr class="entry" id="controls_android.tonemap.mode"> 23036 <td class="entry_name 23037 " rowspan="3"> 23038 android.<wbr/>tonemap.<wbr/>mode 23039 </td> 23040 <td class="entry_type"> 23041 <span class="entry_type_name entry_type_name_enum">byte</span> 23042 23043 <span class="entry_type_visibility"> [public]</span> 23044 23045 23046 <span class="entry_type_hwlevel">[full] </span> 23047 23048 23049 23050 <ul class="entry_type_enum"> 23051 <li> 23052 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 23053 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 23054the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 23055<p>All color enhancement and tonemapping must be disabled,<wbr/> except 23056for applying the tonemapping curve specified by 23057<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 23058<p>Must not slow down frame rate relative to raw 23059sensor output.<wbr/></p></span> 23060 </li> 23061 <li> 23062 <span class="entry_type_enum_name">FAST</span> 23063 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 23064reducing frame rate compared to raw sensor output.<wbr/></p></span> 23065 </li> 23066 <li> 23067 <span class="entry_type_enum_name">HIGH_QUALITY</span> 23068 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 23069the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 23070 </li> 23071 <li> 23072 <span class="entry_type_enum_name">GAMMA_VALUE</span> 23073 <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform 23074tonemapping.<wbr/></p> 23075<p>All color enhancement and tonemapping must be disabled,<wbr/> except 23076for applying the tonemapping curve specified by <a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 23077<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 23078 </li> 23079 <li> 23080 <span class="entry_type_enum_name">PRESET_CURVE</span> 23081 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 23082<a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 23083<p>All color enhancement and tonemapping must be disabled,<wbr/> except 23084for applying the tonemapping curve specified by 23085<a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 23086<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 23087 </li> 23088 </ul> 23089 23090 </td> <!-- entry_type --> 23091 23092 <td class="entry_description"> 23093 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 23094 </td> 23095 23096 <td class="entry_units"> 23097 </td> 23098 23099 <td class="entry_range"> 23100 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 23101 </td> 23102 23103 <td class="entry_tags"> 23104 </td> 23105 23106 </tr> 23107 <tr class="entries_header"> 23108 <th class="th_details" colspan="5">Details</th> 23109 </tr> 23110 <tr class="entry_cont"> 23111 <td class="entry_details" colspan="5"> 23112 <p>When switching to an application-defined contrast curve by setting 23113<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 23114per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 23115mapping from input high-bit-depth pixel value to the output 23116low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 23117and output may change depending on the camera pipeline,<wbr/> the values 23118are specified by normalized floating-point numbers.<wbr/></p> 23119<p>More-complex color mapping operations such as 3D color look-up 23120tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 23121transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23122CONTRAST_<wbr/>CURVE.<wbr/></p> 23123<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 23124emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 23125These values are always available,<wbr/> and as close as possible to the 23126actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 23127<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 23128provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 23129roughly the same.<wbr/></p> 23130 </td> 23131 </tr> 23132 23133 23134 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23135 <!-- end of entry --> 23136 23137 23138 <tr class="entry" id="controls_android.tonemap.gamma"> 23139 <td class="entry_name 23140 " rowspan="3"> 23141 android.<wbr/>tonemap.<wbr/>gamma 23142 </td> 23143 <td class="entry_type"> 23144 <span class="entry_type_name">float</span> 23145 23146 <span class="entry_type_visibility"> [public]</span> 23147 23148 23149 23150 23151 23152 23153 </td> <!-- entry_type --> 23154 23155 <td class="entry_description"> 23156 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23157GAMMA_<wbr/>VALUE</p> 23158 </td> 23159 23160 <td class="entry_units"> 23161 </td> 23162 23163 <td class="entry_range"> 23164 </td> 23165 23166 <td class="entry_tags"> 23167 </td> 23168 23169 </tr> 23170 <tr class="entries_header"> 23171 <th class="th_details" colspan="5">Details</th> 23172 </tr> 23173 <tr class="entry_cont"> 23174 <td class="entry_details" colspan="5"> 23175 <p>The tonemap curve will be defined the following formula: 23176* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 23177where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 23178pow is the power function and gamma is the gamma value specified by this 23179key.<wbr/></p> 23180<p>The same curve will be applied to all color channels.<wbr/> The camera device 23181may clip the input gamma value to its supported range.<wbr/> The actual applied 23182value will be returned in capture result.<wbr/></p> 23183<p>The valid range of gamma value varies on different devices,<wbr/> but values 23184within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 23185 </td> 23186 </tr> 23187 23188 23189 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23190 <!-- end of entry --> 23191 23192 23193 <tr class="entry" id="controls_android.tonemap.presetCurve"> 23194 <td class="entry_name 23195 " rowspan="3"> 23196 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 23197 </td> 23198 <td class="entry_type"> 23199 <span class="entry_type_name entry_type_name_enum">byte</span> 23200 23201 <span class="entry_type_visibility"> [public]</span> 23202 23203 23204 23205 23206 23207 <ul class="entry_type_enum"> 23208 <li> 23209 <span class="entry_type_enum_name">SRGB</span> 23210 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 23211 </li> 23212 <li> 23213 <span class="entry_type_enum_name">REC709</span> 23214 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 23215 </li> 23216 </ul> 23217 23218 </td> <!-- entry_type --> 23219 23220 <td class="entry_description"> 23221 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23222PRESET_<wbr/>CURVE</p> 23223 </td> 23224 23225 <td class="entry_units"> 23226 </td> 23227 23228 <td class="entry_range"> 23229 </td> 23230 23231 <td class="entry_tags"> 23232 </td> 23233 23234 </tr> 23235 <tr class="entries_header"> 23236 <th class="th_details" colspan="5">Details</th> 23237 </tr> 23238 <tr class="entry_cont"> 23239 <td class="entry_details" colspan="5"> 23240 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 23241<p>sRGB (approximated by 16 control points):</p> 23242<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 23243<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 23244<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 23245<p>Note that above figures show a 16 control points approximation of preset 23246curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 23247 </td> 23248 </tr> 23249 23250 23251 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23252 <!-- end of entry --> 23253 23254 23255 23256 <!-- end of kind --> 23257 </tbody> 23258 <tr><td colspan="6" class="kind">static</td></tr> 23259 23260 <thead class="entries_header"> 23261 <tr> 23262 <th class="th_name">Property Name</th> 23263 <th class="th_type">Type</th> 23264 <th class="th_description">Description</th> 23265 <th class="th_units">Units</th> 23266 <th class="th_range">Range</th> 23267 <th class="th_tags">Tags</th> 23268 </tr> 23269 </thead> 23270 23271 <tbody> 23272 23273 23274 23275 23276 23277 23278 23279 23280 23281 23282 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 23283 <td class="entry_name 23284 " rowspan="5"> 23285 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 23286 </td> 23287 <td class="entry_type"> 23288 <span class="entry_type_name">int32</span> 23289 23290 <span class="entry_type_visibility"> [public]</span> 23291 23292 23293 <span class="entry_type_hwlevel">[full] </span> 23294 23295 23296 23297 23298 </td> <!-- entry_type --> 23299 23300 <td class="entry_description"> 23301 <p>Maximum number of supported points in the 23302tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 23303 </td> 23304 23305 <td class="entry_units"> 23306 </td> 23307 23308 <td class="entry_range"> 23309 </td> 23310 23311 <td class="entry_tags"> 23312 </td> 23313 23314 </tr> 23315 <tr class="entries_header"> 23316 <th class="th_details" colspan="5">Details</th> 23317 </tr> 23318 <tr class="entry_cont"> 23319 <td class="entry_details" colspan="5"> 23320 <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 23321less than this maximum,<wbr/> the camera device will resample the curve to its internal 23322representation,<wbr/> using linear interpolation.<wbr/></p> 23323<p>The output curves in the result metadata may have a different number 23324of points than the input curves,<wbr/> and will represent the actual 23325hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 23326 </td> 23327 </tr> 23328 23329 <tr class="entries_header"> 23330 <th class="th_details" colspan="5">HAL Implementation Details</th> 23331 </tr> 23332 <tr class="entry_cont"> 23333 <td class="entry_details" colspan="5"> 23334 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 23335 </td> 23336 </tr> 23337 23338 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23339 <!-- end of entry --> 23340 23341 23342 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 23343 <td class="entry_name 23344 " rowspan="5"> 23345 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 23346 </td> 23347 <td class="entry_type"> 23348 <span class="entry_type_name">byte</span> 23349 <span class="entry_type_container">x</span> 23350 23351 <span class="entry_type_array"> 23352 n 23353 </span> 23354 <span class="entry_type_visibility"> [public as enumList]</span> 23355 23356 23357 <span class="entry_type_hwlevel">[full] </span> 23358 23359 23360 <div class="entry_type_notes">list of enums</div> 23361 23362 23363 </td> <!-- entry_type --> 23364 23365 <td class="entry_description"> 23366 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera 23367device.<wbr/></p> 23368 </td> 23369 23370 <td class="entry_units"> 23371 </td> 23372 23373 <td class="entry_range"> 23374 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p> 23375 </td> 23376 23377 <td class="entry_tags"> 23378 </td> 23379 23380 </tr> 23381 <tr class="entries_header"> 23382 <th class="th_details" colspan="5">Details</th> 23383 </tr> 23384 <tr class="entry_cont"> 23385 <td class="entry_details" colspan="5"> 23386 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain 23387at least one of below mode combinations:</p> 23388<ul> 23389<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 23390<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 23391</ul> 23392<p>This includes all FULL level devices.<wbr/></p> 23393 </td> 23394 </tr> 23395 23396 <tr class="entries_header"> 23397 <th class="th_details" colspan="5">HAL Implementation Details</th> 23398 </tr> 23399 <tr class="entry_cont"> 23400 <td class="entry_details" colspan="5"> 23401 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available 23402on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 23403That is,<wbr/> if the highest quality implementation on the camera device does not slow down 23404capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 23405 </td> 23406 </tr> 23407 23408 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23409 <!-- end of entry --> 23410 23411 23412 23413 <!-- end of kind --> 23414 </tbody> 23415 <tr><td colspan="6" class="kind">dynamic</td></tr> 23416 23417 <thead class="entries_header"> 23418 <tr> 23419 <th class="th_name">Property Name</th> 23420 <th class="th_type">Type</th> 23421 <th class="th_description">Description</th> 23422 <th class="th_units">Units</th> 23423 <th class="th_range">Range</th> 23424 <th class="th_tags">Tags</th> 23425 </tr> 23426 </thead> 23427 23428 <tbody> 23429 23430 23431 23432 23433 23434 23435 23436 23437 23438 23439 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 23440 <td class="entry_name 23441 " rowspan="3"> 23442 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 23443 </td> 23444 <td class="entry_type"> 23445 <span class="entry_type_name">float</span> 23446 <span class="entry_type_container">x</span> 23447 23448 <span class="entry_type_array"> 23449 n x 2 23450 </span> 23451 <span class="entry_type_visibility"> [hidden]</span> 23452 23453 23454 <span class="entry_type_hwlevel">[full] </span> 23455 23456 23457 <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> 23458 23459 23460 </td> <!-- entry_type --> 23461 23462 <td class="entry_description"> 23463 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 23464channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23465CONTRAST_<wbr/>CURVE.<wbr/></p> 23466 </td> 23467 23468 <td class="entry_units"> 23469 </td> 23470 23471 <td class="entry_range"> 23472 </td> 23473 23474 <td class="entry_tags"> 23475 </td> 23476 23477 </tr> 23478 <tr class="entries_header"> 23479 <th class="th_details" colspan="5">Details</th> 23480 </tr> 23481 <tr class="entry_cont"> 23482 <td class="entry_details" colspan="5"> 23483 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 23484 </td> 23485 </tr> 23486 23487 23488 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23489 <!-- end of entry --> 23490 23491 23492 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 23493 <td class="entry_name 23494 " rowspan="3"> 23495 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 23496 </td> 23497 <td class="entry_type"> 23498 <span class="entry_type_name">float</span> 23499 <span class="entry_type_container">x</span> 23500 23501 <span class="entry_type_array"> 23502 n x 2 23503 </span> 23504 <span class="entry_type_visibility"> [hidden]</span> 23505 23506 23507 <span class="entry_type_hwlevel">[full] </span> 23508 23509 23510 <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> 23511 23512 23513 </td> <!-- entry_type --> 23514 23515 <td class="entry_description"> 23516 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 23517channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23518CONTRAST_<wbr/>CURVE.<wbr/></p> 23519 </td> 23520 23521 <td class="entry_units"> 23522 </td> 23523 23524 <td class="entry_range"> 23525 </td> 23526 23527 <td class="entry_tags"> 23528 </td> 23529 23530 </tr> 23531 <tr class="entries_header"> 23532 <th class="th_details" colspan="5">Details</th> 23533 </tr> 23534 <tr class="entry_cont"> 23535 <td class="entry_details" colspan="5"> 23536 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 23537 </td> 23538 </tr> 23539 23540 23541 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23542 <!-- end of entry --> 23543 23544 23545 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 23546 <td class="entry_name 23547 " rowspan="5"> 23548 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 23549 </td> 23550 <td class="entry_type"> 23551 <span class="entry_type_name">float</span> 23552 <span class="entry_type_container">x</span> 23553 23554 <span class="entry_type_array"> 23555 n x 2 23556 </span> 23557 <span class="entry_type_visibility"> [hidden]</span> 23558 23559 23560 <span class="entry_type_hwlevel">[full] </span> 23561 23562 23563 <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> 23564 23565 23566 </td> <!-- entry_type --> 23567 23568 <td class="entry_description"> 23569 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 23570channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23571CONTRAST_<wbr/>CURVE.<wbr/></p> 23572 </td> 23573 23574 <td class="entry_units"> 23575 </td> 23576 23577 <td class="entry_range"> 23578 <p>0-1 on both input and output coordinates,<wbr/> normalized 23579as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 23580 </td> 23581 23582 <td class="entry_tags"> 23583 </td> 23584 23585 </tr> 23586 <tr class="entries_header"> 23587 <th class="th_details" colspan="5">Details</th> 23588 </tr> 23589 <tr class="entry_cont"> 23590 <td class="entry_details" colspan="5"> 23591 <p>Each channel's curve is defined by an array of control points:</p> 23592<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 23593 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 235942 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 23595<p>These are sorted in order of increasing <code>Pin</code>; it is 23596required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 23597define a complete mapping.<wbr/> For input values between control points,<wbr/> 23598the camera device must linearly interpolate between the control 23599points.<wbr/></p> 23600<p>Each curve can have an independent number of points,<wbr/> and the number 23601of points can be less than max (that is,<wbr/> the request doesn't have to 23602always provide a curve with number of points equivalent to 23603<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 23604<p>A few examples,<wbr/> and their corresponding graphical mappings; these 23605only specify the red channel and the precision is limited to 4 23606digits,<wbr/> for conciseness.<wbr/></p> 23607<p>Linear mapping:</p> 23608<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 ] 23609</code></pre> 23610<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 23611<p>Invert mapping:</p> 23612<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 ] 23613</code></pre> 23614<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 23615<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 23616<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 23617 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/> 23618 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/> 23619 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/> 23620 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 ] 23621</code></pre> 23622<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 23623<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 23624<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 23625 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/> 23626 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/> 23627 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/> 23628 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 ] 23629</code></pre> 23630<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 23631 </td> 23632 </tr> 23633 23634 <tr class="entries_header"> 23635 <th class="th_details" colspan="5">HAL Implementation Details</th> 23636 </tr> 23637 <tr class="entry_cont"> 23638 <td class="entry_details" colspan="5"> 23639 <p>For good quality of mapping,<wbr/> at least 128 control points are 23640preferred.<wbr/></p> 23641<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 23642control points used as are available.<wbr/></p> 23643 </td> 23644 </tr> 23645 23646 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23647 <!-- end of entry --> 23648 23649 23650 <tr class="entry" id="dynamic_android.tonemap.curve"> 23651 <td class="entry_name 23652 " rowspan="5"> 23653 android.<wbr/>tonemap.<wbr/>curve 23654 </td> 23655 <td class="entry_type"> 23656 <span class="entry_type_name">float</span> 23657 23658 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 23659 23660 <span class="entry_type_synthetic">[synthetic] </span> 23661 23662 <span class="entry_type_hwlevel">[full] </span> 23663 23664 23665 23666 23667 </td> <!-- entry_type --> 23668 23669 <td class="entry_description"> 23670 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 23671is CONTRAST_<wbr/>CURVE.<wbr/></p> 23672 </td> 23673 23674 <td class="entry_units"> 23675 </td> 23676 23677 <td class="entry_range"> 23678 </td> 23679 23680 <td class="entry_tags"> 23681 </td> 23682 23683 </tr> 23684 <tr class="entries_header"> 23685 <th class="th_details" colspan="5">Details</th> 23686 </tr> 23687 <tr class="entry_cont"> 23688 <td class="entry_details" colspan="5"> 23689 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 23690channels respectively.<wbr/> The following example uses the red channel as an 23691example.<wbr/> The same logic applies to green and blue channel.<wbr/> 23692Each channel's curve is defined by an array of control points:</p> 23693<pre><code>curveRed = 23694 [ 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) ] 236952 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 23696<p>These are sorted in order of increasing <code>Pin</code>; it is always 23697guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 23698define a complete mapping.<wbr/> For input values between control points,<wbr/> 23699the camera device must linearly interpolate between the control 23700points.<wbr/></p> 23701<p>Each curve can have an independent number of points,<wbr/> and the number 23702of points can be less than max (that is,<wbr/> the request doesn't have to 23703always provide a curve with number of points equivalent to 23704<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 23705<p>A few examples,<wbr/> and their corresponding graphical mappings; these 23706only specify the red channel and the precision is limited to 4 23707digits,<wbr/> for conciseness.<wbr/></p> 23708<p>Linear mapping:</p> 23709<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 23710</code></pre> 23711<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 23712<p>Invert mapping:</p> 23713<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 23714</code></pre> 23715<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 23716<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 23717<pre><code>curveRed = [ 23718 (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/> 23719 (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/> 23720 (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/> 23721 (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) ] 23722</code></pre> 23723<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 23724<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 23725<pre><code>curveRed = [ 23726 (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/> 23727 (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/> 23728 (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/> 23729 (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) ] 23730</code></pre> 23731<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 23732 </td> 23733 </tr> 23734 23735 <tr class="entries_header"> 23736 <th class="th_details" colspan="5">HAL Implementation Details</th> 23737 </tr> 23738 <tr class="entry_cont"> 23739 <td class="entry_details" colspan="5"> 23740 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 23741curveBlue entries.<wbr/></p> 23742 </td> 23743 </tr> 23744 23745 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23746 <!-- end of entry --> 23747 23748 23749 <tr class="entry" id="dynamic_android.tonemap.mode"> 23750 <td class="entry_name 23751 " rowspan="3"> 23752 android.<wbr/>tonemap.<wbr/>mode 23753 </td> 23754 <td class="entry_type"> 23755 <span class="entry_type_name entry_type_name_enum">byte</span> 23756 23757 <span class="entry_type_visibility"> [public]</span> 23758 23759 23760 <span class="entry_type_hwlevel">[full] </span> 23761 23762 23763 23764 <ul class="entry_type_enum"> 23765 <li> 23766 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 23767 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 23768the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 23769<p>All color enhancement and tonemapping must be disabled,<wbr/> except 23770for applying the tonemapping curve specified by 23771<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 23772<p>Must not slow down frame rate relative to raw 23773sensor output.<wbr/></p></span> 23774 </li> 23775 <li> 23776 <span class="entry_type_enum_name">FAST</span> 23777 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 23778reducing frame rate compared to raw sensor output.<wbr/></p></span> 23779 </li> 23780 <li> 23781 <span class="entry_type_enum_name">HIGH_QUALITY</span> 23782 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 23783the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 23784 </li> 23785 <li> 23786 <span class="entry_type_enum_name">GAMMA_VALUE</span> 23787 <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform 23788tonemapping.<wbr/></p> 23789<p>All color enhancement and tonemapping must be disabled,<wbr/> except 23790for applying the tonemapping curve specified by <a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 23791<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 23792 </li> 23793 <li> 23794 <span class="entry_type_enum_name">PRESET_CURVE</span> 23795 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 23796<a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 23797<p>All color enhancement and tonemapping must be disabled,<wbr/> except 23798for applying the tonemapping curve specified by 23799<a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 23800<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 23801 </li> 23802 </ul> 23803 23804 </td> <!-- entry_type --> 23805 23806 <td class="entry_description"> 23807 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 23808 </td> 23809 23810 <td class="entry_units"> 23811 </td> 23812 23813 <td class="entry_range"> 23814 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 23815 </td> 23816 23817 <td class="entry_tags"> 23818 </td> 23819 23820 </tr> 23821 <tr class="entries_header"> 23822 <th class="th_details" colspan="5">Details</th> 23823 </tr> 23824 <tr class="entry_cont"> 23825 <td class="entry_details" colspan="5"> 23826 <p>When switching to an application-defined contrast curve by setting 23827<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 23828per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 23829mapping from input high-bit-depth pixel value to the output 23830low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 23831and output may change depending on the camera pipeline,<wbr/> the values 23832are specified by normalized floating-point numbers.<wbr/></p> 23833<p>More-complex color mapping operations such as 3D color look-up 23834tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 23835transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23836CONTRAST_<wbr/>CURVE.<wbr/></p> 23837<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 23838emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 23839These values are always available,<wbr/> and as close as possible to the 23840actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 23841<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 23842provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 23843roughly the same.<wbr/></p> 23844 </td> 23845 </tr> 23846 23847 23848 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23849 <!-- end of entry --> 23850 23851 23852 <tr class="entry" id="dynamic_android.tonemap.gamma"> 23853 <td class="entry_name 23854 " rowspan="3"> 23855 android.<wbr/>tonemap.<wbr/>gamma 23856 </td> 23857 <td class="entry_type"> 23858 <span class="entry_type_name">float</span> 23859 23860 <span class="entry_type_visibility"> [public]</span> 23861 23862 23863 23864 23865 23866 23867 </td> <!-- entry_type --> 23868 23869 <td class="entry_description"> 23870 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23871GAMMA_<wbr/>VALUE</p> 23872 </td> 23873 23874 <td class="entry_units"> 23875 </td> 23876 23877 <td class="entry_range"> 23878 </td> 23879 23880 <td class="entry_tags"> 23881 </td> 23882 23883 </tr> 23884 <tr class="entries_header"> 23885 <th class="th_details" colspan="5">Details</th> 23886 </tr> 23887 <tr class="entry_cont"> 23888 <td class="entry_details" colspan="5"> 23889 <p>The tonemap curve will be defined the following formula: 23890* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 23891where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 23892pow is the power function and gamma is the gamma value specified by this 23893key.<wbr/></p> 23894<p>The same curve will be applied to all color channels.<wbr/> The camera device 23895may clip the input gamma value to its supported range.<wbr/> The actual applied 23896value will be returned in capture result.<wbr/></p> 23897<p>The valid range of gamma value varies on different devices,<wbr/> but values 23898within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 23899 </td> 23900 </tr> 23901 23902 23903 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23904 <!-- end of entry --> 23905 23906 23907 <tr class="entry" id="dynamic_android.tonemap.presetCurve"> 23908 <td class="entry_name 23909 " rowspan="3"> 23910 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 23911 </td> 23912 <td class="entry_type"> 23913 <span class="entry_type_name entry_type_name_enum">byte</span> 23914 23915 <span class="entry_type_visibility"> [public]</span> 23916 23917 23918 23919 23920 23921 <ul class="entry_type_enum"> 23922 <li> 23923 <span class="entry_type_enum_name">SRGB</span> 23924 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 23925 </li> 23926 <li> 23927 <span class="entry_type_enum_name">REC709</span> 23928 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 23929 </li> 23930 </ul> 23931 23932 </td> <!-- entry_type --> 23933 23934 <td class="entry_description"> 23935 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23936PRESET_<wbr/>CURVE</p> 23937 </td> 23938 23939 <td class="entry_units"> 23940 </td> 23941 23942 <td class="entry_range"> 23943 </td> 23944 23945 <td class="entry_tags"> 23946 </td> 23947 23948 </tr> 23949 <tr class="entries_header"> 23950 <th class="th_details" colspan="5">Details</th> 23951 </tr> 23952 <tr class="entry_cont"> 23953 <td class="entry_details" colspan="5"> 23954 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 23955<p>sRGB (approximated by 16 control points):</p> 23956<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 23957<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 23958<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 23959<p>Note that above figures show a 16 control points approximation of preset 23960curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 23961 </td> 23962 </tr> 23963 23964 23965 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23966 <!-- end of entry --> 23967 23968 23969 23970 <!-- end of kind --> 23971 </tbody> 23972 23973 <!-- end of section --> 23974 <tr><td colspan="6" id="section_led" class="section">led</td></tr> 23975 23976 23977 <tr><td colspan="6" class="kind">controls</td></tr> 23978 23979 <thead class="entries_header"> 23980 <tr> 23981 <th class="th_name">Property Name</th> 23982 <th class="th_type">Type</th> 23983 <th class="th_description">Description</th> 23984 <th class="th_units">Units</th> 23985 <th class="th_range">Range</th> 23986 <th class="th_tags">Tags</th> 23987 </tr> 23988 </thead> 23989 23990 <tbody> 23991 23992 23993 23994 23995 23996 23997 23998 23999 24000 24001 <tr class="entry" id="controls_android.led.transmit"> 24002 <td class="entry_name 24003 " rowspan="1"> 24004 android.<wbr/>led.<wbr/>transmit 24005 </td> 24006 <td class="entry_type"> 24007 <span class="entry_type_name entry_type_name_enum">byte</span> 24008 24009 <span class="entry_type_visibility"> [hidden as boolean]</span> 24010 24011 24012 24013 24014 24015 <ul class="entry_type_enum"> 24016 <li> 24017 <span class="entry_type_enum_name">OFF</span> 24018 </li> 24019 <li> 24020 <span class="entry_type_enum_name">ON</span> 24021 </li> 24022 </ul> 24023 24024 </td> <!-- entry_type --> 24025 24026 <td class="entry_description"> 24027 <p>This LED is nominally used to indicate to the user 24028that the camera is powered on and may be streaming images back to the 24029Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 24030disable this when video is processed locally and not transmitted to 24031any untrusted applications.<wbr/></p> 24032<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 24033transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 24034data is stored locally on the device.<wbr/></p> 24035<p>The LED <em>may</em> be off if a trusted application is using the data that 24036doesn't violate the above rules.<wbr/></p> 24037 </td> 24038 24039 <td class="entry_units"> 24040 </td> 24041 24042 <td class="entry_range"> 24043 </td> 24044 24045 <td class="entry_tags"> 24046 </td> 24047 24048 </tr> 24049 24050 24051 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24052 <!-- end of entry --> 24053 24054 24055 24056 <!-- end of kind --> 24057 </tbody> 24058 <tr><td colspan="6" class="kind">dynamic</td></tr> 24059 24060 <thead class="entries_header"> 24061 <tr> 24062 <th class="th_name">Property Name</th> 24063 <th class="th_type">Type</th> 24064 <th class="th_description">Description</th> 24065 <th class="th_units">Units</th> 24066 <th class="th_range">Range</th> 24067 <th class="th_tags">Tags</th> 24068 </tr> 24069 </thead> 24070 24071 <tbody> 24072 24073 24074 24075 24076 24077 24078 24079 24080 24081 24082 <tr class="entry" id="dynamic_android.led.transmit"> 24083 <td class="entry_name 24084 " rowspan="1"> 24085 android.<wbr/>led.<wbr/>transmit 24086 </td> 24087 <td class="entry_type"> 24088 <span class="entry_type_name entry_type_name_enum">byte</span> 24089 24090 <span class="entry_type_visibility"> [hidden as boolean]</span> 24091 24092 24093 24094 24095 24096 <ul class="entry_type_enum"> 24097 <li> 24098 <span class="entry_type_enum_name">OFF</span> 24099 </li> 24100 <li> 24101 <span class="entry_type_enum_name">ON</span> 24102 </li> 24103 </ul> 24104 24105 </td> <!-- entry_type --> 24106 24107 <td class="entry_description"> 24108 <p>This LED is nominally used to indicate to the user 24109that the camera is powered on and may be streaming images back to the 24110Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 24111disable this when video is processed locally and not transmitted to 24112any untrusted applications.<wbr/></p> 24113<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 24114transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 24115data is stored locally on the device.<wbr/></p> 24116<p>The LED <em>may</em> be off if a trusted application is using the data that 24117doesn't violate the above rules.<wbr/></p> 24118 </td> 24119 24120 <td class="entry_units"> 24121 </td> 24122 24123 <td class="entry_range"> 24124 </td> 24125 24126 <td class="entry_tags"> 24127 </td> 24128 24129 </tr> 24130 24131 24132 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24133 <!-- end of entry --> 24134 24135 24136 24137 <!-- end of kind --> 24138 </tbody> 24139 <tr><td colspan="6" class="kind">static</td></tr> 24140 24141 <thead class="entries_header"> 24142 <tr> 24143 <th class="th_name">Property Name</th> 24144 <th class="th_type">Type</th> 24145 <th class="th_description">Description</th> 24146 <th class="th_units">Units</th> 24147 <th class="th_range">Range</th> 24148 <th class="th_tags">Tags</th> 24149 </tr> 24150 </thead> 24151 24152 <tbody> 24153 24154 24155 24156 24157 24158 24159 24160 24161 24162 24163 <tr class="entry" id="static_android.led.availableLeds"> 24164 <td class="entry_name 24165 " rowspan="1"> 24166 android.<wbr/>led.<wbr/>available<wbr/>Leds 24167 </td> 24168 <td class="entry_type"> 24169 <span class="entry_type_name entry_type_name_enum">byte</span> 24170 <span class="entry_type_container">x</span> 24171 24172 <span class="entry_type_array"> 24173 n 24174 </span> 24175 <span class="entry_type_visibility"> [hidden]</span> 24176 24177 24178 24179 24180 24181 <ul class="entry_type_enum"> 24182 <li> 24183 <span class="entry_type_enum_name">TRANSMIT</span> 24184 <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> 24185 </li> 24186 </ul> 24187 24188 </td> <!-- entry_type --> 24189 24190 <td class="entry_description"> 24191 <p>A list of camera LEDs that are available on this system.<wbr/></p> 24192 </td> 24193 24194 <td class="entry_units"> 24195 </td> 24196 24197 <td class="entry_range"> 24198 </td> 24199 24200 <td class="entry_tags"> 24201 </td> 24202 24203 </tr> 24204 24205 24206 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24207 <!-- end of entry --> 24208 24209 24210 24211 <!-- end of kind --> 24212 </tbody> 24213 24214 <!-- end of section --> 24215 <tr><td colspan="6" id="section_info" class="section">info</td></tr> 24216 24217 24218 <tr><td colspan="6" class="kind">static</td></tr> 24219 24220 <thead class="entries_header"> 24221 <tr> 24222 <th class="th_name">Property Name</th> 24223 <th class="th_type">Type</th> 24224 <th class="th_description">Description</th> 24225 <th class="th_units">Units</th> 24226 <th class="th_range">Range</th> 24227 <th class="th_tags">Tags</th> 24228 </tr> 24229 </thead> 24230 24231 <tbody> 24232 24233 24234 24235 24236 24237 24238 24239 24240 24241 24242 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 24243 <td class="entry_name 24244 " rowspan="5"> 24245 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 24246 </td> 24247 <td class="entry_type"> 24248 <span class="entry_type_name entry_type_name_enum">byte</span> 24249 24250 <span class="entry_type_visibility"> [public]</span> 24251 24252 24253 <span class="entry_type_hwlevel">[legacy] </span> 24254 24255 24256 24257 <ul class="entry_type_enum"> 24258 <li> 24259 <span class="entry_type_enum_name">LIMITED</span> 24260 <span class="entry_type_enum_notes"><p>This camera device has only limited capabilities.<wbr/></p></span> 24261 </li> 24262 <li> 24263 <span class="entry_type_enum_name">FULL</span> 24264 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p></span> 24265 </li> 24266 <li> 24267 <span class="entry_type_enum_name">LEGACY</span> 24268 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p></span> 24269 </li> 24270 <li> 24271 <span class="entry_type_enum_name">HIGH_RESOLUTION</span> 24272 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications at full rate,<wbr/> 24273and additional high-resolution outputs at lower rates.<wbr/></p></span> 24274 </li> 24275 </ul> 24276 24277 </td> <!-- entry_type --> 24278 24279 <td class="entry_description"> 24280 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 24281 </td> 24282 24283 <td class="entry_units"> 24284 </td> 24285 24286 <td class="entry_range"> 24287 </td> 24288 24289 <td class="entry_tags"> 24290 </td> 24291 24292 </tr> 24293 <tr class="entries_header"> 24294 <th class="th_details" colspan="5">Details</th> 24295 </tr> 24296 <tr class="entry_cont"> 24297 <td class="entry_details" colspan="5"> 24298 <p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p> 24299<p>A FULL device will support below capabilities:</p> 24300<ul> 24301<li>30fps operation at maximum resolution (== sensor resolution) is preferred,<wbr/> more than 24302 20fps is required,<wbr/> for at least uncompressed YUV 24303 output.<wbr/> (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li> 24304<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> 24305<li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li> 24306<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 24307 MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li> 24308<li>Arbitrary cropping region (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>==</code> FREEFORM)</li> 24309<li>At least 3 processed (but not stalling) format output streams 24310 (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>>=</code> 3)</li> 24311<li>The required stream configuration defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li> 24312<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> 24313<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> 24314</ul> 24315<p>A LIMITED device may have some or none of the above characteristics.<wbr/> 24316To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 24317<p>Some features are not part of any particular hardware level or capability and must be 24318queried separately.<wbr/> These include:</p> 24319<ul> 24320<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li> 24321<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> 24322<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> 24323<li>Optical or electrical image stabilization 24324 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/> 24325 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li> 24326</ul> 24327<p>A LEGACY device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual 24328post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/></p> 24329<p>Each higher level supports everything the lower level supports 24330in this order: FULL <code>></code> LIMITED <code>></code> LEGACY.<wbr/></p> 24331<p>A HIGH_<wbr/>RESOLUTION device is equivalent to a FULL device,<wbr/> except that:</p> 24332<ul> 24333<li>At least one output resolution of 8 megapixels or higher in uncompressed YUV is 24334 supported at <code>>=</code> 20 fps.<wbr/></li> 24335<li>Maximum-size (sensor resolution) uncompressed YUV is supported at <code>>=</code> 10 24336 fps.<wbr/></li> 24337<li>For devices that list the RAW capability and support either RAW10 or RAW12 output,<wbr/> 24338 maximum-resolution RAW10 or RAW12 capture will operate at least at the rate of 24339 maximum-resolution YUV capture,<wbr/> and at least one supported output resolution of 24340 8 megapixels or higher in RAW10 or RAW12 is supported <code>>=</code> 20 fps.<wbr/></li> 24341</ul> 24342 </td> 24343 </tr> 24344 24345 <tr class="entries_header"> 24346 <th class="th_details" colspan="5">HAL Implementation Details</th> 24347 </tr> 24348 <tr class="entry_cont"> 24349 <td class="entry_details" colspan="5"> 24350 <p>The camera 3 HAL device can implement one of two possible 24351operational modes; limited and full.<wbr/> Full support is 24352expected from new higher-end devices.<wbr/> Limited mode has 24353hardware requirements roughly in line with those for a 24354camera HAL device v1 implementation,<wbr/> and is expected from 24355older or inexpensive devices.<wbr/> Full is a strict superset of 24356limited,<wbr/> and they share the same essential operational flow.<wbr/></p> 24357<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 24358<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there 24359for backwards compatibility in the <code>android.<wbr/>hardware.<wbr/>camera2</code> 24360user-facing API only.<wbr/></p> 24361 </td> 24362 </tr> 24363 24364 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24365 <!-- end of entry --> 24366 24367 24368 24369 <!-- end of kind --> 24370 </tbody> 24371 24372 <!-- end of section --> 24373 <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr> 24374 24375 24376 <tr><td colspan="6" class="kind">controls</td></tr> 24377 24378 <thead class="entries_header"> 24379 <tr> 24380 <th class="th_name">Property Name</th> 24381 <th class="th_type">Type</th> 24382 <th class="th_description">Description</th> 24383 <th class="th_units">Units</th> 24384 <th class="th_range">Range</th> 24385 <th class="th_tags">Tags</th> 24386 </tr> 24387 </thead> 24388 24389 <tbody> 24390 24391 24392 24393 24394 24395 24396 24397 24398 24399 24400 <tr class="entry" id="controls_android.blackLevel.lock"> 24401 <td class="entry_name 24402 " rowspan="5"> 24403 android.<wbr/>black<wbr/>Level.<wbr/>lock 24404 </td> 24405 <td class="entry_type"> 24406 <span class="entry_type_name entry_type_name_enum">byte</span> 24407 24408 <span class="entry_type_visibility"> [public as boolean]</span> 24409 24410 24411 <span class="entry_type_hwlevel">[full] </span> 24412 24413 24414 24415 <ul class="entry_type_enum"> 24416 <li> 24417 <span class="entry_type_enum_name">OFF</span> 24418 </li> 24419 <li> 24420 <span class="entry_type_enum_name">ON</span> 24421 </li> 24422 </ul> 24423 24424 </td> <!-- entry_type --> 24425 24426 <td class="entry_description"> 24427 <p>Whether black-level compensation is locked 24428to its current values,<wbr/> or is free to vary.<wbr/></p> 24429 </td> 24430 24431 <td class="entry_units"> 24432 </td> 24433 24434 <td class="entry_range"> 24435 </td> 24436 24437 <td class="entry_tags"> 24438 <ul class="entry_tags"> 24439 <li><a href="#tag_HAL2">HAL2</a></li> 24440 </ul> 24441 </td> 24442 24443 </tr> 24444 <tr class="entries_header"> 24445 <th class="th_details" colspan="5">Details</th> 24446 </tr> 24447 <tr class="entry_cont"> 24448 <td class="entry_details" colspan="5"> 24449 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level 24450compensation will not change until the lock is set to 24451<code>false</code> (OFF).<wbr/></p> 24452<p>Since changes to certain capture parameters (such as 24453exposure time) may require resetting of black level 24454compensation,<wbr/> the camera device must report whether setting 24455the black level lock was successful in the output result 24456metadata.<wbr/></p> 24457<p>For example,<wbr/> if a sequence of requests is as follows:</p> 24458<ul> 24459<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 24460<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 24461<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 24462<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 24463<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 24464<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 24465</ul> 24466<p>And the exposure change in Request 4 requires the camera 24467device to reset the black level offsets,<wbr/> then the output 24468result metadata is expected to be:</p> 24469<ul> 24470<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 24471<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 24472<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 24473<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 24474<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 24475<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 24476</ul> 24477<p>This indicates to the application that on frame 4,<wbr/> black 24478levels were reset due to exposure value changes,<wbr/> and pixel 24479values may not be consistent across captures.<wbr/></p> 24480<p>The camera device will maintain the lock to the extent 24481possible,<wbr/> only overriding the lock to OFF when changes to 24482other request parameters require a black level recalculation 24483or reset.<wbr/></p> 24484 </td> 24485 </tr> 24486 24487 <tr class="entries_header"> 24488 <th class="th_details" colspan="5">HAL Implementation Details</th> 24489 </tr> 24490 <tr class="entry_cont"> 24491 <td class="entry_details" colspan="5"> 24492 <p>If for some reason black level locking is no longer possible 24493(for example,<wbr/> the analog gain has changed,<wbr/> which forces 24494black level offsets to be recalculated),<wbr/> then the HAL must 24495override this request (and it must report 'OFF' when this 24496does happen) until the next capture for which locking is 24497possible again.<wbr/></p> 24498 </td> 24499 </tr> 24500 24501 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24502 <!-- end of entry --> 24503 24504 24505 24506 <!-- end of kind --> 24507 </tbody> 24508 <tr><td colspan="6" class="kind">dynamic</td></tr> 24509 24510 <thead class="entries_header"> 24511 <tr> 24512 <th class="th_name">Property Name</th> 24513 <th class="th_type">Type</th> 24514 <th class="th_description">Description</th> 24515 <th class="th_units">Units</th> 24516 <th class="th_range">Range</th> 24517 <th class="th_tags">Tags</th> 24518 </tr> 24519 </thead> 24520 24521 <tbody> 24522 24523 24524 24525 24526 24527 24528 24529 24530 24531 24532 <tr class="entry" id="dynamic_android.blackLevel.lock"> 24533 <td class="entry_name 24534 " rowspan="5"> 24535 android.<wbr/>black<wbr/>Level.<wbr/>lock 24536 </td> 24537 <td class="entry_type"> 24538 <span class="entry_type_name entry_type_name_enum">byte</span> 24539 24540 <span class="entry_type_visibility"> [public as boolean]</span> 24541 24542 24543 <span class="entry_type_hwlevel">[full] </span> 24544 24545 24546 24547 <ul class="entry_type_enum"> 24548 <li> 24549 <span class="entry_type_enum_name">OFF</span> 24550 </li> 24551 <li> 24552 <span class="entry_type_enum_name">ON</span> 24553 </li> 24554 </ul> 24555 24556 </td> <!-- entry_type --> 24557 24558 <td class="entry_description"> 24559 <p>Whether black-level compensation is locked 24560to its current values,<wbr/> or is free to vary.<wbr/></p> 24561 </td> 24562 24563 <td class="entry_units"> 24564 </td> 24565 24566 <td class="entry_range"> 24567 </td> 24568 24569 <td class="entry_tags"> 24570 <ul class="entry_tags"> 24571 <li><a href="#tag_HAL2">HAL2</a></li> 24572 </ul> 24573 </td> 24574 24575 </tr> 24576 <tr class="entries_header"> 24577 <th class="th_details" colspan="5">Details</th> 24578 </tr> 24579 <tr class="entry_cont"> 24580 <td class="entry_details" colspan="5"> 24581 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 24582ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 24583a change in other capture settings forced the camera device to 24584perform a black level reset.<wbr/></p> 24585 </td> 24586 </tr> 24587 24588 <tr class="entries_header"> 24589 <th class="th_details" colspan="5">HAL Implementation Details</th> 24590 </tr> 24591 <tr class="entry_cont"> 24592 <td class="entry_details" colspan="5"> 24593 <p>If for some reason black level locking is no longer possible 24594(for example,<wbr/> the analog gain has changed,<wbr/> which forces 24595black level offsets to be recalculated),<wbr/> then the HAL must 24596override this request (and it must report 'OFF' when this 24597does happen) until the next capture for which locking is 24598possible again.<wbr/></p> 24599 </td> 24600 </tr> 24601 24602 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24603 <!-- end of entry --> 24604 24605 24606 24607 <!-- end of kind --> 24608 </tbody> 24609 24610 <!-- end of section --> 24611 <tr><td colspan="6" id="section_sync" class="section">sync</td></tr> 24612 24613 24614 <tr><td colspan="6" class="kind">dynamic</td></tr> 24615 24616 <thead class="entries_header"> 24617 <tr> 24618 <th class="th_name">Property Name</th> 24619 <th class="th_type">Type</th> 24620 <th class="th_description">Description</th> 24621 <th class="th_units">Units</th> 24622 <th class="th_range">Range</th> 24623 <th class="th_tags">Tags</th> 24624 </tr> 24625 </thead> 24626 24627 <tbody> 24628 24629 24630 24631 24632 24633 24634 24635 24636 24637 24638 <tr class="entry" id="dynamic_android.sync.frameNumber"> 24639 <td class="entry_name 24640 " rowspan="5"> 24641 android.<wbr/>sync.<wbr/>frame<wbr/>Number 24642 </td> 24643 <td class="entry_type"> 24644 <span class="entry_type_name entry_type_name_enum">int64</span> 24645 24646 <span class="entry_type_visibility"> [hidden]</span> 24647 24648 24649 <span class="entry_type_hwlevel">[legacy] </span> 24650 24651 24652 24653 <ul class="entry_type_enum"> 24654 <li> 24655 <span class="entry_type_enum_name">CONVERGING</span> 24656 <span class="entry_type_enum_value">-1</span> 24657 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p> 24658<p>Synchronization is in progress,<wbr/> and reading metadata from this 24659result may include a mix of data that have taken effect since the 24660last synchronization time.<wbr/></p> 24661<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 24662this value will update to the actual frame number frame number 24663the result is guaranteed to be synchronized to (as long as the 24664request settings remain constant).<wbr/></p></span> 24665 </li> 24666 <li> 24667 <span class="entry_type_enum_name">UNKNOWN</span> 24668 <span class="entry_type_enum_value">-2</span> 24669 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p> 24670<p>The result may have already converged,<wbr/> or it may be in 24671progress.<wbr/> Reading from this result may include some mix 24672of settings from past requests.<wbr/></p> 24673<p>After a settings change,<wbr/> the new settings will eventually all 24674take effect for the output buffers and results.<wbr/> However,<wbr/> this 24675value will not change when that happens.<wbr/> Altering settings 24676rapidly may provide outcomes using mixes of settings from recent 24677requests.<wbr/></p> 24678<p>This value is intended primarily for backwards compatibility with 24679the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 24680 </li> 24681 </ul> 24682 24683 </td> <!-- entry_type --> 24684 24685 <td class="entry_description"> 24686 <p>The frame number corresponding to the last request 24687with which the output result (metadata + buffers) has been fully 24688synchronized.<wbr/></p> 24689 </td> 24690 24691 <td class="entry_units"> 24692 </td> 24693 24694 <td class="entry_range"> 24695 <p>Either a non-negative value corresponding to a 24696<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 24697 </td> 24698 24699 <td class="entry_tags"> 24700 <ul class="entry_tags"> 24701 <li><a href="#tag_V1">V1</a></li> 24702 </ul> 24703 </td> 24704 24705 </tr> 24706 <tr class="entries_header"> 24707 <th class="th_details" colspan="5">Details</th> 24708 </tr> 24709 <tr class="entry_cont"> 24710 <td class="entry_details" colspan="5"> 24711 <p>When a request is submitted to the camera device,<wbr/> there is usually a 24712delay of several frames before the controls get applied.<wbr/> A camera 24713device may either choose to account for this delay by implementing a 24714pipeline and carefully submit well-timed atomic control updates,<wbr/> or 24715it may start streaming control changes that span over several frame 24716boundaries.<wbr/></p> 24717<p>In the latter case,<wbr/> whenever a request's settings change relative to 24718the previous submitted request,<wbr/> the full set of changes may take 24719multiple frame durations to fully take effect.<wbr/> Some settings may 24720take effect sooner (in less frame durations) than others.<wbr/></p> 24721<p>While a set of control changes are being propagated,<wbr/> this value 24722will be CONVERGING.<wbr/></p> 24723<p>Once it is fully known that a set of control changes have been 24724finished propagating,<wbr/> and the resulting updated control settings 24725have been read back by the camera device,<wbr/> this value will be set 24726to a non-negative frame number (corresponding to the request to 24727which the results have synchronized to).<wbr/></p> 24728<p>Older camera device implementations may not have a way to detect 24729when all camera controls have been applied,<wbr/> and will always set this 24730value to UNKNOWN.<wbr/></p> 24731<p>FULL capability devices will always have this value set to the 24732frame number of the request corresponding to this result.<wbr/></p> 24733<p><em>Further details</em>:</p> 24734<ul> 24735<li>Whenever a request differs from the last request,<wbr/> any future 24736results not yet returned may have this value set to CONVERGING (this 24737could include any in-progress captures not yet returned by the camera 24738device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 24739<li>Submitting a series of multiple requests that differ from the 24740previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 24741moves the new synchronization frame to the last non-repeating 24742request (using the smallest frame number from the contiguous list of 24743repeating requests).<wbr/></li> 24744<li>Submitting the same request repeatedly will not change this value 24745to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 24746<li>When this value changes to non-negative,<wbr/> that means that all of the 24747metadata controls from the request have been applied,<wbr/> all of the 24748metadata controls from the camera device have been read to the 24749updated values (into the result),<wbr/> and all of the graphics buffers 24750corresponding to this result are also synchronized to the request.<wbr/></li> 24751</ul> 24752<p><em>Pipeline considerations</em>:</p> 24753<p>Submitting a request with updated controls relative to the previously 24754submitted requests may also invalidate the synchronization state 24755of all the results corresponding to currently in-flight requests.<wbr/></p> 24756<p>In other words,<wbr/> results for this current request and up to 24757<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 24758<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 24759 </td> 24760 </tr> 24761 24762 <tr class="entries_header"> 24763 <th class="th_details" colspan="5">HAL Implementation Details</th> 24764 </tr> 24765 <tr class="entry_cont"> 24766 <td class="entry_details" colspan="5"> 24767 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 24768is also UNKNOWN.<wbr/></p> 24769<p>FULL capability devices should simply set this value to the 24770<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 24771 </td> 24772 </tr> 24773 24774 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24775 <!-- end of entry --> 24776 24777 24778 24779 <!-- end of kind --> 24780 </tbody> 24781 <tr><td colspan="6" class="kind">static</td></tr> 24782 24783 <thead class="entries_header"> 24784 <tr> 24785 <th class="th_name">Property Name</th> 24786 <th class="th_type">Type</th> 24787 <th class="th_description">Description</th> 24788 <th class="th_units">Units</th> 24789 <th class="th_range">Range</th> 24790 <th class="th_tags">Tags</th> 24791 </tr> 24792 </thead> 24793 24794 <tbody> 24795 24796 24797 24798 24799 24800 24801 24802 24803 24804 24805 <tr class="entry" id="static_android.sync.maxLatency"> 24806 <td class="entry_name 24807 " rowspan="5"> 24808 android.<wbr/>sync.<wbr/>max<wbr/>Latency 24809 </td> 24810 <td class="entry_type"> 24811 <span class="entry_type_name entry_type_name_enum">int32</span> 24812 24813 <span class="entry_type_visibility"> [public]</span> 24814 24815 24816 <span class="entry_type_hwlevel">[legacy] </span> 24817 24818 24819 24820 <ul class="entry_type_enum"> 24821 <li> 24822 <span class="entry_type_enum_name">PER_FRAME_CONTROL</span> 24823 <span class="entry_type_enum_value">0</span> 24824 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p> 24825<p>Furthermore for all results,<wbr/> 24826<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CaptureResult#getFrameNumber()</code></p> 24827<p>Changing controls over multiple requests one after another will 24828produce results that have those controls applied atomically 24829each frame.<wbr/></p> 24830<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 24831 </li> 24832 <li> 24833 <span class="entry_type_enum_name">UNKNOWN</span> 24834 <span class="entry_type_enum_value">-1</span> 24835 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 24836of the past requests applied to the camera settings.<wbr/></p> 24837<p>By submitting a series of identical requests,<wbr/> the camera device 24838will eventually have the camera settings applied,<wbr/> but it is 24839unknown when that exact point will be.<wbr/></p> 24840<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span> 24841 </li> 24842 </ul> 24843 24844 </td> <!-- entry_type --> 24845 24846 <td class="entry_description"> 24847 <p>The maximum number of frames that can occur after a request 24848(different than the previous) has been submitted,<wbr/> and before the 24849result's state becomes synchronized (by setting 24850<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> to a non-negative value).<wbr/></p> 24851 </td> 24852 24853 <td class="entry_units"> 24854 Frame counts 24855 </td> 24856 24857 <td class="entry_range"> 24858 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p> 24859 </td> 24860 24861 <td class="entry_tags"> 24862 <ul class="entry_tags"> 24863 <li><a href="#tag_V1">V1</a></li> 24864 </ul> 24865 </td> 24866 24867 </tr> 24868 <tr class="entries_header"> 24869 <th class="th_details" colspan="5">Details</th> 24870 </tr> 24871 <tr class="entry_cont"> 24872 <td class="entry_details" colspan="5"> 24873 <p>This defines the maximum distance (in number of metadata results),<wbr/> 24874between <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> and the equivalent 24875frame number for that result.<wbr/></p> 24876<p>In other words this acts as an upper boundary for how many frames 24877must occur before the camera device knows for a fact that the new 24878submitted camera settings have been applied in outgoing frames.<wbr/></p> 24879<p>For example if the distance was 2,<wbr/></p> 24880<pre><code>initial request = X (repeating) 24881request1 = X 24882request2 = Y 24883request3 = Y 24884request4 = Y 24885 24886where requestN has frameNumber N,<wbr/> and the first of the repeating 24887initial request's has frameNumber F (and F < 1).<wbr/> 24888 24889initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 24890result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 24891result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 24892result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 24893result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 24894 24895where resultN has frameNumber N.<wbr/> 24896</code></pre> 24897<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 24898<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 24899<code>4 - 2 = 2</code>.<wbr/></p> 24900 </td> 24901 </tr> 24902 24903 <tr class="entries_header"> 24904 <th class="th_details" colspan="5">HAL Implementation Details</th> 24905 </tr> 24906 <tr class="entry_cont"> 24907 <td class="entry_details" colspan="5"> 24908 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 24909<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or <code>CaptureResult#getFrameNumber()</code>.<wbr/></p> 24910<p>LIMITED devices are strongly encouraged to use a non-negative 24911value.<wbr/> If UNKNOWN is used here then app developers do not have a way 24912to know when sensor settings have been applied.<wbr/></p> 24913 </td> 24914 </tr> 24915 24916 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24917 <!-- end of entry --> 24918 24919 24920 24921 <!-- end of kind --> 24922 </tbody> 24923 24924 <!-- end of section --> 24925 <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr> 24926 24927 24928 <tr><td colspan="6" class="kind">controls</td></tr> 24929 24930 <thead class="entries_header"> 24931 <tr> 24932 <th class="th_name">Property Name</th> 24933 <th class="th_type">Type</th> 24934 <th class="th_description">Description</th> 24935 <th class="th_units">Units</th> 24936 <th class="th_range">Range</th> 24937 <th class="th_tags">Tags</th> 24938 </tr> 24939 </thead> 24940 24941 <tbody> 24942 24943 24944 24945 24946 24947 24948 24949 24950 24951 24952 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor"> 24953 <td class="entry_name 24954 " rowspan="3"> 24955 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 24956 </td> 24957 <td class="entry_type"> 24958 <span class="entry_type_name">float</span> 24959 24960 <span class="entry_type_visibility"> [public]</span> 24961 24962 24963 24964 24965 24966 24967 </td> <!-- entry_type --> 24968 24969 <td class="entry_description"> 24970 <p>The amount of exposure time increase factor applied to the original output 24971frame by the application processing before sending for reprocessing.<wbr/></p> 24972 </td> 24973 24974 <td class="entry_units"> 24975 Relative exposure time increase factor.<wbr/> 24976 </td> 24977 24978 <td class="entry_range"> 24979 <p>>= 1.<wbr/>0</p> 24980 </td> 24981 24982 <td class="entry_tags"> 24983 <ul class="entry_tags"> 24984 <li><a href="#tag_V1">V1</a></li> 24985 </ul> 24986 </td> 24987 24988 </tr> 24989 <tr class="entries_header"> 24990 <th class="th_details" colspan="5">Details</th> 24991 </tr> 24992 <tr class="entry_cont"> 24993 <td class="entry_details" colspan="5"> 24994 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 24995capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 24996<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 24997output frames to effectively reduce the noise to the same level as a frame that was 24998captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 24999images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 25000the camera device is that the amount of noise in the image would be approximately what 25001would be expected if the original capture parameters had been a sensitivity of 25002S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 25003than S and T respectively.<wbr/> If the captured images were processed by the application 25004before being sent for reprocessing,<wbr/> then the application may have used image processing 25005algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 25006application-processed images (input images).<wbr/> By using the effectiveExposureFactor 25007control,<wbr/> the application can communicate to the camera device the actual noise level 25008improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 25009device can select appropriate noise reduction and edge enhancement parameters to avoid 25010excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 25011enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 25012<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 25013multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 25014fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 25015square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 25016adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 25017produce the best quality images.<wbr/></p> 25018<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 25019buffer in a way that affects its effective exposure time.<wbr/></p> 25020<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 25021reduction 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/> 25022Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 25023<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 25024 </td> 25025 </tr> 25026 25027 25028 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25029 <!-- end of entry --> 25030 25031 25032 25033 <!-- end of kind --> 25034 </tbody> 25035 <tr><td colspan="6" class="kind">dynamic</td></tr> 25036 25037 <thead class="entries_header"> 25038 <tr> 25039 <th class="th_name">Property Name</th> 25040 <th class="th_type">Type</th> 25041 <th class="th_description">Description</th> 25042 <th class="th_units">Units</th> 25043 <th class="th_range">Range</th> 25044 <th class="th_tags">Tags</th> 25045 </tr> 25046 </thead> 25047 25048 <tbody> 25049 25050 25051 25052 25053 25054 25055 25056 25057 25058 25059 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor"> 25060 <td class="entry_name 25061 " rowspan="3"> 25062 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 25063 </td> 25064 <td class="entry_type"> 25065 <span class="entry_type_name">float</span> 25066 25067 <span class="entry_type_visibility"> [public]</span> 25068 25069 25070 25071 25072 25073 25074 </td> <!-- entry_type --> 25075 25076 <td class="entry_description"> 25077 <p>The amount of exposure time increase factor applied to the original output 25078frame by the application processing before sending for reprocessing.<wbr/></p> 25079 </td> 25080 25081 <td class="entry_units"> 25082 Relative exposure time increase factor.<wbr/> 25083 </td> 25084 25085 <td class="entry_range"> 25086 <p>>= 1.<wbr/>0</p> 25087 </td> 25088 25089 <td class="entry_tags"> 25090 <ul class="entry_tags"> 25091 <li><a href="#tag_V1">V1</a></li> 25092 </ul> 25093 </td> 25094 25095 </tr> 25096 <tr class="entries_header"> 25097 <th class="th_details" colspan="5">Details</th> 25098 </tr> 25099 <tr class="entry_cont"> 25100 <td class="entry_details" colspan="5"> 25101 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 25102capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 25103<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 25104output frames to effectively reduce the noise to the same level as a frame that was 25105captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 25106images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 25107the camera device is that the amount of noise in the image would be approximately what 25108would be expected if the original capture parameters had been a sensitivity of 25109S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 25110than S and T respectively.<wbr/> If the captured images were processed by the application 25111before being sent for reprocessing,<wbr/> then the application may have used image processing 25112algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 25113application-processed images (input images).<wbr/> By using the effectiveExposureFactor 25114control,<wbr/> the application can communicate to the camera device the actual noise level 25115improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 25116device can select appropriate noise reduction and edge enhancement parameters to avoid 25117excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 25118enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 25119<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 25120multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 25121fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 25122square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 25123adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 25124produce the best quality images.<wbr/></p> 25125<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 25126buffer in a way that affects its effective exposure time.<wbr/></p> 25127<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 25128reduction 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/> 25129Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 25130<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 25131 </td> 25132 </tr> 25133 25134 25135 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25136 <!-- end of entry --> 25137 25138 25139 25140 <!-- end of kind --> 25141 </tbody> 25142 25143 <!-- end of section --> 25144 <tr><td colspan="6" id="section_depth" class="section">depth</td></tr> 25145 25146 25147 <tr><td colspan="6" class="kind">static</td></tr> 25148 25149 <thead class="entries_header"> 25150 <tr> 25151 <th class="th_name">Property Name</th> 25152 <th class="th_type">Type</th> 25153 <th class="th_description">Description</th> 25154 <th class="th_units">Units</th> 25155 <th class="th_range">Range</th> 25156 <th class="th_tags">Tags</th> 25157 </tr> 25158 </thead> 25159 25160 <tbody> 25161 25162 25163 25164 25165 25166 25167 25168 25169 25170 25171 <tr class="entry" id="static_android.depth.maxDepthSamples"> 25172 <td class="entry_name 25173 " rowspan="3"> 25174 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples 25175 </td> 25176 <td class="entry_type"> 25177 <span class="entry_type_name">int32</span> 25178 25179 <span class="entry_type_visibility"> [system]</span> 25180 25181 25182 <span class="entry_type_hwlevel">[limited] </span> 25183 25184 25185 25186 25187 </td> <!-- entry_type --> 25188 25189 <td class="entry_description"> 25190 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p> 25191 </td> 25192 25193 <td class="entry_units"> 25194 </td> 25195 25196 <td class="entry_range"> 25197 </td> 25198 25199 <td class="entry_tags"> 25200 <ul class="entry_tags"> 25201 <li><a href="#tag_DEPTH">DEPTH</a></li> 25202 </ul> 25203 </td> 25204 25205 </tr> 25206 <tr class="entries_header"> 25207 <th class="th_details" colspan="5">Details</th> 25208 </tr> 25209 <tr class="entry_cont"> 25210 <td class="entry_details" colspan="5"> 25211 <p>If a camera device supports outputting depth range data in the form of a depth 25212point cloud (Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD),<wbr/> this is the maximum number of points 25213an output buffer may contain.<wbr/></p> 25214<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/> 25215If output in the depth point cloud format is not supported,<wbr/> this entry will 25216not be defined.<wbr/></p> 25217 </td> 25218 </tr> 25219 25220 25221 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25222 <!-- end of entry --> 25223 25224 25225 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations"> 25226 <td class="entry_name 25227 " rowspan="3"> 25228 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations 25229 </td> 25230 <td class="entry_type"> 25231 <span class="entry_type_name entry_type_name_enum">int32</span> 25232 <span class="entry_type_container">x</span> 25233 25234 <span class="entry_type_array"> 25235 n x 4 25236 </span> 25237 <span class="entry_type_visibility"> [hidden as streamConfiguration]</span> 25238 25239 25240 <span class="entry_type_hwlevel">[limited] </span> 25241 25242 25243 25244 <ul class="entry_type_enum"> 25245 <li> 25246 <span class="entry_type_enum_name">OUTPUT</span> 25247 </li> 25248 <li> 25249 <span class="entry_type_enum_name">INPUT</span> 25250 </li> 25251 </ul> 25252 25253 </td> <!-- entry_type --> 25254 25255 <td class="entry_description"> 25256 <p>The available depth dataspace stream 25257configurations that this camera device supports 25258(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 25259 </td> 25260 25261 <td class="entry_units"> 25262 </td> 25263 25264 <td class="entry_range"> 25265 </td> 25266 25267 <td class="entry_tags"> 25268 <ul class="entry_tags"> 25269 <li><a href="#tag_DEPTH">DEPTH</a></li> 25270 </ul> 25271 </td> 25272 25273 </tr> 25274 <tr class="entries_header"> 25275 <th class="th_details" colspan="5">Details</th> 25276 </tr> 25277 <tr class="entry_cont"> 25278 <td class="entry_details" colspan="5"> 25279 <p>These are output stream configurations for use with 25280dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are 25281listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 25282<p>Only devices that support depth output for at least 25283the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include 25284this entry.<wbr/></p> 25285<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB 25286sparse depth point cloud must report a single entry for 25287the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/> 25288<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to 25289the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p> 25290 </td> 25291 </tr> 25292 25293 25294 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25295 <!-- end of entry --> 25296 25297 25298 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations"> 25299 <td class="entry_name 25300 " rowspan="3"> 25301 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 25302 </td> 25303 <td class="entry_type"> 25304 <span class="entry_type_name">int64</span> 25305 <span class="entry_type_container">x</span> 25306 25307 <span class="entry_type_array"> 25308 4 x n 25309 </span> 25310 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 25311 25312 25313 <span class="entry_type_hwlevel">[limited] </span> 25314 25315 25316 25317 25318 </td> <!-- entry_type --> 25319 25320 <td class="entry_description"> 25321 <p>This lists the minimum frame duration for each 25322format/<wbr/>size combination for depth output formats.<wbr/></p> 25323 </td> 25324 25325 <td class="entry_units"> 25326 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 25327 </td> 25328 25329 <td class="entry_range"> 25330 </td> 25331 25332 <td class="entry_tags"> 25333 <ul class="entry_tags"> 25334 <li><a href="#tag_DEPTH">DEPTH</a></li> 25335 </ul> 25336 </td> 25337 25338 </tr> 25339 <tr class="entries_header"> 25340 <th class="th_details" colspan="5">Details</th> 25341 </tr> 25342 <tr class="entry_cont"> 25343 <td class="entry_details" colspan="5"> 25344 <p>This should correspond to the frame duration when only that 25345stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 25346set to either OFF or FAST.<wbr/></p> 25347<p>When multiple streams are used in a request,<wbr/> the minimum frame 25348duration will be max(individual stream min durations).<wbr/></p> 25349<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 25350is the same regardless of whether the stream is input or output.<wbr/></p> 25351<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 25352<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 25353calculating the max frame rate.<wbr/></p> 25354<p>(Keep in sync with 25355StreamConfigurationMap#getOutputMinFrameDuration)</p> 25356 </td> 25357 </tr> 25358 25359 25360 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25361 <!-- end of entry --> 25362 25363 25364 <tr class="entry" id="static_android.depth.availableDepthStallDurations"> 25365 <td class="entry_name 25366 " rowspan="3"> 25367 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations 25368 </td> 25369 <td class="entry_type"> 25370 <span class="entry_type_name">int64</span> 25371 <span class="entry_type_container">x</span> 25372 25373 <span class="entry_type_array"> 25374 4 x n 25375 </span> 25376 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 25377 25378 25379 <span class="entry_type_hwlevel">[limited] </span> 25380 25381 25382 25383 25384 </td> <!-- entry_type --> 25385 25386 <td class="entry_description"> 25387 <p>This lists the maximum stall duration for each 25388format/<wbr/>size combination for depth streams.<wbr/></p> 25389 </td> 25390 25391 <td class="entry_units"> 25392 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 25393 </td> 25394 25395 <td class="entry_range"> 25396 </td> 25397 25398 <td class="entry_tags"> 25399 <ul class="entry_tags"> 25400 <li><a href="#tag_DEPTH">DEPTH</a></li> 25401 </ul> 25402 </td> 25403 25404 </tr> 25405 <tr class="entries_header"> 25406 <th class="th_details" colspan="5">Details</th> 25407 </tr> 25408 <tr class="entry_cont"> 25409 <td class="entry_details" colspan="5"> 25410 <p>A stall duration is how much extra time would get added 25411to the normal minimum frame duration for a repeating request 25412that has streams with non-zero stall.<wbr/></p> 25413<p>This functions similarly to 25414<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth 25415streams.<wbr/></p> 25416<p>All depth output stream formats may have a nonzero stall 25417duration.<wbr/></p> 25418 </td> 25419 </tr> 25420 25421 25422 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25423 <!-- end of entry --> 25424 25425 25426 25427 <!-- end of kind --> 25428 </tbody> 25429 25430 <!-- end of section --> 25431<!-- </namespace> --> 25432 </table> 25433 25434 <div class="tags" id="tag_index"> 25435 <h2>Tags</h2> 25436 <ul> 25437 <li id="tag_BC">BC - 25438 Needed for backwards compatibility with old Java API 25439 25440 <ul class="tags_entries"> 25441 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 25442 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 25443 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 25444 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 25445 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 25446 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 25447 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 25448 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 25449 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 25450 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 25451 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 25452 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 25453 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 25454 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 25455 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 25456 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 25457 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 25458 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 25459 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> 25460 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 25461 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> 25462 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 25463 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 25464 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 25465 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 25466 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 25467 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 25468 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 25469 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 25470 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 25471 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li> 25472 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li> 25473 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 25474 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 25475 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 25476 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 25477 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 25478 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 25479 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 25480 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 25481 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 25482 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 25483 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 25484 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 25485 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 25486 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 25487 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 25488 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 25489 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 25490 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 25491 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 25492 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 25493 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 25494 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 25495 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 25496 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 25497 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 25498 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 25499 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 25500 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 25501 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> 25502 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 25503 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 25504 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 25505 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 25506 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 25507 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 25508 </ul> 25509 </li> <!-- tag_BC --> 25510 <li id="tag_V1">V1 - 25511 New features for first camera 2 release (API1) 25512 25513 <ul class="tags_entries"> 25514 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li> 25515 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li> 25516 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 25517 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 25518 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 25519 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 25520 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 25521 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 25522 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 25523 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 25524 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 25525 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 25526 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 25527 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 25528 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 25529 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 25530 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 25531 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 25532 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 25533 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 25534 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 25535 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 25536 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 25537 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 25538 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 25539 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 25540 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 25541 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 25542 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 25543 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 25544 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 25545 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li> 25546 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 25547 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li> 25548 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 25549 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 25550 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 25551 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 25552 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 25553 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li> 25554 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 25555 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 25556 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 25557 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 25558 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 25559 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 25560 </ul> 25561 </li> <!-- tag_V1 --> 25562 <li id="tag_RAW">RAW - 25563 Needed for useful RAW image processing and DNG file support 25564 25565 <ul class="tags_entries"> 25566 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 25567 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 25568 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 25569 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 25570 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 25571 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 25572 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 25573 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> 25574 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 25575 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 25576 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 25577 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 25578 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 25579 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 25580 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 25581 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 25582 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 25583 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li> 25584 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 25585 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 25586 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 25587 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 25588 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 25589 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 25590 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li> 25591 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 25592 </ul> 25593 </li> <!-- tag_RAW --> 25594 <li id="tag_HAL2">HAL2 - 25595 Entry is only used by camera device HAL 2.x 25596 25597 <ul class="tags_entries"> 25598 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 25599 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 25600 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 25601 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 25602 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 25603 </ul> 25604 </li> <!-- tag_HAL2 --> 25605 <li id="tag_FULL">FULL - 25606 Entry is required for full hardware level devices, and optional for other hardware levels 25607 25608 <ul class="tags_entries"> 25609 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 25610 </ul> 25611 </li> <!-- tag_FULL --> 25612 <li id="tag_DEPTH">DEPTH - 25613 Entry is required for the depth capability. 25614 25615 <ul class="tags_entries"> 25616 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li> 25617 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li> 25618 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li> 25619 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li> 25620 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li> 25621 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li> 25622 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li> 25623 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li> 25624 </ul> 25625 </li> <!-- tag_DEPTH --> 25626 <li id="tag_FUTURE">FUTURE - 25627 Entry is under-specified and is not required for now. This is for book-keeping purpose, 25628 do not implement or use it, it may be revised for future. 25629 25630 <ul class="tags_entries"> 25631 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 25632 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 25633 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 25634 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 25635 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 25636 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 25637 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 25638 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> 25639 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> 25640 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> 25641 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 25642 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 25643 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 25644 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 25645 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 25646 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> 25647 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> 25648 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> 25649 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> 25650 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 25651 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 25652 </ul> 25653 </li> <!-- tag_FUTURE --> 25654 </ul> 25655 </div> 25656 25657 [ <a href="#">top</a> ] 25658 25659</body> 25660</html> 25661